Anfang des Inhaltsbereichs

Aufruf von Listen aus der Dynproverarbeitung Dokument im Navigationsbaum lokalisieren

Dieser Abschnitt beschreibt den Wechsel zwischen Dynpro- und Listenverarbeitung. Nach einer kurzen Einführung in die technischen Hintergründe wird eine Vorgehensweise empfohlen.

Wechsel zwischen Dynpro- und Listenverarbeitung

Dynproverarbeitung ist immer gleichbedeutend zum Ablauf einer Dynprofolge, die mit CALL SCREEN oder über einen Transaktionscode gestartet wurde. Während der Dynproverarbeitung wird das ABAP-Programm vom Dialogprozessor gesteuert. Im ABAP-Programm werden die von der Dynpro-Ablauflogik aufgerufenen PBO- und PAI-Module ausgeführt.

Um die Kontrolle vom Dialogprozessor an den Listenprozessor zu übergeben, muß in einem der Dialogmodule die Anweisung

LEAVE TO LIST-PROCESSING [AND RETURN TO SCREEN <nnnn>].

aufgeführt werden. Diese Anweisung kann sowohl zu PBO als auch zu PAI ausgeführt werden. Sie bewirkt, daß nach Abschluß der PAI-Verarbeitung des aktuellen Dynpros der Listenprozessor gestartet und die Grundliste angezeigt wird. Die Grundliste enthält die Listenausgaben aller bis dahin ausgeführten PBO- und PAI-Module der Dynprofolge.

Wenn Verzweigungslisten in den entsprechenden Ereignisblöcken (AT LINE-SELECTION, AT USER-COMMAND) des ABAP-Programms definiert sind, führen Benutzeraktionen auf der Grundliste zur Anzeige der ersten Verzweigungsliste und Benutzeraktionen auf Verzweigungslisten zu weiteren Listenstufen.

Die Listenverarbeitung kann auf zwei Arten beendet werden:

In beiden Fällen wird die Kontrolle vom Listenprozessor den Dialogprozessor zurückgegeben. Bei jedem Wechsel von der Listenverarbeitung zurück zur Dialogverarbeitung wird das gesamte Listensystem initialisiert. Ausgabeanweisungen in folgenden PBO- und PAI-Modulen beschreiben eine leere Grundliste.

Standardmäßig nimmt der Dialogprozessor die PBO-Verarbeitung des Dynpros wieder auf, in welchem der Listenprozessor aufgerufen wurde. Mit dem optionalen Zusatz AND RETURN TO SCREEN kann auch ein anderes Dynpro der aktuellen Dynprofolge angegeben werden, mit dessen PBO-Verarbeitung fortgefahren werden soll. Insbesondere wird mit

LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.

die aktuelle Dynprofolge beendet, und die Programmausführung kehrt hinter die Aufrufstelle der gesamten Dynprofolge zurück.

Empfohlene Vorgehensweise

Um Listen während der Dynproverarbeitung anzuzeigen, empfiehlt es sich für jedes aufzurufende Listensystem ein eigenes Dynpro zu definieren. Dieses Dynpro kapselt die Erstellung der Grundliste und ihre Anzeige. Es kann durch CALL SCREEN von beliebiger Stelle aus aufgerufen werden.

Das Bildschirmbild dieses Dynpros kann leer bleiben. Es benötigt nur ein einziges PBO-Modul und keine PAI-Module. Im PBO-Modul des Dynpros wird die Grundliste des Listensystems definiert und der Listenprozessor aufgerufen.

  1. Zuerst verwendet man die Anweisung

    LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.

    um am Ende des Dynpros zur Listenanzeige zu verzweigen und nach Verlassen der Listenverarbeitung hinter die Aufrufstelle des Dynpros zurückzukehren.
  2. Dann sollte ein GUI-Status für die Liste gesetzt werden, z.B. der Standardlistenstatus SPACE oder ein selbstdefinierter Listenstatus.
  3. Durch Ausführung einer der Anweisungen

    SUPPRESS DIALOG.

    oder

    LEAVE SCREEN.

    wird verhindert, daß der leere Bildschirm angezeigt wird. Statt dessen wird am Ende des Dynpros sofort zur Listenanzeige verzweigt.
  4. Jetzt beschreibt man die gesamte Grundliste und versteckt eventuell Informationen im HIDE-Bereich.

