[ABAP] Neue / obsolete Transaktionscodes für S/4 HANA suchen

* https://thinkdoforward.com/neue-transaktionen-mit-s-4hana-so-einfach-findest-zu-sie/
PARAMETERS: p_rel TYPE saprl DEFAULT '751'.
SELECT-OPTIONS: so_ta FOR lv_s_tcode.

START-OF-SELECTION.

  SELECT c~rel_name, c~s_tcode, c~t_tcode, tx~ttext
    INTO TABLE @DATA(it_prgn_corr2)
    FROM prgn_corr2 AS c
    INNER JOIN tstc AS t ON ( c~t_tcode = t~tcode )
    RIGHT OUTER JOIN tstct AS tx ON ( t~tcode = tx~tcode )
    WHERE c~rel_name >= @p_rel
      AND c~s_tcode IN @so_ta
      AND tx~sprsl = @sy-langu.

  SORT: it_prgn_corr2 BY s_tcode rel_name.


  TRY.
* SALV-Table
      DATA: o_salv TYPE REF TO cl_salv_table.

      cl_salv_table=>factory( IMPORTING
                                r_salv_table = o_salv
                              CHANGING
                                t_table      = it_prgn_corr2 ).

* Grundeinstellungen
      o_salv->get_functions( )->set_all( abap_true ).
      o_salv->get_columns( )->set_optimize( abap_true ).
      o_salv->get_display_settings( )->set_list_header( 'Überschrift' ).
      o_salv->get_display_settings( )->set_striped_pattern( abap_true ).
      o_salv->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

      LOOP AT o_salv->get_columns( )->get( ) ASSIGNING FIELD-SYMBOL(<c>).
        DATA(o_col) = <c>-r_column.
        o_col->set_short_text( || ).
        o_col->set_medium_text( || ).
        o_col->set_long_text( |{ o_col->get_columnname( ) } [{ o_col->get_long_text( ) }]| ).
      ENDLOOP.

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

[ABAP] SAP Release Information anzeigen

DATA: kern_rel TYPE thllines-thline. " Kernel Release
DATA: kern_make_variant TYPE thllines-thline. " Makevariante
DATA: kern_dblib TYPE thllines-thline. " Database libraries
DATA: kern_comp_on TYPE thllines-thline. " compiled on
DATA: kern_comp_time TYPE thllines-thline. " compile time
DATA: kern_patchlevel TYPE thllines-thline. " patch level
DATA: kern_supportlevel TYPE thllines-thline. " support level
DATA: kern_patchnumber TYPE thllines-thline. " patch number
DATA: kern_sourceid TYPE thllines-thline. " source id
DATA: kern_comp_level TYPE i. " compatibility level of the kernel
DATA: supp_db_sap TYPE TABLE OF thllines. " database release (SAP, table SVERS)
DATA: supp_db_vendor TYPE TABLE OF thllines. " databse release (vendor)
DATA: supp_op_sys TYPE TABLE OF thllines. " operation system
DATA: patchcomment TYPE TABLE OF thllines. " patch level information

CALL FUNCTION 'TH_SAPREL4'
  IMPORTING
    kern_rel          = kern_rel
    kern_make_variant = kern_make_variant
    kern_dblib        = kern_dblib
    kern_comp_on      = kern_comp_on
    kern_comp_time    = kern_comp_time
    kern_patchlevel   = kern_patchlevel
    kern_supportlevel = kern_supportlevel
    kern_patchnumber  = kern_patchnumber
    kern_sourceid     = kern_sourceid
    kern_comp_level   = kern_comp_level
  TABLES
    supp_db_sap       = supp_db_sap
    supp_db_vendor    = supp_db_vendor
    supp_op_sys       = supp_op_sys
    patchcomment      = patchcomment.

WRITE: / |Kernel Release: { kern_rel }|.
WRITE: / |Makevariante: { kern_make_variant }|.
WRITE: / |Database libraries: { kern_dblib }|.

WRITE: / |compiled on: { kern_comp_on }|.
WRITE: / |compile time: { kern_comp_time }|.
WRITE: / |patch level: { kern_patchlevel }|.
WRITE: / |support level: { kern_supportlevel }|.
WRITE: / |patch number: { kern_patchnumber }|.
WRITE: / |source id: { kern_sourceid }|.
WRITE: / |compatibility level of the kernel: { kern_comp_level }|.

WRITE: / |database release (SAP, table SVERS):|.
LOOP AT supp_db_sap INTO DATA(rel).
  WRITE: / |{ rel-thline }|.
ENDLOOP.

WRITE: / |databse release (vendor):|.
LOOP AT supp_db_vendor INTO DATA(ven).
  WRITE: / |{ ven-thline }|.
ENDLOOP.

WRITE: / |operation system:|.
LOOP AT supp_op_sys INTO DATA(op).
  WRITE: / |{ op-thline }|.
ENDLOOP.

WRITE: / |patch level information:|.
LOOP AT patchcomment INTO DATA(patch).
  WRITE: / |{ patch-thline }|.
ENDLOOP.