FUNCTION zfm_mdm_material_price.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(INPUT) TYPE ZSZFM_MDM_MATERIAL_PRICE
*" EXPORTING
*" VALUE(OUTPUT) TYPE ZSFM_MDM_MATERIAL_PRICE_OUTPUT
*"----------------------------------------------------------------------
DATA:ls_ifsort TYPE zsall_iflog_zfield.
TYPES:
BEGIN OF s_out, "-- from reort - RKKBMLMAT
kalnr TYPE ckmlhd-kalnr,
mlast TYPE ckmlhd-mlast,
matnr TYPE ckmlhd-matnr,
bwkey TYPE ckmlhd-bwkey,
bwtar TYPE ckmlhd-bwtar,
sobkz TYPE ckmlhd-sobkz,
vbeln TYPE ckmlhd-vbeln,
posnr TYPE ckmlhd-posnr,
pspnr TYPE ckmlhd-pspnr,
bdatj TYPE ckmlpp-bdatj,
poper TYPE ckmlpp-poper,
ico_xsettle TYPE ckml_icon4,
ico_xclose TYPE ckml_icon4,
curtp TYPE ckmlcr-curtp,
bklas TYPE mbew-bklas,
mtart TYPE mara-mtart,
matkl TYPE mara-matkl,
spart TYPE mara-spart,
ktext TYPE makt-maktx,
vprsv TYPE ckmlcr-vprsv,
lbkum TYPE ckmlpp-lbkum,
meins TYPE mara-meins,
salk3 TYPE ckmlcr-salk3,
salkv TYPE ckmlcr-salkv,
eb_dif TYPE cki_doc_ml-eb_dif,
stprs TYPE ckmlcr-stprs,
pvprs TYPE ckmlcr-pvprs,
prabw_prz TYPE ck_prabw_prz,
peinh TYPE ckmlcr-peinh,
waers TYPE waers,
END OF s_out. "-- from reort - RKKBMLMAT
DATA: lt_out TYPE ztmaterial_output,
ls_out LIKE LINE OF lt_out.
DATA: gt_seltab TYPE TABLE OF rsparams,
* gt_seltab_comm TYPE TABLE OF rsparams,
gs_seltab TYPE rsparams.
DATA: gv_programm TYPE sy-cprog.
DATA: gs_data TYPE REF TO data.
FIELD-SYMBOLS: <gt_data> TYPE table,
<gs_data> TYPE data,
<dyn_wa> TYPE any,
<dyn_field> TYPE any,
<dyn_field2> TYPE any,
<dyn_field3> TYPE any,
<dyn_value> TYPE any.
DEFINE mcr_catch_data.
"&1: From 字段名 &2:To 字段名
ASSIGN COMPONENT &1 OF STRUCTURE <gs_data> TO <dyn_field>.
IF sy-subrc EQ 0 .
&2 = <dyn_field>.
ENDIF.
END-OF-DEFINITION.
*-----------------------------------------------------------------------
* 启用接口日志
/log/start. output-uuid = /log/data-uuid.
*-----------------------------------------------------------------------
IF input-werks IS INITIAL.
output-status = 'E'.
output-message = '工厂必输'.
EXIT.
ENDIF.
DEFINE def_append_matnr.
APPEND VALUE #( sign = 'I' option = 'EQ' low = &1 ) TO lr_matnr.
END-OF-DEFINITION.
DATA:lv_werks TYPE werks_d,
lv_poper TYPE cki_doc_ml-sl_periode,
lv_bdatj TYPE ckmlrunplant-gjahr.
lv_werks = input-werks.
lv_poper = input-poper.
lv_bdatj = input-gjahr .
"整理选择条件
CLEAR:gt_seltab.
IF lv_werks IS NOT INITIAL.
gt_seltab = VALUE #( BASE gt_seltab[]
( selname = 'P_WERKS' kind = 'P' sign = 'I' option = 'EQ' low = lv_werks )
).
ENDIF.
LOOP AT input-matnr INTO DATA(ls_matnr).
gt_seltab = VALUE #( BASE gt_seltab[]
( selname = 'R_MATNR' kind = 'S' sign = 'I' option = 'EQ' low = ls_matnr )
).
ENDLOOP.
"期间
gt_seltab = VALUE #( BASE gt_seltab[]
( selname = 'P_POPER' kind = 'P' sign = 'I' option = 'EQ' low = lv_poper )
).
"年度
gt_seltab = VALUE #( BASE gt_seltab[]
( selname = 'P_BDATJ' kind = 'P' sign = 'I' option = 'EQ' low = lv_bdatj )
).
"设置ALV - 不显示
cl_salv_bs_runtime_info=>set( display = ''
metadata = ''
data = 'X' ).
SUBMIT rkkbmlmat WITH SELECTION-TABLE gt_seltab AND RETURN.
TRY.
cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = gs_data ).
ASSIGN gs_data->* TO <gt_data>.
CATCH cx_salv_bs_sc_runtime_info.
output-status = 'E'.
output-message = '调用数据错误,请联系SAP管理员'.
ENDTRY.
cl_salv_bs_runtime_info=>clear_all( ).
IF <gt_data> IS ASSIGNED.
LOOP AT <gt_data> ASSIGNING <gs_data>.
CLEAR:ls_out.
mcr_catch_data 'MTART' ls_out-mtart.
mcr_catch_data 'SPART' ls_out-spart.
mcr_catch_data 'MATKL' ls_out-matkl.
mcr_catch_data 'BKLAS' ls_out-bklas.
mcr_catch_data 'MATNR' ls_out-matnr.
mcr_catch_data 'KTEXT' ls_out-ktext.
mcr_catch_data 'BWTAR' ls_out-bwtar.
mcr_catch_data 'VBELN' ls_out-vbeln.
mcr_catch_data 'POSNR' ls_out-posnr.
mcr_catch_data 'PSPNR' ls_out-pspnr.
mcr_catch_data 'LBKUM' ls_out-lbkum.
mcr_catch_data 'MEINS' ls_out-meins.
mcr_catch_data 'WAERS' ls_out-waers.
mcr_catch_data 'SALK3' ls_out-salk3.
mcr_catch_data 'SALKV' ls_out-salkv.
mcr_catch_data 'EB_DIF' ls_out-eb_dif.
mcr_catch_data 'MLAST' ls_out-mlast.
mcr_catch_data 'VPRSV' ls_out-vprsv.
mcr_catch_data 'STPRS' ls_out-stprs.
mcr_catch_data 'PVPRS' ls_out-pvprs.
mcr_catch_data 'PRABW_PRZ' ls_out-prabw_prz.
mcr_catch_data 'PEINH' ls_out-peinh.
APPEND ls_out TO lt_out.
ENDLOOP.
ENDIF.
IF lt_out[] IS NOT INITIAL.
output-status = 'S'.
output-message = '查询成功'.
output-data = lt_out[].
ELSE.
IF output-status = ''.
output-status = 'E'.
output-message = '查询无数据'.
ENDIF.
ENDIF.
*-----------------------------------------------------------------------
* 结束接口日志 &1状态码 &2消息 &3搜索项
/log/end output-status output-message ls_ifsort.
*-----------------------------------------------------------------------
ENDFUNCTION.
Submit 到ALV报表处理
最新推荐文章于 2024-06-10 22:18:41 发布