Thursday, 13 March 2014
Sample Program to send email using function 'SO_NEW_DOCUMENT_SEND_API1
REPORT zrqm_quality_notification .
TABLES: qmel.
TYPES: BEGIN OF ty_qmel,
qmnum TYPE qmel-qmnum,
erdat TYPE qmel-erdat,
mzeit TYPE qmel-mzeit,
END OF ty_qmel.
*Begin of RavulS1 D47K9A0XEZ 04-Oct-2013
TYPES : BEGIN OF ty_email_add_text,
qmnum TYPE qmel-qmnum,
flag TYPE c , " this flag will be X if there are issues while
" adding the default tasks.
END OF ty_email_add_text .
DATA : gt_add_extra_line TYPE STANDARD TABLE OF ty_email_add_text,
gw_add_extra_line TYPE ty_email_add_text .
*End of RavulS1 D47K9A0XEZ 04-Oct-2013
DATA : gt_return TYPE STANDARD TABLE OF bapiret2,
gt_add_task TYPE STANDARD TABLE OF rfc_viqmsm,
gt_add_task1 TYPE STANDARD TABLE OF rfc_viqmsm,
gt_qmel1 TYPE STANDARD TABLE OF zqm_qmel,
gt_qmel2 TYPE STANDARD TABLE OF zqm_qmel,
gt_global_prms TYPE STANDARD TABLE OF ztqm_global_prms.
DATA: gw_add_task TYPE rfc_viqmsm,
gw_qmel TYPE zqm_qmel,
gw_global_prms TYPE ztqm_global_prms ,
gv_counter1 TYPE i ,
gv_counter2 TYPE i ,
gv_tabix TYPE sy-tabix,
gv_i TYPE i.
CONSTANTS: gc_x TYPE char1 VALUE 'X',
gc_u TYPE char1 VALUE 'U',
gc_z_zxqqmu01_sqop(17) TYPE c VALUE 'Z_ZXQQMU01_SQOP'.
DATA : gt_qn_email TYPE STANDARD TABLE OF ztqm_email_notif,
gw_qn_email TYPE ztqm_email_notif.
*created a table ZQM_QMEL which gets updated whenever a Quality Notification
* is created either automatically by QE01 or manually by QM01.
SELECT * FROM zqm_qmel INTO TABLE gt_qmel1.
IF gt_qmel1 IS NOT INITIAL.
*Add tasks from the Global parameter table
SELECT * FROM ztqm_global_prms INTO TABLE gt_global_prms
WHERE cprog EQ gc_z_zxqqmu01_sqop ."'Z_ZXQQMU01_SQOP' .
IF sy-subrc EQ 0.
SORT gt_global_prms BY counter ASCENDING.
DESCRIBE TABLE gt_global_prms LINES gv_i .
LOOP AT gt_global_prms INTO gw_global_prms.
CLEAR : gv_counter1,
gv_tabix.
gv_tabix = sy-tabix.
gv_counter1 = gw_global_prms-counter.
IF gv_tabix EQ 1 .
gv_counter2 = gv_counter1 .
ENDIF.
IF gv_counter1 NE gv_counter2 .
APPEND gw_add_task TO gt_add_task.
CLEAR : gw_add_task.
gv_counter2 = gv_counter1 .
ENDIF.
*Add below tasks from the global parameter table.
CASE gw_global_prms-variable_name.
WHEN 'SORT_NUMBER'.
gw_add_task-qsmnum = gw_global_prms-variable_value.
WHEN 'CODE_GROUP'.
gw_add_task-mngrp = gw_global_prms-variable_value.
WHEN 'TASK_CODE'.
gw_add_task-mncod = gw_global_prms-variable_value.
WHEN 'PARTNER_FUNCTION'.
gw_add_task-parvw = gw_global_prms-variable_value.
ENDCASE.
IF gv_tabix EQ gv_i.
APPEND gw_add_task TO gt_add_task.
CLEAR : gw_add_task.
ENDIF.
ENDLOOP.
ENDIF. " IF sy-subrc eq 0.
IF gt_add_task IS NOT INITIAL.
IF gt_qmel1 IS NOT INITIAL.
CLEAR : gt_qn_email.
SELECT * FROM ztqm_email_notif INTO TABLE gt_qn_email
FOR ALL ENTRIES IN gt_qmel1
WHERE werks EQ gt_qmel1-werks.
ENDIF. "if gt_qmel1 is not INITIAL.
CLEAR : gw_qmel.
LOOP AT gt_qmel1 INTO gw_qmel.
CLEAR : gt_add_task1,
gw_add_task.
LOOP AT gt_add_task INTO gw_add_task.
CLEAR : gv_tabix.
gv_tabix = sy-tabix .
CLEAR : gw_qn_email.
READ TABLE gt_qn_email INTO gw_qn_email
WITH KEY werks = gw_qmel-werks .
IF sy-subrc EQ 0 .
gw_add_task-parnr = gw_qn_email-parnr .
ENDIF.
APPEND gw_add_task TO gt_add_task1 .
CLEAR : gw_add_task .
ENDLOOP.
*This Function module used to add task for the notification F2
* CALL FUNCTION 'Z_QM_QN_ADD_TASK'
* EXPORTING
* i_qmnum = gw_qmel-qmnum
* TABLES
* i_viqmsm_t = gt_add_task
* i_return_t = gt_return.
CALL FUNCTION 'Z_QM_QN_ADD_TASK'
EXPORTING
i_qmnum = gw_qmel-qmnum
TABLES
i_viqmsm_t = gt_add_task1
i_return_t = gt_return.
IF gt_return IS INITIAL.
APPEND gw_qmel TO gt_qmel2 .
*Begin of RavulS1 D47K9A0XEZ 04-Oct-2013
ELSE.
APPEND gw_qmel TO gt_qmel2 .
CLEAR : gw_add_extra_line .
gw_add_extra_line-qmnum = gw_qmel-qmnum .
gw_add_extra_line-flag = 'X' .
APPEND gw_add_extra_line TO gt_add_extra_line .
*End of RavulS1 D47K9A0XEZ 04-Oct-2013
ENDIF.
CLEAR : gw_qmel,
gt_return.
ENDLOOP.
ENDIF.
ENDIF." if gt_qmel is not INITIAL.
CLEAR : gw_add_task,
gw_qmel,
gw_global_prms.
REFRESH : gt_add_task,
gt_return,
gt_qmel1,
gt_global_prms.
PERFORM send_email_for_qn .
DELETE zqm_qmel FROM TABLE gt_qmel2 .
REFRESH : gt_qmel2.
*&---------------------------------------------------------------------*
*& Form SEND_EMAIL_FOR_QN
*&---------------------------------------------------------------------*
* Send an Email for the QN Notification to user
*----------------------------------------------------------------------*
FORM send_email_for_qn .
* Send an Email for the QN Notification F2 for the responsible user
DATA : ls_email_data TYPE sodocchgi1,
lt_email_text TYPE STANDARD TABLE OF solisti1,
ls_email_text TYPE solisti1,
lt_email_send TYPE STANDARD TABLE OF somlreci1,
ls_email_send TYPE somlreci1 ,
lt_qn_email TYPE STANDARD TABLE OF ztqm_email_notif,
lw_qn_email TYPE ztqm_email_notif.
CLEAR : lt_qn_email,
lw_qn_email.
IF gt_qmel2 IS NOT INITIAL.
* SELECT * FROM ztqm_email_notif INTO TABLE lt_qn_email
* FOR ALL ENTRIES IN gt_qmel2
* WHERE werks EQ gt_qmel2-werks.
CLEAR : gw_qmel.
CLEAR : ls_email_data,
lt_email_text,
ls_email_text,
lt_email_send,
ls_email_send.
LOOP AT gt_qmel2 INTO gw_qmel.
*Fetch email id
CLEAR : lw_qn_email.
* READ TABLE lt_qn_email INTO lw_qn_email
* WITH KEY werks = gw_qmel-werks .
READ TABLE gt_qn_email INTO lw_qn_email
WITH KEY werks = gw_qmel-werks .
IF lw_qn_email-dl_name IS NOT INITIAL.
ls_email_send-receiver = lw_qn_email-dl_name.
ls_email_send-rec_type = gc_u. "'U'.
ls_email_send-express = gc_x ."'X'.
APPEND ls_email_send TO lt_email_send.
ls_email_data-obj_name = 'MESSAGE'.
CONCATENATE 'New F2-QN-'(018)
gw_qmel-qmnum
'-'
gw_qmel-matnr
INTO ls_email_data-obj_descr SEPARATED BY space.
* Email attributes
ls_email_data-obj_langu = 'E'.
ls_email_data-sensitivty = 'P'.
ls_email_data-obj_prio = '1'.
ls_email_data-no_change = 'X'.
ls_email_data-priority = '1'.
*Send the below texts while sending the mail.
CLEAR : ls_email_text.
ls_email_text-line = 'Hi QN User,'(001) .
APPEND ls_email_text TO lt_email_text.
APPEND INITIAL LINE TO lt_email_text.
CLEAR : ls_email_text.
CONCATENATE 'The following F2 Vendor error Quality notification -'(002)
gw_qmel-qmnum
'-'
'has been created.'(003)
INTO ls_email_text-line SEPARATED BY space.
APPEND ls_email_text TO lt_email_text.
CLEAR : ls_email_text.
CONCATENATE 'Please release the notification'(004)
'and assign tasks for completion in SAP QM.'(005)
INTO ls_email_text-line SEPARATED BY space.
APPEND ls_email_text TO lt_email_text.
APPEND INITIAL LINE TO lt_email_text.
CLEAR : ls_email_text.
CONCATENATE 'Material:'(006)
gw_qmel-matnr
INTO ls_email_text-line SEPARATED BY space.
APPEND ls_email_text TO lt_email_text.
CLEAR : ls_email_text.
CONCATENATE 'Material Description:'(007)
gw_qmel-maktx
INTO ls_email_text-line SEPARATED BY space.
APPEND ls_email_text TO lt_email_text.
CLEAR : ls_email_text.
CONCATENATE 'Supplier:'(008)
gw_qmel-vendor_name
'< Supplier ID:'(009)
gw_qmel-lifnum
'>'
INTO ls_email_text-line SEPARATED BY space.
APPEND ls_email_text TO lt_email_text.
CLEAR : ls_email_text.
CONCATENATE 'QN created by:'(010)
gw_qmel-fullname
'< SAP User ID:'(011)
gw_qmel-ernam
'>'
INTO ls_email_text-line SEPARATED BY space.
APPEND ls_email_text TO lt_email_text.
CLEAR : ls_email_text.
APPEND INITIAL LINE TO lt_email_text.
CONCATENATE 'If you have received this e-mail in error'(012)
'or'(013)
'if you have questions on processing this F2 QN,'(014)
'contact your site IQA.'(015)
INTO ls_email_text-line SEPARATED BY space.
APPEND ls_email_text TO lt_email_text.
*Begin of RavulS1 D47K9A0XEZ 04-Oct-2013
CLEAR : gw_add_extra_line .
READ TABLE gt_add_extra_line INTO gw_add_extra_line
WITH KEY qmnum = gw_qmel-qmnum .
IF sy-subrc EQ 0.
*Sy-subrc will be zero only if adding of default task fails
APPEND INITIAL LINE TO lt_email_text.
CLEAR : ls_email_text.
CONCATENATE 'Auto-Tasks were not created due to data'(019) 'issues'(020)
INTO ls_email_text-line SEPARATED BY space.
ENDIF.
*End of RavulS1 D47K9A0XEZ 04-Oct-2013
APPEND INITIAL LINE TO lt_email_text.
CLEAR : ls_email_text.
CONCATENATE '*****This message is triggered automatically'(016)
'from Inspection lot processing*****'(017)
INTO ls_email_text-line SEPARATED BY space.
APPEND ls_email_text TO lt_email_text.
APPEND INITIAL LINE TO lt_email_text.
CLEAR : ls_email_text.
*By using the below Function module send an email
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
document_data = ls_email_data
document_type = 'RAW'
put_in_outbox = gc_x "'X'
commit_work = gc_x "'X'
TABLES
object_content = lt_email_text
receivers = lt_email_send
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
IF sy-subrc EQ 0.
ENDIF.
ENDIF. "if lw_qn_email-dl_name is NOT INITIAL.
CLEAR : ls_email_data,
lt_email_text,
ls_email_text,
lt_email_send,
ls_email_send.
CLEAR : gw_qmel .
ENDLOOP.
ENDIF."if gt_qmel2 is not INITIAL.
ENDFORM. " SEND_EMAIL_FOR_QN
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment