* https://blogs.sap.com/2019/04/22/how-to-scan-abap-code/
PARAMETERS: p_prog TYPE trdir-name DEFAULT 'SAPLSD_ENTRY'. " (SE11)
START-OF-SELECTION.
* Code Inspector: Quelltext für Include
DATA(o_si) = cl_ci_source_include=>create( p_name = p_prog ).
* Code Inspector: Quelltext für SCAN erzeugen
DATA(o_scan) = NEW cl_ci_scan( p_include = o_si ).
* Include-Zeilen
cl_demo_output=>write_data( o_si->lines ).
* Tokens
cl_demo_output=>write_data( o_scan->tokens ).
* Anweisungen
cl_demo_output=>write_data( o_scan->statements ).
* Verknüpfung Statements -> Tokens
* Statements
LOOP AT o_scan->statements ASSIGNING FIELD-SYMBOL(<s>).
DATA(idx) = sy-tabix.
* Tokens
LOOP AT o_scan->tokens ASSIGNING FIELD-SYMBOL(<t>) FROM <s>-from TO <s>-to.
cl_demo_output=>write_data( value = <t>-str name = |Statement { idx }| ).
ENDLOOP.
cl_demo_output=>line( ).
ENDLOOP.
* HTML-Code vom Demo-Output holen
DATA(lv_html) = cl_demo_output=>get( ).
* Daten im Inline-Browser im SAP-Fenster anzeigen
cl_abap_browser=>show_html( EXPORTING
title = 'Code'
html_string = lv_html
container = cl_gui_container=>default_screen ).
* cl_gui_container=>default_screen erzwingen
WRITE: space.