Show TOC

HintergrundAufruf von Dynpros aus der Listenverarbeitung Dieses Dokument in der Navigationsstruktur finden

 

Der Aufruf von Dynpros aus der Listenverarbeitung erfolgt mit der Anweisung

CALL SCREEN nnnn.

Wie unter Dynpro-Folgen aufrufen beschrieben, bettet diese Anweisung eine Dynprofolge an der Aufrufstelle ein. Der Listenprozessor übergibt dabei die Kontrolle an den Dialogprozessor.

Der Kontext der Aufrufstelle bleibt erhalten. Ruft man also während der Verarbeitung einer bestimmten Listenstufe eine Dynprofolge auf, wird diese bis Erreichen des Folgedynpros 0 verarbeitet. Dann übergibt der Dialogprozessor die Kontrolle wieder an den Listenprozessor und die Verarbeitung wird hinter CALL SCREEN in der aktuellen Listenstufe fortgesetzt.

Beispiel

Das folgende Programm ist mit der logischen Datenbank F1S verknüpft.

Syntax Syntax

  1. REPORT demo_call_screen_from_list.
  2. NODES  spfli.
  3. TABLES demo_conn.
  4. DATA: ok_code LIKE sy-ucomm,
  5.       save_ok LIKE sy-ucomm.
  6. TOP-OF-PAGE.
  7.   WRITE 'Liste von Flügen'(001) COLOR COL_HEADING.
  8.   ULINE.
  9. GET spfli FIELDS carrid connid.
  10.   WRITE: / spfli-carrid, spfli-connid.
  11.   HIDE:    spfli-carrid, spfli-connid.
  12. END-OF-SELECTION.
  13.   CLEAR:   spfli-carrid, spfli-connid.
  14. AT LINE-SELECTION.
  15.   CHECK not spfli-carrid is initial.
  16.   demo_conn-carrid = spfli-carrid.
  17.   demo_conn-connid = spfli-connid.
  18.   CALL SCREEN 100.
  19.   CLEAR: spfli-carrid, spfli-connid.
  20. MODULE cancel INPUT.
  21.   LEAVE PROGRAM.
  22. ENDMODULE.
  23. MODULE status_0100 OUTPUT.
  24.   SET PF-STATUS 'SCREEN_100'.
  25. ENDMODULE.
  26. MODULE user_command_0100 INPUT.
  27.   save_ok = ok_code.
  28.   CLEAR ok_code.
  29.   CASE save_ok.
  30.     WHEN 'BACK'.
  31.       LEAVE TO SCREEN 0.
  32.     WHEN OTHERS.
  33.       SELECT  SINGLE *
  34.         FROM  sflight
  35.         INTO  CORRESPONDING FIELDS OF demo_conn
  36.         WHERE carrid = demo_conn-carrid AND
  37.               connid = demo_conn-connid AND
  38.               fldate = demo_conn-fldate.
  39.         IF sy-subrc ne 0.
  40.           MESSAGE e047(sabapdocu).
  41.         ELSE.
  42.           SET SCREEN 200.
  43.         ENDIF.
  44.   ENDCASE.
  45. ENDMODULE.
  46. MODULE status_0200 OUTPUT.
  47.   SET PF-STATUS 'SCREEN_200'.
  48. ENDMODULE.
  49. MODULE user_command_0200 INPUT.
  50.   save_ok = ok_code.
  51.   CLEAR ok_code.
  52.   CASE  save_ok.
  53.     WHEN 'BACK'.
  54.       LEAVE TO SCREEN 100.
  55.     WHEN 'SAVE'.
  56.       ...             "e.g. update records in database
  57.       MESSAGE i888(sabapdocu) WITH text-002.
  58.       SET SCREEN 0.
  59.   ENDCASE.
  60. ENDMODULE.
Ende des Codes

Bei Ausführung des Programms kann der Benutzer Selektionen auf dem Selektionsbild der logischen Datenbank eingeben, dann wird eine Grundliste dargestellt.

Bei Auswahl einer Listenzeile wird zum Ereignis AT LINE-SELECTION das Dynpro 100 aufgerufen, wobei die Inhalte von zwei Dynprofeldern im ABAP-Programm gesetzt werden. Das Layout von Dynpro 100 ist:

Die Abbildung wird im Begleittext erläutert.

Und seine Ablauflogik ist:

Syntax Syntax

  1. PROCESS BEFORE OUTPUT.
  2.   MODULE status_0100.
  3. PROCESS AFTER INPUT.
  4.   MODULE cancel AT EXIT-COMMAND.
  5.   FIELD demo_conn-fldate MODULE user_command_0100.
Ende des Codes

Der Benutzer kann ein Flugdatum zu den auf der Liste ausgewählten Schlüsselfeldern eingeben. Mit der Auswahl von Weiter werden entsprechende Daten aus der Tabelle SFLIGHT gelesen und Dynpro 200 als Folgedynpro gesetzt. Das Layout von Dynpro 200 ist:

Die Abbildung wird im Begleittext erläutert.

Und seine Ablauflogik ist:

Syntax Syntax

  1. PROCESS BEFORE OUTPUT.
  2.   MODULE status_0200.
  3. PROCESS AFTER INPUT.
  4.   MODULE cancel AT EXIT-COMMAND.
  5.   MODULE user_command_0200.
Ende des Codes

Der Benutzer kann bestimmte Daten des ausgewählten Flugs ändern und sichern. Die Änderung der Daten auf der Datenbank ist in diesem Beispiel nicht auscodiert.

Nach erfolgreicher Verarbeitung wird Dynpro 0 als Folgedynpro gesetzt und die Dynprofolge damit beendet. Das System kehrt zur Anzeige der Grundliste zurück.

Bei Auswahl der Funktion Zurück (Funktionscode BACK) wird auf beiden Dynpros ebenfalls zur Grundliste zurückgekehrt.