ich habe unerwartete Probleme beim Aufruf eines FuBas per Webservice -> die RFC-Verbindung per Webservice hat (mir unerklärliche) Schwierigkeiten, den STACK korrekt zu lesen - weiß jemand etwas über ein "abweichendes" Verhalten bei Webserviceaufrufen?
Folgendes Coding steht im Z-Include Z_CHECK_KVGR2:
*****
DATA: gt_call_stack TYPE abap_callstack,
lv_fc_calling(1) VALUE ''.
CALL FUNCTION 'SYSTEM_CALLSTACK'
IMPORTING
callstack = gt_call_stack.
LOOP AT gt_call_stack TRANSPORTING NO FIELDS WHERE mainprogram CS 'Z_CHECK_KVGR2'.
lv_fc_calling = 'X'.
EXIT.
ENDLOOP.
IF lv_fc_calling = ''.
… dann Coding zur Nutzung bei Auftragsanlage oder sonstiges
*****
Der Test auf dem System war erfolgreich:
Sowohl der FuBa im Testmodus (FuBa wird im Stack gefunden und IF-Zweig wird NICHT durchlaufen)
als auch z. B. die Anlage eines Auftrags (VA01) funktioniert (FuBa ist nicht Aufrufer, wird also nicht gefunden und IF-Zweig
WIRD durchlaufen).
Sobald der FuBa aber über einen WebAccess-Dienst (XML) bzw. Webservice aktiviert wird, scheint obiges nicht mehr zu greifen – als ob der CALLSTACK leer wäre ...
Servus Roddy,
was genau steht denn im gt_call_stack?
Ich greife da gerne auf die 'gute alte' Endlosschleife zurück und debugge dann den Prozess mittels SM50.
scheinbar typisches SAP-Interpretations-Problem:
Das Feld von gt_call_stack, das man abfragen sollte, darf NICHT mainprogram sein, sondern vielmehr blockname - auch, wenn man bei der testweisen Ausführung des FuBas mainprogram als passend ansehen sollte...
Darüber hinaus klappt der Aufruf von
CALL 'RFCControl' ID 'CODE' FIELD 'B'.
IF sy-subrc = 0.
**** running under RFC
ELSE.
nicht wirklich, da als Returncode 4 zurückgegeben wird, obwohl der FuBa über RFC/Webservice aufgerufen wird - oder wird hier etwa noch unterschieden?
Habe jedenfalls darüber keine Info finden können...