Eigener Muster-Dialog

Im folgenden erklären wir Ihnen, wie Sie Ihren eigenen Muster-Dialog erstellen können. Sie müssen hierfür zwei Namenskonventionen beachten und dann können Sie loslegen.

Im folgenden legen wir einen eigenen Dialog Schritt für Schritt an. Dieser Dialog soll den folgenden Quellcode erzeugen:

*** Tabellendefinition für: “Interne Beispieltabelle”         
DATA t_itab LIKE tabelle OCCURS 0 WITH HEADER LINE.           

Der Name der internen Tabelle, die Referenz und die kurze Dokumentation soll natürlich durch ein Popup erfragt werden.

1. Schritt: Anlegen des Musters

Wechseln Sie in den Editor und wählen Sie über das Menü: “Hilfsmittel – Weitere Hilfsmittel – Muster bearbeiten – Muster anlegen“. Im Popup geben Sie den Namen “Z_ITAB” ein.

Sie gelangen so in den Muster-Editor. Geben Sie hier einfach den folgenden Text ein und sichern Sie das Muster:

*$&$MUSTER

Dieses Literal ist das Zeichen für SAP einen Funktionsbaustein aufzurufen.

2. Schritt: Der Funktionsbaustein

Der Name des Funktionsbausteins ergibt sich aus dem Namen des Musters: “Z_ITAB” und dem Text “_EDITOR_EXIT“. Es wird also in unserem Fall der Funktionsbaustein “Z_ITAB_EDITOR_EXIT” aufgerufen. Den müssen wir nun anlegen. Wechseln Sie hierfür in die Transaktion SE37, legen eine Funktionsgruppe an, z. B. “Z_MUSTER’, und kopieren Sie den Baustein “SUBMIT_EDITOR_EXIT” auf “Z_ITAB_EDITOR_EXIT”. Durch das Kopieren hat der Funktionsbaustein die richtigen Parameter.

3. Schritt: Programmierung des Dialogs

Löschen Sie aus dem kopierten Funktionsbaustein den vorhandenen Quelltext. und fügen Sie folgenden Quellcode ein:

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

*– Variablen
  DATA:
    l_rcode,
    l_itab(30),
    l_tabl(30),
    l_text(200),
    l_buffer(200),
    l_leng TYPE i,

    t_val     LIKE sval  OCCURS 0 WITH HEADER LINE.

*– Abfragefeld “Name der internen Tabelle”
  CLEAR t_val.
  t_val-tabname    = ‘DD03L’.
  t_val-fieldname  = ‘REFTABLE’.
  t_val-value      = ‘T_ITAB’.
  t_val-field_attr = space.
  t_val-field_obl  = ‘X’.
  t_val-comp_code  = space.
  t_val-fieldtext  = ‘Interne Tabelle’.
  t_val-comp_tab   = ‘DD02L’.
  t_val-comp_field = ‘TABNAME’.
  t_val-novaluehlp = space.
  APPEND t_val.

*– Abfragefeld “Bezugstabelle aus dem Dictionary”
  CLEAR t_val.
  t_val-tabname    = ‘DD03L’.
  t_val-fieldname  = ‘TABNAME’.
  t_val-value      = ‘?’.
  t_val-field_attr = space.
  t_val-field_obl  = ‘X’.
  t_val-comp_code  = space.
  t_val-fieldtext  = ‘Dictionary-Bezug’.
  t_val-comp_tab   = ‘DD02L’.
  t_val-comp_field = ‘TABNAME’.
  t_val-novaluehlp = space.
  APPEND t_val.

*– Abfragefeld “Beschreibung der internen Tabelle”
  CLEAR t_val.
  t_val-tabname    = ‘DD03T’.
  t_val-fieldname  = ‘DDTEXT’.
  t_val-value      = ‘<Beschreibung>’.
  t_val-field_attr = space.
  t_val-field_obl  = ‘X’.
  t_val-comp_code  = space.
  t_val-fieldtext  = ‘Beschreibung’.
  t_val-comp_tab   = ”.
  t_val-comp_field = ”.
  t_val-novaluehlp = space.
  APPEND t_val.

*– Popup zur Abfrage der Werte aufrufen
  CALL FUNCTION ‘POPUP_GET_VALUES’
       EXPORTING
            no_value_check  = ‘X’
            popup_title     = ‘Muster Dialog’
            start_column    = ‘5’
            start_row       = ‘5’
       IMPORTING
            returncode      = l_rcode
       TABLES
            fields          = t_val
       EXCEPTIONS
            error_in_fields = 1
            OTHERS          = 2.

  IF l_rcode = ‘A’.
    RAISE cancelled.
  ELSE.

*– Namen der Internen Tabelle lesen
    READ TABLE t_val INDEX 1.
    TRANSLATE t_val-value TO UPPER CASE.
    l_itab = t_val-value.

*– Namen des Dictionary-Bezugs lesen
    READ TABLE t_val INDEX 2.
    TRANSLATE t_val-value TO UPPER CASE.
    l_tabl = t_val-value.

*– Beschreibung der Internen Tabelle lesen
    READ TABLE t_val INDEX 3.
    TRANSLATE t_val-value TO UPPER CASE.
    l_text = t_val-value.

*– Zusammenbau
    CONCATENATE ‘* Info: “‘ l_text ‘”‘
           INTO buffer SEPARATED BY space.
    APPEND buffer.

    CONCATENATE ‘  DATA’ l_itab ‘LIKE’ l_tabl
           INTO buffer SEPARATED BY space.
    l_leng = strlen( buffer ).
    IF l_leng > 40.
      APPEND buffer.
      APPEND ‘                       OCCURS 0 WITH HEADER LINE.’
          TO buffer.
    ELSE.
      CONCATENATE buffer ‘OCCURS 0 WITH HEADER LINE.’
             INTO buffer SEPARATED BY space.

      APPEND buffer.
    ENDIF.
    CLEAR buffer.
    APPEND buffer.

  ENDIF.

ENDFUNCTION.

4. Schritt: Muster testen

Wenn Sie alles richtig gemacht haben, erhalten Sie nach Auswahl “Z_ITAB” unter “Sonstige Muster” im Muster-Dialog Ihren eigenen Dialog.


Auswahl des eigenen Dialogs


Der neue Dialog…


Und das Ergebnis!

Enno Wulff

Leave a Comment