ABAP Dynpro-Ablauflogik: Die FIELD-Anweisung für Datentransport und Modulaufrufe

kategorie
ABAP-Statements
Veröffentlicht
autor
Johannes

Wichtige Einordnung vorab: Die FIELD-Anweisung ist kein Befehl im normalen prozeduralen oder objektorientierten ABAP-Code (wie z. B. in einem REPORT, einer CLASS oder einem FUNCTION MODULE). Stattdessen ist FIELD ein Schlüsselwort, das ausschließlich in der Ablauflogik (Flow Logic) von Dynpros (Bildschirmen) verwendet wird, die mit dem Screen Painter (Transaktion SE51) erstellt werden.

Die FIELD-Anweisung hat in der Dynpro-Ablauflogik folgende Hauptaufgaben:

  1. Steuerung des Datentransports (PAI): Im PROCESS AFTER INPUT (PAI) Ereignisblock legt FIELD fest, wann der Inhalt eines bestimmten Feldes auf dem Bildschirm in die zugehörige, gleichnamige globale Variable im ABAP-Programm transportiert wird.
  2. Bedingter Aufruf von Modulen (PAI): Ebenfalls im PAI-Block steuert FIELD, wann bestimmte ABAP-Module ( MODULE ... ON INPUT oder MODULE ... ON REQUEST) zur Feldprüfung oder -verarbeitung aufgerufen werden.
  3. Anbindung von Feldhilfen (POV, POH): In den Ereignisblöcken PROCESS ON VALUE-REQUEST (POV) und PROCESS ON HELP-REQUEST (POH) verknüpft FIELD ein Bildschirmfeld mit einem ABAP-Modul, das die F4- (Wertehilfe) bzw. F1- (Feldhilfe) Funktionalität bereitstellt.

Abgrenzung zu FIELD-SYMBOLS

Bitte nicht verwechseln: Die FIELD-Anweisung in der Dynpro-Ablauflogik hat nichts mit FIELD-SYMBOLS im ABAP-Code zu tun. FIELD-SYMBOLS sind Platzhalter bzw. Zeiger auf Speicherbereiche im ABAP-Programm. Die FIELD-Anweisung bezieht sich immer auf ein konkretes Ein-/Ausgabefeld auf einer Bildschirmmaske.

Kontext

  • Wo: Ablauflogik eines Dynpros (Screen Painter, SE51)
  • Wann: Hauptsächlich im PROCESS AFTER INPUT (PAI) Block, aber auch in PROCESS ON VALUE-REQUEST (POV) für F4-Hilfe und PROCESS ON HELP-REQUEST (POH) für F1-Hilfe.

Syntax und Funktionsweise

1. Im PROCESS AFTER INPUT (PAI)

Syntax:

PROCESS AFTER INPUT.
...
FIELD <screen_field_name>.
MODULE <pai_module_name> [ON INPUT | ON REQUEST].
...
" Oder mit CHAIN für Gruppenprüfungen:
CHAIN.
FIELD <field1>.
FIELD <field2>.
MODULE <module_for_field2> ON INPUT. " Modul nur für Feld 2
ENDCHAIN.
MODULE <module_for_chain> [ON CHAIN-INPUT | ON CHAIN-REQUEST]. " Modul für die Kette
...

Funktionsweise

  • Datentransport: Wenn die PAI-Verarbeitung die Zeile FIELD <screen_field_name>. erreicht, wird der Inhalt dieses Feldes vom Bildschirm nur dann in die gleichnamige globale Variable im ABAP-Programm übertragen, wenn der Benutzer den Wert seit dem letzten Senden des Bildschirms (PBO) geändert hat.
  • Modulaufruf: Ein direkt folgendes MODULE <pai_module_name> ON INPUT. oder MODULE <pai_module_name> ON REQUEST. wird nur dann ausgeführt, wenn der Feldinhalt transportiert wurde (also vom Benutzer geändert wurde).
    • ON INPUT: Aufruf, wenn Feld eingabebereit war und geändert wurde.
    • ON REQUEST: Aufruf nur, wenn Feld geändert wurde UND der Benutzer eine Aktion ausgelöst hat, die PAI explizit anfordert (z.B. Enter, Sichern - nicht nur Tabulator).
  • Reihenfolge: Die Abfolge der FIELD-Anweisungen bestimmt, in welcher Reihenfolge Felder potenziell transportiert und ihre Module aufgerufen werden.
  • CHAIN ... ENDCHAIN: Fasst mehrere FIELD-Anweisungen zusammen. Ein MODULE ... ON CHAIN-INPUT oder ON CHAIN-REQUEST wird aufgerufen, wenn mindestens ein Feld innerhalb der CHAIN geändert wurde. Dies ist nützlich für Prüfungen, die von mehreren Feldern abhängen, und für die gemeinsame Fehlerbehandlung (bei MESSAGE E... innerhalb der Kette bleiben alle Felder der Kette eingabebereit).

