Freitag, 23. Dezember 2011

Tabellen und Strukturen in ABAP dynamisch verarbeiten


Hier ein Beispiel Programm, dass zeigt wie man Strukturen oder Tabellen dynamisch verarbeiten kann. Hierzu wird zunächst die DDIC Struktur gelesen, die dann im Anschluss per Field-Symbol zum generischen Auslesen der Felder genutzt wird. 

DATA: lt_dbFields   TYPE STANDARD TABLE OF  dbfield,
        lw_pa0001     TYPE                    pa0001,
        lw_dbFields   LIKE LINE OF            lt_dbFields,
        l_targetField TYPE                    string,
        l_retCode     LIKE                    sy-subrc.

  CONSTANTS      lc_structureName TYPE string VALUE 'lw_pa0001'.

  FIELD-SYMBOLS: TYPE any.

* Get some dummy data

  SELECT SINGLE * FROM pa0001 INTO lw_pa0001.

  CLEAR: l_retCode.

* Fetch DDIC information for the desired table

  CALL FUNCTION 'DB_GET_TABLE_FIELDS'
    EXPORTING
      tabName          = 'PA0001'   " Care for capitals
   IMPORTING
      subRC            = l_retCode
    TABLES
      dbFields         = lt_dbFields
  .

  IF l_retCode NE 0.
    MESSAGE 'Table not existing.' TYPE 'E'.
  ENDIF.

* No parse the structure information

  LOOP AT lt_dbfields INTO lw_dbfields.

    CLEAR: l_targetField. UNASSIGN: .
    CONCATENATE lc_structureName '-' lw_dbFields-name INTO l_targetField. " Build up field name

    ASSIGN (l_targetField) TO . " Get reference to field using fieldname

    IF IS ASSIGNED. " Access the field name
      WRITE: /,  l_targetField, ':', .
    ELSE.
      MESSAGE 'Field not existing.' TYPE 'E'.
    ENDIF.

  ENDLOOP.

0 Kommentare:

Kommentar veröffentlichen