Code: Alles auswählen.
do.
call function 'YSDA01410_PRG120_PARA'
starting new task lv_tasknam
destination in group p_group
performing get_prg120_para_results on end of task
exporting
i_matrix = lw_matrix_matnr
i_xlast = lv_xlast
exceptions
communication_failure = 1 message vl_msg
system_failure = 2 message vl_msg
resource_failure = 3.
if sy-subrc is initial.
exit.
elseif sy-subrc eq 3.
wait up to 1 seconds.
endif.
enddo.
*Formroutine:
form get_prg120_para_results using up_tasknam type any.
data: lv_xlast_para type flag,
lw_vbestand like line of gt_vbestand.
receive results from function 'YSDA01410_PRG120_PARA'
importing
e_vbestand = lw_vbestand
e_xlast = lv_xlast_para.
if lw_vbestand is not initial.
insert lw_vbestand into table gt_vbestand.
endif.
if lv_xlast_para is not initial.
move lv_xlast_para to gv_xlast_para.
endif.
clear gv_xresource_failure. "Ressource wieder frei ...
endform. "get_prg120_para_results
Folgende Benutzer bedankten sich beim Autor Haubi für den Beitrag (Insgesamt 2):
wayder • a-dead-trousers
Code: Alles auswählen.
Do.
Call Fuba...
if sy-subrc is initial.
exit.
elseif sy-subrc eq 3.
wait up to 1 seconds. Wenn Fehler, ok ruf den gleichen Fuba in 1 sec. noch mal auf???
endif.
enddo.
Die Bausteine muss ich gleich mal ausprobieren! Danke!Haubi hat geschrieben:Wenn ich sowas mache initialisiere ich die Umgebung vorher mit SPBT_INITIALIZE. Da bekommt man schon mal die maximal möglichen Tasks im Parameter MAX_PBT_WPS zurück. Während der Verarbeitung (bevor ich einen neuen Task abschicke) setze ich dann einen SPBT_GET_CURR_RESOURCE_INFO ab. Der liefert in FREE_PBT_WPS die derzeit freien Tasks zurück. Den nächsten RFC setze ich nur dann ab, wenn hier irgendwas > 0 zurück geliefert wird. Wenn nicht alles schief läuft sollte der RFC dann nicht auf den Poller laufen.
Tach.Unit605 hat geschrieben:Das sieht mir sehr nach einer Endlosschleife aus, in der Du immer und immer wieder den gleichen FuBa aufrufst.Du faengst auch nur Sy-subrc EQ 0 oder 3 ab, aber nicht 1 und 2???Code: Alles auswählen.
Do. Call Fuba... if sy-subrc is initial. exit. elseif sy-subrc eq 3. wait up to 1 seconds. Wenn Fehler, ok ruf den gleichen Fuba in 1 sec. noch mal auf??? endif. enddo.
Bei Sy-subrc 1 oder 2 wird der FuBa wiederholt aufgerufen???
Evlt. hilft "WAIT UNTIL ....": Use the statement WAIT UNTIL to stop the program execution until certain callback routines or all callback routines have been executed.