Um interaktive Benutzeraktionen auf der Liste zu verarbeiten, müssen entsprechende Ereignisblöcke im ABAP-Programm programmiert werden. Falls innerhalb eines ABAP-Programms mehrere unabhängige Listensysteme aufgerufen werden sollen, muß man dafür sorgen, daß sie während der Listenereignisse unterscheidbar sind. Die Dynpronummer aus SY-DYNNR kann nicht verwendet werden, da sie immer die Nummer 120 des Trägerdynpros für Listen enthält. Statt dessen kann man beispielsweise für jede Liste einen eindeutigen GUI-STATUS definieren und aus SY-PFKEY auslesen oder eindeutige Informationen im HIDE-Bereich abspeichern.

Beispiel

Beispiel

REPORT demo_leave_to_list_processing .

TABLES sdyn_conn.

DATA: wa_spfli TYPE spfli,
      flightdate TYPE sflight-fldate.

CALL SCREEN 100.

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

MODULE cancel INPUT.
  LEAVE PROGRAM.
ENDMODULE.

MODULE user_command_0100.
  CALL SCREEN 500.
  SET SCREEN 100.
ENDMODULE.

MODULE call_list_500 OUTPUT.
  LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
  SET PF-STATUS space.
  SUPPRESS DIALOG.
  SELECT  carrid connid cityfrom cityto
    FROM  spfli
    INTO  CORRESPONDING FIELDS OF wa_spfli
    WHERE carrid = sdyn_conn-carrid.
    WRITE: / wa_spfli-carrid, wa_spfli-connid,
             wa_spfli-cityfrom, wa_spfli-cityto.
    HIDE: wa_spfli-carrid, wa_spfli-connid.
  ENDSELECT.
  CLEAR: wa_spfli-carrid.
ENDMODULE.

TOP-OF-PAGE.
  WRITE text-001 COLOR COL_HEADING.
  ULINE.

TOP-OF-PAGE DURING LINE-SELECTION.
  WRITE sy-lisel COLOR COL_HEADING.
  ULINE.

AT LINE-SELECTION.
  CHECK not wa_spfli-carrid is initial.
  SELECT  fldate
    FROM  sflight
    INTO  flightdate
    WHERE carrid = wa_spfli-carrid AND
          connid = wa_spfli-connid.
     WRITE / flightdate.
  ENDSELECT.
  CLEAR: wa_spfli-carrid.

In diesem Beispiel wird während der Verarbeitung von Dynpro 100 in die Listenverarbeitung verzweigt. Das Bildschirmbild von Dynpro 100 hat ein einziges Eingabefeld, nämlich die Komponente CARRID der Struktur SDYN_CONN aus dem ABAP Dictionary.

Die Ablauflogik von Dynpro 100 ist:

PROCESS BEFORE OUTPUT.
  MODULE status_0100.

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

Im PAI-Module USER_COMMAND_100 wird mit CALL SCREEN das Dynpro 500 aufgerufen. Dynpro 500 kapselt eine Grundliste. Seine Ablauflogik ist:

PROCESS BEFORE OUTPUT.
  MODULE call_list_500.

PROCESS AFTER INPUT.

Im Modul CALL_LIST_500 wird die Grundliste definiert und zur Listenanzeige verzweigt. Da nach Rückkehr aus der Listenanzeige zum Folgedynpro 0 verzweigt wird, stellt Dynpro 500 eine Dynprofolge aus nur einem Dynpro dar und nach Ende der Listenverarbeitung wird hinter die Aufrufstelle in USER_COMMAND_100 zurückgekehrt.

Zeilenauswahl auf der Grundliste führt zur Erstellung einer Verzweigungsliste. Hierfür ist der Ereignisblock zu AT LINE-SELECTION programmiert. Weiterhin werden Seitenköpfe für Grund- und Verzweigungsliste in den Ereignisblöcken zu TOP-OF-PAGE und TOP-OF-PAGE DURING LINE-SELECTION definiert.

Da in diesem Programm nur ein einziges Listensystem verwendet wird, ist eine Auseinandersteuerung während der Listenereignisse nicht notwendig.

Ende des Inhaltsbereichs