Author: Narendran Muthukumaran
Submitted: 04/13/2007
Description Sending GOS attachements to an email address for the given business object and ID. This program is tested in the version 4.6C.
Error rendering macro 'code': Invalid value specified for parameter 'com.atlassian.confluence.ext.code.render.InvalidValueException'REPORT z_send_gos_attachments. * Selection-screen. SELECTION-SCREEN BEGIN OF LINE. * Email address SELECTION-SCREEN COMMENT 2(20) v_text1 FOR FIELD p_email. PARAMETERS: p_email(50) OBLIGATORY. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. * Business object type SELECTION-SCREEN COMMENT 2(20) v_text2 FOR FIELD p_bo. PARAMETERS: p_bo TYPE borident-objtype DEFAULT 'BUS2102'. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. * Business object ID SELECTION-SCREEN COMMENT 2(20) v_text3 FOR FIELD p_boid. PARAMETERS: p_boid TYPE borident-objkey DEFAULT '0060000717'. SELECTION-SCREEN END OF LINE. * Internal table declarations. DATA: lt_links TYPE TABLE OF relgraphlk, lv_document_id TYPE sofolenti1-doc_id, lt_plist LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE, lt_soli LIKE soli OCCURS 100 WITH HEADER LINE, lt_rec_tab LIKE somlreci1 OCCURS 1 WITH HEADER LINE, lt_roles TYPE STANDARD TABLE OF relroles, lt_appllinks TYPE STANDARD TABLE OF srl_aprel, lt_object_content_l LIKE solisti1 OCCURS 0 WITH HEADER LINE, lt_object_content LIKE solisti1 OCCURS 0 WITH HEADER LINE, lt_doc_dat LIKE sofolenti1. * Variables. DATA: lv_objtp LIKE soodk-objtp, lv_lang LIKE tst01-dlang, lv_line_size TYPE i VALUE 255, lv_name LIKE soextreci1-receiver. * Work areas DATA: lwa_doc_data LIKE sodocchgi1, lwa_document_data LIKE sofolenti1, lwa_links LIKE LINE OF lt_links, lwa_object TYPE borident. * Initialization. INITIALIZATION. * Set the texts. v_text1 = 'Email addr.'. v_text2 = 'Business obj type'. v_text3 = 'Business obj ID'. * Start-of-selection. START-OF-SELECTION. * Assign the values lwa_object-objkey = p_boid. lwa_object-objtype = p_bo. * Get the attachment list for the input business object type * and name. CALL FUNCTION 'SREL_GET_NEXT_RELATIONS' EXPORTING object = lwa_object relationtype = 'ATTA' TABLES links = lt_links roles = lt_roles appllinks = lt_appllinks EXCEPTIONS internal_error = 1 no_logsys = 2 OTHERS = 3. * Check the return code. IF sy-subrc <> 0. MESSAGE s208(00) WITH 'Error in FM SREL_GET_NEXT_RELATIONS'. ENDIF. * Process the attachment list LOOP AT lt_links INTO lwa_links. MOVE lwa_links-objkey_b TO lv_document_id. * Read the data CALL FUNCTION 'SO_DOCUMENT_READ_API1' EXPORTING document_id = lv_document_id IMPORTING document_data = lwa_document_data TABLES object_content = lt_object_content_l EXCEPTIONS document_id_not_exist = 1 operation_no_authorization = 2 x_error = 3 OTHERS = 4. * Prepare the data. lt_plist-transf_bin = 'X'. lt_plist-head_start = 0. lt_plist-head_num = 0. lt_plist-body_start = 0. lt_plist-body_num = 0. lt_plist-doc_type = 'RAW'. lt_plist-obj_descr = lwa_document_data-obj_descr. APPEND lt_plist. lt_plist-transf_bin = 'X'. lt_plist-head_start = 0. lt_plist-head_num = 0. IF sy-tabix = 1. lt_plist-body_start = 1. ELSE. DESCRIBE TABLE lt_object_content. lt_plist-body_start = sy-tfill + 1. ENDIF. DESCRIBE TABLE lt_object_content_l LINES lt_plist-body_num. lt_plist-doc_type = lwa_document_data-obj_type. * Get the size. READ TABLE lt_object_content_l INDEX lt_plist-body_num. lt_plist-doc_size = ( lt_plist-body_num - 1 ) * lv_line_size + STRLEN( lt_object_content_l ). APPEND lt_plist. * Move the values to the main internal table. APPEND LINES OF lt_object_content_l TO lt_object_content. ENDLOOP. * Move the receiver address. MOVE: p_email TO lt_rec_tab-receiver, 'U' TO lt_rec_tab-rec_type. APPEND lt_rec_tab. * Set the language. lwa_doc_data-obj_langu = sy-langu. * Email subject. CONCATENATE 'GOS ' p_boid 'attachments' INTO lwa_doc_data-obj_descr SEPARATED BY space. * Set the user name. lv_name = sy-uname. * Send the email. CALL FUNCTION 'SO_DOCUMENT_SEND_API1' EXPORTING document_data = lwa_doc_data sender_address = lv_name sender_address_type = 'B' TABLES packing_list = lt_plist contents_bin = lt_object_content receivers = lt_rec_tab 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. MESSAGE e208(00) WITH 'Error in sending email'. ENDIF. COMMIT WORK. * Send the email immediately. SUBMIT rsconn01 WITH mode = 'INT' AND RETURN. * Success message. MESSAGE s208(00) WITH 'Email sent'.