SAP PP生产补料单功能分享
一、功能逻辑







二、功能界面




三、功能代码
*&---------------------------------------------------------------------*
*& 程序名: ZRPPP_0014
*& 创建者(公司)/日期:*
*& 程序描述:
*&
*&---------------------------------------------------------------------*
*& 版本/修改者(公司)/日期//修改描述
*&
*&---------------------------------------------------------------------*
REPORT zrppp_0014.
INCLUDE zrppp_0014_top.
INCLUDE zrppp_0014_scr.
INCLUDE zrppp_0014_frm.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zid-low.
PERFORM show_values.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zid-high.
PERFORM show_values1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zblnum-low.
PERFORM show_values2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zblnum-high.
PERFORM show_values3.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_kostl-low.
PERFORM show_values4.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_kostl-high.
PERFORM show_values5.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_zblnum.
PERFORM show_values6.
INITIALIZATION.
DATA itab_list TYPE vrm_values.
itab_list = VALUE #(
( key = '0' text = '已创建' )
( key = '1' text = '已过账' )
).
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'ZZT'
values = itab_list.
REFRESH itab_list.
START-OF-SELECTION.
PERFORM check_auth.
PERFORM get_dat.
PERFORM alv.
*&---------------------------------------------------------------------*
*& 包含 ZRPPP_0014_TOP
*&---------------------------------------------------------------------*
TABLES:resb,ztpp011_head.
DATA:BEGIN OF gt_item OCCURS 0,
aufnr TYPE aufnr,
arbpl TYPE arbpl,
kostl LIKE cskt-kostl, "成本中心
ltext LIKE cskt-ltext, "成本中心长文本
zblnum TYPE zbfnum,
zrspos TYPE zrspos,
rsnum LIKE resb-rsnum,
rspos LIKE resb-rspos,
matnr TYPE resb-matnr,
maktx LIKE makt-maktx,
werks LIKE resb-werks,
lgort LIKE resb-lgort,
bdmng LIKE resb-bdmng, "需求数
enmng LIKE resb-enmng, "提货数
meins TYPE resb-meins,
enmng1 LIKE resb-enmng, "补料数
zid(12),
ztxt4 TYPE i, "打印次数
loekz TYPE ztpp005-loekz,
ztxt2(200),"备注
erdat TYPE erdat,
uzeit TYPE uzeit,
menge1 TYPE menge_d, "报废数量
menge2 TYPE menge_d, "已打补领数量
mblnr TYPE mblnr,
zmptp(3),
statu(1),
labst TYPE labst,
mark ,"TYPE check_box,
END OF gt_item.
"权限控制
DATA:actvt_01 TYPE c, "创建
actvt_02 TYPE c, "打印
actvt_03 TYPE c, "删除
actvt_04 TYPE c. "过账
"F4帮助
DATA:BEGIN OF gt_name OCCURS 0,"用户ID
ernam TYPE ekko-ernam,
name_last TYPE adrp-name_last,
END OF gt_name,
BEGIN OF gt_zbldh OCCURS 0,
zblnum TYPE ztpp011_head-zblnum,
erdat TYPE ztpp011_head-erdat,
zid TYPE ztpp011_head-zid,
werks TYPE ztpp011_head-werks,
statu TYPE ztpp011_head-statu,
END OF gt_zbldh,
BEGIN OF gt_cskt OCCURS 0,
kokrs TYPE cskt-kokrs,
kostl TYPE cskt-kostl,
ltext TYPE cskt-ltext,
datbi TYPE cskt-datbi,
END OF gt_cskt.
"alv参数
DATA:it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat LIKE LINE OF it_fieldcat,
is_layout TYPE lvc_s_layo,
is_fact TYPE lvc_s_fcat,
it_layout TYPE slis_layout_alv.
CONSTANTS cns_user_command TYPE slis_formname VALUE 'ALV_USER_COMMAND'.
"打印参数
DATA:g_fm_name TYPE rs38l_fnam,
gw_options TYPE ssfcompop,
gw_control TYPE ssfctrlop.
"ALV 相关变量定义
DATA:lt_fcat TYPE lvc_t_fcat,
ls_layo TYPE lvc_s_layo.
DATA:is_grid_settings TYPE lvc_s_glay.
DATA:gs_ztpp011 TYPE ztpp011_head,
l_lgort TYPE lgort_d,
gt_ztpp011 TYPE TABLE OF ztpp011 WITH HEADER LINE.
"领料过账
DATA:goodsmvt_header TYPE TABLE OF bapi2017_gm_head_01 WITH HEADER LINE.
DATA:goodsmvt_code TYPE TABLE OF bapi2017_gm_code WITH HEADER LINE.
DATA:goodsmvt_item TYPE TABLE OF bapi2017_gm_item_create WITH HEADER LINE .
DATA:goodsmvt_headret TYPE TABLE OF bapi2017_gm_head_ret WITH HEADER LINE.
DATA:materialdocument TYPE bapi2017_gm_head_ret-mat_doc.
DATA:goodsmvt_serialnumber TYPE TABLE OF bapi2017_gm_serialnumber WITH HEADER LINE.
DATA:return TYPE TABLE OF bapiret2 WITH HEADER LINE.
DATA:l_mblnr TYPE mseg-mblnr.
DATA:gs_out TYPE zspp007,
gt_out TYPE TABLE OF zspp007.
DATA job_output_info TYPE ssfcrescl.
*&---------------------------------------------------------------------*
*& 包含 ZRPPP_0014_SCR
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK t1 WITH FRAME TITLE TEXT-001.
PARAMETERS:r1 RADIOBUTTON GROUP r1 USER-COMMAND cmd DEFAULT 'X',
r2 RADIOBUTTON GROUP r1,
r3 RADIOBUTTON GROUP r1.
SELECTION-SCREEN END OF BLOCK t1.
SELECTION-SCREEN BEGIN OF BLOCK t2 WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS s_werks FOR resb-werks MODIF ID g2.
PARAMETERS:
p_aufnr TYPE resb-aufnr MODIF ID g3.
SELECT-OPTIONS:s_aufnr FOR resb-aufnr MODIF ID g2,
s_zblnum FOR ztpp011_head-zblnum MODIF ID g2.
PARAMETERS:
p_zblnum TYPE ztpp011_head-zblnum MODIF ID g4.
SELECT-OPTIONS: s_erdat FOR ztpp011_head-erdat MODIF ID g2,
s_matnr FOR resb-matnr MODIF ID g2,
s_zid FOR ztpp011_head-zid MODIF ID g2,
s_kostl FOR ztpp011_head-kostl MODIF ID g2.
PARAMETERS:zzt TYPE char10 DEFAULT '0' AS LISTBOX VISIBLE LENGTH 15 MODIF ID g2 .
PARAMETERS:cx AS CHECKBOX MODIF ID g2.
PARAMETERS:p_date TYPE sy-datum DEFAULT sy-datum MODIF ID g4.
SELECTION-SCREEN END OF BLOCK t2.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF r1 = 'X'.
IF screen-group1 = 'G2' OR screen-group1 = 'G4' .
screen-active = 0.
ENDIF.
ELSEIF r2 = 'X'.
IF screen-group1 = 'G3' OR screen-group1 = 'G4'.
screen-active = 0.
ENDIF.
ELSEIF r3 = 'X'.
IF screen-group1 = 'G3' OR screen-group1 = 'G2' .
screen-active = 0.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
*&---------------------------------------------------------------------*
*& 包含 ZRPPP_0014_FRM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form check_auth
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM check_auth .
CLEAR:actvt_01,actvt_02,actvt_03,actvt_04.
AUTHORITY-CHECK OBJECT 'ZLLD'
ID 'ACTVT' FIELD '01'."创建领料单
IF sy-subrc EQ 0.
actvt_01 = 'X'.
ENDIF.
AUTHORITY-CHECK OBJECT 'ZLLD'
ID 'ACTVT' FIELD '04'."打印领料单
IF sy-subrc EQ 0.
actvt_02 = 'X'.
ENDIF.
AUTHORITY-CHECK OBJECT 'ZLLD'
ID 'ACTVT' FIELD '06'."删除领料单
IF sy-subrc EQ 0.
actvt_03 = 'X'.
ENDIF.
AUTHORITY-CHECK OBJECT 'ZLLD'
ID 'ACTVT' FIELD '10'."领料单过账及冲销
IF sy-subrc EQ 0.
actvt_04 = 'X'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_dat
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_dat .
DATA: l_arbpl TYPE arbpl,
l_kostl TYPE kostl,
l_ltext TYPE kltxt,
order_objects TYPE bapi_pp_order_objects,
return TYPE bapiret2,
operation TYPE TABLE OF bapi_order_operation1 WITH HEADER LINE.
IF r1 = 'X'.
IF actvt_01 <> 'X'.
MESSAGE '无权限创建补领料单' TYPE 'I' DISPLAY LIKE 'E' .
STOP.
ENDIF.
IF p_aufnr IS INITIAL.
MESSAGE '请输入工单号' TYPE 'I' DISPLAY LIKE 'E' .
STOP.
ENDIF.
ELSEIF r2 = 'X' .
IF s_werks IS INITIAL AND s_aufnr IS INITIAL AND s_zblnum IS INITIAL AND s_erdat IS INITIAL
AND s_matnr IS INITIAL AND s_zid IS INITIAL AND s_kostl IS INITIAL.
