物料冻结解冻接口,比较简单
接口搭建
功能实现
FUNCTION zfm_plm_002.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(INPUT) TYPE ZSTPLM_002_INPUT
*" EXPORTING
*" VALUE(OUTPUT) TYPE ZSTPLM_002_OUTPUT
*"----------------------------------------------------------------------
*--init
PERFORM frm_init USING 'ZFM_PLM_002'.
*--json in
gv_json_in = zcl_common=>abap_to_json( input ).
*--if active check
PERFORM frm_check_active USING gc_i.
IF gv_active EQ abap_true.
*--input check
IF input[] IS INITIAL.
APPEND VALUE #( code = 'E' msg = '输入数据为空,请检查!') TO output.
ELSE.
PERFORM frm_material_pur_status_chg TABLES input output.
ENDIF.
ELSE.
PERFORM frm_002_ret_e TABLES input output.
ENDIF.
*--json out
gv_json_out = zcl_common=>abap_to_json( output ).
*--set log
PERFORM frm_set_log USING gc_i.
ENDFUNCTION.
核心逻辑
*&---------------------------------------------------------------------*
*& Form FRM_MATERIAL_PUR_STATUS_CHG
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> INPUT
*& --> OUTPUT
*&---------------------------------------------------------------------*
FORM frm_material_pur_status_chg TABLES pt_input TYPE zstplm_002_input
pt_output TYPE zstplm_002_output.
LOOP AT pt_input.
gv_matnr = |{ pt_input-matnr ALPHA = IN }|.
SELECT SINGLE * FROM mara INTO @DATA(ls_mara) WHERE matnr EQ @gv_matnr.
"set head
DATA(ls_head) = VALUE bapimathead( material = gv_matnr
matl_type = ls_mara-mtart
ind_sector = ls_mara-mbrsh
).
IF sy-subrc NE 0.
APPEND VALUE #( matnr = pt_input-matnr
code = gc_e
msg = '该物料不存在,请检查' ) TO pt_output .
gv_type = gc_e.
CONTINUE.
ENDIF.
"set clientdata
DATA(ls_clientdata) = VALUE bapi_mara( pur_status = COND #( WHEN pt_input-flag EQ 'Y' THEN space ELSE '04' ) ).
"set clientdataxs
DATA(ls_clientdatax) = VALUE bapi_marax( pur_status = abap_true ).
CLEAR:gs_return.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = ls_head
clientdata = ls_clientdata
clientdatax = ls_clientdatax
IMPORTING
return = gs_return.
zcl_common=>bapi_commit( gs_return-type ).
APPEND VALUE #( matnr = pt_input-matnr
code = gs_return-type
msg = COND #( WHEN gs_return-type = gc_s THEN COND #( WHEN pt_input-flag EQ 'Y' THEN '物料启用' ELSE '物料冻结' ) && '成功'
ELSE COND #( WHEN pt_input-flag EQ 'Y' THEN '物料启用' ELSE '物料冻结' ) && ':' && gs_return-message )
) TO pt_output .
IF gv_type NE gc_e.
gv_type = COND #( WHEN gs_return-type NE gc_s THEN gc_e ELSE gc_s ).
ENDIF.
ENDLOOP.
ENDFORM.