0% found this document useful (0 votes)
151 views

Include Include Include

This document contains code for a report that sends SMS notifications with invoice details. It includes data type declarations to fetch invoice data, SMS notification data, and subroutines to process the data and send SMS messages. The main steps are to fetch invoice details, prepare the data, and call a function to send SMS notifications with invoice totals, balances and other details to customer mobile numbers.

Uploaded by

Subhasis Jethy
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
151 views

Include Include Include

This document contains code for a report that sends SMS notifications with invoice details. It includes data type declarations to fetch invoice data, SMS notification data, and subroutines to process the data and send SMS messages. The main steps are to fetch invoice details, prepare the data, and call a function to send SMS notifications with invoice totals, balances and other details to customer mobile numbers.

Uploaded by

Subhasis Jethy
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 19

*&---------------------------------------------------------------------* *& Report ZPARTY_BILL_SMS *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZPARTY_BILL_SMS.

*Include for all the data and types declarations used in this report INCLUDE ZPARTY_BILL_SMS_TOP. *Include for Selection screen INCLUDE ZPARTY_BILL_SMS_SEL. *Include for holding all subroutines used in this report INCLUDE ZPARTY_BILL_SMS_SUB. START-OF-SELECTION. *Fetch invoice detials for the given date PERFORM fetch_invoices CHANGING i_vbrk i_kna1 i_kna1_t i_vbrp i_adr2 i_count. *Prepare invoice detials PERFORM process_invoices USING i_vbrk i_kna1 i_kna1_t i_vbrp i_adr2 i_count.

*&---------------------------------------------------------------------* *& Include ZPARTY_BILL_SMS_TOP *&---------------------------------------------------------------------*

******** Fecth invoice data declarations start************ *--------------------------------------------------------* TYPES : BEGIN OF ty_vbrk, vbeln TYPE vbeln_vf, fkdat type fkdat, bukrs TYPE bukrs, kunag TYPE kunag, END OF ty_vbrk,

ty_t_vbrk TYPE STANDARD TABLE OF ty_vbrk, begin of ty_vbrk1, kunag type kunag, vbeln type vbeln, bukrs type bukrs, end of ty_vbrk1, ty_t_vbrk1 type standard table of ty_vbrk1, BEGIN OF ty_kna1, kunnr TYPE kunnr, adrnr TYPE adrnr, konzs TYPE konzs, END OF ty_kna1, ty_t_kna1 TYPE STANDARD TABLE OF ty_kna1, BEGIN OF ty_kna1_t, kunnr TYPE kunnr, konzs TYPE konzs, END OF ty_kna1_t, ty_t_kna1_t TYPE STANDARD TABLE OF ty_kna1_t, BEGIN OF ty_vbrp, vbeln TYPE vbeln_vf, werks TYPE werks_d, END OF ty_vbrp, ty_t_vbrp TYPE STANDARD TABLE OF ty_vbrp, BEGIN OF ty_bsid, kunnr TYPE kunnr, bukrs TYPE bukrs, umsks TYPE umsks, umskz TYPE umskz, augdt TYPE augdt, augbl TYPE augbl, zuonr TYPE dzuonr, gjahr TYPE gjahr, belnr TYPE belnr_d, buzei TYPE buzei, wrbtr TYPE wrbtr, END OF ty_bsid, ty_t_bsid TYPE STANDARD TABLE OF ty_bsid, BEGIN OF ty_bsid_t, kunnr TYPE kunnr, wrbtr TYPE wrbtr, END OF ty_bsid_t, ty_t_bsid_t TYPE STANDARD TABLE OF ty_bsid_t, BEGIN OF ty_option,

sign TYPE char1, option TYPE char2, low TYPE char10, high TYPE char10, END OF ty_option, ty_t_option TYPE STANDARD TABLE OF ty_option, BEGIN OF ty_adr2, addrnumber TYPE ad_addrnum, telnr_long TYPE ad_telnrlg, END OF ty_adr2, ty_t_adr2 TYPE STANDARD TABLE OF ty_adr2, begin of ty_count, kunnr type kunnr, count type i, end of ty_count, ty_t_count type standard table of ty_count, begin of ty_kunnr, kunnr type kunnr, end of ty_kunnr, ty_t_kunnr type standard table of ty_kunnr.

