MESSAGE … TYPE ´W´ Hintergrund/Listverarbeitung TYPE ´E´

Läuft ein Report im Hintergrund = Listverarbeitung, so ist der Type I oder S zu verwenden, will man den Hintergrundjob nicht abbrechen.

Type W bricht den Hintergrundjob ab und meldet Type E.

MESSAGE … TYPE ´W´ erzeugt ´E´ im Joblog und bricht Job ab.

Anm.:

Der Versuch, die Listverarbeitung abzubrechen, damit die Anweisung MESSAGE mit Type W nicht zum Abbruch führt, schlägt leider fehl.

Ein LEAVE LIST-PROCESSING statt der MESSAGE kann leider nicht verwendet werden, das Programm wechselt gemäß der Dynpro-Folge in einen neuen Dynpro, dort aber ohne Listverarbeitung.

Bei einem Job im Hintergrund werden Message Type ‚W‘ während der Listverarbeitung in ‚E‘ umgesetzt werden und bleiben nicht ‚W‘.

Hintergrund ist folgendes:

Nachrichten in der Hintergrundverarbeitung

In der Hintergrundverarbeitung werden mit folgender Ausnahme alle Nachrichten nach dem in der MESSAGE-Anweisung angegeben Typ behandelt. Nur während der Listenverarbeitung wird eine Nachricht vom Typ „W“ vor der eigentlichen Behandlung in eine Nachricht vom Typ „E“ umgesetzt.

Eine Nachricht wird nicht angezeigt, sondern wie folgt in Abhängigkeit vom Nachrichtentyp in das Protokoll der Hintergrundverarbeitung (Joblog) geschrieben:

  • Nachrichten vom Typ „S“ werden in das Protokoll geschrieben und das Programm wird fortgesetzt.
  • Nachrichten vom Typ „I“ und „W“ werden in das Protokoll geschrieben und das Programm wird fortgesetzt, wobei die zur Programmfortsetzung notwendige Benutzereingabe Enter automatisch erzeugt wird.
  • Nachrichten vom Typ „E“ und „A“ werden in das Protokoll geschrieben. Dann wird überprüft, ob die Nachricht eventuell mit error_message behandelt wird. Ist dies nicht der Fall, wird zusätzlich die Nachricht der Nachrichtennummer 564 der Nachrichtenklasse 00 in das Protokoll geschrieben und die laufende Hintergrundverarbeitung abgebrochen, wobei bei einer Nachricht vom Typ „E“ kein und bei einer Nachricht vom Typ „A“ ein Datenbank-Rollback durchgeführt wird. Bei Behandlung der Nachricht wird die Hintergrundverarbeitung fortgesetzt.
  • Nachrichten vom Typ „X“ erzeugen einen Laufzeitfehler mit zugehörigem Datenbank-Rollback und die laufende Hintergrundverarbeitung wird abgebrochen.

Hinweise

  • Da eine Hintergrundverarbeitung intern immer über die Anweisung SUBMIT gestartet wird, ist während der Hintergrundverarbeitung meistens auch die Listenverarbeitung aktiv.
  • Bei einer Nachricht vom Typ „A“ ist zu beachten, dass bei einer Behandlung mit error_message implizit die Anweisung ROLLBACK WORK ausgeführt wird, die für einen Datenbank-Rollback sorgt und weitere Auswirkungen hat.

Nachrichten in der Listenverarbeitung

Während der Listenverarbeitung wird eine Nachricht vom Typ „W“ vor der weiteren kontextabhängigen Behandlung immer in den Typ „E“ umgesetzt. Danach wird die Nachricht gemäß des sonstigen Kontexts behandelt.

Bezüglich Nachrichten ist die Listenverarbeitung in folgenden Kontexten aktiv:

  • In jedem mit SUBMIT aufgerufenen ausführbaren Programm, solange keine dort mit CALL SCREEN aufgerufene Dynpro-Folge bearbeitet wird.
  • Nach einem expliziten Aufruf der Listenverarbeitung mit LEAVE TO LIST-PROCESSING in einer Dynpro-Folge. Die Anweisung LEAVE LIST-PROCESSING schaltet die Listenverarbeitung während einer Dynpro-Folge wieder ab.

In mit SUBMIT aufgerufenen Programmen ist die Listenverarbeitung also außer während der Behandlung von eigentlichen Listenereignissen auch während der Behandlung der Reporting-Ereignisse aktiv. Letzteres gilt insbesondere auch für das Standardereignis START-OF-SELECTION.

Hinweis

Eine Hintergrundverarbeitung wird immer über SUBMIT gestartet, so dass dort meistens die Listenverarbeitung aktiv ist.