[ABAP] User-Exits und BAdIs zu einem Programm oder einer Transaktion auflisten

PARAMETERS: p_tcode LIKE tstc-tcode DEFAULT 'ME23N'.
PARAMETERS: p_pgmna LIKE tstc-pgmna.

START-OF-SELECTION.

  DATA(lv_tsct) = VALUE tstc( ).

  IF NOT p_tcode IS INITIAL.
    SELECT SINGLE FROM tstc
      FIELDS *
      WHERE tcode EQ @p_tcode
      INTO @lv_tsct.

  ELSEIF NOT p_pgmna IS INITIAL.
    lv_tsct-pgmna = p_pgmna.
  ENDIF.

  IF sy-subrc = 0.
    SELECT SINGLE FROM tadir
      FIELDS *
      WHERE pgmid    = 'R3TR'
        AND object   = 'PROG'
        AND obj_name = @lv_tsct-pgmna
      INTO @DATA(lv_tadir).

    DATA: lv_devclass TYPE tadir-devclass.

    IF sy-subrc = 0.
      lv_devclass = lv_tadir-devclass.
    ELSE.
      SELECT SINGLE FROM trdir
        FIELDS *
        WHERE name = @lv_tsct-pgmna
        INTO @DATA(lv_trdir).

      IF sy-subrc = 0.
* Wenn Programmtyp 'Funktionsgruppe'
        IF lv_trdir-subc EQ 'F'.
          SELECT SINGLE FROM tfdir
            FIELDS *
            WHERE pname = @lv_tsct-pgmna
            INTO @DATA(lv_tfdir).

          IF sy-subrc = 0.
            SELECT SINGLE FROM enlfdir
              FIELDS *
              WHERE funcname = @lv_tfdir-funcname
              INTO @DATA(lv_enlfdir).

            IF sy-subrc = 0.
              SELECT SINGLE FROM tadir
                FIELDS *
                WHERE pgmid    = 'R3TR'
                  AND object   = 'FUGR'
                  AND obj_name = @lv_enlfdir-area
                INTO @DATA(lv_tadir_area).

              IF sy-subrc = 0.
                lv_devclass = lv_tadir_area-devclass.
              ENDIF.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDIF.

    SELECT FROM tadir
      FIELDS *
      WHERE pgmid    = 'R3TR'
        AND object IN ('SMOD', 'SXSD')
        AND devclass = @lv_devclass
      ORDER BY object
      INTO TABLE @DATA(it_jtab).

    IF sy-subrc = 0.
      SELECT SINGLE FROM tstct
        FIELDS *
        WHERE sprsl = @sy-langu
          AND tcode = @p_tcode
        INTO @DATA(lv_tstct).

      IF sy-subrc = 0.
        WRITE: / 'Transaction:', p_tcode.
        WRITE: / 'Bezeichnung:', lv_tstct-ttext.
      ENDIF.

      WRITE: / 'Programm:', lv_tsct-pgmna.

      SKIP.

      LOOP AT it_jtab ASSIGNING FIELD-SYMBOL(<o>).
        DATA(lv_txt) = ||.

        CASE <o>-object.
          WHEN 'SMOD'. " Enhancement
            SELECT SINGLE FROM modsapt
              FIELDS modtext
              WHERE sprsl = @sy-langu
                AND name  = @<o>-obj_name
              INTO @lv_txt.
          WHEN 'SXSD'. " BAdI
            SELECT SINGLE FROM sxs_attrt
              FIELDS text
              WHERE sprsl     = @sy-langu
                AND exit_name = @<o>-obj_name
              INTO @lv_txt.
          WHEN OTHERS.
        ENDCASE.

        WRITE: / <o>-object, <o>-obj_name, lv_txt.
      ENDLOOP.

    ENDIF.

  ENDIF.

[ABAP] Infos zu Funktionsbausteinen auflisten

* Funktionsbausteine, die mit 'BAPI_MAT' beginnen
DATA(lv_fb_name) = |BAPI_MAT%|.

* Funktionsbaustein
DATA: it_tfdir TYPE STANDARD TABLE OF tfdir WITH DEFAULT KEY.

SELECT * FROM tfdir INTO TABLE @it_tfdir WHERE funcname LIKE @lv_fb_name.

LOOP AT it_tfdir ASSIGNING FIELD-SYMBOL(<fs_tfdir>).
  WRITE: / <fs_tfdir>-funcname, <fs_tfdir>-freedate, <fs_tfdir>-appl.
ENDLOOP.

ULINE.

* Kurztext eines Funktionsbausteins
DATA: it_tftit TYPE STANDARD TABLE OF tftit WITH DEFAULT KEY.

SELECT * FROM tftit INTO TABLE @it_tftit WHERE funcname LIKE @lv_fb_name.

LOOP AT it_tftit ASSIGNING FIELD-SYMBOL(<fs_tftit>).
  WRITE: / <fs_tftit>-funcname, <fs_tftit>-spras, <fs_tftit>-stext.
ENDLOOP.

ULINE.

* Verzeichnis freigegebener Objekte
DATA: it_rodir TYPE STANDARD TABLE OF rodir WITH DEFAULT KEY.

SELECT * FROM rodir INTO TABLE @it_rodir WHERE object LIKE @lv_fb_name.

LOOP AT it_rodir ASSIGNING FIELD-SYMBOL(<fs_rodir>).
  WRITE: / <fs_rodir>-object, <fs_rodir>-objecttype, <fs_rodir>-released, <fs_rodir>-reworked, <fs_rodir>-obsolete.
ENDLOOP.

[ABAP] Funktionsbaustein: Eigenschaften anzeigen

Es gibt mehrere Möglichkeiten sich die Eigenschaften eines Funktionsbausteines anzuzeigen (Link):

  • im Quellcode Doppelklick auf den Funktionsnamen hinter CALL FUNCTION
  • Blick in die Tabellen TFDIR und TFTIT
  • Aufruf SE37 (Function Builder) mit Funktionsbaustein: $Name
  • Aufruf SE84 (Repository Infosystem) -> Repository Infosystem -> Programmbibliothek -> Funktionsbausteine