Ich möchte aus Programm1 über sumbit via job Programm2 starten. Die Liste von Programm2 soll aber nicht gleich ausgegeben werden, sondern auf irgendeinem Weg in Programm 1 kommen. Dazu wollte ich die Liste in die SAP-SPOOL schreiben und dann mit Programm1 aus dem SPOOL-Auftrag wieder holen. Bis zur SAP-Spool hab ich das noch recht gut hinbekommen, allerdings weiß ich im Programm1 nicht, welche SPOOL-ID im Programm2 angelegt wurde. Deshalb kann ich diesen SPOOL-Auftrag im Programm1 auch nicht mehr ansprechen. Vielleicht habe ich auch ganz einfach was übersehen.
Unbedingt notwendig bei der ganzen Sache ist, dass Programm2 über einen Job abläuft. Vielleicht kann mir ja jemand helfen.
Danke schon mal.
Hallo,
wenn Du das Programm mit SUBMIT via Job startest, hast Du sicherlich bereits schon den Jobname und Jobcount, mit diesen Daten kannst Du dann (aber erst wenn der Job zu Ende ist) aus der Tabelle TBTCP - deinen Jobstep ermitteln, im Feld LISTIDENT steht dann die Spool-ID. In der TSP01 - findest Du dann auch den Spool-Request mit allen nötigen Informationen zu dem Spool.
Da bei SUBMIT via Job, der Job asynchron lauft, musst Du aber im Programm-1 warten, bis der Job zu Ende ist, das Programm-1 wird nicht für die Dauer des Joblaufes unterbrochen !
Vielen Dank für die schnelle Hilfe.
Warten bis der Job fertig ist funktioniert dann eigentlich nur über eine Statusabfrage über die JobID, wenn ich das nun richtig verstanden hab, oder?
Dazu bräuchte ich aber noch eine kleine Hilfestellung, wie man das am besten macht.
Ist aber dann nicht das Beispiel aus der ABAP-Schlüsselwortdokumentation etwas sinnlos?
JOB_OPEN
submit via job....
JOB_CLOSE
Wenn ich versuche den Job schon wieder zu schließen, obwohl er evtl. gar nicht fertig war, dürfte das ja dann auch nicht funktionieren, oder? und der Job würde dann ewig vorhanden bleiben? Oder geht es hierum nur um die Einplanung und nicht um die Abarbeitung des Jobs? Dann würde das ganze wieder Sinn machen.
Hallo,
Job_open erzeugt einen Job - Du bekommst einne Jobcount,
dann machst Du ein Submit via Job - damit wird der Step (Dein Programm eingetragen) mit Job_Close wird nur der Job abgeschlossen (er lief bisher noch nicht), im Job_close kannst Du mitgeben, ob/wann und unter welchen Voraussetzungen er anlaufen soll. Wenn Du bei Job_close den ParameterSTRTIMMED = 'X' mitgibst, wird der Job nach dem Job_close gestartet.
SUBMIT via Job startet nicht sofort das Programm, es wird nur ein Step im Job erzeugt !
Ok, soweit hab ich das glaub ich verstanden. D.h. im Programm 1 also dann mit einer Seletkion auf die Datenbank den Status des Jobs auslesen und erst wenn der Job fertig ist , im Programm wietermachen?
Ja,
allerdings frage ich mich, warum es unbedingt ein Job sein muss
mit "Submit ... and return exporting list to memory" brauchst Du keinen Job aufbauen, hast kein Synchronisationsproblem und belegst keine 2-Workprozesse.
Das stimmt schon, aber ein Programm mit so langer Laufzeit belegt halt auch die ganze Zeit einen Dialogprozess.
Ich hab das Ganze nun schon hinbekommen.
Danke für die Hilfe.