Anfang des Inhaltsbereichs

Aufruf von Dynpros aus der Listenverarbeitung Dokument im Navigationsbaum lokalisieren

Der Aufruf von Dynpros aus der Listenverarbeitung erfolgt mit der Anweisung

CALL SCREEN <nnnn>.

Wie unter Dynprofolgen 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

Beispiel

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

REPORT demo_call_screen_from_list.

NODES  spfli.
TABLES demo_conn.

DATA: ok_code LIKE sy-ucomm,
      save_ok LIKE sy-ucomm.

TOP-OF-PAGE.
  WRITE 'Liste von Flügen'(001) COLOR COL_HEADING.
  ULINE.

GET spfli FIELDS carrid connid.
  WRITE: / spfli-carrid, spfli-connid.
  HIDE:    spfli-carrid, spfli-connid.

END-OF-SELECTION.
  CLEAR:   spfli-carrid, spfli-connid.

AT LINE-SELECTION.
  CHECK not spfli-carrid is initial.
  demo_conn-carrid = spfli-carrid.
  demo_conn-connid = spfli-connid.
  CALL SCREEN 100.
  CLEAR: spfli-carrid, spfli-connid.

MODULE cancel INPUT.
  LEAVE PROGRAM.
ENDMODULE.

MODULE status_0100 OUTPUT.
  SET PF-STATUS 'SCREEN_100'.
ENDMODULE.

MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
    WHEN OTHERS.
      SELECT  SINGLE *
        FROM  sflight
        INTO  CORRESPONDING FIELDS OF demo_conn
        WHERE carrid = demo_conn-carrid AND
              connid = demo_conn-connid AND
              fldate = demo_conn-fldate.
        IF sy-subrc ne 0.
          MESSAGE e047(sabapdocu).
        ELSE.
          SET SCREEN 200.
        ENDIF.
  ENDCASE.
ENDMODULE.

MODULE status_0200 OUTPUT.
  SET PF-STATUS 'SCREEN_200'.
ENDMODULE.

MODULE user_command_0200 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE  save_ok.
    WHEN 'BACK'.
      LEAVE TO SCREEN 100.
    WHEN 'SAVE'.
      ...             "e.g. update records in database
      MESSAGE i888(sabapdocu) WITH text-002.
      SET SCREEN 0.
  ENDCASE.
ENDMODULE.

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:

Diese Grafik wird im zugehörigen Text erklärt

Und seine Ablauflogik ist:

PROCESS BEFORE OUTPUT.
  MODULE status_0100.

PROCESS AFTER INPUT.
  MODULE cancel AT EXIT-COMMAND.
  FIELD demo_conn-fldate MODULE user_command_0100.

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:

Diese Grafik wird im zugehörigen Text erklärt

Und seine Ablauflogik ist:

PROCESS BEFORE OUTPUT.
  MODULE status_0200.

PROCESS AFTER INPUT.
  MODULE cancel AT EXIT-COMMAND.
  MODULE user_command_0200.

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.

Ende des Inhaltsbereichs