Code20080520
- 物料主檔的各欄位及相關的 Description。
程式碼
物料主檔 (Material Master)
*-----物料主檔欄位
TYPES:BEGIN OF st_mara,
matnr LIKE mara-matnr,
werks LIKE marc-werks,
maktx LIKE makt-maktx, "物料說明
spart LIKE mara-spart, "部門
prctr LIKE marc-prctr, "利潤中心
bklas LIKE mbew-bklas, "評價類型
mtart LIKE mara-mtart, "物料類型
beskz LIKE marc-beskz, "採購類型
sobsl LIKE marc-sobsl, "特殊採購
strgr LIKE marc-strgr, "策略群組
mmsta LIKE marc-mmsta, "工廠特定物料狀態
wrkst LIKE mara-wrkst, "Model
prdha LIKE mara-prdha, "產品階層
ihivi LIKE mara-ihivi, "高粘性
ferth LIKE mara-ferth, "生產檢驗通知單
matkl LIKE mara-matkl, "物料群組
dispo LIKE marc-dispo, "MRP控制員
bstma LIKE marc-bstma, "最大批量
plifz LIKE marc-plifz, "計劃交貨時間
bstmi LIKE marc-bstmi, "最小批量
maabc LIKE marc-maabc, "ABC指示
kzkri LIKE marc-kzkri, "關鍵零件
meins LIKE mara-meins, "單位
labor LIKE mara-labor, "實驗室/辦公室
spvtxt LIKE tspat-vtext, "部門名稱
ktext LIKE cepct-mctxt, "利潤中心名稱
bkbez LIKE t025t-bkbez, "評價類別名稱
mtbez LIKE t134t-mtbez, "物料類型名稱
beskzt LIKE dd07v-ddtext, "採購類型名稱
prdha1 LIKE mara-prdha, "產品階層1
prdha2 LIKE mara-prdha, "產品階層2
prdha3 LIKE mara-prdha, "產品階層3
vtext1 LIKE t179t-vtext, "產品階層1說明
vtext2 LIKE t179t-vtext, "產品階層2說明
vtext3 LIKE t179t-vtext, "產品階層3說明
dsnam LIKE t024d-dsnam, "MPR控制員名稱
lbtxt LIKE t024x-lbtxt, "實驗室/辦公室 說明
END OF st_mara,
hmara TYPE HASHED TABLE OF st_mara WITH UNIQUE KEY matnr werks.
*-----物料主檔 Internal table
DATA : it_mara TYPE hmara.
*-Get data from database
SELECT a~matnr a~spart a~mtart a~matkl a~meins a~wrkst a~prdha
a~ihivi a~ferth a~labor
c~werks c~prctr c~beskz c~sobsl c~strgr c~mmsta c~dispo
c~bstma c~plifz c~bstmi c~maabc c~kzkri
t~maktx
b~bklas
INTO CORRESPONDING FIELDS OF TABLE it_mara
FROM marc AS c INNER JOIN mara AS a
ON c~matnr = a~matnr
INNER JOIN mbew AS b
ON c~matnr = b~matnr AND c~werks = b~bwkey
LEFT OUTER JOIN makt AS t
ON t~matnr = c~matnr AND t~spras = sy-langu
WHERE a~matnr IN s_matnr
AND a~mtart IN s_mtart
AND a~matkl IN s_matkl
AND a~spart IN s_spart
AND a~wrkst IN s_wrkst
AND a~prdha IN s_prdha
AND c~werks IN s_werks
AND c~beskz IN s_beskz
AND c~sobsl IN s_sobsl
AND c~prctr IN s_prctr.
IF sy-subrc NE 0.
MESSAGE e010 INTO g_message.
append_message.
EXIT.
ENDIF.
*-Get text
SORT it_mara.
DELETE ADJACENT DUPLICATES FROM it_mara.
LOOP AT it_mara INTO lw_mara.
*---Split product hierachy
PERFORM get_product_hierarchy USING lw_mara-prdha
CHANGING lw_mara-prdha1
lw_mara-prdha2
lw_mara-prdha3.
*---Get all text
PERFORM get_matnr_att_name USING lw_mara-spart lw_mara-prctr
lw_mara-bklas lw_mara-mtart
lw_mara-beskz lw_mara-prdha1
lw_mara-prdha2 lw_mara-prdha3
lw_mara-dispo lw_mara-werks
lw_mara-labor
CHANGING lw_mara-spvtxt lw_mara-ktext
lw_mara-bkbez lw_mara-mtbez
lw_mara-beskzt lw_mara-vtext1
lw_mara-vtext2 lw_mara-vtext3
lw_mara-dsnam lw_mara-lbtxt.
MODIFY it_mara FROM lw_mara TRANSPORTING prdha1 prdha2 prdha3
spvtxt ktext bkbez mtbez beskzt
vtext1 vtext2 vtext3 dsnam lbtxt
WHERE matnr EQ lw_mara-matnr
AND werks EQ lw_mara-werks.
ENDLOOP.
產品階層分組 (Product Hierarchy)
FORM get_product_hierarchy USING p_prdha
CHANGING p_prdha1
p_prdha2
p_prdha3.
*-Product hierarchy structure
DATA: lt_prodh TYPE dd03p OCCURS 0 WITH HEADER LINE.
DATA: l_start TYPE i,
l_leng TYPE i.
CHECK NOT p_prdha IS INITIAL.
CLEAR: p_prdha1, p_prdha2, p_prdha3.
CALL FUNCTION 'RV_PRODUKTHIERARCHIE_INFO'
TABLES
fprodhsinfo = lt_prodh[]
EXCEPTIONS
too_many_level = 1
OTHERS = 2.
IF sy-subrc <> 0.
EXIT.
ENDIF.
LOOP AT lt_prodh.
*---Product hierarchy 1
IF lt_prodh-fieldname = 'PRODH1'.
l_leng = lt_prodh-leng.
p_prdha1 = p_prdha+l_start(l_leng).
l_start = lt_prodh-leng + l_start.
*---Product hierarchy 2
ELSEIF lt_prodh-fieldname = 'PRODH2'.
l_leng = lt_prodh-leng.
p_prdha2 = p_prdha+l_start(l_leng).
l_start = lt_prodh-leng + l_start.
*---Product hierarchy 3
ELSEIF lt_prodh-fieldname = 'PRODH3'.
l_leng = lt_prodh-leng.
p_prdha3 = p_prdha+l_start(l_leng).
ELSE.
l_start = lt_prodh-leng + l_start.
ENDIF.
ENDLOOP.
產品階層說明 (Description of Product Hierarchy)
FORM get_prod_hier_desc USING p_prdha
p_vtext.
SELECT SINGLE vtext
INTO p_vtext
FROM t179t
WHERE spras EQ sy-langu
AND prodh EQ p_prdha.
ENDFORM. " GET_PROD_HIER_DESC
說明文字 (Description)
FORM get_matnr_att_name USING p_spart p_prctr p_bklas p_mtart
p_beskz p_prdha1 p_prdha2 p_prdha3
p_dispo p_werks p_labor
CHANGING p_spvtxt p_ktext p_bkbez p_mtbez
p_beskzt p_vtext1 p_vtext2 p_vtext3
p_dsnam p_lbtxt.
DATA: l_prdha LIKE mara-prdha.
*-部門名稱
SELECT SINGLE vtext
INTO p_spvtxt
FROM tspat
WHERE spras EQ sy-langu
AND spart EQ p_spart.
*-利潤中心名稱
SELECT SINGLE ktext
INTO p_ktext
FROM cepct
WHERE spras EQ sy-langu
AND prctr EQ p_prctr
AND datbi GE sy-datum
AND kokrs EQ g_kokrs.
*-評價類型名稱
SELECT SINGLE bkbez
INTO p_bkbez
FROM t025t
WHERE spras EQ sy-langu
AND bklas EQ p_bklas.
*-物料類型名稱
SELECT SINGLE mtbez
INTO p_mtbez
FROM t134t
WHERE spras EQ sy-langu
AND mtart EQ p_mtart.
*-採購類型名稱
PERFORM get_domain_text USING 'BESKZ' p_beskz
CHANGING p_beskzt.
*-產品階層說明1
l_prdha = p_prdha1.
PERFORM get_prod_hier_desc USING l_prdha p_vtext1.
*-產品階層說明2
CONCATENATE p_prdha1 p_prdha2 INTO l_prdha.
PERFORM get_prod_hier_desc USING l_prdha p_vtext2.
*-產品階層說明3
CONCATENATE p_prdha1 p_prdha2 p_prdha3 INTO l_prdha.
PERFORM get_prod_hier_desc USING l_prdha p_vtext3.
*-MRP控制員名稱
SELECT SINGLE dsnam
INTO p_dsnam
FROM t024d
WHERE werks EQ p_werks
AND dispo EQ p_dispo.
*-實驗室/設計辦公室 名稱
SELECT SINGLE lbtxt
INTO p_lbtxt
FROM t024x
WHERE spras EQ sy-langu
AND labor EQ p_labor.
ENDFORM. " GET_MATNR_ATT_NAME
採購類型 (Get Domain Text)
FORM get_domain_text USING p_donam
p_doval
CHANGING p_dotxt.
DATA: l_donam LIKE dd07v-domname,
l_doval LIKE dd07v-domvalue_l.
MOVE: p_donam TO l_donam,
p_doval TO l_doval.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
i_domname = l_donam
i_domvalue = l_doval
IMPORTING
e_ddtext = p_dotxt
EXCEPTIONS
not_exist = 1
OTHERS = 2.
IF sy-subrc <> 0.
CLEAR: p_dotxt.
ENDIF.
ENDFORM. " GET_DOMAIN_TEXT