[ABAP] Listausgabe eines Reports holen, anzeigen bzw. weiterverarbeiten

* https://blogs.sap.com/2016/12/29/exporting-list-to-memory-and-its-dangers/

* beliebigen Report ausführen, der eine Listausgabe hat
SUBMIT showcolo EXPORTING LIST TO MEMORY AND RETURN.

DATA: it_list TYPE STANDARD TABLE OF abaplist WITH DEFAULT KEY.

* Einlesen aufbereiteter Liste aus Memory
CALL FUNCTION 'LIST_FROM_MEMORY'
  TABLES
    listobject = it_list
  EXCEPTIONS
    not_found  = 1
    OTHERS     = 2.

IF sy-subrc = 0.
* Listausgabe des aufgerufenen Reports hier anzeigen
* Anzeigen eines (gesicherten) Listobjekts
  CALL FUNCTION 'WRITE_LIST'
    TABLES
      listobject = it_list
    EXCEPTIONS
      empty_list = 1
      OTHERS     = 2.

  IF sy-subrc = 0.
* Speicher (Liste) freigeben
* Löschen der letzten gespeicherten Liste aus dem Memory
    CALL FUNCTION 'LIST_FREE_MEMORY'.
  ENDIF.

  DATA: it_list_string_ascii TYPE list_string_table.

* Listausgabe -> String
* Konvertieren eines (gesicherten) Listobjekts nach ASCI
  CALL FUNCTION 'LIST_TO_ASCI'
    IMPORTING
      list_string_ascii  = it_list_string_ascii
    TABLES
      listobject         = it_list
    EXCEPTIONS
      empty_list         = 1
      list_index_invalid = 2
      OTHERS             = 3.

  IF sy-subrc = 0.
    cl_demo_output=>write_data( it_list_string_ascii ).
  ENDIF.

  DATA: it_html TYPE STANDARD TABLE OF w3html.

* Listausgabe -> HTML
* Converts a given listobject to html
  CALL FUNCTION 'WWW_HTML_FROM_LISTOBJECT'
    TABLES
      html       = it_html
      listobject = it_list.

  cl_demo_output=>write_data( it_html ).

  cl_demo_output=>display( ).
ENDIF.

[ABAP] SALV-Table in der Listausgabe in Custom-Container anzeigen

DATA: o_alv TYPE REF TO cl_salv_table.

START-OF-SELECTION.
  DATA: it_spfli TYPE STANDARD TABLE OF spfli WITH DEFAULT KEY.

  SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE it_spfli.

  WRITE: / 'GUI-Objekt in der Listanzeige'.

  ULINE.

* freier Custom-Container in der Listenansicht
  DATA(o_cnt) = NEW cl_gui_custom_container( container_name = ''
                                             repid          = 'SAPMSSY0'
                                             dynnr          = '0120' ).
* Position des Containers
  o_cnt->set_top( 50 ).
  o_cnt->set_left( 50 ).
  o_cnt->set_width( 1000 ).
  o_cnt->set_height( 200 ).


* SALV-Grid für Anzeige im Container
  TRY.
      cl_salv_table=>factory( EXPORTING
                                r_container  = o_cnt
                              IMPORTING
                                r_salv_table = o_alv
                              CHANGING
                                t_table      = it_spfli ).

      o_alv->display( ).

    CATCH cx_root INTO DATA(e_txt).
      WRITE: / e_txt->get_text( ).
  ENDTRY.

  DO 100 TIMES.
    WRITE: / |{ sy-index } Lorem ipsum.|.
  ENDDO.

[ABAP] Listenausgabe: Inhalt und Format einer Zeile lesen / ändern

Beispiel 1 (Zeile lesen)

START-OF-SELECTION.
  WRITE: / 'Feld1', 'Feld2'.

* Zeile 3 lesen
  READ LINE 3.
* Inhalt der gelesenen Zeile steht in sy-lisel
  MESSAGE sy-lisel TYPE 'S'.

Beispiel 2 (Format der geklickten Zeile ändern)

AT LINE-SELECTION.
* bei Doppelklick auf Zeile der Listenausgabe: Farben anpassen
  MODIFY CURRENT LINE FIELD FORMAT sy-index COLOR 1 LINE FORMAT COLOR 2.

Beispiel 3 (Inhalt der geklickten Zeile ändern)

AT LINE-SELECTION.
* bei Doppelklick auf Zeile der Listenausgabe: Inhalt ändern
  MODIFY CURRENT LINE LINE VALUE FROM 'Anderer Text.'.

[ABAP] PopUp-Fenster für Datumsauswahl (Kalender) anzeigen

Variante 1 (Monatskalender, Monat und Jahr wählbar)

DATA: lv_dat TYPE sy-datum.
  
CALL FUNCTION 'F4_DATE'
  IMPORTING
    select_date                  = lv_dat
  EXCEPTIONS
    calendar_buffer_not_loadable = 1
    date_after_range             = 2
    date_before_range            = 3
    date_invalid                 = 4
    factory_calendar_not_found   = 5
    holiday_calendar_not_found   = 6
    parameter_conflict           = 7
    OTHERS                       = 8.

Variante 2 (Jahreskalender, scrollbar)

DATA: lv_dat TYPE sy-datum.
  
CALL FUNCTION 'POPUP_CALENDAR_SDB'
  EXPORTING
    sel_day    = abap_true
    focus_day  = sy-datum
  IMPORTING
    begin_date = lv_dat.