📄 sabaper_zzzr0011.txt
字号:
REPORT yppr0011 NO STANDARD PAGE HEADING
LINE-SIZE 1023
* LINE-COUNT 30(4)
MESSAGE-ID pp.
*&---------------------------------------------------*
*& TABLES *
*&---------------------------------------------------*
TABLES:makt,
caufv,
afko,
mard,
mast,
plpo,
rkpf,
rc29l,
stpox,
cscmat,
stpo.
INCLUDE yalvclude1.
DATA progname LIKE sy-repid.
TYPE-POOLS slis.
DATA: BEGIN OF choose_data_get1,
aufnr LIKE afko-aufnr,
plnbez LIKE afko-plnbez,
werks LIKE mast-werks,
ernam LIKE caufv-ernam,
auart LIKE caufv-auart,
END OF choose_data_get1.
DATA: BEGIN OF choose_data_get21 OCCURS 0,
matnr LIKE mast-matnr,
werks LIKE mast-werks,
idnrk LIKE stpo-idnrk,"BOM 组件
*STLNR LIKE STPO-STLNR,"物料单
mmein LIKE stpox-mmein, "库存单位
meins LIKE stpox-meins, "BOM单位
bmeng LIKE stpox-mnglg,
mnglg LIKE stpox-mnglg, "库存单位用量
menge LIKE stpox-menge, "BOM单位用量
DUMPS(2) TYPE C,
ALPOS(2) TYPE C,
RGEKZ(2) TYPE C,
ALPRF(2) TYPE C,
END OF choose_data_get21.
DATA bom_itab LIKE stpox OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF bom_itab_get OCCURS 0,
idnrk LIKE stpox-idnrk,
mtart LIKE stpox-mtart,
ojtxp LIKE stpox-ojtxp,
werks LIKE stpox-werks,
mmein LIKE stpox-mmein, "库存单位
meins LIKE stpox-meins, "BOM单位
mnglg LIKE stpox-mnglg, "库存单位用量
menge LIKE stpox-menge, "BOM单位用量
DUMPS(2) TYPE C,
ALPOS(2) TYPE C,
RGEKZ(2) TYPE C,
ALPRF(2) TYPE C,
END OF bom_itab_get.
DATA: BEGIN OF bom_itab_gett OCCURS 0,
idnrk LIKE stpox-idnrk,
mtart LIKE stpox-mtart,
ojtxp LIKE stpox-ojtxp,
werks LIKE stpox-werks,
mmein LIKE stpox-mmein, "库存单位
meins LIKE stpox-meins, "BOM单位
mnglg LIKE stpox-mnglg, "库存单位用量
menge LIKE stpox-menge, "BOM单位用量
DUMPS(2) TYPE C,
ALPOS(2) TYPE C,
RGEKZ(2) TYPE C,
ALPRF(2) TYPE C,
END OF bom_itab_gett.
DATA: BEGIN OF choose_data_get2 OCCURS 0,
matnr LIKE mast-matnr,
werks LIKE mast-werks,
idnrk LIKE stpo-idnrk,"BOM 组件
stlnr LIKE stpo-stlnr,"物料单
mmein LIKE stpox-mmein, "库存单位
meins LIKE stpox-meins, "BOM单位
mnglg LIKE stpox-mnglg, "库存单位用量
menge LIKE stpox-menge, "BOM单位用量
DUMPS(2) TYPE C,
ALPOS(2) TYPE C,
RGEKZ(2) TYPE C,
ALPRF(2) TYPE C,
END OF choose_data_get2.
DATA: BEGIN OF get_data_get3 OCCURS 0,
matnr LIKE mard-matnr,
maktx LIKE makt-maktx, "组建描述
mmein LIKE stpox-mmein, "库存单位
meins LIKE stpox-meins, "BOM单位
mnglg LIKE stpox-mnglg, "库存单位用量
menge LIKE stpox-menge, "BOM单位用量
mtart LIKE stpox-mtart,
ktext LIKE m_crama-ktext,"工作中心
lgort LIKE mard-lgort,"库存地点
lgobe LIKE t001l-lgobe,"库存地点描述
labst LIKE mard-labst,"非限制
llabst LIKE mard-labst,"短缺数量
insme LIKE mard-insme,"质量检查中
einme LIKE mard-einme,"限制使用的
speme LIKE mard-speme,"冻结的
txt LIKE v_auart-txt,"车间
DUMPS(2) TYPE C,
ALPOS(2) TYPE C,
RGEKZ(2) TYPE C,
ALPRF(2) TYPE C,
werks LIKE mast-werks, "工厂
END OF get_data_get3.
DATA: BEGIN OF get_data_get6 OCCURS 0,
matnr LIKE mard-matnr,
maktx LIKE makt-maktx, "组建描述
mmein LIKE stpox-mmein, "库存单位
meins LIKE stpox-meins, "BOM单位
mnglg LIKE stpox-mnglg, "库存单位用量
menge LIKE stpox-menge, "BOM单位用量
mtart LIKE stpox-mtart,
ktext LIKE m_crama-ktext,"工作中心
lgort LIKE mard-lgort,"库存地点
lgobe LIKE t001l-lgobe,"库存地点描述
labst LIKE mard-labst,"非限制
llabst LIKE mard-labst,"短缺数量
insme LIKE mard-insme,"质量检查中
einme LIKE mard-einme,"限制使用的
speme LIKE mard-speme,"冻结的
txt LIKE v_auart-txt,"车间
werks LIKE mast-werks, "工厂
DUMPS(2) TYPE C,
ALPOS(2) TYPE C,
RGEKZ(2) TYPE C,
ALPRF(2) TYPE C,
END OF get_data_get6.
DATA: BEGIN OF get_data_get7 OCCURS 0,
matnr LIKE mard-matnr,
maktx LIKE makt-maktx, "组建描述
mmein LIKE stpox-mmein, "库存单位
mtart LIKE stpox-mtart,
ktext LIKE m_crama-ktext,"工作中心
lgort LIKE mard-lgort,"库存地点
lgobe LIKE t001l-lgobe,"库存地点描述
labst LIKE mard-labst,"非限制
llabst LIKE mard-labst,"短缺数量
insme LIKE mard-insme,"质量检查中
einme LIKE mard-einme,"限制使用的
speme LIKE mard-speme,"冻结的
txt LIKE v_auart-txt,"车间
werks LIKE mast-werks, "工厂
DUMPS(2) TYPE C,
ALPOS(2) TYPE C,
RGEKZ(2) TYPE C,
ALPRF(2) TYPE C,
END OF get_data_get7.
DATA: BEGIN OF get_data_get8 OCCURS 0,
matnr LIKE mard-matnr,
maktx LIKE makt-maktx, "组建描述
mtart LIKE stpox-mtart,
mmein LIKE stpox-mmein, "库存单位
meins LIKE stpox-meins, "BOM单位
mnglg LIKE stpox-mnglg, "库存单位用量
menge LIKE stpox-menge, "BOM单位用量
ktext LIKE m_crama-ktext,"工作中心
lgort LIKE mard-lgort,"库存地点
lgobe LIKE t001l-lgobe,"库存地点描述
labst LIKE mard-labst,"非限制
*LLABST(15) TYPE C,"短缺数量
llabst LIKE mard-labst,"短缺数量
insme LIKE mard-insme,"质量检查中
einme LIKE mard-einme,"限制使用的
speme LIKE mard-speme,"冻结的
txt LIKE v_auart-txt,"车间
werks LIKE mast-werks, "工厂
DUMPS(2) TYPE C,
ALPOS(2) TYPE C,
RGEKZ(2) TYPE C,
ALPRF(2) TYPE C,
END OF get_data_get8.
DATA: choose_data_get LIKE choose_data_get1 OCCURS 0 WITH HEADER LINE.
PARAMETERS: p_werks LIKE bseg-werks OBLIGATORY. "发货工厂
SELECTION-SCREEN BEGIN OF BLOCK scr WITH FRAME TITLE text-010.
SELECT-OPTIONS: s_lgort FOR mard-lgort NO INTERVALS.
SELECT-OPTIONS: p_fname FOR rc29l-emeng NO INTERVALS.
SELECT-OPTIONS: s_matnr FOR makt-matnr. "需要查找的物料范围
SELECTION-SCREEN END OF BLOCK scr.
SELECTION-SCREEN BEGIN OF BLOCK scrr WITH FRAME TITLE text-010.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: llabst RADIOBUTTON GROUP grp1.
SELECTION-SCREEN POSITION 20.
PARAMETERS: lllabstt RADIOBUTTON GROUP grp1.
SELECTION-SCREEN COMMENT 3(15) text-b10 FOR FIELD llabst.
SELECTION-SCREEN COMMENT 30(15) text-b13 FOR FIELD lllabstt.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: llabston LIKE am07m-xlabst.
SELECTION-SCREEN POSITION 20.
PARAMETERS: lllabst LIKE am07m-xlabst.
SELECTION-SCREEN COMMENT 3(15) text-b12 FOR FIELD llabston.
SELECTION-SCREEN COMMENT 30(15) text-b11 FOR FIELD lllabst.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK scrr.
AT SELECTION-SCREEN.
START-OF-SELECTION.
PERFORM bom_get_check.
PERFORM bom_get_data1 TABLES choose_data_get21.
PERFORM bom_get_data TABLES choose_data_get21.
PERFORM bom_get_data_count TABLES bom_itab_get.
PERFORM bom_get_data2 TABLES get_data_get6.
PERFORM bom_get_data6 TABLES get_data_get6.
PERFORM bom_get_data8 TABLES get_data_get8.
* PERFORM GET_DATA_GET8.
PERFORM sub_list_data TABLES get_data_get8.
*&---------------------------------------------------------------------*
*& Form BOM_GET_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM bom_get_check.
DATA: x TYPE i.
DATA: z TYPE i.
LOOP AT s_matnr.
x = x + 1.
ENDLOOP.
LOOP AT p_fname.
z = z + 1.
ENDLOOP.
IF x NE z.
MESSAGE i899 WITH '数量的条目与物料条目不同,请检查!'.
LEAVE TO TRANSACTION 'YPP0011'.
ENDIF.
ENDFORM. "BOM_GET_CHECK
*&---------------------------------------------------------------------*
*& Form BOM_GET_DATA1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->L_BOM_GET text
*----------------------------------------------------------------------*
FORM bom_get_data1 TABLES l_bom_get STRUCTURE choose_data_get21.
DATA: i TYPE i.
LOOP AT s_matnr.
l_bom_get-matnr = s_matnr-low.
APPEND l_bom_get.
CLEAR l_bom_get.
ENDLOOP.
LOOP AT l_bom_get.
i = i + 1.
LOOP AT p_fname.
READ TABLE p_fname INDEX i.
l_bom_get-bmeng = p_fname-low.
ENDLOOP.
MODIFY l_bom_get.
CLEAR l_bom_get.
ENDLOOP.
ENDFORM. "BOM_GET_DATA1
*&---------------------------------------------------------------------*
*& Form BOM_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->L_BOM_GET text
*----------------------------------------------------------------------*
FORM bom_get_data TABLES l_bom_get STRUCTURE choose_data_get21.
DATA: x(1) TYPE c,
sobsl LIKE marc-sobsl,
Y(1) TYPE c.
IF lllabst = 'X'.
x = 'X'.
ELSE.
x = ''.
ENDIF.
LOOP AT choose_data_get21.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
aumng = 0
capid = 'PP01'
datuv = sy-datum
mehrs = X
mtnrv = choose_data_get21-matnr
stlan = '1'
werks = p_werks
auskz = 'X'
emeng = choose_data_get21-bmeng
TABLES
stb = bom_itab
EXCEPTIONS
alt_not_found = 1
call_invalid = 2
material_not_found = 3
missing_authorization = 4
no_bom_found = 5
no_plant_data = 6
no_suitable_bom_found = 7
conversion_error = 8
OTHERS = 9.
LOOP AT bom_itab.
bom_itab_get-idnrk = bom_itab-idnrk.
bom_itab_get-mtart = bom_itab-mtart.
bom_itab_get-ojtxp = bom_itab-ojtxp.
bom_itab_get-werks = bom_itab-werks.
bom_itab_get-mmein = bom_itab-mmein. "库存单位
bom_itab_get-meins = bom_itab-meins. "BOM单位
bom_itab_get-mnglg = bom_itab-mnglg. "库存单位用量
bom_itab_get-menge = bom_itab-menge. "BOM单位用量
bom_itab_get-DUMPS = bom_itab-DUMPS. "虚拟料号
bom_itab_get-ALPOS = bom_itab-ALPOS. "替代料
bom_itab_get-RGEKZ = bom_itab-RGEKZ. "反冲
bom_itab_get-ALPRF = bom_itab-ALPRF. "替代关系
APPEND bom_itab_get.
CLEAR bom_itab_get.
ENDLOOP.
ENDLOOP.
IF llabst = 'X'.
Y = 'X'.
ENDIF.
IF lllabstt = 'X'.
Y = ' '.
ENDIF.
LOOP AT bom_itab_get.
CLEAR sobsl.
SELECT SINGLE sobsl
INTO sobsl
FROM marc
WHERE matnr = bom_itab_get-idnrk.
IF sobsl = '50'.
bom_itab_gett-idnrk = bom_itab_get-idnrk.
bom_itab_gett-mtart = bom_itab_get-mtart.
bom_itab_gett-ojtxp = bom_itab_get-ojtxp.
bom_itab_gett-werks = bom_itab_get-werks.
bom_itab_gett-mmein = bom_itab_get-mmein. "库存单位
bom_itab_gett-meins = bom_itab_get-meins. "BOM单位
bom_itab_gett-mnglg = bom_itab_get-mnglg. "库存单位用量
bom_itab_gett-menge = bom_itab_get-menge. "BOM单位用量
bom_itab_gett-DUMPS = bom_itab_get-DUMPS. "库存单位用量
bom_itab_gett-ALPOS = bom_itab_get-ALPOS. "BOM单位用量
bom_itab_gett-RGEKZ = bom_itab_get-RGEKZ. "BOM单位用量
bom_itab_gett-ALPRF = bom_itab_get-ALPRF. "优先级
APPEND bom_itab_gett.
CLEAR bom_itab_gett.
ENDIF.
ENDLOOP.
LOOP AT bom_itab_gett.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
aumng = 0
capid = 'PP01'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -