[ABAP] Mandanten und zugeordnete logische Systeme auslesen

* Mandantenpflege: SCC4
* Zuweisung logisches System zu Mandant: Springen -> Detail
* Tabelle Mandanten: T000

* Tabelle Logische Systeme: TBDLS

* Sucht aus der Liste der gepflegten logischen Systeme diejenigen heraus,
* die mit dem akt. System und Mandanten verknüpft sind
SELECT t000~mandt,
       tbdls~logsys,
       tbdlst~stext
  INTO TABLE @DATA(it_syst)
  FROM t000
  INNER JOIN tbdls ON t000~logsys = tbdls~logsys
  INNER JOIN tbdlst ON tbdls~logsys = tbdlst~logsys.

IF sy-subrc = 0.
  cl_demo_output=>display_data( it_syst ).
ENDIF.

[ABAP] Transaktionscode zu einer IMG-Aktivität suchen

* IMG-Activität
PARAMETERS: p_imgact TYPE cus_imgach-activity DEFAULT 'SAPC_LGNUM'.

START-OF-SELECTION.

  SELECT cus_imgach~activity,
         cus_imgach~tcode,
         cus_imgact~text
    INTO TABLE @DATA(it_img)
    FROM cus_imgach
    INNER JOIN cus_imgact ON cus_imgach~activity = cus_imgact~activity
    WHERE cus_imgach~activity = @p_imgact
      AND cus_imgact~spras = @sy-langu.

  IF sy-subrc = 0.
    cl_demo_output=>display_data( it_img ).
  ENDIF.

[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] Zustand einer SAP-Transaktion prüfen

* Transaktions-ID (LUW-Key)
WRITE: / cl_system_transaction_state=>get_sap_luw_key( ).

* Programm ist im Verbucher (1 = wahr, 0 = falsch)
CASE cl_system_transaction_state=>get_in_update_task( ).
  WHEN 1.
    WRITE: / 'Update task is active.'.
  WHEN 0.
    WRITE: / 'Not in update task.'.
ENDCASE.

* lokale Verbuchung ist eingeschaltet (1 = wahr, 0 = falsch)
CASE cl_system_transaction_state=>get_update_task_local( ).
  WHEN 1.
    WRITE: / 'Local update task is switched on.'.
  WHEN 0.
    WRITE: / 'Local update task is switched off.'.
ENDCASE.

* in ON-COMMIT/ON-ROLLBACK (1 = wahr, 0 = falsch)
CASE cl_system_transaction_state=>get_on_end_of_transaction( ).
  WHEN 1.
    WRITE: / 'In ON-COMMIT/ON-ROLLBACK.'.
  WHEN 0.
    WRITE: / 'Nicht in ON-COMMIT/ON-ROLLBACK.'.
ENDCASE.

* in ON-COMMIT (1 = wahr, 0 = falsch)
CASE cl_system_transaction_state=>get_on_commit( ).
  WHEN 1.
    WRITE: / 'In ON-COMMIT.'.
  WHEN 0.
    WRITE: / 'Nicht in ON-COMMIT.'.
ENDCASE.

* in ON-ROLLBACK (1 = wahr, 0 = falsch)
CASE cl_system_transaction_state=>get_on_rollback( ).
  WHEN 1.
    WRITE: / 'In ON-ROLLBACK.'.
  WHEN 0.
    WRITE: / 'Nicht in ON-ROLLBACK.'.
ENDCASE.