Code: Alles auswählen.
REPORT z_scan_table .
DATA: itab TYPE TABLE OF zide_scan_table WITH HEADER LINE.
DATA: lv_dummy_search(50).
DATA: BEGIN OF itab_verz OCCURS 0,
tabname TYPE tabname16,
END OF itab_verz.
**************************************************************************
* Tabellenname
SELECT-OPTIONS: s_tabn FOR itab-tabname,
* Searchstring
s_search FOR lv_dummy_search NO INTERVALS LOWER CASE.
* Groß-Kleinschreibung berücksichtigen
PARAMETERS: p_upper AS CHECKBOX default 'X'.
* Protokolldatei löschen
PARAMETERS: p_delete AS CHECKBOX.
**************************************************************************
INITIALIZATION.
itab-mandt = sy-mandt.
itab-sysid = sy-sysid.
itab-dbsys = sy-dbsys.
itab-created_from = sy-uname.
CALL FUNCTION 'BBP_PD_CONVERT_DATETIME_TO_TS'
EXPORTING
iv_date = sy-datum
iv_time = sy-uzeit
iv_time_zone = sy-zonlo
IMPORTING
ev_timestamp = itab-created_at
EXCEPTIONS
convert_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
START-OF-SELECTION.
* Groß-Kleinschreibung ignorieren -> in Großbuchstaben umwandeln
IF p_upper = 'X'.
LOOP AT s_search.
TRANSLATE s_search-low TO UPPER CASE.
TRANSLATE s_search-high TO UPPER CASE.
MODIFY s_search.
ENDLOOP.
ENDIF.
SELECT tabname FROM dd02l INTO TABLE itab_verz WHERE tabname IN s_tabn
AND tabclass = 'TRANSP'.
LOOP AT itab_verz.
PERFORM scan_table.
ENDLOOP.
PERFORM ausgabe.
*&---------------------------------------------------------------------*
*& Form scan_table
*&---------------------------------------------------------------------*
FORM scan_table.
TYPE-POOLS: slis.
DATA: ct_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA: lv_tabname TYPE slis_tabname.
lv_tabname = itab_verz-tabname.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = lv_tabname
CHANGING
ct_fieldcat = ct_fieldcat[].
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
itab-tabname = itab_verz-tabname.
*
* Datendefintion
*
DATA: itabref TYPE REF TO data.
CREATE DATA itabref TYPE STANDARD TABLE OF (itab-tabname).
FIELD-SYMBOLS: <fs> TYPE STANDARD TABLE.
FIELD-SYMBOLS: <fs_line> TYPE ANY.
FIELD-SYMBOLS: <fs_value> TYPE ANY.
ASSIGN itabref->* TO <fs>.
REFRESH <fs>.
SELECT * FROM (itab-tabname) INTO TABLE <fs>.
DATA: lv_vgl_value TYPE char30k.
LOOP AT <fs> ASSIGNING <fs_line>.
LOOP AT ct_fieldcat.
ASSIGN COMPONENT ct_fieldcat-fieldname OF STRUCTURE <fs_line> TO <fs_value>.
lv_vgl_value = <fs_value>.
IF p_upper = 'X'.
TRANSLATE lv_vgl_value TO UPPER CASE.
ENDIF.
IF lv_vgl_value IN s_search.
itab-fieldname = ct_fieldcat-fieldname.
READ TABLE itab WITH KEY tabname = itab-tabname
fieldname = itab-fieldname.
IF sy-subrc = 0.
itab-anz = itab-anz + 1.
MODIFY itab INDEX sy-tabix.
ELSE.
itab-anz = 1.
APPEND itab.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFORM. "scan_table
*&---------------------------------------------------------------------*
*& Form ausgabe
*&---------------------------------------------------------------------*
FORM ausgabe .
*
* Ausgabe in Druck oder Bildschirm
*
IF sy-batch = 'X'.
DATA: lv_pripar TYPE pri_params,
lv_arcpar TYPE arc_params.
MOVE-CORRESPONDING sy TO lv_pripar.
NEW-PAGE PRINT ON NO DIALOG
PARAMETERS lv_pripar.
* ARCHIVE PARAMETERS lv_arcpar.
ENDIF.
LOOP AT itab.
WRITE: / itab-tabname, itab-fieldname, itab-anz.
itab-spono = sy-spono. "Spoolnummer (wird für DB-dann benötigt)
MODIFY itab.
ENDLOOP.
*
* Datenbank
*
IF p_delete = 'X'.
DELETE FROM z_scan_table.
ENDIF.
INSERT z_scan_table FROM TABLE itab ACCEPTING DUPLICATE KEYS.
ENDFORM. " ausgabe