WRITE für Programmstruktur

Es ist leider im Standard nicht möglich, die Felder einer programminternen Struktur oder Tabelle auszugeben. Mit dem folgenden Muster-Dialog geht es! Hierfür werden die Strukturen des Programms zur Auswahl angeboten. Die Felder der ausgewählten Struktur werden dann für die Ausgabe vorbereitet.

So sieht’s aus


Auswahl der Programminternen Struktur

 Quelltext

FUNCTION ZWRITE1_EDITOR_EXIT.
*”———————————————————————-
*”*”Lokale Schnittstelle:
*”       TABLES
*”              BUFFER STRUCTURE  ABAPSOURCE
*”       EXCEPTIONS
*”              CANCELLED
*”———————————————————————-

  DATA:
    l_report LIKE sy-cprog,
    l_answer,
    t_flist  LIKE rfieldlist OCCURS 0 WITH HEADER LINE,
    t_comp   LIKE rstrucinfo OCCURS 0 WITH HEADER LINE,
    t_pop    LIKE spopli     OCCURS 0 WITH HEADER LINE.

*– Aktuellen Report ermitteln
  GET PARAMETER ID ‘RID’ FIELD l_report.

  IF sy-subrc = 0.
*– Felddefinitionen lesen
    CALL FUNCTION ‘GET_GLOBAL_SYMBOLS’
         EXPORTING
              program      = l_report
              name_pattern = ‘*’
         TABLES
              fieldlist    = t_flist.

*– Alles, was keine “Struktur” ist, rauswerfen:
    LOOP AT t_flist.
      IF t_flist-type <> ‘u’         OR      “Struktur
         t_flist-name(1) = ‘%’       OR
         t_flist-name(1) = ‘<‘       OR
         t_flist-name = ‘SSCRFIELDS’ OR
         t_flist-name = ‘SSCRTEXTS’  OR
         t_flist-name = ‘SCREEN’     OR
         t_flist-name = ‘RSJOBINFO’  OR
         t_flist-name = ‘SY’         OR
         t_flist-name = ‘SYST’       OR
         t_flist-name = ‘VARI’.
        DELETE t_flist.
      ELSE.
*– Zur Auswahl anbieten
        t_pop-selflag = space.
        t_pop-varoption = t_flist-name.
        APPEND t_pop.
      ENDIF.
    ENDLOOP.

*– Auswahl der Struktur
    CALL FUNCTION ‘POPUP_TO_DECIDE_LIST’
         EXPORTING
              start_col = 5
              start_row = 10
              textline1 = ‘Bitte Struktur auswählen’
              titel     = ‘WRITE zu Programmstruktur’
         IMPORTING
              answer    = l_answer
         TABLES
              t_spopli  = t_pop
         EXCEPTIONS
              OTHERS    = 4.

*– Gewählten Eintrag bearbeiten:
    LOOP AT t_pop WHERE selflag = ‘X’.
*– Komponentenliste der Struktur ermitteln
      CALL FUNCTION ‘GET_COMPONENT_LIST’
           EXPORTING
                program    = l_report
                fieldname  = t_pop-varoption
           TABLES
                components = t_comp.
      LOOP AT t_comp.
        CONCATENATE ‘WRITE~’
                    t_pop-varoption ‘-‘ t_comp-compname ‘.’
               INTO buffer.
        TRANSLATE buffer USING ‘~ ‘.
        APPEND buffer.
      ENDLOOP.
    ENDLOOP.

  ENDIF.

ENDFUNCTION.

Enno Wulff