Vorlage für Interaktive Liste

- Ziel des Workshops
- Generelle Tipps
- Vorlage für Interaktive Liste
- Datendefinition
- Selektionsbild
- Datenselektion
- Das fertige Programm
- Listausgabe
- User-Command
- Überschriften
- Doppelklick
Hier steht im Prinzip das selbe Coding noch einmal. Allerdings haben wir alle spezifischen Funktionen herausgenommen und nur die in den meisten Reports nötigen Programmblöcke stehen gelassen. Sie können dieses Programm als einfache Vorlage für einen Interaktive Liste nehmen.
REPORT z_vorlage_interaktive_liste NO STANDARD PAGE HEADING
LINE-SIZE 132
LINE-COUNT 65.
***********************************************************************
*** ***
*** ***
*** https://tricktresor.com ***
*** ***
*** ***
***********************************************************************
*———————————————————————*
*
* Programm: [ ]
* Autor: [ ]
* Datum: [ ]
* Sinn und Zweck:
* …
*———————————————————————*
TYPE-POOLS: icon.
*———————————————————————*
* Konstanten
*———————————————————————*
CONSTANTS:
k_icon_status_a(4) VALUE icon_led_green,
k_icon_status_b(4) VALUE icon_led_red,
off TYPE i VALUE 0,
on TYPE i VALUE 1.
DATA:
k_info_status_a(30),
k_info_status_b(30).
*———————————————————————*
* Variablen
*———————————————————————*
DATA:
t_head TYPE STANDARD TABLE OF <dbhead>,
s_head LIKE LINE OF t_head,
t_item TYPE STANDARD TABLE OF <dbitems>,
s_item LIKE LINE OF t_item,
l_status(4), „Liststatus
l_quickinfo(30), „Infotext für das Icon
l_hotspot, „Hotspot an/aus
l_popup_aktiv, „Popup aktiv ja/nein
l_actual_line TYPE systaro. „Aktuelle Zeile (für Refresh)
*———————————————————————*
* Selektionsbild
*———————————————————————*
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-t01.
SELECT-OPTIONS: …
PARAMETERS: …
SELECTION-SCREEN END OF BLOCK 1.
*———————————————————————*
* Init
*———————————————————————*
INITIALIZATION.
k_info_status_a = ‚Beschreibung Status „A“‚(q0a).
k_info_status_b = ‚BEschreibung Status „B“‚(q0b).
*———————————————————————*
* Programmstart
*———————————————————————*
START-OF-SELECTION.
PERFORM selektion.
PERFORM listausgabe.
*———————————————————————*
* User-Command
*———————————————————————*
AT USER-COMMAND.
l_actual_line = sy-staro.
CASE sy-ucomm.
WHEN ‚REFR‘.
PERFORM selektion.
PERFORM listausgabe.
WHEN ‚LEGENDE‘.
PERFORM legende.
ENDCASE.
*———————————————————————*
* Doppelklick
*———————————————————————*
AT LINE-SELECTION.
CASE sy-lsind.
WHEN 1.
PERFORM detail_1.
* WHEN 2.
* PERFORM detail_2.
ENDCASE.
*———————————————————————*
* Seitenkopf / Listüberschrift
*———————————————————————*
TOP-OF-PAGE.
PERFORM top_of_page.
TOP-OF-PAGE DURING LINE-SELECTION.
PERFORM top_of_page.
*———————————————————————*
* FORM selektion *
*———————————————————————*
FORM selektion.
SELECT * FROM <dbheader> INTO TABLE t_head
WHERE … IN …
AND … IN ….
IF sy-subrc = 0.
SORT t_head.
SELECT * FROM <dbitems> INTO TABLE t_item
FOR ALL ENTRIES IN t_head
WHERE … = ….
SORT t_item.
ENDIF.
ENDFORM.
*&———————————————————————*
*& Form listausgabe
*&———————————————————————*
FORM listausgabe.
*** Verzweigungslistenzähler muss auf Null gesetzt werden, damit nicht
*** beim Aktualisieren eine neue Verzweigungsliste erzeugt wird.
sy-lsind = 0.
*** Liststatus setzen
SET PF-STATUS ‚LISTE‘.
*** Ausgabe der Tabelle
LOOP AT t_head INTO s_head.
READ TABLE t_item INTO s_item WITH KEY … = … BINARY SEARCH.
IF sy-subrc = 0.
l_status = k_icon_status_a.
l_quickinfo = k_info_status_a.
l_hotspot = on.
ELSE.
l_status = k_icon_status_b.
l_quickinfo = k_info_status_b.
l_hotspot = off.
ENDIF.
WRITE: / l_status AS ICON QUICKINFO l_quickinfo HOTSPOT = l_hotspot,
s_head-feld1,
s_head-feld2,
s_head-….
HIDE s_head.
ENDLOOP.
CLEAR s_head.
*** Liste bei Neuaufbau wieder positionieren
SCROLL LIST TO FIRST PAGE LINE l_actual_line INDEX 1.
ENDFORM. “ listausgabe
*———————————————————————*
* FORM detail_1 *
*———————————————————————*
FORM detail_1.
CHECK NOT s_head IS INITIAL.
LOOP AT t_item INTO s_item WHERE [keyfield] = s_head-[keyfield].
WRITE: / s_item-…,
HIDE s_item.
ENDLOOP.
CLEAR: s_head, s_item.
ENDFORM.
*———————————————————————*
* FORM detail_2 *
*———————————————————————*
FORM detail_2.
CHECK NOT s_item IS INITIAL.
…
…
ENDFORM.
*———————————————————————*
* FORM top_of_page_header *
*———————————————————————*
FORM top_of_page_header.
WRITE: / ‚HEADER‘, AT sy-linsz space.
ENDFORM.
*———————————————————————*
* FORM top_of_page_detail_1 *
*———————————————————————*
FORM top_of_page_detail_1.
WRITE: / ‚Positionsdetail‘, AT sy-linsz space.
ENDFORM.
*———————————————————————*
* FORM top_of_page_detail_2 *
*———————————————————————*
FORM top_of_page_detail_2.
WRITE: / ‚Detail 2‘, AT sy-linsz space.
ENDFORM.
*&———————————————————————*
*& Form top_of_page
*&———————————————————————*
FORM top_of_page.
CHECK l_popup_aktiv = space.
ULINE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
CASE sy-lsind.
WHEN 0.
PERFORM top_of_page_header.
WHEN 1.
PERFORM top_of_page_detail_1.
WHEN 2.
PERFORM top_of_page_detail_2.
ENDCASE.
FORMAT COLOR OFF INTENSIFIED OFF.
ULINE.
ENDFORM. “ top_of_page
*———————————————————————*
* FORM legende *
*———————————————————————*
FORM legende.
DATA:
l_popup_breite TYPE i VALUE 70,
l_popup_hoehe TYPE i VALUE 10,
l_popup_x1 TYPE i VALUE 10,
l_popup_x2 TYPE i,
l_popup_y1 TYPE i VALUE 10,
l_popup_y2 TYPE i.
l_popup_x2 = l_popup_x1 + l_popup_breite.
l_popup_y2 = l_popup_y1 + l_popup_hoehe.
SET PF-STATUS space.
SET TITLEBAR ‚LEGENDE‘.
l_popup_aktiv = ‚X‘.
WINDOW STARTING AT l_popup_x1 l_popup_y1
ENDING AT l_popup_x2 l_popup_y2.
NEW-PAGE LINE-SIZE l_popup_breite LINE-COUNT 0.
WRITE AT /1(l_popup_breite) sy-uline.
WRITE: / ‚|‘, ‚Legende‘, AT l_popup_breite ‚|‘.
WRITE AT /1(l_popup_breite) sy-uline.
WRITE: AT /2 k_icon_status_a AS ICON, k_info_status_a,
AT /2 k_icon_status_b AS ICON, k_info_status_b.
l_popup_aktiv = space.
ENDFORM.
- Komplexe Datenobjekte editieren - 23. Januar 2023
- Einfügen von vielen Daten in Tabellenpflegedialog - 14. November 2022
- SALV-Table-Popup als Suchhilfe - 14. Oktober 2022