diff --git a/src-modules/module/rpta/masken/48000_maskeninfo.unl b/src-modules/module/rpta/masken/48000_maskeninfo.unl
index 28aee43..070dccd 100644
--- a/src-modules/module/rpta/masken/48000_maskeninfo.unl
+++ b/src-modules/module/rpta/masken/48000_maskeninfo.unl
@@ -29,26 +29,12 @@ name as runtime_tablename\
]]>\
\
\
>;\
+ SELECT * from sp_rpta_column_layout('${basetable.name}',<>::varchar(255));\
\
]]>\
\
\
\
>;\
+ SELECT * from sp_rpta_column_layout('${basetable.name}',<>::varchar(255));\
\
]]>\
>\
-/* and C.uniquename in (<>) */\
-order by CL.sortnr\
+SELECT * from sp_rpta_columns_in_layout(<>::varchar(255))\
+where 1=1\
+/* and column_uniquename in (<>) */\
+order by sortnr\
;\
]]>\
\
diff --git a/src-modules/module/rpta/masken/48110_maskeninfo.unl b/src-modules/module/rpta/masken/48110_maskeninfo.unl
index 2e78ea4..23c4b31 100644
--- a/src-modules/module/rpta/masken/48110_maskeninfo.unl
+++ b/src-modules/module/rpta/masken/48110_maskeninfo.unl
@@ -21,47 +21,19 @@ name as runtime_tablename\
]]>\
\
\
>;\
+ SELECT * from sp_rpta_column_layout('${basetable.name}',<>::varchar(255));\
\
]]>\
>\
-/* and C.uniquename in (<>) */\
-order by CL.sortnr\
+SELECT * from sp_rpta_columns_in_layout(<>::varchar(255))\
+where 1=1\
+/* and column_uniquename in (<>) */\
+order by sortnr\
;\
]]>\
\
diff --git a/src-modules/module/rpta/masken/48180_maskeninfo.unl b/src-modules/module/rpta/masken/48180_maskeninfo.unl
index 899a7a4..2b257a2 100644
--- a/src-modules/module/rpta/masken/48180_maskeninfo.unl
+++ b/src-modules/module/rpta/masken/48180_maskeninfo.unl
@@ -32,37 +32,16 @@ L.is_virtual,\
]]>\
\
\
\
>\
-/* and C.uniquename in (<>) */\
-order by CL.sortnr\
+SELECT * from sp_rpta_columns_in_layout(<>::varchar(255))\
+where 1=1\
+/* and column_uniquename in (<>) */\
+order by sortnr\
;\
]]>\
\
\
\
>;\
+ SELECT * from sp_rpta_column_layout('${basetable.name}',<>::varchar(255));\
\
]]>\
>\
-/* and C.uniquename in (<>) */\
-order by CL.sortnr\
+SELECT * from sp_rpta_columns_in_layout(<>::varchar(255))\
+where 1=1\
+/* and column_uniquename in (<>) */\
+order by sortnr\
;\
]]>\
\
\
\
>;\
+ SELECT * from sp_rpta_column_layout('${basetable.name}',<>::varchar(255));\
\
]]>\
>\
-/* and C.uniquename in (<>) */\
-order by CL.sortnr\
+SELECT * from sp_rpta_columns_in_layout(<>::varchar(255))\
+where 1=1\
+/* and column_uniquename in (<>) */\
+order by sortnr\
;\
]]>\
\
diff --git a/src-modules/module/rpta/masken/48280_maskeninfo.unl b/src-modules/module/rpta/masken/48280_maskeninfo.unl
index 95b208e..d918563 100644
--- a/src-modules/module/rpta/masken/48280_maskeninfo.unl
+++ b/src-modules/module/rpta/masken/48280_maskeninfo.unl
@@ -26,47 +26,19 @@ name as runtime_tablename\
]]>\
\
\
>;\
+ SELECT * from sp_rpta_column_layout('${basetable.name}',<>::varchar(255));\
\
]]>\
>\
-/* and C.uniquename in (<>) */\
-order by CL.sortnr\
+SELECT * from sp_rpta_columns_in_layout(<>::varchar(255))\
+where 1=1\
+/* and column_uniquename in (<>) */\
+order by sortnr\
;\
]]>\
\
\
\
>;\
+ SELECT * from sp_rpta_column_layout('${basetable.name}',<>::varchar(255));\
\
]]>\
>\
-/* and C.uniquename in (<>) */\
-order by CL.sortnr\
+SELECT * from sp_rpta_columns_in_layout(<>::varchar(255))\
+where 1=1\
+/* and column_uniquename in (<>) */\
+order by sortnr\
;\
]]>\
\
\
\
>;\
+ SELECT * from sp_rpta_column_layout('${basetable.name}',<>::varchar(255));\
\
]]>\
>\
-/* and C.uniquename in (<>) */\
-order by CL.sortnr\
+SELECT * from sp_rpta_columns_in_layout(<>::varchar(255))\
+where 1=1\
+/* and column_uniquename in (<>) */\
+order by sortnr\
;\
]]>\
\
\
\
>;\
+ SELECT * from sp_rpta_column_layout('${basetable.name}',<>::varchar(255));\
\
]]>\
>\
-/* and C.uniquename in (<>) */\
-order by CL.sortnr\
+SELECT * from sp_rpta_columns_in_layout(<>::varchar(255))\
+where 1=1\
+/* and column_uniquename in (<>) */\
+order by sortnr\
;\
]]>\
\
\
\
>;\
+ SELECT * from sp_rpta_column_layout('${basetable.name}',<>::varchar(255));\
\
]]>\
>\
-/* and C.uniquename in (<>) */\
-order by CL.sortnr\
+SELECT * from sp_rpta_columns_in_layout(<>::varchar(255))\
+where 1=1\
+/* and column_uniquename in (<>) */\
+order by sortnr\
;\
]]>\
\
\
\
>;\
+ SELECT * from sp_rpta_column_layout('${basetable.name}',<>::varchar(255));\
\
]]>\
>\
-/* and C.uniquename in (<>) */\
-order by CL.sortnr\
+SELECT * from sp_rpta_columns_in_layout(<>::varchar(255))\
+where 1=1\
+/* and column_uniquename in (<>) */\
+order by sortnr\
;\
]]>\
\
\
\
>;\
+ SELECT * from sp_rpta_column_layout('${basetable.name}',<>::varchar(255));\
\
]]>\
>\
-/* and C.uniquename in (<>) */\
-order by CL.sortnr\
+SELECT * from sp_rpta_columns_in_layout(<>::varchar(255))\
+where 1=1\
+/* and column_uniquename in (<>) */\
+order by sortnr\
;\
]]>\
\
diff --git a/src-modules/module/rpta/prozeduren/proc_get_rpta_column_layout_p.sql b/src-modules/module/rpta/prozeduren/proc_get_rpta_column_layout_p.sql
new file mode 100644
index 0000000..e5ead65
--- /dev/null
+++ b/src-modules/module/rpta/prozeduren/proc_get_rpta_column_layout_p.sql
@@ -0,0 +1,23 @@
+
+DROP FUNCTION if exists sp_rpta_column_layout(character varying,character varying) ;
+
+CREATE FUNCTION sp_rpta_column_layout(p_resultset_uniquename varchar(255), p_column_layout_uniquename varchar(255))
+RETURNS TABLE(uniquename varchar(255),
+caption varchar(255),
+whereclause text,
+is_virtual smallint,
+sortclause text
+) AS '
+BEGIN
+ RETURN QUERY select L.uniquename,
+ L.caption,
+ L.whereclause,
+ R.is_virtual,
+ L.sortclause
+ from rpta_resultset R, rpta_column_layout L
+ where L.resultset_id=R.tid
+ and R.uniquename=p_resultset_uniquename
+ and L.uniquename=p_column_layout_uniquename;
+END;
+' LANGUAGE plpgsql;
+