[ABAP] Quellcode Scan / Analyse

* 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.