[ABAP] SAP-Anwendungskomponente zu Paket oder Entwicklungsobjekt suchen

Variante 1 (über Paketnamen)

PARAMETERS: p_paket TYPE tdevc-devclass DEFAULT 'ME'.

START-OF-SELECTION.

  SELECT d~devclass,
         d~component,
         l~as4local,
         l~ps_posid,
         t~name
    INTO TABLE @DATA(it_comp)
    FROM tdevc AS d
    INNER JOIN df14l AS l ON d~component = l~fctr_id
    INNER JOIN df14t AS t ON d~component = t~fctr_id
    WHERE d~devclass = @p_paket
      AND t~langu    = @sy-langu.

  cl_demo_output=>display( it_comp ).

Variante 2 (über Objekt)

DATA: lv_paket TYPE tadir-devclass.
SELECT-OPTIONS: so_paket FOR lv_paket.

DATA: lv_pgmid TYPE tadir-pgmid.
SELECT-OPTIONS: so_pgmid FOR lv_pgmid.

DATA: lv_object TYPE tadir-object.
SELECT-OPTIONS: so_obj FOR lv_object.

DATA: lv_obj_name TYPE tadir-obj_name.
SELECT-OPTIONS: so_name FOR lv_obj_name.

INITIALIZATION.

* Paket
  so_paket[] = VALUE #( ( sign   = 'I'
                          option = 'EQ'
                          low    = 'ME'
                          high   = '' ) ).

  so_pgmid[] = VALUE #( ( sign   = 'I'
                          option = 'EQ'
                          low    = 'R3TR'
                          high   = '' ) ).

* Typ Transaktion
  so_obj[] = VALUE #( ( sign   = 'I'
                        option = 'EQ'
                        low    = 'TRAN'
                        high   = '' ) ).

* Objektname 'ME23N'
  so_name[] = VALUE #( ( sign   = 'I'
                         option = 'EQ'
                         low    = 'ME23N'
                         high   = '' ) ).

START-OF-SELECTION.

  SELECT d~pgmid,
         d~object,
         d~obj_name,
         d~devclass,
         c~component,
         l~as4local,
         l~ps_posid,
         t~name
    INTO TABLE @DATA(it_comp)
    FROM tadir AS d
    INNER JOIN tdevc AS c ON d~devclass = c~devclass
    INNER JOIN df14l AS l ON c~component = l~fctr_id
    INNER JOIN df14t AS t ON c~component = t~fctr_id
    WHERE d~devclass IN @so_paket
      AND d~pgmid IN @so_pgmid
      AND d~object IN @so_obj
      AND d~obj_name IN @so_name
      AND t~langu = @sy-langu.

  cl_demo_output=>display( it_comp ).