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:
- Steuerung des Datentransports (PAI): Im
PROCESS AFTER INPUT
(PAI) Ereignisblock legtFIELD
fest, wann der Inhalt eines bestimmten Feldes auf dem Bildschirm in die zugehörige, gleichnamige globale Variable im ABAP-Programm transportiert wird. - Bedingter Aufruf von Modulen (PAI): Ebenfalls im PAI-Block steuert
FIELD
, wann bestimmte ABAP-Module (MODULE ... ON INPUT
oderMODULE ... ON REQUEST
) zur Feldprüfung oder -verarbeitung aufgerufen werden. - Anbindung von Feldhilfen (POV, POH): In den Ereignisblöcken
PROCESS ON VALUE-REQUEST
(POV) undPROCESS ON HELP-REQUEST
(POH) verknüpftFIELD
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 inPROCESS ON VALUE-REQUEST
(POV) für F4-Hilfe undPROCESS 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.
oderMODULE <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 mehrereFIELD
-Anweisungen zusammen. EinMODULE ... ON CHAIN-INPUT
oderON CHAIN-REQUEST
wird aufgerufen, wenn mindestens ein Feld innerhalb derCHAIN
geändert wurde. Dies ist nützlich für Prüfungen, die von mehreren Feldern abhängen, und für die gemeinsame Fehlerbehandlung (beiMESSAGE 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_REQUESTENDMODULE.
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.