如何实现sap调用PO的支持附件传输附件,或者有和可以像邮递员形式发送给发送附件
在 SAP 系统中实现调用 PO(Purchase Order)并支持附件传输,可以通过以下几种方式来实现。具体的实现方式取决于你使用的 SAP 模块和技术栈。例如,SAP Gateway 和 OData 服务、SAP RFC(Remote Function Call)或者 SAP PI/PO(Process Integration/Process Orchestration)等。
以下是几种常见的方法:
SAP Gateway 和 OData 服务提供了一种标准的、基于 REST 的方式来与 SAP 系统进行通信,可以用来传输附件。
创建 OData 服务:
扩展 OData 服务:
CREATE_STREAM
GET_STREAM
前端调用 OData 服务:
示例代码(ABAP 后端):
METHOD zcl_my_odata_service=>create_stream. DATA: lt_content TYPE solix_tab. DATA: lv_document_id TYPE soodk. " Extract attachment content lt_content = io_data_provider->get_data( ). " Save attachment content to database or DMS CALL FUNCTION 'SO_OBJECT_INSERT' EXPORTING folder_id = 'OUTBOX' object_id = lv_document_id TABLES objcont = lt_content EXCEPTIONS others = 1. ENDMETHOD.
SAP RFC 和 BAPI 提供了一种标准的、基于函数调用的方式来与 SAP 系统进行通信,可以用来传输附件。
创建 RFC/BAPI 函数模块:
SO_OBJECT_INSERT
ARCHIV_CONNECTION_INSERT
前端调用 RFC/BAPI:
FUNCTION z_save_attachment. IMPORTING VALUE(iv_po_number) TYPE ebeln VALUE(iv_attachment) TYPE xstring. DATA: lt_content TYPE solix_tab. DATA: lv_document_id TYPE soodk. " Convert xstring to solix_tab CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = iv_attachment IMPORTING output_length = lv_length TABLES binary_tab = lt_content. " Save attachment to DMS or content server CALL FUNCTION 'ARCHIV_CONNECTION_INSERT' EXPORTING archiv_id = 'Z1' archiv_doc_id = lv_document_id sap_object = 'BUS2012' " Purchase Order sap_object_id = iv_po_number TABLES archive_parameters = lt_content EXCEPTIONS others = 1. ENDFUNCTION.
SAP PI/PO 是一种集成解决方案,可以用于在不同系统之间传输数据和文件。
创建集成流程:
配置通信通道:
实现附件传输:
如果需要将附件像邮递员那样发送,可以使用 SAP 的电子邮件功能。
配置 SAP 邮件服务器:
编写 ABAP 代码发送电子邮件:
SO_NEW_DOCUMENT_ATT_SEND_API1
DATA: lt_objcont TYPE solix_tab, lt_objhead TYPE soli_tab, lt_reclist TYPE TABLE OF somlreci1, lv_sent_all TYPE os_boolean. " Prepare email content and attachment lt_objcont = iv_attachment_content. APPEND 'Purchase Order Attachment' TO lt_objhead. " Recipient list APPEND VALUE #( recip_type = 'U' recip_id = 'RECIPIENT_EMAIL' ) TO lt_reclist. " Send email CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1' EXPORTING document_data = VALUE soodcch( obj_name = 'PO Attachment' obj_descr = 'Purchase Order Attachment' ) put_in_outbox = 'X' TABLES objhead = lt_objhead objcont = lt_objcont receivers = lt_reclist EXCEPTIONS others = 1.
通过以上方法,你可以实现 SAP 系统与外部系统之间的附件传输或发送。选择哪种方法取决于具体的业务需求和系统环境。