DATA : i_vbrk TYPE ty_t_vbrk, i_kna1 TYPE ty_t_kna1, i_kna1_t TYPE ty_t_kna1_t, i_bsid TYPE ty_t_bsid_t, i_vbrp TYPE ty_t_vbrp, i_adr2 TYPE ty_t_adr2, i_count type ty_t_count, gv_total TYPE wrbtr. ********* Fecth invoice data declarations end************ *-------------------------------------------------------* ******** SMS part data declarations start ************ *--------------------------------------------------* DATA : li_receivers TYPE STANDARD TABLE OF somlreci1, lw_receivers TYPE somlreci1, li_objhead TYPE STANDARD TABLE OF solisti1, lw_objhead TYPE solisti1, li_objtext TYPE STANDARD TABLE OF solisti1, lw_objtext TYPE solisti1,

lw_doc_chng TYPE sodocchgi1. DATA : li_asci TYPE list_string_table, list_tab TYPE STANDARD TABLE OF abaplist. DATA gv_count TYPE i. DATA: gv_mobile TYPE ad_telnrlg, gv_mobile_t TYPE ad_telnrlg, gv_party_code type kunnr. *********SMS part data declarations end************ *-------------------------------------------------* CONSTANTS: c_check TYPE char1 c_i TYPE char1 c_cp TYPE char2 c_eq TYPE char2 c_prg TYPE syrepid c_var TYPE char20 c_var1 TYPE char20 VALUE 'X', VALUE 'I', VALUE 'CP', VALUE 'EQ', VALUE 'ZPARTY_BILL_EMAIL', VALUE 'ADMIN_EMAIL', VALUE 'CC_EMAIL'.

*&---------------------------------------------------------------------* *& Include ZPARTY_BILL_SMS_SEL *&---------------------------------------------------------------------* SELECTION-SCREEN COMMENT 40(40) text-001. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002. PARAMETERS : p_date TYPE sydatum OBLIGATORY. for date SELECTION-SCREEN END OF BLOCK b1.

" Input field

*&---------------------------------------------------------------------* *& Include ZPARTY_BILL_SMS_SUB *&---------------------------------------------------------------------*

*&---------------------------------------------------------------------* *& Form CALL_PROGRAM *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_LI_PLANT text * -->P_LI_CUST text

* -->P_LI_TEMP text *----------------------------------------------------------------------* FORM call_program USING fp_li_plant TYPE ty_t_option fp_li_cust TYPE ty_t_option fp_li_temp TYPE ty_t_option fp_li_date TYPE ty_t_option fp_lv_count TYPE i. DATA: line TYPE sy-index, wa_asci TYPE string, i_asci TYPE TABLE OF string, lv_qty TYPE string, lv_amt TYPE string, lv_bal TYPE string, lv_party TYPE string, li_plante TYPE ty_t_option. CLEAR: list_tab[], li_asci[]. CALL FUNCTION 'LIST_FREE_MEMORY'. SUBMIT zparty_bill_register3 EXPORTING LIST TO MEMORY WITH plant IN fp_li_plant WITH party IN fp_li_cust WITH bdt IN fp_li_date AND RETURN. CALL FUNCTION 'LIST_FROM_MEMORY' TABLES listobject = list_tab EXCEPTIONS not_found = 1 OTHERS = 2. CALL FUNCTION 'LIST_TO_ASCI' EXPORTING list_index = -1 with_line_break = ' ' IMPORTING list_string_ascii = li_asci TABLES listobject = list_tab EXCEPTIONS empty_list = 1 list_index_invalid = 2 OTHERS = 3. IF sy-subrc <> 0.

ENDIF. CLEAR gv_count. DESCRIBE TABLE li_asci LINES gv_count . line = gv_count - 1. READ TABLE li_asci INTO wa_asci INDEX line. IF sy-subrc = 0. CONDENSE wa_asci. SPLIT wa_asci AT space INTO TABLE i_asci. READ TABLE i_asci INTO lv_qty INDEX 3. READ TABLE i_asci INTO lv_amt INDEX 5. ENDIF. CLEAR: wa_asci, i_asci. READ TABLE li_asci INTO wa_asci INDEX 3. IF sy-subrc = 0. CONDENSE wa_asci. SPLIT wa_asci AT space INTO TABLE i_asci. READ TABLE i_asci INTO lv_party INDEX 3. ENDIF. CLEAR: CLEAR: wa_asci, i_asci. list_tab[], li_asci[].

