SAP--客户信息接口函数

SAP客户基础信息接口

FUNCTION z_mm_custom_list.
  TYPES: BEGIN OF ty_custom_in,
           kunnr TYPE kunnr,  "客户编号
           name1 TYPE name1,  "客户名称
         END OF ty_custom_in.

  "出参
  TYPES: BEGIN OF ty_custom_list,
           kunnr             TYPE kunnr,  "客户编号
           name1             TYPE name1,  "客户名称
           bankaccountname   TYPE char50, "银行账户名称
           bankaccountnumber TYPE char50, "银行银联号
           banknumber        TYPE char50, "银行卡号
           depositbank       TYPE char50, "开户银行
           branchinfo        TYPE char50, "支付信息
         END OF ty_custom_list.

  DATA: ls_request TYPE ty_custom_list.
  DATA: lt_data TYPE TABLE OF ty_custom_list.

  DATA: lv_code_like TYPE char12,
        lv_name_like TYPE char40.

  DATA: BEGIN OF ls_response,
          type    TYPE bapi_mtype,
          message TYPE bapi_msg,
          item    TYPE TABLE OF ty_custom_list,
        END OF ls_response.

  DATA: lt_response LIKE TABLE OF ls_response.

  CLEAR ls_request.
  /ui2/cl_json=>deserialize(
  EXPORTING json = i_request
            pretty_name = /ui2/cl_json=>pretty_mode-camel_case
            CHANGING data =  ls_request ).



  CLEAR: lv_code_like, lv_name_like.

  CONDENSE: ls_request-kunnr NO-GAPS, ls_request-name1 NO-GAPS.

  IF ls_request-kunnr IS NOT INITIAL.
    lv_code_like = '%' && ls_request-kunnr && '%'.
  ELSE.
    lv_code_like = '%'.
  ENDIF.


  IF ls_request-name1 IS NOT INITIAL.
    lv_name_like = '%' && ls_request-name1 && '%'.
  ELSE.
    lv_name_like = '%'.
  ENDIF.

  REFRESH: lt_data.

  SELECT kunnr
         name1
         INTO CORRESPONDING FIELDS OF TABLE lt_data
    FROM kna1
    WHERE lifnr LIKE lv_code_like
      AND name1 LIKE lv_name_like.

  IF lt_data IS NOT INITIAL.
    SELECT partner,bankl,bankn,accname,koinh
      INTO TABLE @DATA(lt_but0bk)
      FROM but0bk
      FOR ALL ENTRIES IN @lt_data
      WHERE partner EQ @lt_data-kunnr.
  ENDIF.

  LOOP AT lt_data ASSIGNING FIELD-SYMBOL(<fs>).
    READ TABLE lt_but0bk INTO DATA(ls_but0bk) WITH KEY partner = <fs>-kunnr.
    IF sy-subrc EQ 0.
      <fs>-bankaccountname = ls_but0bk-koinh. "银行账户名称
      <fs>-bankaccountnumber = ls_but0bk-bankn. "银行银联号
      <fs>-banknumber = ''. "银行卡号
      <fs>-depositbank = ls_but0bk-accname. "开户银行
      <fs>-branchinfo  = ''. "支付信息
    ENDIF.
  ENDLOOP.

*******************根据查询结果返回语句*******************************
  REFRESH lt_response.
  IF lt_data[] IS NOT INITIAL.
    CLEAR ls_response.
    ls_response-type = 'S'.
    ls_response-message = '查询成功'.
    ls_response-item = lt_data.
    APPEND ls_response TO lt_response.

**转换返回语句
    e_response = /ui2/cl_json=>serialize( data = lt_response compress = abap_false pretty_name = abap_false ).

  ELSE.

    CLEAR ls_response.
    ls_response-type = 'E'.
    ls_response-message = '没有对应的查询数据'.
    APPEND ls_response TO lt_response.
**转换返回语句
    e_response = /ui2/cl_json=>serialize( data = lt_response compress = abap_false pretty_name = abap_false ).

  ENDIF.
ENDFUNCTION.
测试环境调试,返回JSON信息。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值