[ABAP] Popup zur Wert-Eingabe von Datenbankfeldern anzeigen

TYPES: ty_it_fields TYPE STANDARD TABLE OF sval WITH DEFAULT KEY.

DATA: lv_ret TYPE char1.

* field_attr:
*
* space - normale Helligkeit, eingabebereit
* 01     - hell, eingabebereit
* 02     - normale Helligkeit, nicht eingabebereit
* 03     - hell, nicht eingabebereit
* 04     - nicht anzeigen

* Eingabefelder
DATA(it_fields) = VALUE ty_it_fields( ( tabname = 'BKPF' fieldname = 'BUDAT' value = sy-datum field_obl = abap_true )
                                      ( tabname = 'BKPF' fieldname = 'BLART' field_obl = abap_true )
                                      ( tabname = 'MARA' fieldname = 'MATNR' fieldtext = 'MarNr' field_attr = '01' value = '00001' ) ).

* Eingabedialog
CALL FUNCTION 'POPUP_GET_VALUES'
  EXPORTING
    popup_title     = 'Werteeingabe'
  IMPORTING
    returncode      = lv_ret
  TABLES
    fields          = it_fields
  EXCEPTIONS
    error_in_fields = 1
    OTHERS          = 2.

* Auswertung
IF sy-subrc = 0.
  CASE lv_ret.
    WHEN space.
      LOOP AT it_fields ASSIGNING FIELD-SYMBOL(<fs_line>).
        WRITE: / <fs_line>-tabname, <fs_line>-fieldname, <fs_line>-fieldtext, <fs_line>-field_obl, <fs_line>-value.
      ENDLOOP.
    WHEN 'A'.
      WRITE: / 'Abbruch.'.
    WHEN OTHERS.
      WRITE: / 'Fehler.'.
  ENDCASE.
ELSE.
  WRITE: / sy-subrc.
ENDIF.