Show TOC Anfang des Inhaltsbereichs

Steuerung des Datentransports  Dokument im Navigationsbaum lokalisieren

Die Daten von gleichnamigen Dynpro- und ABAP-Feldern werden einmal pro Dialogschritt vom Dynpro an das ABAP-Programm übergeben. Solange nur einfache Modulaufrufe verwendet werden geschieht das beim Ereignis PAI vor Beginn der PAI-Verarbeitung.

Mit der Anweisungen FIELD der Dynpro-Ablauflogik läßt sich der Zeitpunkt der Datenübergabe von Dynprofeldern an gleichnamige ABAP-Felder steuern.

Um den Übergabezeitpunkt eines Dynprofelds festzulegen schreibt man in der PAI-Ablauflogik:

FIELD f.

Der Transport des Dynprofelds f in das gleichnamige ABAP-Feld findet erst bei Verarbeitung der FIELD-Anweisung statt. Wenn ein Feld in mehr als einer FIELD-Anweisung aufgeführt wird, wird sein Wert übergeben, wenn die erste entsprechende FIELD-Anweisung erreicht wird.

Nur solche Dynprofelder, die nicht hinter einer FIELDS-Anweisung aufgeführt sind, werden beim Ereignis PAI transportiert. Ein Feld sollte in einem PAI-Modul nicht benutzt werden, bevor es vom Dynpro übergeben wurde. Ansonsten enthält das ABAP-Feld den gleichen Wert wie zu Ende des vorhergehenden Dialogschritts.

Ausnahme: Ein Feld dessen Inhalt zu PBO initial ist und vom Benutzer nicht geändert wird, wird von der FIELD-Anweisung nicht transportiert. Wenn dieses Feld in einem PAI-Modul vor Ausführung der FIELD-Anweisung mit einem Wert gefüllt wird, wird dieser von der FIELD-Anweisung also nicht mit dem Initialwert überschrieben.

Die Anweisung FIELD hat in Verbindung mit der MODULE-Anweisung noch weitere Bedeutungen, die im Zusammenhang mit Bedingten Modulaufrufen und Gültigkeitsüberprüfungen beschrieben werden.

Beispiel

Steuerung des Datentransports.

PROGRAM demo_dynpro_field.

DATA: ok_code TYPE sy-ucomm,
      save_ok LIKE ok_code,
      box1(1) TYPE c, box2(1) TYPE c, box3(1) TYPE c, box4(1) TYPE c,
      mod1_result1(1) TYPE c, mod1_result2(1) TYPE c,
      mod1_result3(1) TYPE c, mod1_result4(1) TYPE c,
      mod2_result1(1) TYPE c, mod2_result2(1) TYPE c,
      mod2_result3(1) TYPE c, mod2_result4(1) TYPE c,
      mod3_result1(1) TYPE c, mod3_result2(1) TYPE c,
      mod3_result3(1) TYPE c, mod3_result4(1) TYPE c.

CALL SCREEN 100.

MODULE init_screen_100 OUTPUT.
  SET PF-STATUS 'STATUS_100'.
  CLEAR:  box1, box2, box3, box4.
ENDMODULE.

MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  IF save_ok = 'CANCEL'.
    LEAVE PROGRAM.
  ENDIF.
ENDMODULE.

MODULE module_1 INPUT.
  mod1_result1 = box1.
  mod1_result2 = box2.
  mod1_result3 = box3.
  mod1_result4 = box4.
ENDMODULE.

MODULE module_2 INPUT.
  mod2_result1 = box1.
  mod2_result2 = box2.
  mod2_result3 = box3.
  mod2_result4 = box4.
ENDMODULE.

MODULE module_3 INPUT.
  mod3_result1 = box1.
  mod3_result2 = box2.
  
mod3_result3 = box3.
  mod3_result4 = box4.
ENDMODULE.

Die statische Folge-Dynpro-Nummer von Dynpro 100 ist 100 und sein Layout ist wie folgt:

Diese Grafik wird im zugehörigen Text erklärt

Den eingabebereiten Ankreuzfeldern sind die Dynprofelder box1, box2, box3 und box4 zugeordnet.

Die Bildschirmablauflogik ist:

PROCESS BEFORE OUTPUT.
  MODULE init_screen_100.

PROCESS AFTER INPUT.
  MODULE user_command_0100.
  MODULE module_1.
  FIELD box2.
  MODULE module_2.
  FIELD: box1, box3.
  MODULE module_3.

Im GUI-Status STATUS_100 ist das Symbol Diese Grafik wird im zugehörigen Text erklärt (F12) durch den Funktionscode CANCEL aktiviert.

Wenn der Benutzer die eingabebereiten Ankreuzfelder markiert und über ENTER das Ereignis PAI auslöst, zeigen die Ausgabefelder an, welches Dynprofeld in welchem Dialogmodul zur Verfügung steht.

Wenn alle Ankreuzfelder markiert werden ist das Ergebnis:

Diese Grafik wird im zugehörigen Text erklärt

·         Dynpro-Feld box4 wird beim Ereignis PAI transportiert, da es in keiner FIELD-Anweisung steht.

·         Dynpro-Feld box2 wird erst vor dem Aufruf des Dialogmoduls module_2 transportiert, steht also in user_command_0100 und module_1 noch nicht zur Verfügung.

·         Dynpro-Felder box1 und box3 werden erst vor dem Aufruf des Dialogmoduls module_3 transportiert und stehen nur in diesem zur Verfügung.

 

 

Ende des Inhaltsbereichs