📄 sabaper_zzzr0011.txt
字号:
datuv = sy-datum
mehrs = Y
mtnrv = bom_itab_gett-idnrk
stlan = '1'
werks = p_werks
auskz = 'X'
emeng = bom_itab_gett-mnglg
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.
ENDFORM. "BOM_GET_DATA
*&---------------------------------------------------------------------*
*& Form BOM_GET_DATA_COUNT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->L_BOM_GET text
*----------------------------------------------------------------------*
FORM bom_get_data_count TABLES l_bom_get STRUCTURE bom_itab_get.
DATA: mnglg TYPE p DECIMALS 5,
menge TYPE p DECIMALS 5.
* 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-MNGKO = BOM_ITAB-MNGKO. "BOM单位用量
DATA: idnrk(20) TYPE c,
mtart(6) TYPE c,
ojtxp(40) TYPE c,
werks(10) TYPE c,
mmein(6) TYPE c,
meins(6) TYPE c,
DUMPS(2) TYPE C,
ALPOS(2) TYPE C,
RGEKZ(2) TYPE C,
ALPRF(2) TYPE C.
SORT bom_itab_get DESCENDING BY idnrk ASCENDING.
LOOP AT bom_itab_get.
idnrk = l_bom_get-idnrk.
mtart = l_bom_get-mtart.
ojtxp = l_bom_get-ojtxp.
werks = l_bom_get-werks.
mmein = l_bom_get-mmein.
meins = l_bom_get-meins.
DUMPS = l_bom_get-DUMPS.
ALPOS = l_bom_get-ALPOS.
RGEKZ = l_bom_get-RGEKZ.
ALPRF = l_bom_get-ALPRF.
AT NEW idnrk.
CLEAR mnglg.
CLEAR menge.
ENDAT.
mnglg = mnglg + l_bom_get-mnglg.
menge = menge + l_bom_get-menge.
AT END OF idnrk.
get_data_get3-matnr = idnrk.
get_data_get3-mtart = mtart.
get_data_get3-maktx = ojtxp.
get_data_get3-werks = werks.
get_data_get3-mmein = mmein.
get_data_get3-meins = meins.
get_data_get3-mnglg = mnglg.
get_data_get3-menge = menge.
get_data_get3-DUMPS = DUMPS.
get_data_get3-ALPOS = ALPOS.
get_data_get3-RGEKZ = RGEKZ.
get_data_get3-ALPRF = ALPRF.
APPEND get_data_get3.
CLEAR get_data_get3.
ENDAT.
ENDLOOP.
ENDFORM. "BOM_GET_DATA_COUNT
*&---------------------------------------------------------------------*
*& Form BOM_GET_DATA2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->L_BOM_GET text
*----------------------------------------------------------------------*
FORM bom_get_data2 TABLES l_bom_get STRUCTURE get_data_get6.
DATA y TYPE i.
LOOP AT get_data_get3.
SELECT lgort labst insme einme speme
FROM mard
INTO (l_bom_get-lgort,l_bom_get-labst,l_bom_get-insme,
l_bom_get-einme,l_bom_get-speme)
WHERE matnr = get_data_get3-matnr
AND lgort IN s_lgort
AND lvorm NE 'X'.
get_data_get6-matnr = get_data_get3-matnr.
get_data_get6-mtart = get_data_get3-mtart.
get_data_get6-maktx = get_data_get3-maktx.
get_data_get6-werks = get_data_get3-werks.
get_data_get6-mmein = get_data_get3-mmein.
get_data_get6-meins = get_data_get3-meins.
get_data_get6-mnglg = get_data_get3-mnglg.
get_data_get6-menge = get_data_get3-menge.
get_data_get6-DUMPS = get_data_get3-DUMPS.
get_data_get6-ALPOS = get_data_get3-ALPOS.
get_data_get6-RGEKZ = get_data_get3-RGEKZ.
get_data_get6-ALPRF = get_data_get3-ALPRF.
APPEND get_data_get6.
CLEAR get_data_get6.
ENDSELECT.
ENDLOOP.
SORT get_data_get6 ASCENDING BY matnr mtart werks DESCENDING.
SORT get_data_get3 ASCENDING BY matnr mtart werks DESCENDING.
LOOP AT get_data_get6.
LOOP AT get_data_get3.
DELETE get_data_get3 WHERE
matnr = get_data_get6-matnr
AND mtart = get_data_get6-mtart
AND maktx = get_data_get6-maktx
AND werks = get_data_get6-werks
AND meins = get_data_get6-meins
AND mmein = get_data_get6-mmein.
ENDLOOP.
ENDLOOP.
LOOP AT get_data_get3.
get_data_get6-matnr = get_data_get3-matnr.
get_data_get6-mtart = get_data_get3-mtart.
get_data_get6-maktx = get_data_get3-maktx.
get_data_get6-werks = get_data_get3-werks.
get_data_get6-mmein = get_data_get3-mmein.
get_data_get6-meins = get_data_get3-meins.
get_data_get6-mnglg = get_data_get3-mnglg.
get_data_get6-menge = get_data_get3-menge.
get_data_get6-DUMPS = get_data_get3-DUMPS.
get_data_get6-ALPOS = get_data_get3-ALPOS.
get_data_get6-RGEKZ = get_data_get3-RGEKZ.
get_data_get6-ALPRF = get_data_get3-ALPRF.
APPEND get_data_get6.
CLEAR get_data_get6.
ENDLOOP.
* SORT L_BOM_GET ASCENDING BY MATNR MNGKO DESCENDING.
ENDFORM. "BOM_GET_DATA2
*&---------------------------------------------------------------------*
*& Form BOM_GET_DATA6
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->L_BOM_GET text
*----------------------------------------------------------------------*
FORM bom_get_data6 TABLES l_bom_get STRUCTURE get_data_get6.
LOOP AT l_bom_get.
SELECT SINGLE ktext
INTO l_bom_get-ktext
FROM m_crama
INNER JOIN crhd ON crhd~arbpl = m_crama~arbpl
AND m_crama~werks = crhd~werks
AND m_crama~verwe = crhd~verwe
INNER JOIN plpo ON plpo~arbid = crhd~objid
INNER JOIN mapl ON mapl~werks = plpo~werks
AND mapl~plnty = plpo~plnty
AND mapl~plnnr = plpo~plnnr
AND mapl~zaehl = plpo~zaehl
WHERE mapl~matnr = l_bom_get-matnr.
SELECT SINGLE lgobe
INTO l_bom_get-lgobe
FROM t001l
WHERE lgort = l_bom_get-lgort.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = l_bom_get-matnr
IMPORTING
output = l_bom_get-matnr.
MODIFY l_bom_get.
CLEAR l_bom_get.
ENDLOOP.
ENDFORM. "BOM_GET_DATA6
*&---------------------------------------------------------------------*
*& Form BOM_GET_DATA8
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->L_BOM_GET text
*----------------------------------------------------------------------*
FORM bom_get_data8 TABLES l_bom_get STRUCTURE get_data_get8.
DATA: mmngko TYPE p.
DATA: matnr(20) TYPE c,
maktx(40) TYPE c,
werks(10) TYPE c,
meins(6) TYPE c,
mtart(6) TYPE c,
llabst TYPE p DECIMALS 5,
labst TYPE p DECIMALS 5,
insme TYPE p DECIMALS 5,
speme TYPE p DECIMALS 5,
einme TYPE p DECIMALS 5,
mngko TYPE p DECIMALS 5,
mmein(6) TYPE c,
mnglg TYPE p DECIMALS 5,
menge TYPE p DECIMALS 5,
DUMPS(2) TYPE C,
ALPOS(2) TYPE C,
RGEKZ(2) TYPE C,
ALPRF(2) TYPE C,
t_tab_a(15) TYPE c,
t_tab_b(15) TYPE c,
t_tab_c(15) TYPE c,
t_tab_d(15) TYPE c.
IF llabston = 'X'.
DELETE get_data_get6 WHERE ALPRF = '02'.
ENDIF.
LOOP AT get_data_get6.
matnr = get_data_get6-matnr.
maktx = get_data_get6-maktx.
werks = get_data_get6-werks.
meins = get_data_get6-meins.
mmein = get_data_get6-mmein.
mtart = get_data_get6-mtart.
mnglg = get_data_get6-mnglg.
menge = get_data_get6-menge.
DUMPS = get_data_get6-DUMPS.
ALPOS = get_data_get6-ALPOS.
RGEKZ = get_data_get6-RGEKZ.
ALPRF = get_data_get6-ALPRF.
AT NEW matnr.
CLEAR labst.
CLEAR insme.
CLEAR speme.
CLEAR einme.
CLEAR llabst.
CLEAR t_tab_a.
ENDAT.
labst = labst + get_data_get6-labst.
insme = insme + get_data_get6-insme.
speme = speme + get_data_get6-speme.
einme = einme + get_data_get6-einme.
AT END OF matnr.
* t_tab_B = INSME
* t_tab_C = SPEME
* t_tab_D = EINME
llabst = mnglg - labst.
t_tab_a = llabst.
PERFORM frm_change_sign CHANGING t_tab_a.
l_bom_get-matnr = matnr.
l_bom_get-maktx = maktx.
l_bom_get-werks = werks.
l_bom_get-mtart = mtart.
l_bom_get-meins = meins.
l_bom_get-mmein = mmein.
l_bom_get-llabst = t_tab_a.
l_bom_get-labst = labst.
l_bom_get-insme = insme.
l_bom_get-einme = einme.
l_bom_get-speme = speme.
l_bom_get-mnglg = mnglg.
l_bom_get-menge = menge.
l_bom_get-DUMPS = DUMPS.
l_bom_get-ALPOS = ALPOS.
l_bom_get-RGEKZ = RGEKZ.
l_bom_get-ALPRF = ALPRF.
APPEND l_bom_get.
CLEAR l_bom_get.
ENDAT.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM l_bom_get.
ENDFORM. "BOM_GET_DATA8
*FORM GET_DATA_GET8.
* DATA: XXX(10) TYPE C.
* LOOP AT GET_DATA_GET8.
* SELECT SINGLE MEINS
* INTO GET_DATA_GET8-MEINS
* FROM MARA
* INNER JOIN MARC ON MARC~MATNR = MARA~MATNR
* WHERE MARA~MATNR = GET_DATA_GET8-MATNR
* AND MARC~WERKS = p_werks.
** MODIFY GET_DATA_GET8.
** CLEAR GET_DATA_GET8.
* ENDLOOP.
*ENDFORM.
FORM sub_list_data TABLES l_bom_get STRUCTURE get_data_get8.
REFRESH i_fieldcat.
add_filed 'GET_DATA_GET8' 'MATNR' '物料编码' 'L ' '2' '' ''.
add_filed 'GET_DATA_GET8' 'MAKTX' '物料描述' 'L ' '3' '' ''.
add_filed 'GET_DATA_GET8' 'WERKS' '工厂' 'L' '5' '' ''.
add_filed 'GET_DATA_GET8' 'MTART' '物料类型' 'L' '5' '' ''.
add_filed 'GET_DATA_GET8' 'MEINS' 'BOM基本单位' 'L' '9' '' ''.
add_filed 'GET_DATA_GET8' 'MMEIN' '库存基本单位' 'L' '11' '' ''.
add_filed 'GET_DATA_GET8' 'MENGE' '组件需求量(BOM单位)' 'L' '10' ''
''.
add_filed 'GET_DATA_GET8' 'MNGLG' '组件需求量(库存单位)' 'L' '10' ''
''.
* add_filed 'GET_DATA_GET8' 'LGOBE' '库存地点描述' 'L' '12' '' ''.
add_filed 'GET_DATA_GET8' 'LLABST' '短缺数量' 'L' '13' '' ''.
add_filed 'GET_DATA_GET8' 'LABST' '非限制' 'L' '13' '' ''.
add_filed 'GET_DATA_GET8' 'INSME' '质量检查(IQC)' 'L' '14' '' ''.
add_filed 'GET_DATA_GET8' 'EINME' '限制使用的' 'L' '15' '' ''.
add_filed 'GET_DATA_GET8' 'SPEME' '已冻结' 'L' '15' '' ''.
add_filed 'GET_DATA_GET8' 'DUMPS' '虚拟键' 'L' '15' '' ''.
add_filed 'GET_DATA_GET8' 'RGEKZ' '反冲料' 'L' '15' '' ''.
add_filed 'GET_DATA_GET8' 'ALPOS' '替代料' 'L' '15' '' ''.
add_filed 'GET_DATA_GET8' 'ALPRF' '替代关系' 'L' '15' '' ''.
display_data get_data_get8 ''.
ENDFORM. "SUB_LIST_DATA
*&---------------------------------------------------------------------*
*& Form frm_change_sign
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->VALUE(P_CHANGE) text
*----------------------------------------------------------------------*
FORM frm_change_sign CHANGING value(p_change).
IF p_change CA '-'.
CONCATENATE '-' p_change INTO p_change.
CONDENSE p_change NO-GAPS.
SHIFT p_change RIGHT DELETING TRAILING ' -'.
* SHIFT p_change by 1 places left.
ELSEIF p_change NA '123456789'.
p_change = ''.
ENDIF.
ENDFORM. "frm_change_sign
*&---------------------------------------------------------------------*
*& Form USERCOMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM usercommand USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
CASE rs_selfield-sel_tab_field.
WHEN 'GET_DATA_GET8-MATNR'.
SET PARAMETER ID 'MAT' FIELD rs_selfield-value.
CALL TRANSACTION 'MMBE' AND SKIP FIRST SCREEN.
ENDCASE.
WHEN OTHERS.
ENDCASE.
ENDFORM. "USERCOMMAND
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -