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.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024