ABAP端调PO接口步骤

下面说的是根据业务需求做增强,再触发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中生成一下就可以了

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值