ABAP 调用服务类DEMO

FUNCTION zwmkb_fm001.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  EXPORTING
*"     REFERENCE(E_TYPE) TYPE  BAPI_MTYPE
*"     REFERENCE(E_MESSAGE) TYPE  STRING
*"  TABLES
*"      ZTAB01 STRUCTURE  ZTPP_KB001
*"----------------------------------------------------------------------

*&----按照生成的代理类定义类
  DATA : lo_proxy TYPE REF TO zpico_si_wmkb_0001_out.

*&----传入与返回的结构定义
  DATA : input     TYPE zpimt_wmkb_0001_res.
  DATA : output    TYPE zpimt_wmkb_0001_req.
  DATA : ls_item   TYPE zpidt_wmkb_0001_req_item,
         ls_header TYPE zpidt_wmkb_0001_req_header.

  DATA : lv_field  TYPE zcl_public=>ty_login.
  DATA : ls_tab01  LIKE ztpp_kb001.

  RANGES: rt_aufnr FOR afko-aufnr.

  CLEAR: input,output,ls_tab01,ls_item,ls_header.
  CLEAR rt_aufnr[].

  DEFINE set_ran.
    &1-sign   = 'I'.
    &1-option = 'EQ'.
    &1-low    = &2.
    APPEND  &1.
  END-OF-DEFINITION.

  LOOP AT ztab01 INTO ls_tab01.
    set_ran rt_aufnr ls_tab01-aufnr.
*    MOVE-CORRESPONDING ls_tab01 TO ls_header.
*    APPEND ls_header TO output-mt_wmkb_0001_req-header.
*    CLEAR ls_header.
    CLEAR ls_tab01.
  ENDLOOP.

  IF rt_aufnr[] IS NOT INITIAL.

    SELECT a~aufnr, b~vornr,b~ktsch,b~ltxa1
      INTO TABLE @DATA(lt_afvc)
      FROM  afko AS a
      JOIN  afvc AS b ON a~aufpl EQ b~aufpl
      WHERE a~aufnr IN @rt_aufnr.

  ENDIF.

  LOOP AT ztab01 INTO ls_tab01.
    MOVE-CORRESPONDING ls_tab01 TO ls_header.

    ls_header-maktl = ls_tab01-maktx.

    LOOP AT lt_afvc INTO DATA(ls_afvc) WHERE aufnr EQ ls_tab01-aufnr.
      ls_item-vornr = ls_afvc-vornr .
      ls_item-ktsch = ls_afvc-ktsch .
      ls_item-ltxa1 = ls_afvc-ltxa1 .
      ls_item-iyl1  = ls_tab01-aufnr.
      APPEND ls_item TO ls_header-item.
      CLEAR ls_item.
    ENDLOOP.

    APPEND ls_header TO output-mt_wmkb_0001_req-header.

    CLEAR ls_header.
    CLEAR ls_tab01.
  ENDLOOP.

*  LOOP AT output-mt_wmkb_0001_req-header INTO ls_header.
*    LOOP AT lt_afvc INTO DATA(ls_afvc) WHERE aufnr EQ ls_header-aufnr.
*      ls_item-vornr = ls_afvc-vornr .
*      ls_item-ktsch = ls_afvc-ktsch .
*      ls_item-ltxa1 = ls_afvc-ltxa1 .
*      APPEND ls_item TO ls_header-item.
*      CLEAR ls_item.
*    ENDLOOP.
*    CLEAR ls_header.
*  ENDLOOP.

*  ls_header-zltxa1 = '1'.
*  ls_item-vornr = '2'.
*  APPEND ls_item TO ls_header-item.
*
*  APPEND ls_header TO output-mt_wmkb_0001_req-header.


*&----实例化代理类
  TRY.
      CREATE OBJECT lo_proxy.
    CATCH cx_ai_system_fault INTO DATA(lcx_error).
      DATA(err_text) = lcx_error->get_text( ). "得到错误信息
  ENDTRY.


  IF err_text IS INITIAL.
*&----发送数据
    TRY .
        CALL METHOD lo_proxy->si_wmkb_0001_out
          EXPORTING
            output = output
          IMPORTING
            input  = input.
      CATCH cx_root INTO DATA(lcx_error1).
        DATA(err_text1) = lcx_error1->get_text( ). "得到错误信息
    ENDTRY.

    IF err_text1 IS NOT INITIAL.
*&----返回类型与消息
      e_type    = 'E'.
      e_message = 'E :' && err_text1.
    ELSE.
*&----返回类型与消息
      e_type    = input-mt_wmkb_0001_res-ztype.
      e_message = input-mt_wmkb_0001_res-return .
    ENDIF.

    lv_field-zifno = 'WMKB_0001'.
    lv_field-zckey = 'ZWMKB_FM001'.

    CALL METHOD zcl_public=>zlog_save
      EXPORTING
        iv_field       = lv_field
        lv_commit      = 'X'
        it_data_sendr1 = output
        it_data_recer1 = input.
  ELSE.
*&----返回类型与消息
    e_type    = 'E'.
    e_message = 'E :' && err_text.
  ENDIF.

ENDFUNCTION.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值