REPORT
zpp015.
TABLES:stko,stpo,mast,makt,stpox,cstmat,tc04.
TYPE-POOLS: slis.
DATA: ws_fieldcat TYPE lvc_t_fcat, "slis_t_fieldcat_alv WITH HEADER L
INE,
ws_layout
TYPE lvc_s_layo. "lvc_s_layo
DATA: BEGIN OF itab_mast OCCURS 0,
"物料号
"物料描述
"BOM
matnr LIKE mast-matnr,
maktx LIKE makt-maktx,
stlnr LIKE stko-stlnr,
stlal LIKE mast-stlal, "可选BOM
stktx LIKE stko-stktx, "可选文本
bmeng LIKE stko-bmeng,
bmein LIKE stko-bmein,
stlan LIKE mast-stlan,
"基本用量
"BOM 用途
END OF itab_mast.
DATA: BEGIN OF itab_ok OCCURS 0,
fmatnr
vmatnr
vmaktx
LIKE mast-matnr,
LIKE mast-matnr,
LIKE makt-maktx,
"BOM 层次
" item
"物料单,上级,所属
"物料单,下级,所辖
" 子节点编号level
"BOM 用途
"BOM 物料显示
"BOM 组件号
"组件号描述
"物料号
"组件计量单位
LIKE stpox-stufe,
LIKE stpo-posnr,
LIKE stpo-sortf,
LIKE stpo-stlnr,
LIKE stpo-stlnr,
LIKE stpo-stlkn,
LIKE mast-stlan,
stufe
stufex(10) TYPE c,
posnr
sortf
ustlnr
dstlnr
stlkn
stlan
idnrkx(50) TYPE c,
idnrk
maktxx
matnr
brgew
ntgew
gewei
maktx
meins
menge
ausch
potx1
potx2
POSTP
lgort
sanka
aennr
beikz
datuv
datub
labst
zxmlb
xcolor(4)
bmeng
bmein
stlnr
stlal
stktx
ewahr
alprf
alpgr
alpst
stvkn
LIKE stpo-idnrk,
LIKE makt-maktx,
LIKE mast-matnr,
LIKE mara-brgew,
LIKE mara-ntgew,
LIKE mara-gewei, "重量单位
LIKE makt-maktx,
LIKE stpo-meins,
LIKE stpo-menge,
LIKE stpo-ausch,
LIKE stpo-potx1,
LIKE stpo-potx2,
LIKE STPO-POSTP,
LIKE stpo-lgort,
LIKE stpo-sanka,
LIKE stpo-aennr,
LIKE stpo-beikz,
LIKE stpo-datuv,
LIKE stpox-datub,
TYPE mard-labst, "非限制性库存
TYPE c,
TYPE c,
LIKE stko-bmeng,
LIKE stko-bmein,
LIKE mast-stlnr,
LIKE mast-stlal, "可选BOM
LIKE stko-stktx, "可选文本
LIKE stpo-ewahr, "使用可能性
LIKE stpo-alprf, "策略
LIKE stpo-alpgr, "优先级
LIKE stpo-alpst, "替代项目组
LIKE stpo-stvkn,
"基本用量
"替代BOM
END OF itab_ok.
"L 为供应商,空为自供
"有效起始日期
DATA:s_capid LIKE tc04-capid,
no
time
node
lines
TYPE i,
TYPE i,
TYPE i,
TYPE i.
"每张BOM 中的最大子节点数
"子节点,层次
"循环次数
LIKE TABLE OF stpox WITH HEADER LINE,
DATA: bom_itab
LIKE TABLE OF stpox WITH HEADER LINE,
bom_itab1
LIKE TABLE OF itab_ok WITH HEADER LINE,
lt_itab
gt_itab
LIKE TABLE OF itab_ok WITH HEADER LINE,
wa_gt_itab LIKE TABLE OF itab_ok WITH HEADER LINE,
i_topmat
cstmat.
LIKE
*---------------------Selection screen-------------------------------
---
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-010.
SELECT-OPTIONS: s_matnr FOR mast-matnr .
SELECT-OPTIONS: s_matnr1 FOR mast-matnr .
PARAMETERS
PARAMETERS
用途
SELECT-OPTIONS: s_date FOR stko-datuv.
SELECTION-SCREEN : END OF BLOCK b1.
: s_werks LIKE mast-werks OBLIGATORY
: s_stlan LIKE
mast-stlan OBLIGATORY DEFAULT '1'." BOM
MEMORY ID wrk.
*--------------------Start of selection------------------------------
---
INITIALIZATION.
START-OF-SELECTION.
IF s_matnr1 IS NOT INITIAL.
PERFORM frm_getdata.
IF gt_itab[] IS INITIAL .
MESSAGE '所查询的物料没有 BOM 清单.' TYPE 'I'.
EXIT.
ENDIF.
ELSE.
PERFORM frm_get_headdata.
IF NOT itab_mast[] IS INITIAL.
PERFORM frm_get_bomdata.
ELSE.
MESSAGE '所查询的物料没有 BOM 清单.' TYPE 'I'.
EXIT.
ENDIF.
ENDIF.
END-OF-SELECTION.
PERFORM modify_data.
PERFORM alv_data.
text
Form
FRM_GETDATA
*&-------------------------------------------------------------------
--*
*&
*&-------------------------------------------------------------------
--*
*
*--------------------------------------------------------------------
--*
*
*
*--------------------------------------------------------------------
--*
FORM frm_getdata .
text
text
-->
<--
p1
p2
DATA:wultb
LIKE STANDARD TABLE OF stpov WITH HEADER LINE,
equicat LIKE STANDARD TABLE OF cscequi WITH HEADER LINE,
LIKE STANDARD TABLE OF cscknd WITH HEADER LINE,
kndcat
matcat
LIKE STANDARD TABLE OF cscmat WITH HEADER LINE,
LIKE STANDARD TABLE OF cscstd WITH HEADER LINE,
stdcat
LIKE STANDARD TABLE OF csctpl WITH HEADER LINE,
tplcat
prjcat
LIKE STANDARD TABLE OF cscprj WITH HEADER LINE.
DATA:gt_mara LIKE STANDARD TABLE OF mara WITH HEADER LINE.
DATA:topmat TYPE mc29s.
DATA:BEGIN OF lt_mara1 OCCURS 0,
matnr LIKE mara-matnr,
END OF lt_mara1.
DATA:BEGIN OF lt_mara OCCURS 0,
matnr LIKE mara-matnr,
END OF lt_mara.
SELECT DISTINCT * INTO CORRESPONDING FIELDS OF TABLE lt_mara FROM m
ara WHERE matnr IN s_matnr1.
LOOP AT lt_mara.
CLEAR:wultb,wultb[].
CALL FUNCTION 'CS_WHERE_USED_MAT'
EXPORTING
datub
datuv
matnr
werks
mclmt
IMPORTING
topmat
TABLES
wultb
equicat
kndcat
matcat
stdcat
tplcat
prjcat
= sy-datum
= sy-datum
= lt_mara-matnr
= s_werks
= '00000000'
= topmat
= wultb
= equicat
= kndcat
= matcat
= stdcat
= tplcat
= prjcat
EXCEPTIONS
call_invalid =1
material_not_found
= 2
no_where_used_rec_found
= 3
no_where_used_rec_selected = 4
no_where_used_rec_valid
= 5.
IF wultb[] IS NOT INITIAL.
LOOP AT wultb.
MOVE-CORRESPONDING wultb TO gt_itab.
gt_itab-vmatnr = wultb-matnr .
gt_itab-idnrkx = wultb-idnrk .
gt_itab-zxmlb = wultb-postp .
gt_itab-stvkn = wultb-stlkn .
gt_itab-stlal = wultb-vwalt .
SELECT SINGLE maktx INTO gt_itab-vmaktx FROM makt WHERE matnr
SELECT SINGLE maktx INTO gt_itab-maktxx FROM makt WHERE matnr
= gt_itab-matnr AND spras = 1.
= gt_itab-idnrk AND spras = 1.
APPEND gt_itab.CLEAR gt_itab.
ENDLOOP.
ENDIF.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM gt_itab.
IF s_matnr IS NOT INITIAL .
DELETE
gt_itab WHERE vmatnr NOT IN s_matnr.
ENDIF.
ENDFORM.
Form
frm_get_headdata
*&-------------------------------------------------------------------
--*
*&
*&-------------------------------------------------------------------
--*
*
*--------------------------------------------------------------------
--*
FORM frm_get_headdata.
text
SELECT a~matnr a~stlan
b~stlnr b~bmeng b~bmein a~stlal b~stktx
"INTO CORRESPONDING FIELDS OF TABLE itab_mast
FROM mast AS a
INNER JOIN stko AS b ON b~stlnr = a~stlnr AND b~stla
l = a~stlal
INTO CORRESPONDING FIELDS OF TABLE itab_mast
WHERE a~werks = s_werks
AND a~matnr IN s_matnr
AND a~stlan = s_stlan
AND b~datuv IN s_date
AND b~lkenz EQ ''
AND b~loekz EQ ''.
LOOP AT itab_mast INTO itab_mast.
SELECT SINGLE maktx INTO itab_mast-maktx FROM makt WHERE matnr =
itab_mast-matnr AND spras = 1.
MODIFY itab_mast .
ENDLOOP.
ENDFORM.
"frm_get_headdata
*&-------------------------------------------------------------------
--*
*&
*&-------------------------------------------------------------------
--*
modify_data
Form
text
*
*--------------------------------------------------------------------
--*
FORM modify_data.
*
sort gt_itab by FMATNR STUFE.
gt_itab[] = wa_gt_itab[].
LOOP AT gt_itab.
AT NEW fmatnr.
*
*
*
*
*
*
*
*
= gt_itab-fmatnr AND spras = 1.
**
from mara where matnr = gt_itab-fmatnr.
CLEAR: itab_ok.
itab_ok-xcolor = 'C310'.
itab_ok-vmatnr = gt_itab-fmatnr.
SELECT SINGLE maktx INTO itab_ok-vmaktx FROM makt WHERE matnr
SELECT SINGLE brgew ntgew INTO (itab_ok-brgew,itab_ok-ntgew )
*
*
*
*
INSERT itab_ok INTO gt_itab.
ENDAT.
ENDLOOP.
delete gt_itab where STUFE ne '1'.
"以后拿掉
ENDFORM.
"modify_data
Form
ALV_DATA
*&-------------------------------------------------------------------
--*
*&
*&-------------------------------------------------------------------
--*
*
*--------------------------------------------------------------------
--*
*
*
*--------------------------------------------------------------------
--*
FORM alv_data .
text
text
-->
<--
PERFORM f_input_fieldcat USING:
text
p1
p2
'VMATNR'
'VMAKTX'
'BMENG'
'BMEIN'
'STLAL'
'物料号',
'物料描述',
'基本数量',
'物料单位' ,
'替代 BOM' ,
*
*
*
*
*
*
*
*
*
*
'STKTX'
'POSNR'
'IDNRKX'
'MAKTXX'
'可选文本' ,
'序号',
'组件料号',
'组件物料描述',
'计量单位',
'组件数量',
'项目 ID',
'毛重',
'净重',
'重量单位',
'ROHSMS 有效期',
'子件文本1',
'子件文本2',
'子件仓库代码',
'供应标识符',
'部件废品(%)',
'成本核算与否',
'项目类别',
'MEINS'
'MENGE'
'STVKN'
'BRGEW'
'NTGEW'
'GEWEI'
'SORTF'
'POTX1'
'POTX2'
'LGORT'
'BEIKZ'
'AUSCH'
'SANKA'
'ZXMLB'
'POTX1' '部件描述',
'替代组',
'ALPGR'
'策略',
'ALPST'
'ALPRF'
'优先级',
'使用可能性',
'EWAHR'
'ECN 更改号',
'AENNR'
'DATUV'
'有效起始日期'.
ws_layout-cwidth_opt = 'X'.
ws_layout-zebra
= 'X'.
ws_layout-info_fname = 'XCOLOR'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program
is_layout_lvc
it_fieldcat_lvc
i_default
i_save
i_callback_user_command = 'USER_COMMAND'
= sy-repid
= ws_layout
= ws_fieldcat[]
= 'X'
= 'A'
TABLES
t_outtab
EXCEPTIONS
program_error
OTHERS
ENDFORM.
= gt_itab[]
= 1
= 2.
" ALV_DATA