2. Im PROCESS ON VALUE-REQUEST (POV) für F4-Hilfe

  • Syntax:
PROCESS ON VALUE-REQUEST.
FIELD <screen_field_name> MODULE <f4_module_name>.

Funktionsweise: Wenn der Benutzer den Cursor auf <screen_field_name> positioniert und F4 drückt, wird das ABAP-Modul <f4_module_name> aufgerufen. Dieses Modul ist dafür verantwortlich, die Wertehilfe anzuzeigen (z.B. durch Aufruf von Funktionsbausteinen wie F4IF_INT_TABLE_VALUE_REQUEST).

3. Im PROCESS ON HELP-REQUEST (POH) für F1-Hilfe

Syntax:

PROCESS ON HELP-REQUEST.
FIELD <screen_field_name> MODULE <f1_module_name>.

Funktionsweise: Wenn der Benutzer den Cursor auf <screen_field_name> positioniert und F1 drückt, wird das ABAP-Modul <f1_module_name> aufgerufen. Dieses Modul kann dann kontextsensitive Hilfeinformationen anzeigen (z.B. durch Aufruf von HELP_OBJECT_SHOW).

Beispiele (Konzeptuell)

1. Einfache PAI-Validierung

*&---------------------------------------------------------------------*
*& Dynpro 0100 Flow Logic
*&---------------------------------------------------------------------*
PROCESS AFTER INPUT.
*-- Feld KUNDENNUMMER vom Schirm lesen (wenn geändert) und prüfen
FIELD KUNDENNUMMER.
MODULE VALIDATE_KUNDE ON INPUT.
*&---------------------------------------------------------------------*
*& Module VALIDATE_KUNDE INPUT
*&---------------------------------------------------------------------*
MODULE VALIDATE_KUNDE INPUT.
* Globale Variable KUNDENNUMMER wurde gefüllt, wenn User Eingabe machte
IF KUNDENNUMMER IS INITIAL.
MESSAGE E001(ZMSG) WITH 'Kundennummer eingeben!'.
ELSE.
SELECT SINGLE KUNNR FROM KNA1 INTO KUNDENNUMMER WHERE KUNNR = KUNDENNUMMER.
IF SY-SUBRC <> 0.
MESSAGE E002(ZMSG) WITH 'Kundennummer existiert nicht'.
ENDIF.
ENDIF.
ENDMODULE.

2. PAI mit CHAIN

PROCESS AFTER INPUT.
CHAIN.
FIELD FLUGDATUM_VON.
FIELD FLUGDATUM_BIS.
MODULE CHECK_DATUMSRANGE ON CHAIN-INPUT.
ENDCHAIN.
MODULE CHECK_DATUMSRANGE INPUT.
* FLUGDATUM_VON und FLUGDATUM_BIS wurden gefüllt, wenn eines geändert wurde
IF FLUGDATUM_BIS < FLUGDATUM_VON.
MESSAGE E003(ZMSG) WITH 'Datum Bis muss nach Datum Von liegen'.
ENDIF.
ENDMODULE.

3. F4-Hilfe anbinden (POV)

PROCESS ON VALUE-REQUEST.
FIELD CARRID MODULE F4_FOR_CARRID.
MODULE F4_FOR_CARRID INPUT.
* Hier Code zum Aufrufen der Wertehilfe für Fluggesellschaften (Tabelle SCARR)
* z.B. mit F4IF_INT_TABLE_VALUE_REQUEST oder F4IF_FIELD_VALUE_REQUEST
ENDMODULE.

Wichtige Hinweise

  • Die FIELD-Anweisung ist fundamental für die Steuerung der klassischen Dynpro-Programmierung.
  • Das Verständnis ist essenziell für die Arbeit mit Modulpool-Programmen und klassischen SAP-Anwendungen.
  • In modernen UI-Technologien wie Web Dynpro ABAP oder SAP Fiori (mit SAPUI5) gibt es keine Dynpro-Ablauflogik und somit auch keine FIELD-Anweisung in dieser Form. Dort werden Datenaustausch und Validierung über andere Konzepte wie Data Binding und Event Handling realisiert.