FUNCTION z_mm_vendor_list.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(I_REQUEST) TYPE STRING OPTIONAL
*" EXPORTING
*" VALUE(E_RESPONSE) TYPE STRING
*"----------------------------------------------------------------------
DATA: ls_request TYPE zstru_vendor_list.
DATA: lt_data TYPE TABLE OF zstru_vendor_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 zstru_vendor_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-vendorno NO-GAPS, ls_request-vendorname NO-GAPS.
IF ls_request-vendorno IS NOT INITIAL.
lv_code_like ='%'&& ls_request-vendorno &&'%'.
ELSE.
lv_code_like ='%'.
ENDIF.
IF ls_request-vendorname IS NOT INITIAL.
lv_name_like ='%'&& ls_request-vendorname &&'%'.
ELSE.
lv_name_like ='%'.
ENDIF.
REFRESH: lt_data.
SELECT a~lifnr AS vendorno
a~name1 AS vendorname
b~bankaccountname
b~bankaccountnumber
b~banknumber
b~depositbank
b~branchinfo
INTO CORRESPONDING FIELDS OF TABLE lt_data
FROM lfa1 AS a
INNER JOIN zpayment_info AS b ON a~lifnr EQ b~lifnr
WHERE a~lifnr LIKE lv_code_like
AND a~name1 LIKE lv_name_like AND b~bankaccountnumber NE space .
*******************根据查询结果返回语句*******************************
REFRESH lt_response.
IF lt_data[] IS NOT INITIAL.
LOOP AT lt_data ASSIGNING FIELD-SYMBOL(<fs_vendor>).
<fs_vendor>-vendorno =|{<fs_vendor>-vendorno ALPHA = OUT }|.<fs_vendor>-bankaccountnumber =<fs_vendor>-bankaccountnumber .
DATA(lv_banknum)=<fs_vendor>-banknumber .<fs_vendor>-banknumber = lv_banknum .
ENDLOOP.
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.