Nothing Special   »   [go: up one dir, main page]

Include Include Include

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 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