CALL FUNCTION 'LIST_FREE_MEMORY'. SUBMIT zsales_outstanding2_c EXPORTING LIST TO MEMORY WITH s_werks IN li_plante WITH s_cust IN fp_li_cust WITH p_summ EQ c_check WITH p_deta EQ space AND RETURN. CALL FUNCTION 'LIST_FROM_MEMORY' TABLES listobject = list_tab EXCEPTIONS not_found = 1 OTHERS = 2. IF sy-subrc = 0. CALL FUNCTION 'LIST_TO_ASCI' EXPORTING list_index = -1 with_line_break = ' ' IMPORTING list_string_ascii = li_asci TABLES

listobject EXCEPTIONS empty_list list_index_invalid OTHERS IF sy-subrc <> 0.

= list_tab = 1 = 2 = 3.

ENDIF. CLEAR gv_count. CLEAR: wa_asci, i_asci. DESCRIBE TABLE li_asci LINES gv_count . line = gv_count - 1. READ TABLE li_asci INTO wa_asci INDEX line. IF sy-subrc = 0. CONDENSE wa_asci. SPLIT wa_asci AT space INTO TABLE i_asci. READ TABLE i_asci INTO lv_bal INDEX 2. IF sy-subrc = 0. CONDENSE lv_bal. ENDIF. ENDIF. CLEAR: ENDIF. CALL FUNCTION 'LIST_FREE_MEMORY'. list_tab[], li_asci[].

********** Function call for triggering message *********** PERFORM send_sms USING lv_qty lv_amt lv_bal lv_party fp_lv_count .

ENDFORM. " CALL_PROGRAM *&---------------------------------------------------------------------* *& Form CONVERT_CUSTOMER *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * <--P_LW_OPTION_LOW text *----------------------------------------------------------------------* FORM convert_customer CHANGING fp_lw_option_low.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = fp_lw_option_low IMPORTING output = fp_lw_option_low. ENDFORM. " CONVERT_CUSTOMER *&---------------------------------------------------------------------* *& Form SEND_SMS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_LV_QTY text * -->P_LV_AMT text * -->P_LV_BAL text *----------------------------------------------------------------------* FORM send_sms USING fp_lv_qty TYPE string fp_lv_amt TYPE string fp_lv_bal TYPE string fp_lv_party TYPE string fp_fp_lv_count TYPE i. CLEAR lw_receivers. DATA : item_count TYPE string, lv_head TYPE string, lv_date TYPE char10. CONCATENATE p_date+6(2) '/' p_date+4(2) '/' p_date+0(4) INTO lv_date. MOVE fp_fp_lv_count TO item_count. CONDENSE item_count. lw_receivers-receiver+9 = 'SMS'. lw_receivers-receiver+13 = gv_mobile. lw_receivers-rec_type = 'K'(031). CLEAR gv_mobile. APPEND lw_receivers TO li_receivers. CLEAR lw_receivers. CONCATENATE 'Party Code-'(035) gv_party_code INTO lv_head. CLEAR lw_doc_chng. lw_doc_chng-obj_descr = lv_head. lw_doc_chng-obj_name = 'SMS'(033). lw_doc_chng-doc_size = STRLEN( lw_doc_chng-obj_descr ).

CLEAR: lw_objtext, gv_party_code. CONCATENATE 'Outstanding Bal. as of'(034) lv_date ' is Rs.'(039) fp_lv_bal INTO lw_objtext. " SEPARATED BY space. APPEND lw_objtext TO li_objtext. CLEAR lw_objtext. IF fp_lv_party IS NOT INITIAL AND fp_lv_qty IS NOT INITIAL AND fp_lv_amt IS NOT INITIAL. CONCATENATE 'Tot-Inv/Qty/Amt for'(036) lv_date INTO lw_objtext SEPARATED BY space. APPEND lw_objtext TO li_objtext. CLEAR lw_objtext. item_count '/' fp_lv_qty '/' 'Rs.'(037) fp_lv_amt INTO lw_objtext. CONDENSE lw_objtext NO-GAPS. APPEND lw_objtext TO li_objtext. CLEAR lw_objtext. ENDIF. lw_objtext = 'Rupa&Co Ltd'(038). APPEND lw_objtext TO li_objtext. CLEAR lw_objtext. CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1' EXPORTING document_data = lw_doc_chng document_type = 'RAW' put_in_outbox = 'X' commit_work = 'X' TABLES object_header = li_objhead object_content = li_objtext receivers = li_receivers 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. CONCATENATE

