Code: Alles auswählen.
data g_mail_ag TYPE adr6-smtp_addr.
...
data distribution_list_name type SO_OBJ_NAM.
data is_private_distribution_list type abap_bool.
Code: Alles auswählen.
form send_mail.
distribution_list_name = 'abcd'.
is_private_distribution_list = abap_false. "Am Breakpoint hier, egal ob intern, extern, mit System-
"und mit Verbuchungsdebugging wird nie angehalten
"g_mail_ag wird vor dem Aufruf der Form gefüllt
CALL FUNCTION 'ZSDxxx' IN BACKGROUND TASK
EXPORTING
nast = nast
email_re = g_mail_ag "sic!
vbeln = vbak-vbeln
distribution_list_name = distribution_list_name.
"distribution_list_name = 'abcd'. "Funktioniert auch nicht
is_private_distribution_list = is_private_distribution_list .
.
Code: Alles auswählen.
FUNCTION ZSDxxx.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(NAST) TYPE NAST "gefüllt
*" VALUE(EMAIL_RE) TYPE AD_SMTPADR OPTIONAL "gefüllt
*" VALUE(VBELN) TYPE VBELN OPTIONAL "gefüllt
*" VALUE(NAME_DISTRIBUTION_LIST) TYPE SO_OBJ_NAM OPTIONAL "leer
*" VALUE(IS_PRIVATE_DISTRIBUTION_LIST) TYPE XFELD OPTIONAL "leer
*"----------------------------------------------------------------------
"Bei externem Breakpoint hier wird angehalten
Alternativ könnte man auch noch STARTING NEW TASK verwenden. Da hätte man dann im Fehlerfall sofort eine Rückmeldung (mittels Exceptions) wenn etwas beim Aufrufen nicht gut gegangen ist. Für die Nutzung der Verbuchungslogik müsste man dann halt noch drum herum einen Verbuchungsbaustein schreiben.Der mit der Anweisung CALL FUNCTION IN BACKGROUND UNIT ausgeführte Background RFC (bgRFC) ist die erweiterte Nachfolgetechnologie des transaktionalen RFC (tRFC) und macht diesen obsolet. Es wird dringend empfohlen, den bgRFC anstelle des tRFC zu verwenden.
Dann bau doch eine Endlosschleife mit einer Variablen als Exit-Bedingung ein. Über die SM50 springst du dann in den Debugger des Prozesses, änderst die Variable, so dass die Endlosschleife verlassen wird.
Code: Alles auswählen.
data lv_exit type boole_d.
DO.
if lv_exit = abap_true.
exit.
endif.
enddo.
Hast du bei dem Parameter den Haken für "Wertübergabe" gesetzt?
Zur Info: SAP würde hier schon beim Aktivieren des Funktionsbausteins "meckern" und nicht erst bei dessen Ausführung.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Xilukarim