Voila j'ai implémenté une BADI pour l'envoi d'émails automatique des lors qu'un ordre de transport est importer dans un système.
la méthode utilisé est : FEEDBACK_AFTER_IMPORT
interface: IF_EX_CTS_IMPORT_FEEDBACK
j'ai bien mis un COMMIT WORK à la fin de la méthode mais rien y fait j'ai un code retour 9 sur mon module fonction SO_OBJECT_SEND. Ce code signifie: OBJECT_NOT_SENT .
MERCI D'AVANCE POUR VOTRE AIDE.
VOICI LE CODE DE LA BADI :
method IF_EX_CTS_IMPORT_FEEDBACK~FEEDBACK_AFTER_IMPORT.
************************************************************************
* Type Pools *
************************************************************************
TYPE-POOLS: trwbo. "Required for the transport header(text)
************************************************************************
* Variables *
************************************************************************
DATA: WA_RECEIVER_LIST1 type SOOS1,
WA_RECEIVER_LIST2 type SOMLRECI1,
wa_SODOCCHGI1 type SODOCCHGI1.
DATA: l_recipient TYPE string, "Recipients Work Area
* lt_tab_soli TYPE soli_tab, "Body
lt_tab_soli TYPE table of soli, "Body
X_OBJHEAD TYPE soli_tab,
WA_lt_tab_soli TYPE soli_tab,
lt_result TYPE TABLE OF btcxpm, "Mail Result
l_subject TYPE char255, "Temp Holder for Subject
l_body TYPE char255, "Temp Holder for Body
* lt_recipients TYPE TABLE OF zjobmail, "Recipient Table
I_RECEIVER_LIST TYPE TABLE OF SOOS1 INITIAL SIZE 1,
WA_RECEIVER_LIST TYPE SOOS1,
receiver_list TYPE TABLE OF SOOS1 ,
RECEIVER_LIST2 type TABLE OF SOMLRECI1,
ls_request_header TYPE trwbo_request,
test(50) type c,
P_PATH type rlgrap-filename VALUE '/tmp/toto.txt', "Transport
X_OBJCONT TYPE SOLI_TAB,
SODOCCHGI1 type TABLE OF SODOCCHGI1.
DATA: X_OBJECT_TYPE TYPE SOOD-OBJTP,
WA_OBJECT_HD_CHANGE TYPE SOOD1.
************************************************************************
* Field Symbols *
************************************************************************
FIELD-SYMBOLS:
*<fs_recipients> TYPE zjobmail, "Recipient Work Area
<fs_requests> TYPE scts_imp. "Transport Work Area
************************************************************************
* Initialize Variables *
************************************************************************
* CLEAR: lt_tab_soli,
* ls_request_header.
** lt_recipients.
* REFRESH: lt_tab_soli.
* lt_recipients.
************************************************************************
* Main Program *
************************************************************************
* Loop through the transports in the request table available in the BADI
LOOP AT requests ASSIGNING <fs_requests>.
* Get transport Text
CALL FUNCTION 'TR_READ_REQUEST'
EXPORTING
iv_read_e07t = 'X'
iv_trkorr = <fs_requests>-trkorr
CHANGING
cs_request = ls_request_header.
* Build the body of the message
CONCATENATE 'Transport:' <fs_requests>-trkorr INTO l_body SEPARATED
BY space.
APPEND l_body TO lt_tab_soli.
CLEAR l_body.
CONCATENATE 'Transport Text:' ls_request_header-h-as4text INTO
l_body SEPARATED BY space.
APPEND l_body TO lt_tab_soli.
CLEAR l_body.
APPEND INITIAL LINE TO lt_tab_soli.
CONCATENATE 'Target System:' <fs_requests>-tarsystem INTO l_body
SEPARATED BY space.
APPEND l_body TO lt_tab_soli.
CLEAR l_body.
CONCATENATE 'Target Client:' <fs_requests>-tarclient INTO l_body
SEPARATED BY space.
APPEND l_body TO lt_tab_soli.
CLEAR l_body.
CONCATENATE 'Transport Owner:' <fs_requests>-owner INTO l_body
SEPARATED BY space.
APPEND l_body TO lt_tab_soli.
CLEAR l_body.
CONCATENATE 'Transport Completed With Return Code'
<fs_requests>-retcode INTO l_body SEPARATED BY space.
APPEND l_body TO lt_tab_soli.
CLEAR l_body.
WA_OBJECT_HD_CHANGE-OBJDES = 'ca marche hello world'.
* General data
WA_OBJECT_HD_CHANGE-OBJLA = SY-LANGU.
* Mail type
WA_OBJECT_HD_CHANGE-OBJSNS = 'F'.
* Mail priority
WA_OBJECT_HD_CHANGE-OBJPRI = '1'.
* Receivers
WA_RECEIVER_LIST-RECEXTNAM = 'FREDERIC.DECHANDAL-EXT@SANOFI-AVENTIS'.
WA_RECEIVER_LIST-RECESC = 'E'.
* WA_RECEIVER_LIST-rectp = 'EXT'.
WA_RECEIVER_LIST-SNDART = 'INT'.
WA_RECEIVER_LIST-SNDPRI = '1'.
* Flag pour les accusés de réception
WA_RECEIVER_LIST-DELIVER = 'X'.
WA_RECEIVER_LIST-NOT_DELI = 'X'.
WA_RECEIVER_LIST-MAILSTATUS = 'E'.
APPEND WA_RECEIVER_LIST TO I_RECEIVER_LIST.
CALL FUNCTION 'SO_OBJECT_SEND'
EXPORTING
OBJECT_HD_CHANGE = WA_OBJECT_HD_CHANGE
OBJECT_TYPE = 'RAW'
OUTBOX_FLAG = 'X'
TABLES
OBJCONT = lt_tab_soli
RECEIVERS = I_RECEIVER_LIST
EXCEPTIONS
ACTIVE_USER_NOT_EXIST = 1
COMMUNICATION_FAILURE = 2
COMPONENT_NOT_AVAILABLE = 3
FOLDER_NOT_EXIST = 4
FOLDER_NO_AUTHORIZATION = 5
FORWARDER_NOT_EXIST = 6
NOTE_NOT_EXIST = 7
OBJECT_NOT_EXIST = 8
OBJECT_NOT_SENT = 9
OBJECT_NO_AUTHORIZATION = 10
OBJECT_TYPE_NOT_EXIST = 11
OPERATION_NO_AUTHORIZATION = 12
OWNER_NOT_EXIST = 13
PARAMETER_ERROR = 14
SUBSTITUTE_NOT_ACTIVE = 15
SUBSTITUTE_NOT_DEFINED = 16
SYSTEM_FAILURE = 17
TOO_MUCH_RECEIVERS = 18
USER_NOT_EXIST = 19
ORIGINATOR_NOT_EXIST = 20
X_ERROR = 21.
MOVE SY-SUBRC TO TEST.
COMMIT WORK.
OPEN DATASET P_PATH FOR OUTPUT IN TEXT MODE .
TRANSFER TEST TO P_PATH.
LOOP AT lt_tab_soli INTO l_body .
TRANSFER l_body TO P_PATH.
ENDLOOP.
LOOP AT I_RECEIVER_LIST INTO l_body .
TRANSFER l_body TO P_PATH.
ENDLOOP.
CLOSE DATASET P_PATH.
CLEAR: WA_RECEIVER_LIST.
REFRESH: I_RECEIVER_LIST, lt_tab_soli.
ENDLOOP. "Transports
UNASSIGN <fs_requests>.
* UNASSIGN <fs_recipients>.
endmethod.
Partager