CLEAR: li_objtext, li_receivers . ENDFORM. " SEND_SMS *&---------------------------------------------------------------------* *& Form FETCH_INVOICES *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * <--P_I_VBRK text * <--P_I_KNA1 text * <--P_I_KNA1_T text * <--P_I_VBRP text * <--P_I_ADR2 text *----------------------------------------------------------------------* FORM fetch_invoices CHANGING fp_i_vbrk TYPE ty_t_vbrk fp_i_kna1 TYPE ty_t_kna1 fp_i_kna1_t TYPE ty_t_kna1_t fp_i_vbrp TYPE ty_t_vbrp fp_i_adr2 TYPE ty_t_adr2 fp_i_count TYPE ty_t_count. DATA : li_vbrk li_kna1 li_kna1_t li_kna1_tt li_prime li_kna1_f lw_kna1_t lw_kna1_tt lw_count lw_vbrk li_vbrk1 lw_vbrk1 lw_vbrp lv_count lv_total TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE ty_t_vbrk, ty_t_kna1, ty_t_kna1_t, ty_t_kna1_t, ty_t_kna1_t, ty_t_kna1_t, ty_kna1_t, ty_kna1_t, ty_count, ty_vbrk, ty_t_vbrk1, ty_vbrk1, ty_vbrp, i, wrbtr.

* To fetch invoices in the given date SELECT vbeln fkdat bukrs kunag FROM vbrk INTO TABLE fp_i_vbrk WHERE erdat = p_date AND fksto = space AND ( fkart LIKE 'F%' OR fkart LIKE '%F8' ). IF sy-subrc = 0.

SORT fp_i_vbrk BY vbeln. * To fetch invoices line items SELECT vbeln werks INTO TABLE fp_i_vbrp FROM vbrp FOR ALL ENTRIES IN fp_i_vbrk WHERE vbeln = fp_i_vbrk-vbeln AND ( pstyv = 'TAN' OR pstyv = 'TANN' OR pstyv = 'NLN' OR pstyv = 'UL N') AND ( matnr LIKE 'R%' OR matnr LIKE 'S%' ). IF sy-subrc = 0. SORT fp_i_vbrp BY vbeln. ENDIF. SORT fp_i_vbrk BY kunag. li_vbrk = fp_i_vbrk. DELETE ADJACENT DUPLICATES FROM li_vbrk COMPARING kunag. * to fetch group of the customers who raised the invoices on a given date IF li_vbrk[] IS NOT INITIAL. SELECT kunnr konzs INTO TABLE li_kna1_t FROM kna1 FOR ALL ENTRIES IN li_vbrk WHERE kunnr = li_vbrk-kunag. IF sy-subrc = 0. SORT li_kna1_t BY konzs. fp_i_kna1_t[] = li_kna1_t[]. li_kna1_f[] = li_kna1_t[]. DELETE li_kna1_f WHERE konzs <> space. DELETE li_kna1_t WHERE konzs = space. DELETE ADJACENT DUPLICATES FROM li_kna1_t COMPARING konzs. * To fetch all the cusomers who belongs to the given the group SELECT kunnr konzs INTO TABLE li_kna1_tt FROM kna1 FOR ALL ENTRIES IN li_kna1_t WHERE konzs = li_kna1_t-konzs. IF sy-subrc = 0. SORT li_kna1_tt BY konzs kunnr. * to find the customers to whom the mail and message need to be sent LOOP AT li_kna1_t INTO lw_kna1_t. CLEAR lw_kna1_tt.

