Anfang des Inhaltsbereichs

Beispieltransaktion für Dynprofolgen Dokument im Navigationsbaum lokalisieren

Als Beispieltransaktion für Dynprofolgen kann die Transaktion DEMO_SCREEN_FLOW dienen. Diese Transaktion gehört zum Paket SABAPDOCU und wird mit dem System ausgeliefert. In der Transaktion DEMO_SCREEN_FLOW kann der Benutzer Flugdaten anzeigen und Änderungen vornehmen.

Funktionalität

DEMO_SCREEN_FLOW verwendet drei Dynpros. Die Dynpros 100 und 200 bilden eine Folge. Dynpro 210 ist ein modales Dialogfenster und wird nur unter bestimmten Bedingungen aufgerufen. Die möglichen Dynprofolgen sehen folgendermaßen aus:

Diese Grafik wird im zugehörigen Text erklärt

Am System sieht der Benutzer folgende Bildschirmfolge:

Der Benutzer gibt Flugdaten ein, fordert mit ENTER eine Detailanzeige der Flugdaten an oder beendet die Transaktion.

Diese Grafik wird im zugehörigen Text erklärt

Das System zeigt die gesamten Detailangaben zu diesem Flug in Eingabefeldern. Der Benutzer gibt Änderungen ein, indem er die angezeigten Daten überschreibt.

Diese Grafik wird im zugehörigen Text erklärt

Das modale Dialogfenster wird nur angezeigt, wenn der Benutzer versucht Bild 200 mit Zurück oder Beenden zu verlassen, ohne geänderte Werte zu sichern. Das Dialogfenster erlaubt dem Benutzer, die Änderungen zu sichern oder den Vorgang abzubrechen.

Diese Grafik wird im zugehörigen Text erklärt

An dieser Transaktion läßt sich gut erkennen, wie die Dynprofolge realisiert wurde. Wir betrachten Dynpro 200 um zu sehen, wie das modale Dialogfenster aufgerufen wird:

Dynpro-Ablauflogik

Bei der Verarbeitung der Funktionscodes BACK oder EXIT muß das PAI-Modul prüfen, ob die Flugdaten seit der letzten Anzeige des Bildes oder der letzten Sicherung geändert wurden. Ist dies der Fall, soll Dynpro 210 als modales Dialogfenster aufgerufen werden. Folgende Teile der Ablauflogik von Dynpro 200 sind hierbei relevant:

*---------------------------------------------------------------*
*   Dynpro 200: Ablauflogik                                       *
*&--------------------------------------------------------------*
PROCESS AFTER INPUT.
  MODULE exit_0200 AT EXIT-COMMAND.
  ...
  MODULE user_command_0200.

Es werden zwei Dialogmodule zum Zeitpunkt PAI aufgerufen.

ABAP-Coding

Die Oberfläche von Transaktion DEMO_SCREEN_FLOW bietet die Funktionen Zurück, Beenden und Abbrechen als Rückkehr-Befehle an. Auf dem Bildschirm von Dynpro 200 soll der Benutzer jedoch nur mit Abbrechen das Bild sofort verlassen können und zu Dynpro 100 zurückkehren. Der entsprechende Funktionscode wird im Modul EXIT_200 bearbeitet. Das Folgedynpro wird dynamisch auf 100 gesetzt und die Verarbeitung von Dynpro 200 sofort mit LEAVE SCREEN beendet.

*&---------------------------------------------------------------*

*&      Modul  EXIT_0200  INPUT

*&---------------------------------------------------------------*

MODULE exit_0200 INPUT.
  CASE ok_code.
    WHEN 'CANC'.
      CLEAR ok_code.
      SET SCREEN 100. LEAVE SCREEN.
  ENDCASE.
ENDMODULE.

Die übrigen Funktionscodes für Bild 200 werden im Modul USER_COMMAND_200 verarbeitet:

· Die Funktion SICHERN stößt eine Aktualisierung der Datenbank an.

· Die Funktionen BEENDEN und ZURÜCK rufen das Unterprogramm SAFETY_CHECK auf. Dieses Unterprogramm sucht nach nichtgesicherten Daten auf dem Bild und ruft falls erforderlich das Dynpro 210 auf.

*&---------------------------------------------------------------*

*&      Modul   USER_COMMAND_0200  INPUT

*&---------------------------------------------------------------*

MODULE user_command_0200 INPUT.
  CASE ok_code.
    WHEN 'SAVE'.
      UPDATE spfli.
      IF sy-subrc = 0.
         MESSAGE s001 WITH spfli-carrid spfli-connid.
      ELSE.
         MESSAGE a002 WITH spfli-carrid spfli-connid.
      ENDIF.
      CLEAR ok_code.
    WHEN 'EXIT'.
      CLEAR ok_code.
      PERFORM safety_check USING rcode.
      IF rcode = 'EXIT'. SET SCREEN 0. LEAVE SCREEN. ENDIF.
    WHEN 'BACK'.
      CLEAR ok_code.
      PERFORM safety_check USING rcode.
      IF rcode = 'EXIT'. SET SCREEN 100. LEAVE SCREEN. ENDIF.
  ENDCASE.
ENDMODULE.

Wird die Funktion Beenden (Funktionscode EXIT) gewählt, wird die Transaktion komplett über verlassen, da die Dynprofolge dynamisch über SET SCREEN 0 beendet wird. Bei der Funktion ZURÜCK (Funktionscode BACK) wird Dynpro 100 dynamisch mit SET SCREEN 100 als Folgedynpro gesetzt.

Im Unterprogramm SAFETY_CHECK werden zuvor die aktuellen Bildschirmwerte mit den gesicherten Bildschirmwerten verglichen. Stimmen diese Werte überein, muß der Benutzer nicht sichern und das Unterprogramm endet.

*---------------------------------------------------------------*

*   Unterprogramm SAFETY_CHECK                                  *

*---------------------------------------------------------------*

FORM safety_check USING rcode.
  LOCAL ok_code.
  rcode = 'EXIT'.
  CHECK spfli NE old_spfli.
  CLEAR ok_code.
  CALL SCREEN 210 STARTING AT 10 5.
  CASE ok_code.
    WHEN 'SAVE'. UPDATE spfli.
    WHEN 'EXIT'.
    WHEN 'CANC'. CLEAR spfli.
  ENDCASE.
ENDFORM.

Stimmen die Werte nicht überein, ruft SAFETY_CHECK das modale Dialogfenster von Dynpro 210 auf. Das Dialogfenster fragt den Benutzer, ob er sichern möchte, und übergibt die Antwort als Funktionscode im Feld OK_CODE zurück. Das statische Folgedynpro von Dynpro 210 ist wieder das Dynpro 210. in der Verarbeitungslogik (Modul USER_COMMAND_210) wird aber das Folgedynpro dynamisch immer auf 0 gesetzt, wodurch in das Unterprogramm zurückgekehrt wird.

Ende des Inhaltsbereichs