Code: Alles auswählen.
REPORT zrttest2 .
PARAMETERS:
p_m1 TYPE i DEFAULT 2,
p_m2 TYPE i DEFAULT 3,
p_commit AS CHECKBOX DEFAULT SPACE'.
START-OF-SELECTION.
PERFORM s_o_s.
FORM s_o_s.
DATA:
lv_custom TYPE ycustom,
lv_string TYPE string,
ltab_documents TYPE /escher/email_documents_tab,
ltab_recipients TYPE /escher/email_recipients_tab.
FIELD-SYMBOLS:
<ls_document> LIKE LINE OF ltab_documents[],
<ls_recipient> LIKE LINE OF ltab_recipients[].
* Werte
lv_string = p_m1 * p_m2.
WRITE sy-uzeit TO lv_custom-class.
lv_custom-attrib = p_m1.
lv_custom-value = lv_string.
lv_string = lv_custom.
* Protokollausgabe
WRITE:
/ lv_custom.
* Eintrag in DB
INSERT INTO ycustom VALUES lv_custom.
* Adress- und Dokumentdaten
INSERT INITIAL LINE INTO TABLE ltab_recipients[]
ASSIGNING <ls_recipient>.
<ls_recipient>-emailaddress = 'Vorname.Nachname@firma.de'.
<ls_recipient>-express = 'X'.
INSERT INITIAL LINE INTO TABLE ltab_documents[]
ASSIGNING <ls_document>.
<ls_document>-type = 'TXT'.
<ls_document>-subject = lv_string.
* Aufruf RFC
CALL FUNCTION 'ZTEST' DESTINATION 'NONE'
EXPORTING
im_documents_tab = ltab_documents[]
im_recipients_tab = ltab_Recipients[]
im_commit = 'X'.
* Weiter im Programm
IF p_commit IS INITIAL.
ROLLBACK WORK. "Daten dürfen in DB nicht festgeschrieben werden
ELSE.
COMMIT WORK."Festschreiben der Daten
ENDIF.
ENDFORM. "s_o_s
Dann ruf doch den Mail-Fuba einfach in einem neuen Task auf:Thomas R. hat geschrieben: D.h. ich will den Versand "einfach" an einen separaten Prozess übergeben, der seinen Job zuverlässig erledigt. Aber dies scheint nur ein schöner Traum zu sein.
Code: Alles auswählen.
* Aufruf RFC
CALL FUNCTION 'ZTEST' STARTING NEW TASK taskname
EXPORTING
im_documents_tab = ltab_documents[]
im_recipients_tab = ltab_Recipients[]
im_commit = 'X'.
Hinweise
Beachten Sie, daß mit einem RFC unter Umständen ein Datenbank-Commiterfolgt. Daher darf zwischen Open-SQL-Anweisungen, die einen Datenbank-Cursor öffnen bzw. schließen (z.B. SELECT...ENDSELECT), kein RFC-Aufruf gesetzt werden.