Suchhilfe aufrufen

Normalerweise reicht die geschickte Anbindung einer Suchhilfe an eine Dictionary-Struktur aus, um gut mit der Werthilfe arbeiten zu können. Manchmal ist es aber notwendig, eine Suchhilfe direkt aufzurufen und Werte vorzubelegen.

Lesen der Suchhilfe

Die Vorgehensweise ist recht einfach. Als erstes wird die Definition der gewünschten Suchhilfe eingelesen. Wir verwenden als Beispiel die Suchhilfe zur statistischen Warennummer H_T604.

DATA ls_shlp TYPE shlp_descr.

CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
  EXPORTING
    shlpname = 'H_T604'
    shlptype = 'SH'
  IMPORTING
    shlp     = ls_shlp.

Suchhilfe zu einer Struktur oder Tabelle

Wenn du nicht genau weißt, welche Suchhilfe du nehmen sollst oder die Abhängigkeit von anderen Felder einer Struktur brauchst, dann kannst du auch die Suchhilfe ermitteln, die direkt an der Struktur oder Tabelle definiert wurde, ermitteln:

Der Funktionsbaustein  F4IF_DETERMINE_SEARCHHELP Die einem DDIC-Feld zugeordnete Suchhilfe bestimmen hilft weiter.

Schnittstelle anpassen

Nun muss noch definiert werden, welche Werte der Suchhilfe in welche Felder des aufrufenden Programms zurückgestellt werden soll. In diesem Beispiel wollen wir das Land und die Warennummer selbst zurück bekommen:

FIELD-SYMBOLS <if> TYPE ddshiface.

LOOP AT ls_shlp-interface ASSIGNING <if>.
*** Statistische Warennummer ins Feld "STAWN"
  IF <if>-SHLPFIELD = 'STAWN'.
    <if>-valfield = 'STAWN'.
  ENDIF.
*** Land ins Feld "LAND1"
  IF <if>-SHLPFIELD = 'LAND1'.
    <if>-valfield = 'LAND1'.
  ENDIF.
ENDLOOP.

Das bedeutet nicht, dass die Feldwerte automatisch zurück gestellt werden, aber die Übernahme kann später anhand dieser Feldnamen erfolgen.

Werte vorbelegen

Wir wollen nun noch das Land vorgeben. Die Vorgabe kann durch den Anwender in der Suchhilfe wieder geändert werden.

FIELD-SYMBOLS <selopt> TYPE ddshselopt.
APPEND INITIAL LINE TO ls_shlp-selopt ASSIGNING <selopt>.
<selopt>-shlpfield = 'LAND1'.
<selopt>-sign      = 'I'.
<selopt>-option    = 'EQ'.
<selopt>-low       = 'DE'.

Suchhilfe aufrufen

Nun kann die Suchhilfe gestartet werden:

DATA lt_retval TYPE STANDARD TABLE OF ddshretval.
DATA ls_retval TYPE                   ddshretval.

CALL FUNCTION 'F4IF_START_VALUE_REQUEST'
  EXPORTING
    shlp          = ls_shlp
  TABLES
    return_values = lt_retval.

Ausgewählte Werte ermitteln

Nachdem der Anwender eine Zeile ausgewählt hat, steht diese in der Rückgabetabelle “LT_RETVAL”.

Für jedes Feld, dass wir in “Schnittstelle anpassen” definiert haben, erhalten wir eine Zeile in der Tabelle:

IF NOT lt_retval IS INITIAL.
*** Rückgabetabelle ist gefüllt: gewählte Stat. Warennummer lesen:
  READ TABLE lt_retval INTO ls_retval WITH KEY fieldname = 'STAWN'.
  IF sy-subrc = 0.
    WRITE: / 'Stat. Warennummer:', ls_retval-fieldval(10).
  ENDIF.
ENDIF.

 

Enno Wulff
Letzte Artikel von Enno Wulff (Alle anzeigen)