Sie sind auf Seite 1von 6

Pages

Solutions Abap Interview Questions SAP BI Solutions

Search
Search

powered by Link to Related Pages The Web Link to Related Pages

The Web

Showing newest posts with label User Exit for Billing Document. Show older posts Showing newest posts with label User Exit for Billing Document. Show older posts

Tuesday, August 17, 2010


User Exit for Send Invoice Smart Form as Mail
Go to CMOD. Enter the Project Name. Then Enter Enhancement Name : SDVFX008 Then Click Components. Then Double Click On Function Exit. Then Double 4 or 5 Times On Include. After Opening Include, Write the Following Code.This Code Refers Send Mail Invoice Print to Customer Contact Person.

DATA: ans(1). DATA: i_vgbel TYPE vbrp-vgbel, i_vgbel1 TYPE lips-vgbel, i_kunnr TYPE kna1-kunnr, i_vbeln TYPE vbak-vbeln, i_adrnr TYPE kna1-adrnr, email TYPE adr6-smtp_addr, zmail(1). SELECT SINGLE vgbel FROM vbrp INTO i_vgbel WHERE vbeln = cvbrk-vbeln. IF sy-subrc = 0. SELECT SINGLE vgbel FROM lips INTO i_vgbel1 WHERE vbeln = i_vgbel. SELECT SINGLE vbeln FROM vbap INTO i_vbeln WHERE vbeln = i_vgbel1. SELECT SINGLE kunnr FROM vbak INTO i_kunnr WHERE vbeln = i_vbeln. SELECT SINGLE adrnr zmail FROM kna1 INTO (i_adrnr,zmail) WHERE kunnr = i_kunnr. SELECT SINGLE smtp_addr FROM adr6 INTO email WHERE addrnumber = i_adrnr. ENDIF. IF zmail = 'X'. CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING titlebar = 'Send Mail ' * DIAGNOSE_OBJECT = ' ' text_question = 'Send Invoice Print Mail?' text_button_1 = 'Yes'(001) * ICON_BUTTON_1 = ' ' text_button_2 = 'No'(002) * ICON_BUTTON_2 = ' ' default_button = '1' display_cancel_button = 'X' * USERDEFINED_F1_HELP = ' ' * START_COLUMN = 25 * START_ROW = 6 * POPUP_TYPE = * IV_QUICKINFO_BUTTON_1 = ' ' * IV_QUICKINFO_BUTTON_2 = ' ' IMPORTING answer = ans.

* TABLES * PARAMETER = * EXCEPTIONS * TEXT_NOT_FOUND = 1 * OTHERS = 2 . IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

IF ans = '1'. IF email IS INITIAL. MESSAGE 'Customer Master Not Maintain Mail Address' TYPE 'E'. ELSE. DATA: i_otf TYPE itcoo OCCURS 0 WITH HEADER LINE, i_tline TYPE TABLE OF tline WITH HEADER LINE, i_receivers TYPE TABLE OF somlreci1 WITH HEADER LINE, i_record LIKE solisti1 OCCURS 0 WITH HEADER LINE, it_docs TYPE STANDARD TABLE OF docs, * Objects to send mail. i_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE, i_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE, i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE, i_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE, * Work Area declarations wa_objhead TYPE soli_tab, w_ctrlop TYPE ssfctrlop, w_compop TYPE ssfcompop, w_return TYPE ssfcrescl, wa_doc_chng TYPE sodocchgi1, w_data TYPE sodocchgi1, wa_buffer TYPE string, "To convert from 132 to 255 * Variables declarations v_form_name TYPE rs38l_fnam, v_len_in LIKE sood-objlen, v_len_out LIKE sood-objlen, v_len_outn TYPE i, v_lines_txt TYPE i, v_lines_bin TYPE i. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = 'ZSD_PMAC_INVOICE_PRINTOUT' IMPORTING fm_name = v_form_name EXCEPTIONS

no_form = 1 no_function_module = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. w_ctrlop-getotf = 'X'. w_ctrlop-no_dialog = 'X'. w_compop-tdnoprev = 'X'. CALL FUNCTION v_form_name EXPORTING s_vbeln = cvbrk-vbeln control_parameters = w_ctrlop output_options = w_compop user_settings = 'X' IMPORTING job_output_info = w_return EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. i_otf[] = w_return-otfdata[].

CALL FUNCTION 'CONVERT_OTF' EXPORTING format = 'PDF' max_linewidth = 132 IMPORTING bin_filesize = v_len_in TABLES otf = i_otf lines = i_tline EXCEPTIONS err_max_linewidth = 1 err_format = 2 err_conv_not_possible = 3 OTHERS = 4. IF sy-subrc <> 0. ENDIF.

LOOP AT i_tline. TRANSLATE i_tline USING '~'. CONCATENATE wa_buffer i_tline INTO wa_buffer. ENDLOOP. TRANSLATE wa_buffer USING '~'. DO. i_record = wa_buffer. APPEND i_record. SHIFT wa_buffer LEFT BY 255 PLACES. IF wa_buffer IS INITIAL. EXIT. ENDIF. ENDDO. REFRESH: i_reclist, i_objtxt, i_objbin, i_objpack. CLEAR wa_objhead. i_objbin[] = i_record[]. * Create Message Body Title and Description i_objtxt = 'Invoice Print Out'. APPEND i_objtxt. DESCRIBE TABLE i_objtxt LINES v_lines_txt. READ TABLE i_objtxt INDEX v_lines_txt. wa_doc_chng-obj_name = 'Invoice Print'. wa_doc_chng-expiry_dat = sy-datum + 10. wa_doc_chng-obj_descr = 'Invoice Print'. wa_doc_chng-sensitivty = 'F'. wa_doc_chng-doc_size = v_lines_txt * 255. * Main Text CLEAR i_objpack-transf_bin. i_objpack-head_start = 1. i_objpack-head_num = 0. i_objpack-body_start = 1. i_objpack-body_num = v_lines_txt. i_objpack-doc_type = 'RAW'. APPEND i_objpack. * Attachment (pdf-Attachment) i_objpack-transf_bin = 'X'. i_objpack-head_start = 1. i_objpack-head_num = 0. i_objpack-body_start = 1. DESCRIBE TABLE i_objbin LINES v_lines_bin. READ TABLE i_objbin INDEX v_lines_bin. i_objpack-doc_size = v_lines_bin * 255 . i_objpack-body_num = v_lines_bin. i_objpack-doc_type = 'PDF'. i_objpack-obj_name = 'smart'.

i_objpack-obj_descr = 'test'. APPEND i_objpack. CLEAR i_reclist. i_reclist-receiver = email. i_reclist-rec_type = 'U'. APPEND i_reclist. CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1' EXPORTING document_data = wa_doc_chng put_in_outbox = 'X' commit_work = 'X' TABLES packing_list = i_objpack object_header = wa_objhead contents_bin = i_objbin contents_txt = i_objtxt receivers = i_reclist 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 <> 0. WRITE:/ 'Error When Sending the File', sy-subrc. ELSE. WRITE:/ 'Mail sent'. ENDIF.

ENDIF. "email is initial

ENDIF. " ans = 1 ENDIF. "zmail = x

Das könnte Ihnen auch gefallen