diff --git a/src-modules/module/rpta/conf/rpta.xml b/src-modules/module/rpta/conf/rpta.xml
index feb4861..4c5feba 100644
--- a/src-modules/module/rpta/conf/rpta.xml
+++ b/src-modules/module/rpta/conf/rpta.xml
@@ -576,6 +576,7 @@
+
@@ -647,7 +648,9 @@
-
+
+
+
diff --git a/src-modules/module/rpta/masken/48250_felderinfo.unl b/src-modules/module/rpta/masken/48250_felderinfo.unl
index 38a930d..aba3eee 100644
--- a/src-modules/module/rpta/masken/48250_felderinfo.unl
+++ b/src-modules/module/rpta/masken/48250_felderinfo.unl
@@ -5,10 +5,10 @@
select C.uniquename, C.caption ,L.layout_id from rpta_column C, rpta_column2layout L where C.tid=L.column_id and layout_id in\
(select tid from rpta_column_layout where uniquename=<>) order by 2;^^^
48254^Geschlecht^81^310^-1^100^70^1^integer^4^0^1^<> SELECT apnr,druck FROM cif where key = 9003 and apnr between 1 and 4 order by 1;^^^
-48255^Personal-Nr.^50^350^-1^150^80^1^integer^10^0^0^^^^
-48256^Amtsbezeichnung^55^0^0^150^160^3^char^30^0^12^<>select tid,type,name from sichten where art ='SVA Amtsdienstbez.' and aktiv=1 order by type,name;^hidden^^
+48255^Personal-Nr.^50^350^-1^150^80^1^integer^10^0^999^^^^
+48256^Amtsbezeichnung^55^0^0^150^160^3^char^30^0^12^<>select tid,type,name from sichten where art ='SVA Amtsdienstbez.' and aktiv=1 order by type,name;^ ^^
48257^Filter Personal^120^310^-1^100^300^1^sql^20^0^1^<> select id,caption from sx_repository where aktiv =1 and today() between gueltig_seit and gueltig_bis and art='SVA_PERS_FILTER' order by 2;^^^
-48258^Kostenstelle (Person)^70^350^-1^150^150^1^char^30^0^12^<> select tid,type,name,sortnr from sichten where art in ('SVA-Kostenstellen-Sicht','SVA-spez-Kostenstellen-Sicht','SVA-Kst-spezial') and aktiv=1 order by sortnr,type,name;^hidden^^
+48258^Kostenstelle (Person)^70^350^-1^150^150^1^char^30^0^12^<> select tid,type,name,sortnr from sichten where art in ('SVA-Kostenstellen-Sicht','SVA-spez-Kostenstellen-Sicht','SVA-Kst-spezial') and aktiv=1 order by sortnr,type,name;^ ^^
48259^Alter (bis)^21^170^-1^100^70^1^integer^5^0^0^^^^
48260^Spaltenlayout^3000^350^-1^140^180^1^char^50^1^1^<>SELECT uniquename,\
caption\
@@ -24,8 +24,10 @@ and R.systeminfo_id=6)\
order by sortnr, caption\
limit 1 \
;^
-48261^ProfGruppe^1000^0^0^200^150^1^char^30^0^12^<>select tid,type,name,sortnr from sichten where art in ('SVA-PBV-Gruppe-Sicht') and aktiv=1 order by sortnr,type,name;^^^
+48261^ProfGruppe^1000^0^0^200^150^10^char^30^0^12^<>select tid,type,name,sortnr from sichten where art in ('SVA-PBV-Gruppe-Sicht') and aktiv=1 order by sortnr,type,name;^hidden^^
48262^Dienstart^3^350^-1^150^150^3^char^30^0^12^<>select tid,type,name from sichten where art ='SVA Dienstart' and aktiv=1 order by type,name;^hidden^^
-48264^BVL-Gruppe^80^350^-1^150^120^10^char^30^0^12^<>select tid,type,name from sichten where art ='SVA BVL-Gruppen' and aktiv=1 order by type,name;^hidden^^
+48263^Beschv.-Nr.^305^0^0^100^70^1^integer^8^0^0^^^^
+48264^BVL-Gruppe^80^350^-1^150^120^10^char^30^0^12^<>select tid,type,name from sichten where art ='SVA BVL-Gruppen' and aktiv=1 order by type,name;^ ^^
+48265^Leere Zeilen ausblenden^5000^350^-1^140^80^1^char^30^1^1^<> select 'true','ja' from xdummy union select 'false','nein' from xdummy^ ^<> select 'true','ja' from xdummy^
48267^Personalkategorie^310^0^0^100^200^3^char^30^0^1^<> select id,caption from sx_repository where art='SVA_PERSONALKATEGORIE' and aktiv=1 and gueltig_seit<=date_val(<>) and gueltig_bis>=date_val(<>) order by sort1^hidden^^
48269^Alter (von)^20^0^0^80^70^1^integer^4^0^0^^^^
diff --git a/src-modules/module/rpta/masken/48250_masken_felder_bez.unl b/src-modules/module/rpta/masken/48250_masken_felder_bez.unl
index 2ab41ae..d54a927 100644
--- a/src-modules/module/rpta/masken/48250_masken_felder_bez.unl
+++ b/src-modules/module/rpta/masken/48250_masken_felder_bez.unl
@@ -11,6 +11,8 @@
48250^48260^
48250^48261^
48250^48262^
+48250^48263^
48250^48264^
+48250^48265^
48250^48267^
48250^48269^
diff --git a/src-modules/module/rpta/masken/48250_maskeninfo.unl b/src-modules/module/rpta/masken/48250_maskeninfo.unl
index bcee439..4fcc9ca 100644
--- a/src-modules/module/rpta/masken/48250_maskeninfo.unl
+++ b/src-modules/module/rpta/masken/48250_maskeninfo.unl
@@ -78,6 +78,8 @@ order by CL.sortnr\
/* and ca501_staat <> */\
/* and geschlecht= <> */\
/* and ${<>} */\
+/* and personal_nr=<> */\
+/* and besch_verh_nr=<> */\
" />\
\
/* <#assign filter = filter + " and sva_pbv_aggr.kostenstelle in "+.vars["Kostenstelle (Person)"].allNeededKeysList /> -- <> */\
@@ -85,7 +87,7 @@ order by CL.sortnr\
/* <#assign filter = filter + " and sva_pbv_aggr.ca108_amtsbez in "+.vars["Amtsbezeichnung"].allNeededKeysList /> -- <> */\
/* <#assign filter = filter + " and sva_pbv_aggr.ch212_geldgeber in "+.vars["Geldgeber"].allNeededKeysList /> -- <> */\
/* <#assign filter = filter + " and sva_pbv_aggr.vertart in "+.vars["Vertragsart"].allNeededKeysList /> -- <> */\
-\
+/* <#assign filter = filter + " and sva_pbv_aggr.ca109_key_bvl in "+.vars["BVL-Gruppe"].allNeededKeysList /> -- <> */\
\
\
\
@@ -106,7 +108,7 @@ and ${filter}\
#if>\
\
\
-<@rpta_interpret_column_layout nonvirtualTableFilter=filter />\
+<@rpta_interpret_column_layout nonvirtualTableFilter=filter removeEmptyLines=<> />\
\
#if> --wenn columns?has_content^--Freemarker Template\
XIL List\
diff --git a/src-modules/module/rpta/schluesseltabellen/fm_templates.unl b/src-modules/module/rpta/schluesseltabellen/fm_templates.unl
index c5b8866..045c1ce 100644
--- a/src-modules/module/rpta/schluesseltabellen/fm_templates.unl
+++ b/src-modules/module/rpta/schluesseltabellen/fm_templates.unl
@@ -267,8 +267,9 @@ drop TABLE tmp_rpta_column_layout;\
drop TABLE tmp_rpta_column2layout;\
#macro>\
\
-<#macro rpta_interpret_column_layout nonvirtualTableFilter>\
+<#macro rpta_interpret_column_layout nonvirtualTableFilter removeEmptyLines="true">\
<#assign columnLayoutHasTreeColumn=0 />\
+select '${removeEmptyLines}';\
\
<#assign treeColumnSrcFieldname="" />\
<#assign treeColumnTargetFieldname="" />\
@@ -488,15 +489,21 @@ drop TABLE tmp_rpta_column2layout;\
#if>\
#foreach>\
${sortnr} *10000 --(${einElement.level}*10000) + ${sortnr} as sortnr\
- from tmp_stud\
- where ${treeColumnSrcFieldname} in ${einElement.subkeys}\
+ <#if removeEmptyLines=="true">\
+ from tmp_stud\
+ where ${treeColumnSrcFieldname} in ${einElement.subkeys}\
+ <#else>\
+ from xdummy left outer join tmp_stud on (\
+ ${treeColumnSrcFieldname} in ${einElement.subkeys})\
+ #if>\
+ \
group by ${columnLayoutWithTreeColumnAdditionalGrouping}\
;\
#if>\
#foreach>\
\
drop table tmp_stud2;\
- select * into tmp_stud2\
+ select * into temp tmp_stud2\
from tmp_stud3;\
drop table tmp_stud3;\
--Ende Sicht\
@@ -523,16 +530,16 @@ drop TABLE tmp_rpta_column2layout;\
#if> \
#foreach>\
from tmp_stud2\
- where 1=1 and\
+ where 1=1 \
+ <#if removeEmptyLines=="true" >and (1=0\
<#foreach column in columns>\
<#if column.is_aggregate==1>\
- <#if column?is_last>\
- ${column.targetfieldname} is not null\
- <#else>\
- ${column.targetfieldname} is not null or\
- #if>\
+ or ${column.targetfieldname} is not null\
+ \
#if>\
- #foreach>\
+ #foreach>\
+ )\
+ #if>\
order by \
<#if rpta_column_layout.sortclause?has_content>\
${rpta_column_layout.sortclause}\
diff --git a/src-modules/module/rpta/schluesseltabellen/sx_captions_einfuegen.sql b/src-modules/module/rpta/schluesseltabellen/sx_captions_einfuegen.sql
new file mode 100755
index 0000000..1fa49a4
--- /dev/null
+++ b/src-modules/module/rpta/schluesseltabellen/sx_captions_einfuegen.sql
@@ -0,0 +1,53 @@
+--Freemarker Template
+--Achtung: Macro fügt Inhalte ein
+--Bitte nur Freemarker Variablen füllen
+<#assign sachgebiete_id=16 />
+<#assign captions = [
+{"table_name":"felderinfo",
+"field_name":"Beschv.-Nr.",
+"record_no":"48263",
+"contents_short":"@@SVA_LABEL_Beschv.-Nr.@@",
+"contents_long":""}
+] />
+
+
+<#foreach caption in captions>
+delete from sx_captions where 1=0
+<#if caption.table_name?exists && caption.table_name=="felderinfo">
+or (table_name='${caption.table_name}'
+and field_name='${caption.field_name}'
+and record_no=${caption.record_no})
+<#elseif caption.id?exists && caption.id!="">
+or id='${caption.id}'
+#if>
+;
+
+insert into sx_captions (
+<#if caption.table_name?exists && caption.table_name=="felderinfo">
+table_name,
+field_name,
+record_no,
+<#else>
+id,
+#if>
+locale,
+contents_short,
+contents_long,
+sachgebiete_id)
+select
+<#if caption.table_name?exists && caption.table_name=="felderinfo">
+'${caption.table_name}',
+'${caption.field_name}',
+${caption.record_no},
+<#else>
+'${caption.id}',
+#if>
+'de',
+'${caption.contents_short}',
+'${caption.contents_long}',
+${sachgebiete_id}
+from xdummy;
+
+#foreach>
+
+
diff --git a/src-modules/module/rpta/schluesseltabellen/vertart b/src-modules/module/rpta/schluesseltabellen/vertart
new file mode 100644
index 0000000..e69de29