Das fertige Programm
Hier steht der komplette Quelltext für den ersten Workshop “Interaktive Liste”. Sie können den Quelltext frei verwenden und an Ihre Bedürfnisse anpassen.
REPORT z_tt_ws_interaktive_liste NO STANDARD PAGE HEADING
LINE-SIZE 132
LINE-COUNT 65.
***********************************************************************
*** ***
*** Generierung von Flugdaten: ***
*** Report S_FLIGHT_MODEL_DATA_GENERATOR ***
*** Report SAPBC_DATA_GENERATOR ***
*** Transaktion BC_DATA_GEN ***
*** ***
***********************************************************************
***********************************************************************
*** ***
*** ***
*** https://tricktresor.com ***
*** ***
*** ***
***********************************************************************
*———————————————————————*
*
* Programm: [ Workshop: Interaktive Liste ]
* Autor: [ Enno Wulff ]
* Datum: [ Juni.2004 ]
* Sinn und Zweck:
” Dieser Report dient zum Verständnis interaktiver Listen. Der Report
” unterstützt die Funktionen
” – Individueller Listenkopf
” – Aktionen nach Klick auf ein Listenelement
” – Info-Popup (Legende)
” – Listrefresh
*———————————————————————*
TYPE-POOLS: icon.
*———————————————————————*
* Konstanten
*———————————————————————*
CONSTANTS:
k_icon_green(4) VALUE icon_led_green,
k_icon_red(4) VALUE icon_led_red,
off TYPE i VALUE 0,
on TYPE i VALUE 1.
DATA:
k_info_green(30),
k_info_red(30).
*———————————————————————*
* Variablen
*———————————————————————*
DATA:
t_scarr LIKE scarr OCCURS 0 WITH HEADER LINE,
t_spfli LIKE spfli OCCURS 0 WITH HEADER LINE,
t_sflight LIKE sflight OCCURS 0 WITH HEADER LINE,
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:
s_carrid FOR t_scarr-carrid,
s_carrnm FOR t_scarr-carrname.
SELECTION-SCREEN END OF BLOCK 1.
*———————————————————————*
* Init
*———————————————————————*
INITIALIZATION.
k_info_green = ‘Detaildaten vorhanden'(q01).
k_info_red = ‘Keine Detaildaten vorhanden'(q02).
*———————————————————————*
* 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 scarr INTO TABLE t_scarr
WHERE carrid IN s_carrid
AND carrname IN s_carrnm.
IF sy-subrc = 0.
SORT t_scarr.
SELECT * FROM spfli INTO TABLE t_spfli
FOR ALL ENTRIES IN t_scarr
WHERE carrid = t_scarr-carrid.
SORT t_spfli.
SELECT * FROM sflight INTO TABLE t_sflight
FOR ALL ENTRIES IN t_spfli
WHERE carrid = t_spfli-carrid
AND connid = t_spfli-connid.
SORT t_sflight.
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_scarr.
READ TABLE t_spfli WITH KEY carrid = t_scarr-carrid BINARY SEARCH.
IF sy-subrc = 0.
l_status = k_icon_green.
l_quickinfo = k_info_green.
l_hotspot = on.
ELSE.
l_status = k_icon_red.
l_quickinfo = k_info_red.
l_hotspot = off.
ENDIF.
WRITE: / l_status AS ICON QUICKINFO l_quickinfo HOTSPOT = l_hotspot,
t_scarr-carrid,
t_scarr-carrname,
t_scarr-url(40).
HIDE t_scarr.
ENDLOOP.
CLEAR t_scarr.
*** 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 t_scarr IS INITIAL.
LOOP AT t_spfli WHERE carrid = t_scarr-carrid.
WRITE: / t_spfli-connid,
t_spfli-countryfr,
t_spfli-cityfrom,
t_spfli-airpfrom,
t_spfli-countryto,
t_spfli-cityto,
t_spfli-airpto,
t_spfli-fltime.
HIDE t_spfli.
ENDLOOP.
CLEAR: t_spfli, t_scarr.
ENDFORM.
*———————————————————————*
* FORM detail_2 *
*———————————————————————*
FORM detail_2.
CHECK NOT t_spfli IS INITIAL.
LOOP AT t_sflight WHERE carrid = t_spfli-carrid
AND connid = t_spfli-connid.
WRITE: / t_sflight-carrid,
t_sflight-connid,
t_sflight-fldate,
t_sflight-price,
t_sflight-currency,
t_sflight-planetype,
t_sflight-seatsmax,
t_sflight-seatsocc,
t_sflight-paymentsum.
ENDLOOP.
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_green AS ICON, k_info_green,
AT /2 k_icon_red AS ICON, k_info_red.
l_popup_aktiv = space.
ENDFORM.
- Meine Eclipse-Plugins - 22. November 2024
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024