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.