LOOP AT li_kna1_tt INTO lw_kna1_tt WHERE konzs konzs. APPEND lw_kna1_tt TO fp_i_kna1_t. IF lw_kna1_tt-kunnr CS lw_kna1_t-konzs. APPEND lw_kna1_tt TO li_prime. ENDIF. CLEAR lw_kna1_tt. ENDLOOP. SORT li_prime BY kunnr. READ TABLE li_prime INTO lw_kna1_tt INDEX 1. IF sy-subrc = 0. APPEND lw_kna1_tt TO li_kna1_f. CLEAR : lw_kna1_tt, li_prime[]. ENDIF.

= lw_kna1_t-

ENDLOOP. SORT fp_i_kna1_t BY kunnr konzs. DELETE ADJACENT DUPLICATES FROM fp_i_kna1_t COMPARING kunnr konzs. SORT fp_i_kna1_t BY konzs. SELECT kunnr adrnr konzs INTO TABLE fp_i_kna1 FROM kna1 FOR ALL ENTRIES IN li_kna1_f WHERE kunnr = li_kna1_f-kunnr. IF sy-subrc = 0. SORT fp_i_kna1 BY kunnr. li_kna1[] = fp_i_kna1[]. SORT li_kna1 BY adrnr. DELETE ADJACENT DUPLICATES FROM li_kna1 COMPARING adrnr. SELECT addrnumber tel_number telnr_long FROM adr2 INTO TABLE fp_i_adr2 FOR ALL ENTRIES IN li_kna1 WHERE addrnumber = li_kna1-adrnr AND r3_user = '3'. IF sy-subrc = 0. SORT fp_i_adr2 BY addrnumber. ENDIF. ENDIF. ENDIF. ENDIF.

CLEAR li_vbrk[]. LOOP AT fp_i_vbrk INTO lw_vbrk. lw_vbrk1-kunag = lw_vbrk-kunag. lw_vbrk1-vbeln = lw_vbrk-vbeln. lw_vbrk1-bukrs = lw_vbrk-bukrs. APPEND lw_vbrk1 TO li_vbrk1[]. CLEAR lw_vbrk1. ENDLOOP. SORT li_vbrk1 BY kunag. LOOP AT li_vbrk1 INTO lw_vbrk1. CLEAR lw_vbrp. READ TABLE fp_i_vbrp INTO lw_vbrp WITH KEY vbeln = lw_vbrk1-vbeln. IF sy-subrc = 0. lv_count = lv_count + 1. ENDIF. AT END OF kunag. lw_count-kunnr = lw_vbrk1-kunag. lw_count-count = lv_count. lv_count = 0. APPEND lw_count TO fp_i_count. CLEAR lw_count. ENDAT. ENDLOOP. ENDIF. ELSE. MESSAGE i002(zsapabap). "No data found for the given selection ENDIF. ENDFORM. " FETCH_INVOICES *&---------------------------------------------------------------------* *& Form PROCESS_INVOICES *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_I_VBRK text * -->P_I_KNA1 text * -->P_I_KNA1_T text * -->P_I_VBRP text * -->P_I_ADR2 text *----------------------------------------------------------------------* FORM process_invoices USING fp_i_vbrk TYPE ty_t_vbrk fp_i_kna1 TYPE ty_t_kna1 fp_i_kna1_t TYPE ty_t_kna1_t fp_i_vbrp TYPE ty_t_vbrp fp_i_adr2 TYPE ty_t_adr2 fp_i_count TYPE ty_t_count.

DATA :

lw_vbrk lw_kna1 lw_vbrp lw_adr2 lw_kna1_t li_plant li_date lw_option li_cust li_temp lw_temp lw_count lw_kunnr li_send li_failed lv_telf1 lv_flag lv_count lv_num1

TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE

ty_vbrk, ty_kna1, ty_vbrp, ty_adr2, ty_kna1_t, ty_t_option, ty_t_option, ty_option, ty_t_option, ty_t_option, ty_option, ty_count, ty_kunnr, ty_t_kunnr, ty_t_kunnr, telf1, flag, i, i.

