Ein Batch-Programm läuft parallel ja in "Blöcken" ab. (keine Ahnung wie das im SAP Jargon richtig heißt)
Dieses Programm, das ja nun mehrfach vorhanden ist, meldet mir Nachrichten zurück. Wie kann ich nun feststellen aus welchem Block die Meldung gekommen ist.
Wie sehen die "Meldungen" denn aus?
Wenn du das Job-Protokoll meinst, dann kannst du bei der Definition des Jobs unterschiedliche Drucktitel definieren.
hmmm mit Meldungen meinte ich das dieses Programm
das parallel läuft einen FuBa aufruft. Dieser FuBa
soll nun wissen welcher Block ihn aufgerufen hat.
Ich denke mal mit sy-cprog komme ich da nicht weiter
da ja das Programm immer das gleiche ist.
deswegen dachte ich mir vielleicht haben diese "Blöcke" ja auch einen Index oder sowas den ich dann weiter verwenden könnte.
Dann müsstest du den "Block" als Parameter im Programm mitgeben oder im Programm so eine Art "Stack" aufbauen. Also das erste Programm setzt in einer DDIC-Tabelle "1", das nächste setzt einen drauf etc. Das könntest du dann an den Fuba übergeben.
ich denke diesen Stack wirds wohl irgendwo im SAP schon geben.
Programm xy läuft paralell in 4 Blöcken ab, daher stell ich mir das so vor das 4x das Programm xy im Speicher steht. SAP muss ja nun wissen wissen was sie
gerade in welchen Block macht. Dieses "in welchen Block" hatte ich gehofft als irgendein systemfeld zu
bekommen.
oder habe ich deine Antwort falsch interpretiert ??
wenn ich richtig verstanden habe, wird dasselbe
Programm in mehreren Prozessen im Batch gestartet.
Um zwischen diesen unterscheiden zu können, bist
Du sicher mit dem Tipp von ewx bestens bedient.
Falls das aber doch noch nicht alles sein sollte,
was Du über den aufrufer wissen willst, mag der
FBaustein SYSTEM_CALLSTACK ganz interessant für Dich
sein wie auch die Möglichkeit, per "dirty assign"
Variablenwerte aus dem Aufrufer-Programm zu lesen.
Beispiel dafür:
FIELD-SYMBOLS: <fs>.
DATA caller_variable(60) TYPE c.
caller_variable = '(CALLER)TESTFLAG'.
REPLACE 'CALLER' WITH sy-cprog INTO caller_variable.
CONDENSE caller_variable NO-GAPS.
ASSIGN (caller_variable) TO <fs>.
thanx .... super, funktioniert wunderbar mein WE ist gerettet ...
@Andreas, danke für die weiterführenden Variante ...
als info:
PID:
Prozeß-Identifikation des Betriebssystems. Mittels dieser Zahl kann der Prozeß mit Kommandos des Betriebssystems bearbeitet werden (z.B. ps oder kill in UNIX).
wp_no:
Dieses Feld zeigt die interne Workprozeß-Nr an. Dieser Nummer wird z.B. auch in der Liste der System-Logs festgehalten, sodaß ein eindeutiger Bezug zu einem Workprozeß gegeben ist. Des weiteren ist jedem Workprozeß eine Liste von Trace-Dateien zugeordnet, deren Namen nach dem Muster dev_..<Workprozeß-Nr> gebildet werden. Diese Dateien werden im "work"-Directory des Servers erzeugt.