Dynamische Selection-Screens in ABAP GUI Anwendungen zu erstellen muss nicht unbedingt kompliziert sein. Unter Verwendung der SAP Funktionsbausteine FREE_SELECTIONS_INIT und FREE_SELECTIONS_DIALOG möchte ich eine Möglichkeit zeigen, wie man recht einfach dynamische Selektionsbilder erstellen kann.
In meinem kleinen Demoprogramm erscheint zuerst ein Popup mit allen verfügbaren Selektionsparametern. Hat man die gewünschten Felder ausgewählt, dann wird in einem weiteren Schritt das auf der Feldselektion basierte Selektionsbild angezeigt.
Man kann natürlich die Selektion der Felder weglassen und die LT_FIELDS Tabelle direkt befüllen, in diesem Beispiel möchte ich aber beide Möglichkeiten zeigen.
REPORT ztest_hartl. DATA: lt_expr TYPE rsds_texpr. DATA: lt_tables TYPE TABLE OF rsdstabs. DATA: wa_selid TYPE rsdynsel-selid. DATA: lt_ranges TYPE rsds_trange. DATA: wa_active TYPE i. DATA: lt_fields TYPE TABLE OF rsdsfields. * Add table APPEND INITIAL LINE TO lt_tables ASSIGNING FIELD-SYMBOL(<wa_tables>). <wa_tables>-prim_tab = 'Y0BW_XF_MEAS_ID'. UNASSIGN: <wa_tables>. * Init free selection dialog as popup CALL FUNCTION 'FREE_SELECTIONS_INIT' EXPORTING expressions = lt_expr IMPORTING selection_id = wa_selid expressions = lt_expr TABLES tables_tab = lt_tables EXCEPTIONS OTHERS = 1. * Display free selection dialog as popup for field selection CALL FUNCTION 'FREE_SELECTIONS_DIALOG' EXPORTING selection_id = wa_selid title = 'Selection' status = 1 as_window = abap_true IMPORTING expressions = lt_expr field_ranges = lt_ranges number_of_active_fields = wa_active TABLES fields_tab = lt_fields EXCEPTIONS OTHERS = 1. * Init free selection dialog CALL FUNCTION 'FREE_SELECTIONS_INIT' EXPORTING expressions = lt_expr kind = 'F' IMPORTING selection_id = wa_selid expressions = lt_expr TABLES tables_tab = lt_tables fields_tab = lt_fields EXCEPTIONS OTHERS = 1. * Display free selection dialog for data selection CALL FUNCTION 'FREE_SELECTIONS_DIALOG' EXPORTING selection_id = wa_selid title = 'Selection' status = 1 as_window = ' ' tree_visible = abap_false IMPORTING expressions = lt_expr field_ranges = lt_ranges number_of_active_fields = wa_active TABLES fields_tab = lt_fields EXCEPTIONS OTHERS = 1.
Die selektierten Werte stehen in der Tabelle LT_RANGES bereit und können im weiteren Verlauf des Programmes verwendet werden.
Comments are closed.