下面说的是根据业务需求做增强,再触发PO接口发送业务数据,样例为MB21创建预留单时,触发PO接口发送预留单信息:
1.找到MB21创建预留单的增强出口,并进行实施
2.在增强中写入RFC函数,接收MB21创建的预留单信息,并在函数取数汇总写入PO视图
lv_task = 'ZRES_DELIVERY' && sy-uzeit.
CALL FUNCTION 'ZFM_IF_QUERY_RESERVATION' STARTING NEW TASK lv_task
TABLES
ct_rkpf = ti_rkpf
ct_resb_new = ti_resb_new
ct_resb_old = ti_resb_old.
"赋值要发送的数据
REFRESH: lt_rkpf_view_tab,lt_resb_view_tab,lt_allyuliu_view_tab.
SORT lt_resb BY rspos.
SORT lt_allyuliu BY rspos.
MOVE-CORRESPONDING lt_rkpf TO lt_rkpf_view_tab.
MOVE-CORRESPONDING lt_resb TO lt_resb_view_tab.
MOVE-CORRESPONDING lt_allyuliu TO lt_allyuliu_view_tab.
CLEAR ls_data.
ls_data-rkpf_view = lt_rkpf_view_tab.
ls_data-resb_view = lt_resb_view_tab.
ls_data-allyuliu_view = lt_allyuliu_view_tab.
APPEND ls_data TO lt_data.
APPEND LINES OF lt_data TO ls_output-mt_mm109_req-request.
3.调PO的代理类进行数据传输
DATA: lo_proxy TYPE REF TO zco_si_mm109_erp_sender.
CONSTANTS: lc_ifnam TYPE zcmeid VALUE 'MM109'.
TRY.
*&---------------------------------------------------------------------*
* 1.2.1 检查接口是否启用
*&---------------------------------------------------------------------*
CALL METHOD zcl_ca_general=>get_interface_status
EXPORTING
iv_ifnam = lc_ifnam
IMPORTING
es_ifmsg = DATA(ls_ifmsg)
RECEIVING
rv_subrc = DATA(lv_subrc).
DATA(lv_date) = sy-datlo.
DATA(lv_timlo) = sy-timlo.
GET RUN TIME FIELD DATA(lv_time_star).
ENDTRY.
* 执行调用proxy接口主动推送数据
TRY.
CREATE OBJECT lo_proxy.
lo_proxy->si_mm109_erp_sender(
EXPORTING
output = ls_output
).
COMMIT WORK.
CATCH cx_root INTO DATA(lcx_error).
DATA(err_text) = lcx_error->get_text( ). "得到错误信息
ENDTRY.
*&---------------------------------------------------------------------*
* 1.2 获取消息ID
*&---------------------------------------------------------------------*
TRY .
CALL METHOD cl_proxy_access=>get_inbound_message_key
IMPORTING
message_id = DATA(lv_msgid).
CATCH cx_ai_system_fault INTO DATA(lcx_sys_fault).
ENDTRY.
*&---------------------------------------------------------------------*
* 3.1 转换key字段,更新日志表
*&---------------------------------------------------------------------*
GET RUN TIME FIELD DATA(lv_time_end).
CALL METHOD zcl_ca_general=>save_interface_log
EXPORTING
iv_ifnam = lc_ifnam
iv_msgid = lv_msgid
iv_date = lv_date
iv_time = lv_timlo
iv_time_start = lv_time_star
iv_time_end = lv_time_end
iv_uname = sy-uname
is_ifmsg = ls_ifmsg
is_ifdata = ls_output.
PO接口会由PO顾问给我们提前做好,只需要在SPROXY中生成一下就可以了