Code: Alles auswählen.
* Warten auf Resultate:
WAIT UNTIL g_callback_counter = g_callback_max UP TO 300 SECONDS.
IF g_callback_counter < g_callback_max.
MESSAGE '.....
ENDIF.
Klar, das ist das übliche. Anstelle der MESSAGE '... hätte ich aber gerne eine Möglichkeit, der fehlenden Callbacks irgendwie habhaft zu werden. Das scheint nicht so ohne weiteres möglich zu sein.Unit605 hat geschrieben:mit so etwas aehnlichen wie "WAIT UNTIL....." http://help.sap.com/abapdocu_70/de/ABAPWAIT_UNTIL.htm
Code: Alles auswählen.
* Warten auf Resultate: WAIT UNTIL g_callback_counter = g_callback_max UP TO 300 SECONDS. IF g_callback_counter < g_callback_max. MESSAGE '..... ENDIF.
Was hättest du denn vor, wenn du ihn greifen könntest?Obelix1 hat geschrieben: hätte ich aber gerne eine Möglichkeit, der fehlenden Callbacks irgendwie habhaft zu werden.
ihn schlicht abbrechen. Denn es gibt Zustände, bei denen man davon ausgehen muß, daß er nie mehr fertig wird.ewx hat geschrieben:Was hättest du denn vor, wenn du ihn greifen könntest?
Es kann immer zu Verklemmungen kommen, z.B. wenn ein RFC hängt. Wenn das bei Massenverarbeitungen häufiger passiert, sammeln sich irgendwann diese Hänger an. Ich will einen Maximal-Timeout haben, nach dessen Ablauf alle Tasks, die sich bis dahin immer noch nicht zurückgemeldet haben, abgebrochen werden. Dazu genügt mir aber die TaskID nicht, dazu brauche ich eine Prozess-ID. Habe ich eine Chance, an die ranzukommen?ewx hat geschrieben:Es sei denn, du ignorierst, dass du von allen gestarteten Tasks auch auf eine Rückmeldung wartest.
Natürlich, aber das Hauptprogramm soll ja weiterlaufen, u.U. tatsächlich sehr lange. Für eine Massenverarbeitung werden nacheinander mehrere tausend Kind-Prozesse gestartet, es ist immer möglich dass sich ein paar Prozent davon nie zurückmelden, wegen Verklemmungen, RFC-Hängern oder warum auch immer. Das wären dann gut über 100 ressourcenfressende Zombies.ewx hat geschrieben:Müssten die Kind-Prozesse nicht beendet werden, wenn das Hauptprogramm beendet wird?
Interessant, das kannte ich noch nicht. Da müsste ich mich reinwühlen. Scheint aber eher etwas von der Sorte "Kanonen und Spatzen" zu sein.black_adept hat geschrieben:Kannst du evtl. mit den RFC-Tasks via Push-Channel kommunizieren?
Code: Alles auswählen.
call function 'Z_FUNCTION_RFC'
starting new task 'TEST1'
destination 'NONE'
calling receive_check_results on end of task.
wait for asynchronous tasks
until gs_check_result is not initial
up to g_check_timeout seconds.