SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style. italic;
color: #808080;
}
.L1S32 {
color: #3399FF;
}
.L1S33 {
color: #4DA619;
}
.L1S52 {
color: #0000FF;
}
*&--------------------------------------------------------------------&*
*& BYD46C U P D A T E P R O J E C T &*
*& &*
*& PROGRAM NAME : ZRPP_08 &*
*& PROGRAM TITLE : 车间生产报表 &*
*& DEVELOPER : Phoebus Zhang &*
*& INITIAL DATE : 2006/12/25 &*
*& PURPOSE : 车间生产报表 &*
*& &*
*&---------------------- CHANGE HISOTRY ---------------------- &*
*& DATE MODI. MODEFIER DESCRIPTION &*
*& 2006/12/25 DEVK910581 PHOEBUS ZHANG MODIFIED VERSION &*
*& 2007/12/12 DEVK916063 PHOEBUS ZHANG MODIFIED VERSION 2. &*
*&--------------------------------------------------------------------&*
*------------------------------------------------------------------*
* This program is used to show the collect of workcenter monthly *
*------------------------------------------------------------------*
REPORT zrpp_08 LINE-SIZE 180
MESSAGE-ID 00
NO STANDARD PAGE HEADING.
*------------------------------------------------------------------*
* Define the coresponding tables in the memory. *
*------------------------------------------------------------------*
TABLES:
mara, "Material General Data 物料主数据表
makt, "Material Descriptions 物料描述表
mkpf, "Material Doc. Header 物料单头表
mseg, "Material Doc. 物料单表
crtx, "Work Center Text 工作中心主数据表
crhd, "Work Center Header 工作中心头表
afko, "Production Order 生产订单表
afru, "Confirmation Order 完工确认表
t001w,"Plants/Branches 工厂部门主表
plfl, "Task list - sequences
mapl, "Material routing (task lists) 物料工艺路线key
plpo, "operation/activity routing (Task list)工艺路线的工序表
plas. "selection of operations/activities 工序/作业选择
*------------------------------------------------------------------*
* Define the TYPES OF INTABLE . *
*------------------------------------------------------------------*
TYPES:
BEGIN OF out2 ,
matnr LIKE mara-matnr, "物料号 CHAR(18)
maktx LIKE makt-maktx, "物料描述 CHAR(40)
arbpl(40) TYPE c, "工作中心描述 CHAR(40)
meinh LIKE afru-meinh, "单位 UNIT(4)
gamng LIKE afko-gamng, "计划数量 quan(13.3)
gmnga LIKE afru-gmnga, "产出数量 QUAN(13.3)
grate(7) TYPE p DECIMALS 4,"完成率 pack(14)
xmnga LIKE afru-xmnga, "报废数量 QUAN(13.3)
xrate(7) TYPE p DECIMALS 4,"报废率 pack(14)
END OF out2,
BEGIN OF out1,
aufnr LIKE afru-aufnr, "定单号 CHAR(12)
matnr LIKE mara-matnr, "物料号 CHAR(18)
arbpl(40) TYPE c, "工作中心描述 CHAR(40)
gmnga LIKE afru-gmnga, "产出数量 QUAN(13.3)
meinh LIKE afru-meinh, "单位 UNIT(4)
xmnga LIKE afru-xmnga, "废品数量 QUAN(13.3)
END OF out1,
BEGIN OF zout,
matnr LIKE mara-matnr, "物料号 CHAR(12)
arbpl(40) TYPE c, "工作中心描述 CHAR(40)
zmnga LIKE afru-rmnga, "分母 QUAN(13.3)
END OF zout,
BEGIN OF inafru,
aufnr LIKE afru-aufnr, "订单号 CHAR(12)
budat LIKE afru-budat, "记帐时间 DATS(8)
werks LIKE afru-werks, "工厂 CHAR(4)
arbid LIKE afru-arbid, "工作中心号 NUMC(8)
aplfl LIKE afru-aplfl, "顺序 char(6)
vornr LIKE afru-vornr, "工序号 CHAR(4)
stokz LIKE afru-stokz, "冲销标志 char(1)
gmnga LIKE afru-gmnga, "产出数量 QUAN(13.3)
meinh LIKE afru-meinh, "单位 UNIT(4)
xmnga LIKE afru-xmnga, "报废数量 QUAN(13.3)
END OF inafru,
BEGIN OF inafko,
aufnr LIKE afko-aufnr, "生产订单号 CHAR(12)
matnr LIKE afpo-matnr, "产品物料号 CHAR(18)
gamng LIKE afko-gamng, "计划数量 quan(13.3)
dauat LIKE afpo-dauat, "订单类型
END OF inafko,
BEGIN OF itafko,
matnr LIKE mara-matnr, "物料号 char(18)
gamng LIKE afko-gamng, "计划数量 quan(13.3)
END OF itafko,
BEGIN OF itcrhd ,
werks LIKE crhd-werks, "工厂 CHAR(4)
objid LIKE crhd-objid, "工作中心号 NUMC(8)
wempf LIKE mseg-wempf, "工作中心描述 CHAR(12)
END OF itcrhd,
BEGIN OF itmakt ,
matnr LIKE makt-matnr, "物料号 CHAR(18)
maktx LIKE makt-maktx, "物料描述 CHAR(40)
END OF itmakt,
BEGIN OF invrnr,
matnr LIKE mapl-matnr, "物料号 CHAR(18)
werks LIKE mapl-werks, "工厂 CHAR(4)
vornr LIKE plpo-vornr, "工序号 CHAR(4)
plnfl LIKE plfl-plnfl, "顺序 char(6)
arbid LIKE plpo-arbid, "工作中心号 NUMC(8)
ltxa1 LIKE plpo-ltxa1, "工序描述 CHAR(40)
wempf LIKE mseg-wempf, "工作中心描述 CHAR(12)
END OF invrnr.
*---------------------------------------------------------------*
* Define internal table *
*---------------------------------------------------------------*
DATA:
c_objid LIKE crhd-objid,
c_xmnga LIKE afru-xmnga,
itabzout TYPE STANDARD TABLE OF zout
INITIAL SIZE 0 WITH HEADER LINE,
itabout2 TYPE STANDARD TABLE OF out2
INITIAL SIZE 0 WITH HEADER LINE, "主表 (1)
itabout1 TYPE STANDARD TABLE OF out1
INITIAL SIZE 0 WITH HEADER LINE, "辅表 (2)
itabafru TYPE STANDARD TABLE OF inafru
INITIAL SIZE 0 WITH HEADER LINE, "完工确认表 (3)
itabafko TYPE STANDARD TABLE OF inafko
INITIAL SIZE 0 WITH HEADER LINE, "生产订单表 (4)
itabafko1 TYPE STANDARD TABLE OF itafko
INITIAL SIZE 0 WITH HEADER LINE, "生产订单表 (5)
itabcrhd TYPE STANDARD TABLE OF itcrhd
INITIAL SIZE 0 WITH HEADER LINE, "工作中心描述表 (6)
itabvrnr TYPE STANDARD TABLE OF invrnr
INITIAL SIZE 0 WITH HEADER LINE, "产品工序表(7)
itabmakt TYPE STANDARD TABLE OF itmakt
INITIAL SIZE 0 WITH HEADER LINE. "物料描述表 (8)
DATA: BEGIN OF it_mapl OCCURS 0,
matnr LIKE mapl-matnr, "物料号 CHAR(18)
werks LIKE mapl-werks, "工厂 CHAR(4)
plnnr LIKE mapl-plnnr,
plnal LIKE mapl-plnal,
plnty LIKE mapl-plnty,
END OF it_mapl.
DATA: BEGIN OF it_plfl OCCURS 0,
plnnr LIKE mapl-plnnr,
plnal LIKE mapl-plnal,
plnty LIKE mapl-plnty,
plnfl LIKE plfl-plnfl,
END OF it_plfl.
DATA: BEGIN OF it_plas OCCURS 0,
plnnr LIKE mapl-plnnr,
plnal LIKE mapl-plnal,
plnty LIKE mapl-plnty,
plnfl LIKE plfl-plnfl,
plnkn LIKE plas-plnkn,
END OF it_plas.
DATA: BEGIN OF it_plpo OCCURS 0,
plnty LIKE mapl-plnty,
plnnr LIKE mapl-plnnr,
plnkn LIKE plas-plnkn,
vornr LIKE plpo-vornr,
arbid LIKE plpo-arbid,
werks LIKE plpo-werks,
ltxa1 LIKE plpo-ltxa1,
END OF it_plpo.
*ALV参数
TYPE-POOLS: slis.
DATA: gd_fieldcat TYPE slis_t_fieldcat_alv.
DATA: sla TYPE slis_layout_alv ,
ivariant LIKE disvariant,
i_repid LIKE sy-repid ,
frepid LIKE sy-repid.
*---------------------------------------------------------------*
* Define select-Options *
* We also define a block with frame *
*---------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
s_werks FOR t001w-werks OBLIGATORY, "工厂
s_objid FOR crtx-objid NO-DISPLAY,
s_arbpl FOR crhd-arbpl MATCHCODE OBJECT zarbpl1, "工作中心
s_date FOR afru-budat OBLIGATORY, "生产日期段
s_matnr FOR mara-matnr. "物料号段
SELECTION-SCREEN END OF BLOCK block1.
* ALV选项
SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-002.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_rdlst TYPE c DEFAULT 'X' RADIOBUTTON GROUP grp1.
SELECTION-SCREEN COMMENT 3(25) text-101 FOR FIELD p_rdlst.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_rdgrid TYPE c RADIOBUTTON GROUP grp1.
SELECTION-SCREEN COMMENT 3(25) text-102 FOR FIELD p_rdgrid.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK block2.
*---------------------------------------------------------------*
* AT-SELECTION-SCREEN *
* This section is used for user's input and check user's input. *
* If user's input is incorrect,system will give a message. *
*---------------------------------------------------------------*
AT SELECTION-SCREEN.
IF NOT s_matnr[] IS INITIAL.
SELECT matnr FROM mara INTO mara-matnr UP TO 1 ROWS
WHERE matnr IN s_matnr.
ENDSELECT.
IF sy-subrc <> 0.
IF sy-langu = '1'.
MESSAGE i208 WITH '物料号错误,请重新输入!'.
STOP.
ELSE.
MESSAGE i208 WITH 'Error material,please re-enter!'.
STOP.
ENDIF.
ENDIF.
ENDIF.
IF ( NOT s_matnr[] IS INITIAL ).
SELECT aufnr FROM afko INTO afko-aufnr UP TO 1 ROWS
WHERE ( plnbez IN s_matnr
OR stlbez IN s_matnr ).
ENDSELECT.
IF sy-subrc <> 0.
IF sy-langu = '1'.
MESSAGE i208 WITH '生产订单号或物料号错误,请重新输入!'.
STOP.
ELSE.
MESSAGE i208 WITH 'Error order or material ,please re-enter!'.
STOP.
ENDIF.
ENDIF.
ENDIF.
IF NOT s_werks[] IS INITIAL.
SELECT werks FROM t001w INTO t001w-werks UP TO 1 ROWS
WHERE werks IN s_werks.
ENDSELECT.
IF sy-subrc <> 0.
IF sy-langu = '1'.
MESSAGE i208 WITH '工厂错误,请重新输入!'.
STOP.
ELSE.
MESSAGE i208 WITH 'Error plant,please re-enter!'.
STOP.
ENDIF.
ENDIF.
ENDIF.
REFRESH s_objid.
CLEAR s_objid.
IF NOT s_arbpl[] IS INITIAL.
SELECT arbpl FROM crhd INTO crhd-arbpl UP TO 1 ROWS
WHERE arbpl IN s_arbpl AND werks IN s_werks.
ENDSELECT.
IF sy-subrc <> 0.
IF sy-langu = '1'.
MESSAGE i208 WITH '工作中心号错误,请重新输入!'.
STOP.
ELSE.
MESSAGE i208 WITH
'Error workcenter number,please re-enter!'.
STOP.
ENDIF.
ELSE.
LOOP AT s_arbpl.
s_objid-sign = s_arbpl-sign.
s_objid-option = s_arbpl-option.
IF NOT s_arbpl-low IS INITIAL.
SELECT objid FROM crhd INTO c_objid
WHERE arbpl = s_arbpl-low AND werks IN s_werks.
ENDSELECT.
s_objid-low = c_objid.
ENDIF.
IF NOT s_arbpl-high IS INITIAL.
SELECT objid FROM crhd INTO c_objid
WHERE arbpl = s_arbpl-high AND werks IN s_werks.
ENDSELECT.
s_objid-high = c_objid.
ENDIF.
APPEND s_objid.
ENDLOOP.
ENDIF.
ENDIF.
*---------------------------------------------------------------*
* TOP-OF-PAGE *
* Give the heading of the report for each page *
*---------------------------------------------------------------*
TOP-OF-PAGE.
WRITE: /32 '车间生产月报表'.
SKIP.
IF NOT s_date-high IS INITIAL.
WRITE: /2 ' 日期:',s_date-low,'到',25 s_date-high.
ELSE.
WRITE: /2 ' 日期:',s_date-low.
ENDIF.
WRITE: 75 '页:',sy-pagno,156 '页:',sy-pagno.
ULINE AT /2(172).
WRITE: /2 sy-vline,3(18) '产品号' CENTERED,
21 sy-vline,22(41) '产品名' CENTERED,
63 sy-vline,64(5) '单位' CENTERED,
69 sy-vline,70(12) '工序' CENTERED,
82 sy-vline,83(18) '计划数量' CENTERED,
101 sy-vline,102(18) '实际数量' CENTERED,
120 sy-vline,121(15) '完成率 %' CENTERED,
136 sy-vline,137(19) '报废数量' CENTERED,
156 sy-vline,157(16) '报废率 %' CENTERED,
173 sy-vline.
ULINE AT /2(172).
*------------------------------------------------------------------*
* INITIALIZATION *
*------------------------------------------------------------------*
* ALV 所需选项
INITIALIZATION.
frepid = sy-repid.
*---------------------------------------------------------------*
* START-OF-SELECTION *
*---------------------------------------------------------------*
START-OF-SELECTION.
PERFORM frm_auth_check_pp_werks_s(zebc_auth_message) USING s_werks[].
*---------------------------------------------------*
* ------------ 数据输入 -------------- *
*---------------------------------------------------*
*---------------------*
* 选择条件 *
*---------------------*
* 以日期和工作中心范围选择已有的完工确认单到(itabafru)表
*OB PHOEBUS
*优化程序效率,为表AFRU增加索引ZA1.
SELECT
aufnr
budat
werks
arbid
vornr
stokz
gmnga
meinh
xmnga
aplfl
INTO CORRESPONDING FIELDS OF TABLE itabafru
FROM afru
WHERE werks IN s_werks
AND arbid IN s_objid
AND budat IN s_date.
* 在已有的完工确认单上继续以生产订单号和要求的物料号
* 确认生产单到生产订单表(itabafko)中
IF NOT itabafru[] IS INITIAL.
SORT itabafru BY aufnr.
SELECT
afko~aufnr
afpo~matnr
afko~gamng
afpo~dauat
INTO CORRESPONDING FIELDS OF TABLE itabafko
FROM afpo
INNER JOIN afko
ON afpo~aufnr = afko~aufnr
FOR ALL entries IN itabafru
WHERE afpo~aufnr = itabafru-aufnr
AND afpo~matnr IN s_matnr
AND afpo~posnr = 1
AND ( NOT ( afpo~dauat = '2003'
OR afpo~dauat = '3004' ) ).
ENDIF.
*OE PHOEBUS
* select afko~aufnr
* afpo~matnr
* afko~gamng
* into table itabafko
* from afko inner join afpo
* on afko~aufnr = afpo~aufnr
* where
* afko~GsTRP in s_date
* and afpo~matnr in s_matnr
* and afpo~posnr = 1.
* if sy-subrc = 0.
* endif.
*----------------------------*
* 归结所选的结果 *
* 并去掉相同记录 *
* 若无记录则退出程序 *
*----------------------------*
SORT itabafko BY aufnr matnr.
DELETE ADJACENT DUPLICATES FROM itabafko.
IF itabafko[] IS INITIAL.
IF sy-langu = '1'.
MESSAGE i208 WITH '没有符合条件的记录,请重新输入!'.
STOP.
ELSE.
MESSAGE i208 WITH 'No record found,Please re-enter!'.
STOP.
ENDIF.
STOP.
ENDIF.
LOOP AT itabafko.
* if itabafko-dauat = '2003' or itabafko-dauat = '3004'.
* else.
itabafko1-matnr = itabafko-matnr.
itabafko1-gamng = itabafko-gamng.
COLLECT itabafko1.
* endif.
ENDLOOP.
*-------------------------------------------------------*
* ---------------- 数据处理 -------------------- *
*-------------------------------------------------------*
*----------------------------*
* 以生产订单表中的物料号为 *
* 选择条件选出此物料号的 *
* 所有工序和子工序及描述 *
*----------------------------*
SELECT matnr werks plnnr plnal plnty
INTO TABLE it_mapl FROM mapl
FOR ALL ENTRIES IN itabafko
WHERE matnr = itabafko-matnr
AND werks IN s_werks
AND plnty = 'N'.
SELECT plnnr plnal plnty plnfl
INTO TABLE it_plfl FROM plfl
FOR ALL ENTRIES IN it_mapl
WHERE plnnr = it_mapl-plnnr AND
plnal = it_mapl-plnal AND
plnty = it_mapl-plnty.
SELECT plnnr plnal plnty plnfl plnkn
INTO TABLE it_plas FROM plas
FOR ALL ENTRIES IN it_plfl
WHERE plnnr = it_plfl-plnnr AND
plnal = it_plfl-plnal AND
plnty = it_plfl-plnty AND
plnfl = it_plfl-plnfl.
SELECT plnty plnnr plnkn vornr arbid werks ltxa1
INTO TABLE it_plpo FROM plpo
FOR ALL ENTRIES IN it_plas
WHERE plnnr = it_plas-plnnr AND
plnty = it_plas-plnty AND
plnkn = it_plas-plnkn.
LOOP AT it_mapl.
itabvrnr-matnr = it_mapl-matnr.
itabvrnr-werks = it_mapl-werks.
LOOP AT it_plas WHERE plnty = it_mapl-plnty AND
plnnr = it_mapl-plnnr AND
plnal = it_mapl-plnal .
itabvrnr-plnfl = it_plas-plnfl.
LOOP AT it_plpo WHERE plnty = it_plas-plnty AND
plnnr = it_plas-plnnr AND
plnkn = it_plas-plnkn.
itabvrnr-vornr = it_plpo-vornr.
itabvrnr-arbid = it_plpo-arbid.
itabvrnr-ltxa1 = it_plpo-ltxa1.
APPEND itabvrnr.
ENDLOOP.
ENDLOOP.
ENDLOOP.
* sort itabvrnr by matnr werks arbid vornr .
SORT itabvrnr BY matnr werks plnfl vornr arbid.
* 添加工作中心描述到表中
IF NOT itabvrnr[] IS INITIAL .
SELECT werks
objid
arbpl
FROM crhd INTO TABLE itabcrhd
FOR ALL ENTRIES IN itabvrnr
WHERE objid = itabvrnr-arbid
AND werks = itabvrnr-werks.
SORT itabcrhd BY werks objid.
DELETE ADJACENT DUPLICATES FROM itabcrhd.
LOOP AT itabvrnr.
LOOP AT itabcrhd.
IF itabvrnr-arbid = itabcrhd-objid
AND itabvrnr-werks = itabcrhd-werks.
itabvrnr-wempf = itabcrhd-wempf.
MODIFY itabvrnr.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDIF.
SORT itabvrnr BY matnr werks plnfl vornr arbid.
LOOP AT itabvrnr .
IF itabvrnr-ltxa1 = ' ' OR itabvrnr-ltxa1 CS '*000'.
DELETE itabvrnr.
ENDIF.
ENDLOOP.
SORT itabvrnr BY matnr werks plnfl vornr arbid.
*---------------------------------------*
* 添加物料描述到物料描述表(itabmakt) *
*---------------------------------------*
SELECT matnr
maktx
INTO TABLE itabmakt FROM makt
FOR ALL ENTRIES IN itabafko
WHERE matnr = itabafko-matnr.
SORT itabmakt BY matnr maktx.
DELETE ADJACENT DUPLICATES FROM itabmakt.
*----------------------------*
* 以生产订单表为选择条件 *
*----------------------------*
* 对完工确认表处理
LOOP AT itabafru .
READ TABLE itabafko WITH KEY aufnr = itabafru-aufnr .
IF sy-subrc = 0.
itabout1-matnr = itabafko-matnr.
itabout1-aufnr = itabafru-aufnr.
* 判断工序
READ TABLE itabvrnr WITH KEY matnr = itabout1-matnr
vornr = itabafru-vornr
plnfl = itabafru-aplfl
werks = itabafru-werks.
IF sy-subrc <> 0 .
itabout1-arbpl = '工序未知'.
CONTINUE.
ELSE.
IF itabvrnr-ltxa1 = ' ' .
itabout1-arbpl = itabvrnr-wempf.
ELSE.
itabout1-arbpl = itabvrnr-ltxa1.
ENDIF.
ENDIF.
IF itabafru-stokz = 'X'.
itabout1-gmnga = - itabafru-gmnga.
itabout1-xmnga = - itabafru-xmnga.
ELSE.
itabout1-gmnga = itabafru-gmnga.
itabout1-xmnga = itabafru-xmnga.
ENDIF.
itabout1-meinh = itabafru-meinh.
COLLECT itabout1.
ENDIF.
ENDLOOP.
SORT itabout1 BY aufnr matnr arbpl .
LOOP AT itabout1 .
itabout2-matnr = itabout1-matnr.
itabout2-arbpl = itabout1-arbpl.
itabout2-gmnga = itabout1-gmnga.
itabout2-meinh = itabout1-meinh.
itabout2-xmnga = itabout1-xmnga.
COLLECT itabout2.
ENDLOOP.
LOOP AT itabout2.
itabzout-matnr = itabout2-matnr.
itabzout-arbpl = itabout2-arbpl.
itabzout-zmnga = itabout2-xmnga.
COLLECT itabzout.
ENDLOOP.
LOOP AT itabout2.
* 添加计划数量
READ TABLE itabafko1 WITH KEY matnr = itabout2-matnr.
IF sy-subrc = 0.
itabout2-gamng = itabafko1-gamng.
ELSE.
CONTINUE.
ENDIF.
* 计算报废率
READ TABLE itabzout WITH KEY matnr = itabout2-matnr
arbpl = itabout2-arbpl.
IF sy-subrc = 0 .
c_xmnga = itabout2-gmnga + itabzout-zmnga.
ENDIF.
IF itabout2-gmnga = 0 OR
itabout2-xmnga = 0 .
ELSE.
* c_xmnga = itabout2-gmnga + itabout2-xmnga.
itabout2-xrate = 100 * itabout2-xmnga / c_xmnga.
ENDIF.
* 计算完成率
IF NOT itabout2-gamng = 0 .
itabout2-grate = 100 * itabout2-gmnga / itabout2-gamng .
ENDIF.
* 物料描述
READ TABLE itabmakt WITH KEY matnr = itabout2-matnr.
IF sy-subrc = 0 .
itabout2-maktx = itabmakt-maktx .
ELSE.
itabout2-maktx = ' ' .
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = itabout2-matnr
IMPORTING
output = itabout2-matnr.
MODIFY itabout2.
CLEAR itabout2.
ENDLOOP.
*准备输出主表
IF itabout2[] IS INITIAL.
MESSAGE i208(00) WITH '对不起,没找到所要查询的数据!!'.
STOP.
ELSE.
SORT itabout2 BY matnr arbpl.
ENDIF.
IF p_rdlst = 'X'.
PERFORM frm_output_report.
ENDIF.
IF p_rdgrid = 'X'.
PERFORM frm_output_ingrid.
ENDIF.
*-------------------------------------------------------------------*
* FORM frm_output_ingrid *
*-------------------------------------------------------------------*
* ........ *
*-------------------------------------------------------------------*
FORM frm_output_ingrid.
PERFORM fieldcat_init .
sla-colwidth_optimize = 'X'.
i_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = i_repid
it_fieldcat = gd_fieldcat[]
i_save = 'A'
is_layout = sla
TABLES
t_outtab = itabout2[].
ENDFORM. " frm_output_ingrid
*-------------------------------------------------------------------*
* FORM frm_output_report *
*-------------------------------------------------------------------*
* ........ *
*-------------------------------------------------------------------*
FORM frm_output_report.
LOOP AT itabout2.
WRITE: /2 sy-vline,3(18) itabout2-matnr,
21 sy-vline,itabout2-maktx,
63 sy-vline,itabout2-meinh,
69 sy-vline,itabout2-arbpl,
82 sy-vline,itabout2-gamng,
101 sy-vline,itabout2-gmnga,
120 sy-vline,itabout2-grate,
136 sy-vline,itabout2-xmnga,
156 sy-vline,itabout2-xrate,
173 sy-vline.
ULINE AT /2(172).
ENDLOOP.
ENDFORM. "frm_output_report
*---------------------------------------------------------------------*
* FORM fieldcat_init *
*---------------------------------------------------------------------*
FORM fieldcat_init .
PERFORM frm_catlg_set USING: 'MATNR' ' 物料号',
'MAKTX' '物料描述',
'ARBPL' '工作中心描述',
'MEINH' '单位',
* 'GSTRP' '基本开始日期',
'GAMNG' '计划数量',
'GMNGA' '产出数量',
* 'GMNGA_N' '未完成数量',
'GRATE' '完成率',
'XMNGA' '报废数量',
'XRATE' '报废率'.
* 'AUFNR' '生产订单号' .
ENDFORM. "fieldcat_init
*---------------------------------------------------------------------*
* FORM frm_catlg_set *
*---------------------------------------------------------------------*
FORM frm_catlg_set USING p_field
p_text.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
ls_fieldcat-fieldname = p_field.
ls_fieldcat-seltext_l = p_text.
APPEND ls_fieldcat TO gd_fieldcat .
CLEAR ls_fieldcat .
ENDFORM. "frm_catlg_set
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23495244/viewspace-659967/
,如需转载,请注明出处,否则将追究法律责任。