LOOP AT fp_i_kna1 INTO lw_kna1. CLEAR : gv_mobile, li_plant[], li_cust[], lv_count. gv_party_code = lw_kna1-kunnr. CLEAR lw_adr2. READ TABLE fp_i_adr2 INTO lw_adr2 WITH KEY addrnumber = lw_kna1-adrnr. IF sy-subrc = 0. gv_mobile_t = lw_adr2-telnr_long. *************************** ****** validate the mobile number is in the required 13 digit format ******* lv_num1 = STRLEN( gv_mobile_t ). IF lv_num1 EQ 13. gv_mobile = gv_mobile_t. ELSE. lw_kunnr-kunnr = lw_kna1-kunnr. APPEND lw_kunnr TO li_failed. CLEAR lw_kunnr. CONTINUE. ENDIF. ******** find group key member detilas ********** IF lw_kna1-konzs <> space. LOOP AT fp_i_kna1_t INTO lw_kna1_t WHERE konzs = lw_kna1-konzs. lw_option-sign = c_i. "'I'. lw_option-option = c_eq. "'EQ'.

lw_option-low = lw_kna1_t-kunnr. PERFORM convert_customer CHANGING lw_option-low. APPEND lw_option TO li_cust. CLEAR: lw_option, lw_vbrk. CLEAR lw_count. READ TABLE fp_i_count INTO lw_count WITH KEY kunnr = lw_kna1_tkunnr. IF sy-subrc = 0. lv_count = lv_count + lw_count-count. ENDIF. LOOP AT fp_i_vbrk INTO lw_vbrk WHERE kunag = lw_kna1_t-kunnr. lw_option-sign = c_i. lw_option-option = c_eq. lw_option-low = lw_vbrk-fkdat. lw_option-high = lw_vbrk-fkdat. APPEND lw_option TO li_date. CLEAR lw_option. CLEAR lw_vbrp. LOOP AT fp_i_vbrp INTO lw_vbrp WHERE vbeln = lw_vbrk-vbeln. lw_option-sign = c_i. "'I'. lw_option-option = c_eq. "'EQ'. lw_option-low = lw_vbrp-werks. APPEND lw_option TO li_plant. CLEAR: lw_option, lw_vbrp. ENDLOOP. ENDLOOP. ENDLOOP. ELSE. lw_option-sign = c_i. "'I'. lw_option-option = c_eq. "'EQ'. lw_option-low = lw_kna1-kunnr. PERFORM convert_customer CHANGING lw_option-low. APPEND lw_option TO li_cust. CLEAR lw_option. CLEAR lw_count. READ TABLE fp_i_count INTO lw_count WITH KEY kunnr = lw_kna1-kunnr. IF sy-subrc = 0. lv_count = lv_count + lw_count-count. ENDIF.

LOOP AT fp_i_vbrk INTO lw_vbrk WHERE kunag = lw_kna1-kunnr. lw_option-sign = c_i. lw_option-option = c_eq. lw_option-low = lw_vbrk-fkdat. lw_option-high = lw_vbrk-fkdat. APPEND lw_option TO li_date. CLEAR lw_option. CLEAR lw_vbrp. LOOP AT fp_i_vbrp INTO lw_vbrp WHERE vbeln = lw_vbrk-vbeln. lw_option-sign = c_i. "'I'. lw_option-option = c_eq. "'EQ'. lw_option-low = lw_vbrp-werks. APPEND lw_option TO li_plant. CLEAR: lw_option, lw_vbrp. ENDLOOP. ENDLOOP. ENDIF. SORT li_plant BY low. DELETE ADJACENT DUPLICATES FROM li_plant COMPARING low. SORT li_cust BY low. DELETE ADJACENT DUPLICATES FROM li_cust COMPARING low. IF li_plant[] IS NOT INITIAL AND li_cust[] IS NOT INITIAL. ********** sumbit RUPA report for invoice detials ************ PERFORM call_program USING li_plant li_cust li_temp li_date lv_count. CLEAR : li_plant, li_cust, li_date. ENDIF. ELSE. lw_kunnr-kunnr = lw_kna1-kunnr. APPEND lw_kunnr TO li_failed. CLEAR lw_kunnr. ENDIF. ENDLOOP. IF li_failed[] IS NOT INITIAL. PERFORM send_mail USING li_failed. ENDIF.

