************************************************************************
* PROGRAM NAME : 缺料表 *
* APPLICATION NAME : PP-DV *
* SUBSYSTEM : *
* AUTHOR : Gerald *
* TRANSACTION : ypp11 *
* PROGRAM TYPE : Report *
* INPUT FILES : *
* OUTPUT FILES : *
* PROGRAM ID : yppr0011 *
*&---------------------------------------------------------------------*
*& REVISION LOG *
*& LOG# DATE AUTHOR DESCRIPTION *
*& ---- ---- ------ ----------- *
*& 001 2006/12/07 Gerald created *
************************************************************************
*& 修改日期:2010.06.02
*& 修 改 人:zhouxu V1.0
*& 修改原因:1 將屏幕選擇字段bom全展,與虛擬件全展虛擬件展一層分配
*&到同一radiobutton組。
REPORT yppr0011
NO STANDARD PAGE HEADING
LINE-SIZE 1023
* LINE-COUNT 30(4)
MESSAGE-ID pp.
*MESSAGE-ID 1000.
*&---------------------------------------------------*
*& TABLES *
*&---------------------------------------------------*
TABLES:makt,
caufv,
afko,
mard,
mast,
plpo,
rkpf,
rc29l,
stpox,
cscmat,
stpo.
INCLUDE yalvclude1.
*TYPE-POOLS slis.
*DATA progname LIKE sy-repid.
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 DEFAULT 'LN01' 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 TYPE c RADIOBUTTON GROUP grp1.
SELECTION-SCREEN POSITION 20.
PARAMETERS: lllabstt TYPE c RADIOBUTTON GROUP grp1 DEFAULT 'X'.
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.
**"mod v1.0 zhouxu
PARAMETERS: lllabst LIKE am07m-xlabst RADIOBUTTON GROUP grp1.
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.
* add by lkj 2008/12/12
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t2.
PARAMETERS : bom_a RADIOBUTTON GROUP bom TYPE c, "生產BOM
bom_b RADIOBUTTON GROUP bom TYPE c. "設計BOM
SELECTION-SCREEN END OF BLOCK b2.
* add by lkj 2008/12/12
INITIALIZATION.
t2 = 'BOM類別'.
AUTHORITY-CHECK OBJECT 'YREPORT'
ID 'BUKRS' FIELD 'HL01'
ID 'WERKS' FIELD 'LN01'.
IF sy-subrc NE 0.
MESSAGE e005(ymess) WITH 'No Authorization!'.
ENDIF.
*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 'YPP11'.
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.
* 區分生產與設計BOM取數 LKJ 2008/12/12
IF bom_a = 'X'.
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.
ELSE.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
aumng = 0
capid = 'PP01'
datuv = sy-datum
mehrs = x
mtnrv = choose_data_get21-matnr
stlan = '2'
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.
ENDIF.
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.
*---------------BEING ADD ZHOUXU V1.0-----------------------*
IF lllabst = 'X'.
RETURN.
ENDIF.
*---------------END ADD ZHOUXU V1.0 -----------------------*
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.
* 區分生產與設計BOM取數 LKJ 2008/12/12
IF bom_a = 'X'.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
aumng = 0
capid = 'PP01'
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.
ELSE.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
aumng = 0
capid = 'PP01'
datuv = sy-datum
mehrs = y
mtnrv = bom_itab_gett-idnrk
stlan = '2'
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.
ENDIF.
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' '物料編碼' '40 ' '2' '' ''.
add_filed 'GET_DATA_GET8' 'MAKTX' '物料描述' '40' '3' '' ''.
add_filed 'GET_DATA_GET8' 'WERKS' '工廠' '40' '5' '' ''.
add_filed 'GET_DATA_GET8' 'MTART' '物料類型' '40' '5' '' ''.
add_filed 'GET_DATA_GET8' 'MEINS' 'BOM基本單位' '40' '9' '' ''.
add_filed 'GET_DATA_GET8' 'MMEIN' '庫存基本單位' '40' '11' '' ''.
add_filed 'GET_DATA_GET8' 'MENGE' '組件需求量(BOM單位)' '40' '10' ''
''.
add_filed 'GET_DATA_GET8' 'MNGLG' '組件需求量(庫存單位)' '40' '10' ''
''.
* add_filed 'GET_DATA_GET8' 'LGOBE' '庫存地點描述' 'L' '12' '' ''.
add_filed 'GET_DATA_GET8' 'LLABST' '短缺數量' '40' '13' '' ''.
add_filed 'GET_DATA_GET8' 'LABST' '非限制' '40' '13' '' ''.
add_filed 'GET_DATA_GET8' 'INSME' '質量檢查(IQC)' '40' '14' '' ''.
add_filed 'GET_DATA_GET8' 'EINME' '限制使用的' '40' '15' '' ''.
add_filed 'GET_DATA_GET8' 'SPEME' '已凍結' '40' '15' '' ''.
add_filed 'GET_DATA_GET8' 'DUMPS' '虛擬鍵' '40' '15' '' ''.
add_filed 'GET_DATA_GET8' 'RGEKZ' '反衝料' '40' '15' '' ''.
add_filed 'GET_DATA_GET8' 'ALPOS' '替代料' '40' '15' '' ''.
add_filed 'GET_DATA_GET8' 'ALPRF' '替代關係' '40' '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
text symbols
010 選擇屏幕
B10 虛擬鍵全展
B11 BOM全展
B12 刪除替代關係
B13 虛擬鍵一層
selections text
BOM_A 生產BOM
BOM_B 設計BOM(試產)
LLABST 虛擬鍵展
LLABSTON ?...
LLLABST BOM全展
LLLABSTT 刪除替代關係
P_FNAME 計劃數量
P_WERKS 工廠
S_LGORT 倉庫
S_MATNR 物料編碼