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.