You are on page 1of 27
1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs ¢ Like the New Year x unity! 3\ RSS Feed ead for the SAP ve outgrown our home, so we'll be migrating toa new platform later this year. Let's continue the journey together! Aska Question Write a Blog Post Technical Articles Arijit Dutta October 31,2019 | 11 minute read ‘Attachments’ — Attach any File (PDF/DOC/JPG/XLS/TXT..) to BO using GOS from SAP Gateway-UI. Bu bl © 34530 Introduction: This blog post will describe in detail how to Attach File to BO using GOS where + User can upload the files + User can see the list of attachments + User can delete the attachment + User can display content of attachment In this blog post, we will take the real-time example of Attach any File (PDF/DOC/JPG/XLS..) to object in ME23N from SAP Gateway. tps blogs sap. com/2018/10/3 fttachments-attach-any-fle-pdfdocjpgxlstt.to-bo-using-gos-rom-sap-galeway-u./ ser 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs Requirement: Create/DisplayContent/ Display List of Attachments/Delete Attachments in PO (ME23N) using Net Weaver Gateway Ul: ae ig Pan rn 1 = os ees MEZ3N. (© purchase rer nse Git Enpeanert Saar ee “i«€ @00 -H t na ee Indivect PtoP PO 471000030 Created by Ncu Zaharia Sraate.. "146 Print Preview Messages [7] gil Personal Sette ‘Attachenent lst \38 @ = Oé 2 bac rete vd) lone ee a sen > Tevenfinoee —[ cess” Tes aaa 1 Wotton yaa oksse rm 30 Rela (code wy obece > fs onencan te ete Satay SP L320 2 Het Hs orca srces Iganga, ER esse noc (| watnafor2Lelao Faulty items * ‘ovean poze tom mosagse ‘ioc oad to ‘seleatpacssang Ftc feeisam A peeea! star Text rou + Faschange 1 Mats Petzona Stings 1 Enter Ascount Assignment List of attachments for PO 4710000304 tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ arr 1015/23, 10:12 AM “Altachments'~Aitach any Fil (PDFIOOCHJPGIXLSITXT. to BO using GOS from SAP Gateway-UL. | SAP Blogs peda Over Est Glo coment Satan Heb DECI SFOO_361I7¢=VA201947 050d Thos onepuooD. sel seme coneetin scone Davase aebate obra owner soostee Aout aun2n zaanesDrNe scout Devane cout Cede deepen 2 Soporte! poanty ow Bi Steps to be followed: Dictionary Structure An attachment is identified with a composite key of Object ID, Object Type, Object Category and Document ID. Dictionary: Dispay Suture OF 88M BFE STD cy osey sponse, Shot Dmcetsn oe acer Ey i Fl <5 a te feet TanaMetad Gorge pea ent See. haben ene esa con To absaceWm HO on Pee Ot ates ferme ies vm con 32 Stipe fcc n Pet Oe arenes nee ou 2 tug toys Fossar Cec ences — Soest eet eam iy Are) bie on Se She Tip oar Gear tes trimers con 38 Some Tm Meta Data The entity for attachments is to be marked as ‘Media Type’ a ae ROL i iT Tae cee [gies Seana The model provider extension class should redefine DEFINE method to handle this Media Type entity. tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ ser 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs 1y. Parmeter “ype spec Desert, % /IVIRER/CA_MGW_MED_EXCEPTION vothod _—_[perae aatwe Bi] METHOD dezine 6 DATE! loenticy TYEE REP TO /aypep/a# wow odnta_encity typ, © io_property TYEE REF TO. /Asbep/if mgw_odata property. 0 e_entity ~ model-get_entity_type| iv entity name ~ ‘Zrgstarzachment' ) 2.) TP 1o-encity 15 BouND, 2 Le propecty ~ to_entieyoget_peoperty| iv_propertys ' Data Provider The four main methods GET_ENTITYSET (attachment list), GET_STREAM, CREATE_STREAM and DELETE_STREAM are implemented in a utility class which is expected to be reused from each service requiring object services attachments. Object Name ww ZCL_ZODATA_22256_PO_CR_DPC_EXT > fi Superctasses > fis Attribute tw Methods >i inherted Methods YW Redefinitions + [BE /1BEP/IF_NGW_APPL_SRV_RUNTIME~CREATE_STREAM + I /W8EP/TF_MGW_APPL_SRV_RUNTINE~DELETE_STREAM + A ZTGETATTACHMENTS_GET_ENTITYSET > I Types GET_ENTITYSET This method would retrieve the list of attachments for a business object. ABAP code: METHOD ztgetattachments_get_entityset. tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ ant 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs * Data declaration DATA object_id TYPE zif_zodata_get_po_attachment=>sibfboriid. DATA object_type TYPE zif_zodata_get_po_attachment=>sibftypeid. DATA object_cat TYPE zif_zodata_get_po_attachment=>sibfcatid DATA document _id TYPE zif_zodata_get_po_attachment=>documentid. DATA ztgetattachment TYPE zif_zodata_get_po_attachment=>ztgetattachment. DATA Is_ztgetattachment TYPE LINE OF zif_zodata_get_po_attachment=>ztgetattachment. DATA Iv_rfc_name TYPE tfdir-funcname DATA Iv_destination TYPE ricdest DATA Iv_subre TYPE syst-subre. DATA Iv_exc_msg TYPE /iwbep/mgw_bop_ric_excep_text. DATA Ix_root TYPE REF TO cx_root. DATA lo_filter TYPE REF TO /iwbep/if_mgw_req_filter. DATA It_filter_select_options TYPE /iwbep/t_mgw_select_option DATA \v_filter_str TYPE string DATA Is_paging TYPE /iwbep/s_mgw_paging. DATA Is_converted_keys LIKE LINE OF et_entityset. DATA \s_filter TYPE /iwbep/s_mgw_select_option. DATA Is_filter_range TYPE /iwbep/s_cod_select_option, DATA Ir_object_id LIKE RANGE OF Is_converted_keys-object_id. DATA Is_object_id LIKE LINE OF Ir_object_id DATA Ir_object_type LIKE RANGE OF Is_convertec_keys-object_type. DATA Is_object_type LIKE LINE OF Ir_object_type. DATA Ir_object_cat LIKE RANGE OF Is_converted_keys-object_cat. DATA Is_object_cat LIKE LINE OF Ir_object_cat. DATA Ir_document_id LIKE RANGE OF Is_converted_keys-document_id DATA Is_document_id LIKE LINE OF Ir_document_id. DATA lo_dp_facade TYPE REF TO /iwbep/if_mew_dp_facade. DATA Is_gw_ztgetattachment LIKE LINE OF et_entityset. DATA Iv_skip TYPE int4. DATA Iv_top TYPE int4. * Map the runtime request to the RFC - Only mapped attributes * Get all input information from the technical request context object * Since DPC works with internal property names and runtime API interface holds external property names * the process needs to get the all needed input information from the technical request context object * Get filter or select option information lo_filter = io_tech_request_context->get_filter( ). It filter_select_options = lo_filter->get_filter_select_options( ) \v_filter_str = lo_filter->get_filter_string(). ** Check if the supplied filter is supported by standard gateway runtime process. IF iv_filter_str IS NOT INITIAL tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ 527 1015/23, 10:12am “Atachments~ Attach any File (POFIDOCUPGIXLSITXT. fo BO using GOS from SAP Gateway. | SAP Blogs AND It_filter_select_options IS INITIAL. If the string of the Filter System Query Option is not automatically converted into "filter option table ({t_filter_select_options), then the filtering combination is not supported ” Log message in the application log me->/iwbep/if_sb_dpc_comm_services~log_message( EXPORTING iv_msg_type ="E" iv_msg_id ="/IWBEP/MC_SB_DPC_ADM’ iv_msg_number = 025 ). ” Raise Exception RAISE EXCEPTION TYPE /iwbep/cx_mgw_tech_exception EXPORTING textid = /iwbep/cx_mgw_tech_exception=>internal_error. ENDIF. * * Get key table information io_tech_request_context->get_converted_source_keys( IMPORTING es_key_values = Is_converted_keys ). |s_paging-top = io_tech_request_context->get_top( ). |s_paging-skip = io_tech_request_context->get_skip( ). ** Maps filter table lines to function module parameters LOOP AT It_filter_select_options INTO Is_filter. CASE Is_filter-property. WHEN ‘OBJECT_ID: lo_filter->convert_select_option( EXPORTING is_select_option = Is_filter IMPORTING et_select_option = Ir_object_id ). READ TABLE Ir_object_id INTO Is_object_id INDEX 1 IF sy-subre = 0. object_id = Is_object_id-low. ENDIF. WHEN ‘OBJECT_TYPE’ lo_filter->convert_select_option( EXPORTING is_select_option = Is_filter IMPORTING et_select_option = Ir_object_type ). READ TABLE Ir_object_type INTO Is_object_type INDEX 1. IF sy-subre = 0. object _type = Is_object_type-low. tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ en 1015/23, 10:12am “Atachments~ Attach any File (POFIDOCUPGIXLSITXT. fo BO using GOS from SAP Gateway. | SAP Blogs ENDIF. WHEN ‘OBJECT_CAT: lo_filter->convert_select_option( EXPORTING is_select_option = Is_filter IMPORTING et_select_option = Ir_object_cat ). READ TABLE Ir_object_cat INTO Is_object_cat INDEX 1 IF sy-subre= 0. object_cat = Is_object_cat-low. ENDIF. WHEN ‘DOCUMENT_ID: lo_filter->convert_select_option( EXPORTING is_select_option = Is_filter IMPORTING et_select_option = Ir_document_id ). READ TABLE Ir_document_id INTO Is_document_id INDEX 1. IF sy-subre = 0. document_id ENDIF. Is_document_id-low. WHEN OTHERS. Log message in the application log me->/iwbep/if_sb_dpc_comm_services~log_message( EXPORTING iv_msg_type ="E" iv_msg_id ="/IWBEP/MC_SB_DPC_ADM’ iv_msg_number = 020 iv_msg_v1 = Is_filter-property ). " Raise Exception RAISE EXCEPTION TYPE /iwbep/cx_mgw_tech_exception EXPORTING textid = /iwbep/cx_mgw_tech_exception=>internal_error. ENDCASE. ENDLOOP. * Get RFC destination lo_dp_facade = /iwbep/it_ mgw_conv_srv_runtime~get_dp_facade( ). Iv_destination = /iwbep/cl_sb_gen_dpc_rt_util=>get_rfc_destination( io_dp_facade = lo_dp_facade ). * Calll RFC function module Iv_tfe_name ='ZODATA_GET_PO_ATTACHMENT. IF ly_destination IS INITIAL OR Iv_destination EQ ‘NONE’ tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ Ter 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs TRY. CALL FUNCTION lv_rfc_name EXPORTING object_id = object_id object_type = object_type object_cat = object_cat document_id = document_id TABLES ztgetattachment = ztgetattachment EXCEPTIONS system _failure = 1000 message lv_exc_msg OTHERS = 1002. Iv_subre = sy-subre. *in case of co-deployment the exception is raised and needs to be caught CATCH cx_root INTO Ix_root. Iv_subre = 1001. Iv_exe_msg = Ix_root->if_message~get_textt ). ENDTRY. ELSE. CALL FUNCTION lv_rfc_name DESTINATION Iv_destination EXPORTING object_id = object_id object_type = object_type object_cat = object_cat document_id = document_id IMPORTING ztgetattachment = ztgetattachment EXCEPTIONS system_failure = 1000 MESSAGE Iv_exc_msg ‘communication_failure = 1001 MESSAGE Iv_exc_msg. OTHERS = 1002. Iv_subre = sy-subre. ENDIF. LOOP AT ztgetattachment INTO Is_ztgetattachment |s_gw_ztgetattachment-object_id = Is_ztgetattachment-object_id. |s_gw_ztgetattachment-object_type = Is_ztgetattachment-object_type |s_gw_zigetattachment-object_cat = Is_ztgetattachment-object_cat. |s_gw_ztgetattachment-document id = Is_ztgetattachment-document_id. |s_gw_ztgetattachment-file_name = Is_ztgetattachment-file_name. |s_gw_ztgetattachment-mime_type = Is_ztgetattachment-mime_type |s_gw_ztgetattachment-creator = Is_ztgetattachment-creator. |s_gw_ztgetattachment-creator_name =Is_ztgetattachment-creator_name. |s_gw_zigetattachment-created_on = Is_ztgetattachment-created_on, APPEND Is_gw_ztgetattachment TO et_entityset. tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ srr 4015/29, 10-12 aM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs CLEAR Is_gw_ztgetattachment. ENDLOOP, ENDMETHOD. GET_STREAM This method will display the content of attachment. Abap Code: METHOD /iwbep/if_mgw_appl_srv_runtime~get_stream, TYPES: BEGIN OF ty_stream, mime_type TYPE string, value TYPE xstringval, END OF ty_stream, DATA: Is_key_tab LIKE LINE OF it_key_tab, Iv_doc_id TYPE sofolentil-doc_id. DATA: It_obj_header TYPE STANDARD TABLE OF solistil, |s_objhead TYPE solistil, It_obj_cont TYPE STANDARD TABLE OF solistil, It_attachment TYPE STANDARD TABLE OF soattlstil, It_cont_hex TYPE STANDARD TABLE OF solix, ls doc_data TYPE sofolentil. * DATA it_content TYPE STANDARD TABLE OF soli. DATA Iv_xstring TYPE xstring, DATA Iv_mimetype TYPE mimetypes-type. DATA: Is_stream TYPE ty_stream. DATA Iv_file TYPE char255. DATA Is_header TYPE ihttpnvp. READ TABLE it_key_tab INTO Is_key_tab WITH KEY name = ‘Documentid’ IF sy-subre EQ 0. v_doc_id = Is_key_tab-value. ENDIF. * FM to Read Link/Attachment, CONCATENATE '&SO_FILENAME=' Iv_file INTO Is_objhead-line. *|s_objhead-line ='&SO_FILENAME=" APPEND Is_objhead TO It_obj_header. |s_objhead-line = '&SO_FORMAT=BIN, APPEND Is_objhead TO It_ob|_header. CALL FUNCTION ‘SO_DOCUMENT_READ_APII EXPORTING tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ eer 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs document_id = Iv_doc_id IMPORTING document_data = Is_doc_data TABLES object_header = It_obj_header object_content = It_obj_cont attachment _list = attachment contents_hex = It_cont_hex EXCEPTIONS document_id_not_exist = 1 operation_no_authorization = 2 x_error OTHERS = 4, TRY. CALL METHOD cl_bes_convert=>xtab_to_xstring EXPORTING it_xtab = It_cont_hex RECEIVING rv_xstring = Iv_xstring, CATCH cx_bes . ENDTRY. CALL FUNCTION “SDOK_MIMETYPE_GET" EXPORTING extension = Is_doc_data-obj_type IMPORTING mimetype = lv_mimetype, Is_stream-value = Iv_xstring. bindata. \s_stream-mime_type = lv_mimetype. *Is_stream-valu: Is_Iheader-name = ‘Content-Disposition’ Is_doc_data-obj_descr }". Is_Iheader-value = [inline; filename: set_header( is_header = Is_Iheader ) copy_data_to_ref( EXPORTING is_data CHANGING cr_data = er_stream ). is_stream ENDMETHOD. CREATE_STREAM This method will upload the any types of files attachment. tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ sor “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs ‘Abap Code: METHOD /iwbep/if_mgw_appl_srv_runtime~create_stream. * Constants CONSTANTS : c_bus2012 TYPE swo_objtyp VALUE ‘BUS2012\" bus NUMBER FOR PO _ext(3) TYPE ¢ VALUE EXT; _atta(4) TYPE ¢ VALUE ‘ATTA, ¢_b(1) TYPE c VALUE'B, c_x(1) TYPE ¢ VALUEX; ¢_o(1) TYPE ¢ VALUE'O. * Data declaration DATA: it_content TYPE solix_tab, " content OF FILE STORAGE it_objhead TYPE STANDARD TABLE OF soli, |s_objhead TYPE soli wa_folmem_k TYPE sofmk, “folder content DATA wa_note TYPE borident, " bor OBJECT IDENTIFIER wa_object TYPE borident, wa_obj_id TYPE soodk, “DEFINITION OF an OBJECT (key part) wa_fol_id TYPE soodk, wa_obj_data TYPE soodl, " OBJECT DEFINITION AND CHANGE ATTRIBUTES Iv_ep_note TYPE borident-objkey, “bor OBJECT KEY Iv_extension TYPE ¢ LENGTH 4, “FILE EXTENSION ONLY Iv_so_num TYPE ebeln, "PO NUMBER Iv_file_des TYPE so_obj_des, " file name lv_tmp_in TYPE string. DATA object_id TYPE zif_zodata_get_po_attachment=>sibfboriid. DATA object_type TYPE zif_zodata_get_po_attachment=>sibftypeid. DATA object_cat TYPE zif_zodata_get_po_attachment=>sibfcatid DATA document_id TYPE zit_zodata_get_po_attachment=>documentid. DATA Is_converted_keys LIKE er_entity. DATA Iv_source_entity_set_name TYPE string. DATA lo_facade TYPE REF TO /iwbep/if_mgw_dp_facade. DATA It_request_header TYPE tihttpnvp. DATA Is_request_header TYPE ihttpnvp. DATA: Is_key_tab LIKE LINE OF it_key_tab. TYPES: BEGIN OF ty_filemetadata, filename TYPE string, mimetype TYPE string, END OF ty_filemetadata. DATA: Is_filemetadata TYPE ty_filemetadata tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ wer 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs DATA Iv_extensions TYPE charl0, DATA Iv_file TYPE char255. DATA |v_po_num TYPE ebeln, */Refresh data REFRESH: it_content[], it_objhead[]. */Get folder id CALL FUNCTION ‘SO_FOLDER_ROOT_ID_GET’ EXPORTING region=c_b IMPORTING folder_id = wa_fol_id EXCEPTIONS ‘communication failure = 1 ‘owner_not_exist = 2 system _failure = 3 xerror=4 OTHERS *To get the extension from the file name IF iv_slug IS NOT INITIAL. SPLIT iv_slug AT‘/” INTO Iv_po_num lv_file. CALL FUNCTION ‘TRINT_FILE_GET_EXTENSION EXPORTING filename = file uppercase = 'X’ IMPORTING extension = Iv_extensions. ENDIF, FeO SRO ore SOOKE oooMEEE oii gS, * To convert the file content to binary DATA: Iv filesize TYPE i lv_base64 TYPE string, “Base64 Iv_string TYPE string, “Base64 v_binary TYPE xstring, CALL FUNCTION ‘SCMS_BASE64_ENCODE_STR’ EXPORTING input = is_media_resource-value IMPORTING output = Iv_base64, **Decode Base64 String to String CALL METHOD cl_http_utility=>if_http_utility~decode_base64 EXPORTING encoded = lv_base64 RECEIVING decoded = Iv_string tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ saer 1015/23, 10:12am “Atachments~ Attach any File (POFIDOCUPGIXLSITXT. fo BO using GOS from SAP Gateway. | SAP Blogs CALL FUNCTION ‘SSFC_BASE64_DECODE’ EXPORTING b64data = v_string * BE4LEN *B_CHECK = IMPORTING bindata = lv_binary EXCEPTIONS ssf_krn_erro ssf_krn_noop = 2 ssf_krn_nomemory = 3 ssf_krn_opiny = 4 ssf_krn_input_data_error = 5 sssf_krn_invalid_par = 6 ssf_krn_invalid_parlen = 7 OTHERS CALL FUNCTION ‘SCMS_XSTRING_TO_BINARY' EXPORTING buffer = Iv_binary "is_media_resource-value “xstring, append_to_table = c_x TABLES binary_tab = it_content. “binary. * to convert binary (SOLIXTAB) to SOLITAB DATA It_data TYPE soli_tab. CALL FUNCTION ‘SO_SOLIXTAB_TO_SOLITAB' EXPORTING ip_solixtab = it_content IMPORTING ep_solitab = It_data, * To create the document object */ Assigning Valuse to the Standard Strucuture Fields wa_object-objkey = lv_po_num.” PO number wa_object-objtype = c_bus2012, " bus number wa_obj_data-objsns = c_o, " sensitivity of object (o-standard) wa_obj_data-objla = sy-langu. " language wa_obj_data-objdes = Iv_file. “iv_slug. " slug value - description wa_obj_data-file_ext = Iv_extensions. " file extension * wa_obj_data-objlen = lines( it_content ) * 255. wa_obj_data-objlen = lines( It_data ) * 255. CONCATENATE '&SO_FILENAME=" Iv_file INTO Is_objhead-line. APPEND Is_objhead TO it_objhead. ls_objhead-line = '&SO_FORMAT=BIN' APPEND Is_objhead TO it_objhead. tps blogs sap. com/2018/10/3 fttachments-attach-any-fle-pdfdocjpgxlstt.to-bo-using-gos-rom-sap-gateway-u./ ssr7 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs */ insert data CALL FUNCTION ‘SO_OBJECT_INSERT’ EXPORTING folder_id = wa_fol_id object_type = c_ext object_hd_change = wa_obj_data IMPORTING object_id = wa_obj_id TABLES objhead = it_objhead objcont = It_data EXCEPTIONS active_user_not_exist =1 ‘communication_failure = 2 ‘component_not_available = 3 dl_name_exist = 4 folder_not_exist = 5 folder_no_authorization = 6 object_type_not_exist =7 operation_no_authorization = 8 ‘owner_not_exist = 9 parameter_error = 10 substitute_not_active = 11 substitute_not_defined = 12 system_failure = 13 xerror=14 OTHERS = 15. * To link the document attachment and business object IF sy-subre = 0 AND wa_object-objkey IS NOT INITIAL. wa_folmem_k-foltp = wa_fol_id-obitp. wa_folmem_k-folyr = wa_fol_id-obiyr. wa_folmem_k-folno = wa_fol_id-objno. */Please note: wa_fol_id and wa_obj_id are different work areas wa_folmem_k-doctp = wa_obj_id-objtp. wa_folmem_k-docyr = wa_obj_id-objyr. wa_folmem_k-docno = wa_obj_id-objno. lv_ep_note = wa_folmem_k. wa_note-objtype = ’MESSAGE’ wa_note-objkey = lv_ep_note. */Link it CALL FUNCTION ‘BINARY_RELATION_CREATE_COMMIT EXPORTING obj_rolea = wa_object obj_roleb = wa_note relationtype = c_atta EXCEPTIONS tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ vert 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs no_model = 1 internal_error = 2 unknown = 3 OTHERS IF sy-subre EQ 0. * Commit it COMMIT WORK, WRITE:/ ‘Attached Successfully’ ENDIF. ENDIF. *Fill the export parameter er_entity accordingly * |s_filemetadata-filename = iv_slug. Is_filemetadata-filename = Iv_file. Is_filemetadata-mimetype = is_media_resource-mime_type. copy_data_to_ref( EXPORTING is_data = Is_filemetadata CHANGING ct_data = er_entity) ENDMETHOD. DELETE_STREAM This method will delete the attachment ‘Abap Code: METHOD /iwbep/it_mgw_appl_srv_runtime~delete_stream. DATA i_objectd TYPE borident. DATA: Is_key_tab LIKE LINE OF it_key_tab, lv_doc_id TYPE borident-objkey. “sofolentil-doc_id. DATA: i_borident TYPE borident, iLattsrv TYPE REF TO cl_gos_document_service. ‘Lobjectd-objtype = 'BUS2012 READ TABLE it_key_tab INTO Is_key_tab WITH KEY nami IF sy-subre EQ 0. i_objectd-objkey = Is_key_tab-value. ENDIF. READ TABLE it_key_tab INTO Is_key_tab WITH KEY name = ‘Documentid: IF sy-subre EQ 0. tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ ssr27 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs Iv_doc_id = Is_key_tab-value, ENDIF. CREATE OBJECT i_attsrv. CALL METHOD (_attsrv->delete_attachment EXPORTING is_object = i_objectd ip_attachment = Iv_doc_id. COMMIT WORK. ENDMETHOD. Concluding Notes In this blog post, steps to attach multiple files with different file extensions via Odata Service Call in GOS has been explained in detail. Hope this useful to you. Thanks Alert Moderator Assigned Tags SAP Fiori NWABAP Gateway (OData) fiori Object Services Attachments Object Services Attachments Object Services AttachmentsRemove term: Odata-UI Odata-UIRemove term sapui5 sapuiSRemove term: uploadcollection uploadcollection Odata-UI sapuiS View more...) Similar Blog Posts “An ‘Sample Fiori Application showcase Attachment Uploading Capabilities of SAPUIS using XSODATA and HANA TABLE By Pallavkumar Jadav Jun 29, 2020 Attachment Service to your rescue in SHANA via Fiori Elements using Reuse Components (GOS) tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ s6r27 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs By Mahesh Palavalli Dec 16,2019 Display PDF/ Forms from back end SAP in SAP UI5 using the PDFVIEWER control By Abhilash Pradhan May 20, 2020 Related Questions ~ Unable to open JPG file attachment in Fiori Client on Android By saurabh vakil Sep 23,2015 PR Approval app Download Attachments By Kiran VK Mar 17,2015 Size limitations of file attachments in Fiori apps By saurabh vakil Oct 01, 2015, 11 Comments You must be Logged on to comment or reply to a post. thomas liang November 4, 2019 at 5:59 am HiArijt, Thanks for your helpful blog, | want to know the logic for the function module ZODATA_GET_PO_ATTACHMENT. Could you please share it? Thank you very much. Like 0 | Share Arijit Dutta | Blog Post Author November 11, 2019 at 5:43 pm Logic for the function module ZODATA_GET_PO_ATTACHMENT: tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ ver 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs FUNCTION ZODATA_GET_PO_ATTACHMENT, *"*"Local Interface: "IMPORTING *" VALUE(OBJECT_ID) TYPE SIBFBORIID *" VALUE(OBJECT_TYPE) TYPE SIBFTYPEID DEFAULT '8US2012' *" VALUE(OBJECT_CAT) TYPE SIBFCATID DEFAULT ‘BO +" VALUE(DOCUMENT_ID) TYPE DOCUMENTID OPTIONAL "TABLES +" ZIGETATTACHMENT TYPE ZTGETATTACHMENT OPTIONAL data: ft_polinks type obl_t link, f5_link type obl_s_link, DATA‘it_objects TYPE sibfiporbt, is_objects TYPE SIBFLPORB, itroles TYPE ob|_t_rott, is_roles TYPE OBL_S_ROLT, itLrelations TYPE obl_trelt, is_relations TYPE obl_s_relt itLlink TYPE obl_t link, is_link TYPE obl_s_link data zsgetattachment like line of ztgetattachment. data lv_mimetype type MIMETYPES-TYPE. data: Iv_doc_id type SOFOLENTI-DOC_ID, Is_doc_data TYPE sofolentil DATA: It_obj_header TYPE STANDARD TABLE OF solistil, It_obj_cont TYPE STANDARD TABLE OF solistil, It_attachment TYPE STANDARD TABLE OF soattistil, It_cont_hex TYPE STANDARD TABLE OF solix. is_relations-sign = "I is_relations-option = "EQ is_relations-low ='ATTA’ APPEND is_relations TO it_relations. is_objects-typeid = OBJECT_TYPE. is_objects-catid = OBJECT_CAT. is_objects-instid = OBJECT_ID. APPEND is_objects TO it_objects. is_roles-sign =" is_roles-option = 'EQ’ is_roles-low = 'GOSAPPLOBJ’ APPEND is_rales TO it_roles. try. CALL METHOD cl_binary_relation=>read_links_of_objects EXPORTING tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ 4015/29, 10-12 aM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs it_objects = it_objects it_role_options = it_roles it_relation_options = it_relations IMPORTING et_links_a = it_link, CATCH cx_obl_model_error. CATCH cx_obl_parameter_error. CATCH ex_obl_internal_error. ENDTRY. loop at it_link into fs_link clear lv_doc_id Iv_doc_id = fs_link-INSTID_B. clear Is_doc_data CALL FUNCTION 'SO_DOCUMENT_READ_APIL’ EXPORTING. document_id =Iv_doc_id IMPORTING document_data = Is_doc_data TABLES object_header = It_obj_header __obj_cont It_attachment contents_nex = It_cont_hex EXCEPTIONS document_id_not_exist =1 operation_no_authorization = 2 xerro OTHERS if s_doc_data-OBJECT_ID is not INITIAL, zsgetattachment-OBJECT_ID = fs_link-INSTID_A. zsgetattachment-OBJECT_TYPE = fs_link-TYPEID_A zsgetattachment-OBJECT_CAT = fs_link-CATID_A. zsgetattachment-DOCUMENT_ID = fs_link-INSTID_B. zsgetattachment-FILE_NAME = Is_doc_data-OBJ_DESCR. CALL FUNCTION 'SDOK_MIMETYPE_GET’ EXPORTING. extension = Is_doc_data-OBJ_TYPE IMPORTING MIMETYPE, Iv_mimetype zsgetattachment-MIME_TYPE = Iv_mimetype. zsgetattachment-CREATOR = |s_doc_data-CREAT_NAME. zsgetattachment-CREATOR_NAME = Is_doc_data-CREAT_FNAM CONCATENATE Is_doc_data-CREAT_date Is_doc_data-CREAT_time into zsgetattachment- CREATed_on. tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ sen 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs append zsgetattachment to ztgetattachment. endif ENDLOOP. ENDFUNCTION. ike 0 | Share & Ashok kumar December 31, 2021 at 6:35 am how can download mass atachments of fimm sd documents attached pleas its very hard to verify each line item one by one -ike 0 | Share Mahesh Palavalli December 10, 2019 at 8:26 am Thanks for sharing this Arijt Dutta , It helped me a lot @ BTW you can use code blocks to paste your code, it will be helpful for others to understand Like O | Share Arijit Dutta | Blog Post Author January 8, 2020 at 5:55 pm Welcome, Mahesh! Sure, will use code blocks in my upcoming post. ike 0 | Share Somnath Choudhury April 23,2020 at 1:07 pm Hi Arijt Ifyou can provide with a sample test scripts to show us how attachments from SAP UI5 or may be other Ulinto SAP. You have prepared the cake but supplying us with the half baked on ....would really appreciate tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ 2ore7 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs if you show with URI in Gateway . How would be the format be, which CRUD operation will you use to create attachments , what header we need to pass ...how can we test independently from SAP system (ie Gateway and SAP ECC backend ) ...No worries go ahead if you can and show us with steps , Also this attachment works only for PO we can many more attachments for SO , Inspection , Maintenance order in that case how can we make the same portable . Thanks. Like O | Share Angelika Lavorenz December 8, 2020 at 4:54 pm Hi Aci thanks for your nice block. | hope that | might ask you on the following question. Is it possible to implement an attachment-folder in a BOPF which was set up in eclipse. This BOPF was made by us (Z*) and is not linked to any SAP R/3 Standard object. Furthermore, we are using ODATA as service where the BOPF is called by the consumer api. | was able to do the update stream, but it is not yet clear on how to realize the SAPUI5 part Do you have any hints for me? Thanks in advance Like O | Share g Satish Raju Vysyaraju July 27, 2021 at 12:08 pm Acrobat Reeder ‘Adobe Acrobat Reader could net open '47520381_20210727120611.061_XPDF' because itis either not a supported file type or because the file has been damaged (for example it was sent as an email attachment and wasn't correctly decoded), Hi Arijit, Attachment error from GOS Sales order tps blogs sap. com/2018/10/3 fattachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ 2arer 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs |am using the same code but i am getting pdf decode is not properly done. lam attaching my code . Could you help me what is the issue. Attached my code and error screen shot while trying to open from GOS in Sales Order. PDF error while trying to open from GOS in Sales Order SeueeConstants HHH Hoe CONSTANTS : €_BUS2@32 TYPE SWO_OBJTYP VALUE "BUS2@32", " bus NUMBER FOR PO C_EXT(3) TYPE C VALUE ‘EXT’, C_ATTA(4) TYPE C VALUE ‘ATTA', ©_B(1) TYPE C VALUE 'B", X(1) TYPE C VALUE °X', ©.0(1) TYPE C VALUE '0'. ¥24+*Data Declarations DATA : WA_FOL_ID TYPE SOODK, LV_EXTENSIONS TYPE CHARI0, LVLFILE TYPE CHAR2SS, LV_PO_NUM TYPE EBELN, LV_BASE64 TYPE STRING, LT_DATA TYPE SOLI_TAB, LV_STRING TYPE STRING, "Base64 LV_BINARY TYPE XSTRING, IT_CONTENT TYPE SOLIX_TAB, " content OF FILE STORAGE * TT_CONTENT TYPE STANDARD TABLE OF SOLT, WALOBJECT TYPE BORIDENT, “DEFINITION OF an OBJECT (key part) WA_0B9_DATA TYPE SO0D1, “OBJECT DEFINITION AND CHANGE ATTRIBUTES IT_OB3HEAD TYPE STANDARD TABLE OF SOLL, LS_OBIHEAD TYPE SOLT, WA_0BJ_ID TYPE SOODK, WA_FOLMEM_K TYPE SOFMK, "folder content DATA WALNOTE TYPE BORIDENT, “bor OBJECT IDENTIFIER LV_EP_NOTE TYPE BORIDENT-OBJKEY. “bor OBJECT KEY IF IS_ATTACH IS NOT INITIAL. */Get folder id CALL FUNCTION 'SO_FOLDER_ROOT_ID_GET’ EXPORTING REGION = C_B IMPORTING FOLDER_ID = WA_FOL_ID EXCEPTIONS COMMUNICATION FATLURE = 1 OWNER_NOT_EXIST = 2 tps blogs sap. com/2018/10/3 fttachments-attach-any-fle-pdfdocjpgxlstt.to-bo-using-gos-rom-sap-gateway-u./ 2arr 1015/23, 10:12 AM SYSTEM_FATLURE = 3 XLERROR = 4 OTHERS = 5. *To get the extension from the file name IF TS_ATTACH-FILENAME IS NOT INITIAL. * SPLIT TS_ATTACH-FILENAME AT '/* TNTO LV_PO_NUM LV_FILE. MOVE IS_ATTACH-FILENAME TO LV_FILE. CALL FUNCTION ‘TRINT_FILE_GET_EXTENSION* EXPORTING FILENAME UPPERCASE IMPORTING EXTENSION = LV_EXTENSIONS. ENDIF. Lv_FILE * To convert the file content to binary CALL FUNCTION *SCMS_BASE64_ENCODE_STR* EXPORTING INPUT = IS_ATTACH-VALUE "IS_MEDIA_RESOURCE-VALUE IMPORTING OUTPUT = LV_BASE64. ** *Decode Base64 String to String CALL METHOD CL_MTTP_UTILITY=>IF_HTTP_UTILITY~DECODE_BASE64 EXPORTING ENCODED = LV_BASE64 RECEIVING DECODED = LV_STRING. ****Convert String to Binary CALL FUNCTION "SSFC_BASE64_DECODE" EXPORTING BGADATA * Be4LENG * BLCHECK = IMPORTING BINDATA = LV_BINARY EXCEPTIONS SSF_KRN_ERROR SSF_KRN_NOOP = 2 ‘SSF_KRN_NOMEMORY = 3 ‘SSF_KRN_OPINV = 4 ‘SSF_KRN_INPUT_DATA_ERROR = 5 ‘SSF_KRN_INVALID_PAR = 6 SSF_KRN_INVALID_PARLEN = 7 OTHERS = 8. CALL FUNCTION 'SCMS_XSTRING_TO_BINARY" EXPORTING BUFFER = LV_BINARY "is_media_resource-value “xstring LV_STRING 1 tps blogs sap. com/2018/10/3 fttachments-attach-any-fle-pdfdocjpgxlstt.to-bo-using-gos-rom-sap-gateway-u./ “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs 27 1015/23, 10:12 AM “Altachments'-Altach any Fil (PDFIOOCHJPGIXLSITXT. lo BO using GOS from SAP Gateway-UL. | SAP Blogs APPEND_TO_TABLE = C_X TABLES BINARY_TAB = IT_CONTENT. “BINARY. * to convert binary (SOLIXTAB) to SOLITAB CALL FUNCTION *SO_SOLTXTAB_TO_SOLTTAB* EXPORTING IP_SOLIXTAB = IT_CONTENT IMPORTING EP_SOLITAB = LT_DATA. ‘data : Iv_decodedx TYPE xstring, * It_data TYPE solix_tab. *CLEAR: 1v_decodedx. * CALL METHOD cl_http_utility=>if_http_utility~decode_x_base64 * EXPORTING * encoded = LV_BASE64 * RECEIVING * decoded = 1v_decodedx. *CALL METHOD cl_bcs_convert=>xstring_to_solix * EXPORTING * iv_xstring = 1v_decodedx * RECEIVING * et_solix = 1t_data. * To create the document object */ Assigning Valuse to the Standard Strucuture Fields WA_OBJECT-OBJKEY = IV_SALESORDER. " PO number WA_OBJECT-OBITYPE = C_BUS232. " bus number WA_OBJ_DATA-OBISNS = C_O. " sensitivity of object (o-standard) WA_OB_DATA-OBJLA = SY-LANGU. " language WA_OBJ_DATA-OBIDES = LV FILE. “iv slug. “ slug value - description WA_OBJ_DATA-FILE_EXT = LV_EXTENSIONS. " file extension * WA_OBJ_DATA-OBILEN = LINES( IT_CONTENT ) * 255. WA_OBJ_DATA-OBJLEN = LINES( LT_DATA ) * 255. CONCATENATE '8SO_FILENAME=" LV_FILE INTO LS_OBJHEAD-LINE. APPEND LS_OBJHEAD TO IT_OBJHEAD. LS_OBJHEAD-LINE = "&SO_FORMAT=BIN". APPEND LS_OBJHEAD TO IT_OBJHEAD. */ Insert data CALL FUNCTION 'S0_OBJECT_INSERT* EXPORTING FOLDER_ID = WA_FOL_ID tps blogs sap. com/2019/10/3 fttachments-attach-any-fle-pdfdocjogustt. to-bo-using-gosrom.sap-galewa 1015/29, 10:12 am ‘Attachments’ -Allach any File (PDFIDOCHJPGIXLSITXT. to BO using GOS from SAP Gateway-UL. | SAP Blogs OBJECT_TYPE = C_EXT OBJECT_HD_CHANGE = WA_OBJ_DATA IMPORTING OBJECT_ID = WA_08]_ID TABLES OBJHEAD = IT_OBJHEAD OBICONT = LT_DATA EXCEPTIONS ACTIVE_USER_NOT_EXIST COMMUNICATION_FAILURE COMPONENT_NOT_AVAILABLE = 3 DL_NAME_EXIST = 4 FOLDER_NOT_EXTST = 5 FOLDER_NO_AUTHORIZATION = 6 OBJECT_TYPE_NOT_EXIST = 7 OPERATION NO_AUTHORIZATION = 8 OWNER_NOT_EXIST = 9 PARAMETER ERROR = 10 SUBSTITUTE_NOT_ACTIVE = 11 SUBSTITUTE_NOT_DEFINED = 12 SYSTEM_FAILURE = 13 X_ERROR = 1 OTHERS = 15. IF SY-SUBRC = @ AND WA_OBJECT-OBJKEY IS NOT INITIAL. WA_FOLMEM_K-FOLTP = WA_FOL_ID-OBITP. WA_FOLMEM_K-FOLYR = WA_FOL_ID-OBJYR. WA_FOLMEM_K-FOLNO = WA_FOL_ID-083NO. */Please note: wa_fol_id and wa_obj_id are different work areas WA_FOLMEM_K-DOCTP = WA_OB3_ID-OBITP. WA_FOLMEM_K-DOCYR = WA_OB3_ID-OBIYR. WA_FOLMEM_K-DOCNO = WA_OBJ_ID-0BINO. LV_EP_NOTE = WA_FOLMEM_K. WA_NOTE-OBJTYPE = ‘MESSAGE’. WA_NOTE-OBJKEY = LV_EP_NOTE. */Link it CALL FUNCTION *BINARY_RELATION_CREATE_COMMIT* EXPORTING 0B9_ROLEA = WA_OBJECT 089_ROLEB = WA_NOTE RELATIONTYPE = C_ATTA EXCEPTIONS NO_MODEL = 1 INTERNAL_ERROR UNKNOWN = 3 OTHERS = 4. IF SY-SUBRC EQ 2. * Commit it tps blogs sap. com/2018/10/3 fttachments-attach-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-galeway-u./ 2sre7 1015/23, 1012 aM “Atachments~ Attach any File (POFIDOCUPGIXLSITXT. fo BO using GOS from SAP Gateway. | SAP Blogs COMMIT WORK. WRITE:/ ‘Attached Successfully’. EV_SUCCESS = °x'. ENDIF. ENDIF. ENDIF. Like O | Share Satish Raju Vysyaraju July 27,2021 at 12:21 pm Hiall lam getting Base64 file from CPI and in odata i am Encoding and decoding the base64 and attaching the file in GOS attachment of sales order. | am able to add the attachments in GOS with out any exception or error but when i am trying to open i am not able to open the file. | am getting the error. When i am manually uploading the file iam able to open the file successfully in my system. Can some one let me know what could be the issue here in the code. Thanks Satish Like 0 | Share Masami Mori November 12, 2021 at 12:25 pm Hall, tps blogs sap. com/2018/10/3 fattachments-attac-any-fle-pdfdocjpgxlsttto-bo-using-gos-rom-sap-gateway-u./ 26r27 1015/23, 10:12AM “Altachments'~Altach any Fil (PDFIDOCHJPGIXLSITXT. to BO using GOS from SAP Gateway-UL. | SAP Blogs One of the causes of the attachment not opening problem is that the file size is not For example, We can't open an Excel file which is the length is not correct even if 4 In this sample code, the following coding sets the file length to a multiple of 255. > wa_obj_data-objlen = lines( 1t_data ) * 255. Setting the correct length of the attached file will solve this problem. Thanks Like O | Share Tiago Cadavez ‘August 22, 2023 at 5:25 pm Great post. This was really what | was looking for and it really helped me. | used UploadSet for the files and | removed the code and decode as it works without it. Like O | Share Find us on Privacy Terms of Use Legal Disclosure Copyright Trademark Cookie Preferences Newsletter Support tps blogs sap. com/2018/10/31/ttachments-attach-any-fle-pdfdocjogxlsttto-bo-using-gos-rom-sap-galeway- aren

You might also like