ENDFORM. " PROCESS_INVOICES *&---------------------------------------------------------------------* *& Form SEND_MAIL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_LI_FAILED text *----------------------------------------------------------------------* FORM send_mail USING fp_li_failed TYPE ty_t_kunnr. DATA : lv_email TYPE zvalue, lv_emailcc TYPE zvalue, lw_mess_bod TYPE solisti1, li_mess_bod TYPE STANDARD TABLE OF solisti1, li_receivers TYPE STANDARD TABLE OF somlreci1, li_packing_list TYPE STANDARD TABLE OF sopcklsti1, lw_packing_list TYPE sopcklsti1, lw_receivers TYPE somlreci1, lw_doc_data TYPE sodocchgi1, lw_failed TYPE ty_kunnr, lw_cnt TYPE i. * To fetch email address of Admin SELECT SINGLE value INTO lv_email FROM zrupa_variables WHERE prgname = c_prg AND var = c_var. IF sy-subrc NE 0. MESSAGE i003(zsapabap). EXIT. ENDIF. * To fetch email address of CC receipent SELECT SINGLE value INTO lv_emailcc FROM zrupa_variables WHERE prgname = c_prg AND var = c_var1. IF sy-subrc NE 0. MESSAGE i003(zsapabap). EXIT. ENDIF. lw_mess_bod = 'Dear Customer,'(010). APPEND lw_mess_bod TO li_mess_bod. CLEAR lw_mess_bod. APPEND lw_mess_bod TO li_mess_bod. lw_mess_bod = 'Kindly find the below list of customer for whom mobile numbe r is not maintained in customer master'(011).

APPEND lw_mess_bod TO li_mess_bod. CLEAR lw_mess_bod. LOOP AT fp_li_failed INTO lw_failed. lw_mess_bod = lw_failed-kunnr. APPEND lw_mess_bod TO li_mess_bod. CLEAR lw_mess_bod. ENDLOOP. APPEND lw_mess_bod TO li_mess_bod. APPEND lw_mess_bod TO li_mess_bod. APPEND lw_mess_bod TO li_mess_bod. lw_mess_bod = 'Thanks and regards'(016). APPEND lw_mess_bod TO li_mess_bod. CLEAR lw_mess_bod. APPEND lw_mess_bod TO li_mess_bod. lw_mess_bod = 'Order Processing Team'(017). APPEND lw_mess_bod TO li_mess_bod. CLEAR lw_mess_bod. APPEND lw_mess_bod TO li_mess_bod. lw_mess_bod = 'RUPA & CO Ltd'(018). APPEND lw_mess_bod TO li_mess_bod. CLEAR lw_mess_bod. DESCRIBE TABLE li_mess_bod LINES lw_cnt. READ TABLE li_mess_bod INTO lw_mess_bod INDEX lw_cnt. lw_doc_data-doc_size = ( lw_cnt - 1 ) * 255 + STRLEN( lw_mess_bod ). lw_doc_data-obj_langu = sy-langu. lw_doc_data-obj_name = 'SAPRPT'(012). lw_doc_data-obj_descr = 'SMS Failed list'(013). "ld_mtitle. lw_doc_data-sensitivty = 'F'(014). * Describe the body of the message lw_packing_list-transf_bin = space. lw_packing_list-head_start = 1. lw_packing_list-head_num = 0. lw_packing_list-body_start = 1. DESCRIBE TABLE li_mess_bod LINES lw_packing_list-body_num. lw_packing_list-doc_type = 'RAW'(015). APPEND lw_packing_list TO li_packing_list. CLEAR lw_packing_list. * Add the recipients email address lw_receivers-receiver = lv_email. lw_receivers-rec_type = 'U'(215). lw_receivers-com_type = 'INT'(216). APPEND lw_receivers TO li_receivers. CLEAR lw_receivers.

Add the carbon copy recipients email address lw_receivers-receiver = lv_emailcc. lw_receivers-rec_type = 'U'(215). lw_receivers-com_type = 'INT'(216). lw_receivers-copy = c_check. APPEND lw_receivers TO li_receivers. CLEAR lw_receivers.

CALL FUNCTION 'SO_DOCUMENT_SEND_API1' EXPORTING document_data = lw_doc_data put_in_outbox = c_check commit_work = c_check TABLES packing_list = li_packing_list contents_txt = li_mess_bod receivers = li_receivers 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. ENDFORM. " SEND_MAIL

You might also like