Reportanzeige als Baumstruktur
Mit dem folgenden Programm ist es einfach möglich, eine Auswahl an Programmen in einer Baumübersicht darzustellen. Es werden alle selektierten Reports als Knoten eines Baumes angezeigt. Durch Aufklicken eines Programms wird der Quelltext angezeigt. Durch einen Doppelklick auf den Programmnamen oder den Quelltext kann in das Coding verzweigt werden.
Beschreibung
Das Programm eignet sich wunderbar, um eigene Programme zu verwalten.
Der Quelltext wird erst eingelesen, wenn er auch angezeigt werden soll. Das Programm arbeitet also sehr schnell.
|
Tipps zur verwendung
Suche
Um das Coding der angezeigten Programme zu durchsuchen, setzen Sie den Cursor auf den Root-Eintrag “Enno’s ABAPs” und drücken Sie [Teilbaum expandieren]. Es dauert nun etwas, je nach Anzahl der selektierten Reports, da nun der Quelltext der Programme gelesen wird.
Nun können Sie mit STRG+F den Quellcode durchsuchen.
Selektion
Es werden in dem Programm nur Repors selektiert; also keine Modulpools oder Includes. Die Selektion kann aber einfach angepasst werden.
Mit dem Funktionsbaustein “RS_GET_ALL_INCLUDES” können noch zusätzlich alle Includes zu einem Report ermittelt werden.
Coding
REPORT ZZSHOWREP MESSAGE-ID ZS.
DATA:
LS_ATTR TYPE STREEATTR,
LV_ROOT_ID LIKE SNODE-ID,
LV_NEW_ID LIKE SNODE-ID,
LS_ADDRESS TYPE BAPIADDR3,
LT_RETURN TYPE STANDARD TABLE OF BAPIRET2,
LT_TPOOL LIKE TEXTPOOL OCCURS 0 WITH HEADER LINE,
LV_INDEX TYPE I,
LV_ANZAHL TYPE I,
LV_ZEILE(5) TYPE C,
LV_NAME TYPE PROGRAMM,
LT_QTEXT LIKE ABAPSOURCE OCCURS 0 WITH HEADER LINE,
BEGIN OF LT_NAME OCCURS 0,
PROGRAMM TYPE PROGRAMM,
TREE_ID LIKE SNODE-ID,
END OF LT_NAME.
*** Selektion
SELECT-OPTIONS:
S_REPORT FOR LV_NAME DEFAULT ‘ZZ*’ OPTION CP,
S_UNAME FOR SY-UNAME DEFAULT SY-UNAME.
START-OF-SELECTION.
*** Selektion
SELECT NAME FROM TRDIR INTO TABLE LT_NAME
WHERE NAME IN S_REPORT
AND CNAM IN S_UNAME
AND SUBC IN (‘1′,’M’).
IF SY-SUBRC = 0.
*** sort
SORT LT_NAME DESCENDING.
*** Benutzernamen lesen
CALL FUNCTION ‘BAPI_USER_GET_DETAIL’
EXPORTING
USERNAME = SY-UNAME
IMPORTING
ADDRESS = LS_ADDRESS
TABLES
RETURN = LT_RETURN.
CONCATENATE LS_ADDRESS-FIRSTNAME ”’s ABAPs’ INTO LV_NAME.
*** Tree erzeugen
CALL FUNCTION ‘RS_TREE_CREATE’
EXPORTING
ROOT_NAME = LV_NAME
IMPORTING
ROOT_ID = LV_ROOT_ID.
*** Reportnamen
LOOP AT LT_NAME.
*** Reporttexte lesen
READ TEXTPOOL LT_NAME-PROGRAMM
INTO LT_TPOOL LANGUAGE SY-LANGU.
*** Tree-Attribute
LS_ATTR-NLENGTH = 30.
LS_ATTR-COLOR = 4.
LS_ATTR-INTENSIV = SPACE.
LS_ATTR-TLENGTH = 90.
LS_ATTR-TCOLOR = 6.
LS_ATTR-TINTENSIV = SPACE.
LS_ATTR-TPOS = 46.
LS_ATTR-FORCE_PLUS = ‘X’.
*** Programmbezeichnung
READ TABLE LT_TPOOL WITH KEY ID = ‘R’.
LS_ATTR-TEXT = LT_TPOOL-ENTRY.
*** Programm einhängen
CALL FUNCTION ‘RS_TREE_ADD_NODE’
EXPORTING
NEW_NAME = LT_NAME-PROGRAMM
INSERT_ID = LV_ROOT_ID
RELATIONSHIP = ‘CHILD’
DISPLAY_ATTRIBUTES = LS_ATTR
IMPORTING
NEW_ID = LT_NAME-TREE_ID
EXCEPTIONS
OTHERS = 2.
IF SY-SUBRC = 0.
MODIFY LT_NAME.
ENDIF.
ENDLOOP.
*** Anzeigen
CALL FUNCTION ‘RS_TREE_LIST_DISPLAY’
EXPORTING
CALLBACK_PROGRAM = ‘ZZSHOWREP’
CALLBACK_USER_COMMAND = ‘USER’
STATUS = ‘STANDARD’.
ENDIF.
*———————————————————————*
* FORM USER *
*———————————————————————*
FORM USER TABLES NODE STRUCTURE SEUCOMM
USING COMMAND
CHANGING EXIT
LIST_REFRESH.
CASE COMMAND.
WHEN ‘TREP’.
*** Alle expandieren
LOOP AT LT_NAME.
DELETE LT_NAME.
PERFORM QUELLTEXT_EINFUEGEN
USING LT_NAME-PROGRAMM LT_NAME-TREE_ID.
ENDLOOP.
WHEN ‘TRPI’.
*** Doppelklick
CASE NODE-SELFIELD.
WHEN ‘PLUS’.
*** Programm aufklappen: Sourcecode nachlesen
READ TABLE LT_NAME TRANSPORTING NO FIELDS
WITH KEY PROGRAMM = NODE-NAME.
IF SY-SUBRC = 0.
DELETE LT_NAME INDEX SY-TABIX.
PERFORM QUELLTEXT_EINFUEGEN USING NODE-NAME NODE-ID.
ENDIF.
WHEN ‘NAME’ OR ‘TEXT’.
CASE NODE-TLEVEL.
WHEN 2.
*** Doppelklick auf den Programmnamen oder -bezeichnung
LV_NAME = NODE-NAME.
CALL FUNCTION ‘EDITOR_PROGRAM’
EXPORTING
PROGRAM = LV_NAME.
WHEN 3.
*** Doppelklick auf eine Zeile des Quelltextes
LV_NAME = NODE-TEXT2.
LV_ZEILE = NODE-NAME.
CALL FUNCTION ‘EDITOR_PROGRAM’
EXPORTING
PROGRAM = LV_NAME
TOPLINE = LV_ZEILE.
ENDCASE.
ENDCASE.
ENDCASE.
ENDFORM.
*&———————————————————————*
*& Form QUELLTEXT_EINFUEGEN
*&———————————————————————*
FORM QUELLTEXT_EINFUEGEN USING FI_NAME
FI_NEW_ID.
LV_NEW_ID = FI_NEW_ID.
*** Reportsource lesen
READ REPORT FI_NAME INTO LT_QTEXT.
*** Quelltext einhängen
DESCRIBE TABLE LT_QTEXT LINES LV_ANZAHL.
LV_INDEX = LV_ANZAHL.
*** Quelltext “rückwärts” lesen, damit die Darstellung richtig wird
DO LV_ANZAHL TIMES.
READ TABLE LT_QTEXT INDEX LV_INDEX.
CLEAR LS_ATTR.
WRITE LV_INDEX TO LV_ZEILE.
LS_ATTR-TEXT2 = FI_NAME.
LS_ATTR-NLENGTH = 5.
LS_ATTR-COLOR = 2.
LS_ATTR-INTENSIV = SPACE.
LS_ATTR-TEXT = LT_QTEXT-LINE.
LS_ATTR-TLENGTH = 72.
*** Quelltextzeile einfügen
CALL FUNCTION ‘RS_TREE_ADD_NODE’
EXPORTING
NEW_NAME = LV_ZEILE
INSERT_ID = LV_NEW_ID
RELATIONSHIP = ‘CHILD’
DISPLAY_ATTRIBUTES = LS_ATTR
EXCEPTIONS
OTHERS = 2.
SUBTRACT 1 FROM LV_INDEX.
ENDDO.
ENDFORM. ” QUELLTEXT_EINFUEGEN
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024