REPORT zmm_rp014.
TABLES:afko,makt,mara,afpo,zprint1,marc,zsonghuo,mseg,zposo,vbkd,aufk,jest,zusr21.
DATA edit(1) TYPE c.""消息框确认
DATA: l_grid TYPE REF TO cl_gui_alv_grid.""ALV上按钮实时刷新内表
DATA: line TYPE i,
succ TYPE i,
cout TYPE i,
f TYPE p DECIMALS 5.""进度条
DATA:num2(5) TYPE n .""计算SMART FORM 上的序号显示
DATA:p_oid TYPE char10,""送货单号生成(流水号)
num TYPE i VALUE 1.""ALV上的序号
DATA: option TYPE ssfcresop.""SF使用参数
*DATA jobinfo TYPE ssfcresop.
DATA: "it_fieldcat TYPE slis_t_fieldcat_alv,"by ljs 20150807
it_fieldcat TYPE LVC_T_FCAT,"by ljs 20150807
wa_fieldcat LIKE LINE OF it_fieldcat,
gs_layout TYPE lvc_s_layo."by ljs 20150807
DATA stylelin TYPE lvc_s_styl."by ljs 20150807
"gs_layout TYPE slis_layout_alv.""ALV
*gs_layout-info_fieldname = 'COLOR'.
gs_layout-info_fname = 'COLOR'.
DATA:wa_poso TYPE zposo
,itabposo TYPE TABLE OF zposo,
itabzm TYPE TABLE OF zposo,""抓客户订单、后工序订单
wa_itabzm TYPE zposo.
DATA: l_fm_name TYPE rs38l_fnam,
ls_composer_param TYPE ssfcompop.
DATA: ls_control_param TYPE ssfctrlop,""SF定义
l_tdsfname TYPE tdsfname.
DATA:wa_zwater LIKE zsonghuo,
itabwater LIKE zsonghuo OCCURS 0.""储存数据到自建表
DATA:wotnr TYPE p."储存星期几
DATA i_calendar1 TYPE tfacd-ident."工厂日历
DATA: no_workingday,holiday.""假日
TYPES:
BEGIN OF tp_itab1,
fevor2 LIKE marc-fevor, ""收货车间
num(5) TYPE n, ""序号
aufnr LIKE afko-aufnr , "前生产订单号
maufnr LIKE afko-maufnr, ""后生产订单号
matnr LIKE makt-matnr, ""物料编码
maktx LIKE makt-maktx, "名称
bismt LIKE mara-bismt, ""颜色
ztext(400),
wrkst LIKE mara-wrkst, "材质
tuhao LIKE zpartappend-tuhao,""图号
meins LIKE mara-meins, ""计量单位
vbeln LIKE afpo-kdauf,""销售订单号
posnr LIKE afpo-kdpos,""销售订单行项目号
gstrp LIKE afko-gstrp, ""工单开始时间
gltrp LIKE afko-gltrp, ""工单完成时间
fevor1 LIKE marc-fevor, ""送货车间
gamng LIKE afko-gamng,""订单数量总计
gamng_t(13) TYPE c,""订单数量去0
enmng TYPE resb-enmng,""累积交货数量
enmng_t(13) TYPE c,""交货数量去0
ydayins(13) TYPE c,""已打印数去0
xsonghuos(13) TYPE c ,""需送货数
lgort LIKE afpo-lgort,
lgobe LIKE t001l-lgobe, ""库位描述
waternum LIKE zsonghuo-waternum,""送货单号
check TYPE c, ""勾选
sel1(1) TYPE c,""勾选2
coltab TYPE slis_t_specialcol_alv, ""ALV单元格颜色变量
meins_t(3) TYPE c,""单位转换
qf(10) TYPE c, ""区分子母单
lead_aufnr TYPE afko-lead_aufnr,""顶层
under(10) TYPE c,""是否最下级子订单
*objnr LIKE aufk-objnr, "订单的状态号码 本工序
*objnrr LIKE aufk-objnr,""对象号
*status(40) TYPE c, "状态
*textzt(10) TYPE c,""状态文本
*status2(40) TYPE c,
*textzt2(10) TYPE c,
dispo LIKE marc-dispo,""MRP控制着
txt LIKE t024f-txt,""送货车间描述
txt2 LIKE t024f-txt,""收货车间描述
rsnum TYPE afko-rsnum, "预留号
del,""删除标记虚拟料
bstnk LIKE vbkd-bstkd,""客户订单号
maufnrr TYPE afko-maufnr,""抓顶层生产订单号
*zbstnk(400),""客户订单号计算
length TYPE i,""客户订单号长度1
length2 TYPE i,""客户订单号长度2
zzbstnk(400),""赋值
rsnumre LIKE resb-rsnum,""预留号
rsposre LIKE resb-rspos,""行项目
givenum(400),""送货单号显示ALV
aufnrz LIKE afko-aufnr,""总装生产订单
zzgstrp LIKE afko-gstrp,""总装上线日期
""527 AB分类
normt LIKE mara-normt,
bstdk_e LIKE vbkd-bstdk_e,
*maabc LIKE marc-maabc, ""暂时性隐藏AB分类
shmengeall(13) TYPE c,""总箱数
""by hyz 2015 6 12 加总装前零部件名称
aufnrbj LIKE afpo-aufnr,
maktxbj LIKE makt-maktx,
matnrbj LIKE makt-matnr,
matnrzz LIKE afpo-aufnr,
ddaufnr LIKE afpo-aufnr,""迭代寻找零部件订单号
color(4) TYPE c,""行颜色
field_style TYPE lvc_t_styl, " 为内表添加设置编辑状态所需的字段
bz(6),"文本,前工序未交货
END OF tp_itab1.
DATA:BEGIN OF gw_water,""此表用于查询一张订单的历史送货单记录
givenum LIKE zsonghuo-waternum,""送货单
aufnr LIKE zsonghuo-aufnr,
maufnr LIKE zsonghuo-maufnr,
matnr LIKE zsonghuo-matnr,
END OF gw_water.
DATA:gt_water LIKE SORTED TABLE OF gw_water WITH UNIQUE KEY givenum aufnr maufnr matnr.
TYPES:""SF分页条件
BEGIN OF tp_head,
waternum LIKE zsonghuo-waternum,
fevor2 LIKE marc-fevor,
fevor1 LIKE marc-fevor,
txt LIKE t024f-txt,
txt2 LIKE t024f-txt,
sdate LIKE sy-datlo,
bstnk LIKE vbkd-bstkd,
normt LIKE mara-normt,
bstdk_e LIKE vbkd-bstdk_e,
maabc LIKE marc-maabc,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
ztext(400) TYPE c,
tuhao LIKE zpartappend-tuhao,
bismt LIKE mara-bismt,
shmengeall(13) TYPE c,""总箱数
END OF tp_head.
*""不挂工单的组件获取 start
*TYPES:BEGIN OF tp_zj,
*maufnr LIKE afko-maufnr,
*END OF tp_zj.""筛选后生产订单号
*TYPES:BEGIN OF tp_mauresb,
*aufnr LIKE resb-aufnr,
*matnr LIKE resb-matnr,
*kdauf LIKE afpo-kdauf,
*kdpos LIKE afpo-kdpos,
*rsnum LIKE resb-rsnum,
*rspos LIKE resb-rspos,
*checkaufnr(1) TYPE c,
*END OF tp_mauresb.""获取后生产订单号对应的组件
*DATA:wa_itabzj TYPE tp_zj,
* itabzj TYPE TABLE OF tp_zj.
*DATA:wa_mauresb TYPE tp_mauresb,
* itabresb TYPE TABLE OF tp_mauresb.
""不挂工单的组件获取 end
DATA:itabvbeln TYPE TABLE OF tp_itab1 WITH HEADER LINE.""后生产订单状态判断
DATA:wa_head TYPE tp_head,
gt_head TYPE TABLE OF tp_head.""SF分页
DATA:wa_headb TYPE tp_head,
gt_headb TYPE TABLE OF tp_head.""SF分页
DATA:wa_itabxh TYPE tp_itab1,
itabxh TYPE TABLE OF tp_itab1,""SF序号判断表
wa_itabxhnew TYPE tp_itab1,
itabxhnew TYPE TABLE OF tp_itab1.
* wa_itabunder TYPE tp_itab1, ""最下级子订单临时表
* itabunder TYPE TABLE OF tp_itab1.
**********************
DATA: wa_itab1 TYPE tp_itab1,
itab1 LIKE wa_itab1 OCCURS 0,""ALV主数据
***********************
wa_itab2 TYPE zgive,""临时表用于打印储存数据
itab2 TYPE TABLE OF zgive.
FIELD-SYMBOLS: <wa> TYPE tp_itab1.
DATA: t_status LIKE jstat OCCURS 0 WITH HEADER LINE,
gw_status TYPE jstat.
""---------------------
TYPES: BEGIN OF tp_resb ,
rsnum TYPE resb-rsnum,
aufnr TYPE resb-aufnr,
matnr TYPE resb-matnr,
xloek TYPE resb-xloek,
objnr TYPE resb-objnr,
beskz TYPE marc-beskz,
END OF tp_resb.""判断本工序是否做261发料
DATA: wa_resb TYPE tp_resb,
it_resb LIKE wa_resb OCCURS 0.
DATA:BEGIN OF jestls OCCURS 0,
objnr LIKE jest-objnr,
END OF jestls.""jest临时表
""----------------------
*""2015 5 20效率优化
TYPES: BEGIN OF tp_resbls ,
enmng LIKE resb-enmng,
aufnr LIKE resb-aufnr,
matnr LIKE resb-matnr,
END OF tp_resbls.
TYPES: BEGIN OF tp_zsongls ,
ydayins LIKE zsonghuo-ydayins,
aufnr LIKE zsonghuo-aufnr,
END OF tp_zsongls.
DATA:zpartls LIKE zpartappend OCCURS 0 WITH HEADER LINE,
afpols LIKE afpo OCCURS 0 WITH HEADER LINE,
afkols LIKE afko OCCURS 0 WITH HEADER LINE,
t001lls LIKE t001l OCCURS 0 WITH HEADER LINE,
marals LIKE mara OCCURS 0 WITH HEADER LINE,
resbls TYPE TABLE OF tp_resbls WITH HEADER LINE,
t024fls LIKE t024f OCCURS 0 WITH HEADER LINE,
zsongls TYPE TABLE OF tp_zsongls WITH HEADER LINE,
afpozls LIKE afpo OCCURS 0 WITH HEADER LINE,
aufkls LIKE aufk OCCURS 0 WITH HEADER LINE.
*DATA it_resb TYPE SORTED TABLE OF tp_resb WITH UNIQUE KEY rsnum rspos.
SELECTION-SCREEN BEGIN OF BLOCK ye WITH FRAME TITLE t1.
SELECT-OPTIONS:
s_aufnr FOR afko-aufnr,
s_maufnr FOR afko-maufnr,
*s_aufnrz FOR afko-aufnr,
s_vbeln FOR afpo-kdauf.
PARAMETERS s_give LIKE zsonghuo-waternum.
SELECT-OPTIONS:
s_bstnk FOR vbkd-bstkd,
s_gstrp FOR afko-gstrp,
s_gltrp FOR afko-gltrp,
s_zzdate FOR afko-gstrp,
s_fevor2 FOR marc-fevor,
s_maktx FOR makt-maktx,
s_dispo FOR marc-dispo," by ljs 20150805
*s_maabc FOR marc-maabc,""暂时性隐藏AB分类
s_normt FOR mara-normt,
s_bismt FOR mara-bismt.
SELECTION-SCREEN END OF BLOCK ye.
SELECTION-SCREEN BEGIN OF BLOCK ye3 WITH FRAME TITLE t4.
SELECT-OPTIONS:s_matnr FOR afpo-matnr ,
s_fevor1 FOR marc-fevor OBLIGATORY.
SELECTION-SCREEN END OF BLOCK ye3.
SELECTION-SCREEN BEGIN OF BLOCK ye1 WITH FRAME TITLE t2.
PARAMETERS:
yida RADIOBUTTON GROUP r1,
weida RADIOBUTTON GROUP r1 DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK ye1.
SELECTION-SCREEN BEGIN OF BLOCK ye2 WITH FRAME TITLE t3.
SELECTION-SCREEN COMMENT /1(79) comm1.
SELECTION-SCREEN COMMENT /1(79) comm2.
SELECTION-SCREEN COMMENT /1(79) comm3.
SELECTION-SCREEN END OF BLOCK ye2.
INITIALIZATION.
t1 = '查询界面'.
t2 = '筛选界面'.
t3 = '注意事项 '.
t4 = '必输选项'.
comm1 = '1.送货单打印时有2种勾选行的方式,一个是最左侧的方形按钮拖动勾选,一个是白色的勾选按钮'.
comm2 = '2.如果在报表上筛选过数据准备打印时,请先点击‘反选’按钮然后再通过最左的方形按钮选中打印'.
comm3 = '3.打印中遇到卡纸问题,请记录下没有打到的纸张的送货单号去 YMM003 重新打印对应送货单号的送货单' .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_bstnk-low.
PERFORM fm_help USING 'S_BSTNK'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_bstnk-high.
PERFORM fm_help USING 'S_BSTNK'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_maktx-low.
PERFORM fm_help1 USING 'S_MAKTX'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_maktx-high.
PERFORM fm_help1 USING 'S_MAKTX'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_give.
PERFORM fm_help2 USING 'S_GIVE'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_bismt-low.
PERFORM fm_help3 USING 'S_BISMT'.
START-OF-SELECTION.
PERFORM get_data.
END-OF-SELECTION.
IF itab1 IS INITIAL.
MESSAGE '没有数据' TYPE 'I'.
ENDIF.
IF itab1 IS NOT INITIAL.
LOOP AT itab1 INTO wa_itab1.
IF wa_itab1-del = 'X' .
stylelin-fieldname = 'CHECK'. " 需要编辑的列名
* stylelin-fieldname = 'SEL1'.
stylelin-style = cl_gui_alv_grid=>mc_style_disabled. " 设置为不可编辑状态
APPEND stylelin TO wa_itab1-field_style.
CLEAR stylelin.
stylelin-fieldname = 'SEL1'.
stylelin-style = cl_gui_alv_grid=>mc_style_enabled. " 设置为可编辑状态
APPEND stylelin TO wa_itab1-field_style.
CLEAR stylelin.
MODIFY itab1 FROM wa_itab1.
CLEAR wa_itab1.
ELSE.
stylelin-fieldname = 'CHECK'. " 需要编辑的列名
stylelin-style = cl_gui_alv_grid=>mc_style_enabled. " 设置为可编辑状态
APPEND stylelin TO wa_itab1-field_style.
CLEAR stylelin.
stylelin-fieldname = 'SEL1'.
stylelin-style = cl_gui_alv_grid=>mc_style_enabled. " 设置为可编辑状态
APPEND stylelin TO wa_itab1-field_style.
CLEAR stylelin.
* wa_itab1-check = 'X'.
MODIFY itab1 FROM wa_itab1.
CLEAR wa_itab1.
ENDIF.
ENDLOOP.
PERFORM alv_data.
ENDIF.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_data.
""将AFKO对应选择屏幕数据导出到主数据内表开始筛选
PERFORM progress2.
SELECT
afko~aufnr afko~maufnr makt~matnr makt~maktx mara~bismt mara~meins afko~gstrp afko~gltrp
afpo~wemng marc~dispo afko~rsnum afpo~psmng afko~lead_aufnr
afko~fevor AS fevor1 marc~maabc mara~normt
INTO CORRESPONDING FIELDS OF TABLE itab1
FROM afpo
JOIN afko ON afpo~aufnr = afko~aufnr
JOIN aufk ON afpo~aufnr = aufk~aufnr
JOIN makt ON afpo~matnr = makt~matnr
JOIN mara ON afpo~matnr = mara~matnr
JOIN marc ON mara~matnr = marc~matnr
WHERE afko~aufnr IN s_aufnr
AND afko~gstrp IN s_gstrp
AND afko~gltrp IN s_gltrp
AND afko~fevor IN s_fevor1
AND afpo~matnr IN s_matnr
AND aufk~pstatus NOT LIKE '%DLFL%'
AND aufk~pstatus NOT LIKE '%锁定%'
AND aufk~pstatus NE ''
AND makt~maktx IN s_maktx
AND mara~bismt IN s_bismt
AND afko~lead_aufnr NE ''
AND marc~dispo in s_dispo."by ljs 20150803
* AND marc~maabc IN s_maabc.""暂时性隐藏AB分类
"" 判断是否为最下级子订单,并判断本工序生产订单状态
cout = 1."初始化进度
CLEAR line.
DESCRIBE TABLE itab1 LINES line."计算表进度
SELECT maufnr FROM afko INTO CORRESPONDING FIELDS OF TABLE afkols.""判断最下级子订单
SORT afkols BY maufnr."2分法排序
LOOP AT itab1 INTO wa_itab1.
* f = cout / line * 50 .
* succ = f.
* cout = cout + 1.
READ TABLE afkols WITH KEY maufnr = wa_itab1-aufnr BINARY SEARCH.""读取是否为最下级子订单 如果有数据 则为非最下级
IF sy-subrc EQ 0 .
MOVE '非最下级' TO wa_itab1-under."非下级订单判定
ENDIF.
CLEAR afkols.
MODIFY itab1 FROM wa_itab1 TRANSPORTING under.
* PERFORM progress USING succ.
ENDLOOP.
CLEAR afkols[].
SORT itab1 BY aufnr.
""抓删除标志及虚拟料
SELECT resb~rsnum resb~aufnr resb~matnr resb~xloek resb~objnr ""by hyz 2015 07 15添加状态判断
INTO TABLE it_resb FROM resb
JOIN marc ON resb~matnr = marc~matnr "有下级订单,但是没有送货过来的筛选出来,方面下面做判断
WHERE resb~dumps NE 'X'""虚拟标示
AND resb~rgekz NE 'X'""去掉反冲
AND resb~enmng EQ '' ""去掉提货数为0的
AND marc~beskz EQ 'E'
AND resb~DBSKZ eq 'E'
AND resb~baugr IN s_matnr.
SORT it_resb BY rsnum aufnr .
"检查本工序的生产订单有没有做261发料 如果没有就删除这张生产订单
SELECT objnr FROM jest INTO TABLE jestls WHERE
stat EQ 'I0013' AND inact EQ space .""判断JEST是否有TECO OR DLFI的单
SORT jestls BY objnr.
LOOP AT it_resb INTO wa_resb WHERE xloek EQ 'X'.
* SELECT SINGLE * FROM jest
* WHERE objnr EQ wa_resb-objnr
* AND stat EQ 'I0013' " DELETE
* AND inact EQ space.
READ TABLE jestls WITH KEY objnr = wa_resb-objnr BINARY SEARCH. ""读取 如果有 则剔除出判断发料的行列
IF sy-subrc EQ 0.
DELETE it_resb.
CLEAR jestls.
ENDIF.
CLEAR jestls.
ENDLOOP.""by hyz 2015 07 15添加状态判断是否发料
CLEAR wa_resb.
CLEAR jestls[].""释放缓存
LOOP AT itab1 ASSIGNING <wa> WHERE under EQ '非最下级'.
READ TABLE it_resb INTO wa_resb WITH KEY
rsnum = <wa>-rsnum aufnr = <wa>-aufnr BINARY SEARCH .
IF sy-subrc EQ 0.
<wa>-del = 'X'.
ENDIF.
ENDLOOP.
* DELETE itab1 WHERE del EQ 'X'. "将没有送货过来的订单删掉 by ljs 20150807放出来
CLEAR it_resb.""清除resb临时表 释放缓存
SELECT afpo~aufnr afpo~kdauf afpo~kdpos FROM afpo
JOIN aufk ON afpo~aufnr = aufk~aufnr
INTO CORRESPONDING FIELDS OF TABLE afpols
WHERE aufk~pstatus NOT LIKE '%TECO%'""去除3个状态订单
AND aufk~pstatus NOT LIKE '%DLFL%'
AND aufk~pstatus NOT LIKE '%锁定%'
AND aufk~pstatus NE '' AND afpo~kdauf NE '' AND afpo~kdpos NE '' .
SORT afpols BY kdauf kdpos .
""抓后生产订单
LOOP AT itab1 INTO wa_itab1 WHERE maufnr EQ '&
TABLES:afko,makt,mara,afpo,zprint1,marc,zsonghuo,mseg,zposo,vbkd,aufk,jest,zusr21.
DATA edit(1) TYPE c.""消息框确认
DATA: l_grid TYPE REF TO cl_gui_alv_grid.""ALV上按钮实时刷新内表
DATA: line TYPE i,
succ TYPE i,
cout TYPE i,
f TYPE p DECIMALS 5.""进度条
DATA:num2(5) TYPE n .""计算SMART FORM 上的序号显示
DATA:p_oid TYPE char10,""送货单号生成(流水号)
num TYPE i VALUE 1.""ALV上的序号
DATA: option TYPE ssfcresop.""SF使用参数
*DATA jobinfo TYPE ssfcresop.
DATA: "it_fieldcat TYPE slis_t_fieldcat_alv,"by ljs 20150807
it_fieldcat TYPE LVC_T_FCAT,"by ljs 20150807
wa_fieldcat LIKE LINE OF it_fieldcat,
gs_layout TYPE lvc_s_layo."by ljs 20150807
DATA stylelin TYPE lvc_s_styl."by ljs 20150807
"gs_layout TYPE slis_layout_alv.""ALV
*gs_layout-info_fieldname = 'COLOR'.
gs_layout-info_fname = 'COLOR'.
DATA:wa_poso TYPE zposo
,itabposo TYPE TABLE OF zposo,
itabzm TYPE TABLE OF zposo,""抓客户订单、后工序订单
wa_itabzm TYPE zposo.
DATA: l_fm_name TYPE rs38l_fnam,
ls_composer_param TYPE ssfcompop.
DATA: ls_control_param TYPE ssfctrlop,""SF定义
l_tdsfname TYPE tdsfname.
DATA:wa_zwater LIKE zsonghuo,
itabwater LIKE zsonghuo OCCURS 0.""储存数据到自建表
DATA:wotnr TYPE p."储存星期几
DATA i_calendar1 TYPE tfacd-ident."工厂日历
DATA: no_workingday,holiday.""假日
TYPES:
BEGIN OF tp_itab1,
fevor2 LIKE marc-fevor, ""收货车间
num(5) TYPE n, ""序号
aufnr LIKE afko-aufnr , "前生产订单号
maufnr LIKE afko-maufnr, ""后生产订单号
matnr LIKE makt-matnr, ""物料编码
maktx LIKE makt-maktx, "名称
bismt LIKE mara-bismt, ""颜色
ztext(400),
wrkst LIKE mara-wrkst, "材质
tuhao LIKE zpartappend-tuhao,""图号
meins LIKE mara-meins, ""计量单位
vbeln LIKE afpo-kdauf,""销售订单号
posnr LIKE afpo-kdpos,""销售订单行项目号
gstrp LIKE afko-gstrp, ""工单开始时间
gltrp LIKE afko-gltrp, ""工单完成时间
fevor1 LIKE marc-fevor, ""送货车间
gamng LIKE afko-gamng,""订单数量总计
gamng_t(13) TYPE c,""订单数量去0
enmng TYPE resb-enmng,""累积交货数量
enmng_t(13) TYPE c,""交货数量去0
ydayins(13) TYPE c,""已打印数去0
xsonghuos(13) TYPE c ,""需送货数
lgort LIKE afpo-lgort,
lgobe LIKE t001l-lgobe, ""库位描述
waternum LIKE zsonghuo-waternum,""送货单号
check TYPE c, ""勾选
sel1(1) TYPE c,""勾选2
coltab TYPE slis_t_specialcol_alv, ""ALV单元格颜色变量
meins_t(3) TYPE c,""单位转换
qf(10) TYPE c, ""区分子母单
lead_aufnr TYPE afko-lead_aufnr,""顶层
under(10) TYPE c,""是否最下级子订单
*objnr LIKE aufk-objnr, "订单的状态号码 本工序
*objnrr LIKE aufk-objnr,""对象号
*status(40) TYPE c, "状态
*textzt(10) TYPE c,""状态文本
*status2(40) TYPE c,
*textzt2(10) TYPE c,
dispo LIKE marc-dispo,""MRP控制着
txt LIKE t024f-txt,""送货车间描述
txt2 LIKE t024f-txt,""收货车间描述
rsnum TYPE afko-rsnum, "预留号
del,""删除标记虚拟料
bstnk LIKE vbkd-bstkd,""客户订单号
maufnrr TYPE afko-maufnr,""抓顶层生产订单号
*zbstnk(400),""客户订单号计算
length TYPE i,""客户订单号长度1
length2 TYPE i,""客户订单号长度2
zzbstnk(400),""赋值
rsnumre LIKE resb-rsnum,""预留号
rsposre LIKE resb-rspos,""行项目
givenum(400),""送货单号显示ALV
aufnrz LIKE afko-aufnr,""总装生产订单
zzgstrp LIKE afko-gstrp,""总装上线日期
""527 AB分类
normt LIKE mara-normt,
bstdk_e LIKE vbkd-bstdk_e,
*maabc LIKE marc-maabc, ""暂时性隐藏AB分类
shmengeall(13) TYPE c,""总箱数
""by hyz 2015 6 12 加总装前零部件名称
aufnrbj LIKE afpo-aufnr,
maktxbj LIKE makt-maktx,
matnrbj LIKE makt-matnr,
matnrzz LIKE afpo-aufnr,
ddaufnr LIKE afpo-aufnr,""迭代寻找零部件订单号
color(4) TYPE c,""行颜色
field_style TYPE lvc_t_styl, " 为内表添加设置编辑状态所需的字段
bz(6),"文本,前工序未交货
END OF tp_itab1.
DATA:BEGIN OF gw_water,""此表用于查询一张订单的历史送货单记录
givenum LIKE zsonghuo-waternum,""送货单
aufnr LIKE zsonghuo-aufnr,
maufnr LIKE zsonghuo-maufnr,
matnr LIKE zsonghuo-matnr,
END OF gw_water.
DATA:gt_water LIKE SORTED TABLE OF gw_water WITH UNIQUE KEY givenum aufnr maufnr matnr.
TYPES:""SF分页条件
BEGIN OF tp_head,
waternum LIKE zsonghuo-waternum,
fevor2 LIKE marc-fevor,
fevor1 LIKE marc-fevor,
txt LIKE t024f-txt,
txt2 LIKE t024f-txt,
sdate LIKE sy-datlo,
bstnk LIKE vbkd-bstkd,
normt LIKE mara-normt,
bstdk_e LIKE vbkd-bstdk_e,
maabc LIKE marc-maabc,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
ztext(400) TYPE c,
tuhao LIKE zpartappend-tuhao,
bismt LIKE mara-bismt,
shmengeall(13) TYPE c,""总箱数
END OF tp_head.
*""不挂工单的组件获取 start
*TYPES:BEGIN OF tp_zj,
*maufnr LIKE afko-maufnr,
*END OF tp_zj.""筛选后生产订单号
*TYPES:BEGIN OF tp_mauresb,
*aufnr LIKE resb-aufnr,
*matnr LIKE resb-matnr,
*kdauf LIKE afpo-kdauf,
*kdpos LIKE afpo-kdpos,
*rsnum LIKE resb-rsnum,
*rspos LIKE resb-rspos,
*checkaufnr(1) TYPE c,
*END OF tp_mauresb.""获取后生产订单号对应的组件
*DATA:wa_itabzj TYPE tp_zj,
* itabzj TYPE TABLE OF tp_zj.
*DATA:wa_mauresb TYPE tp_mauresb,
* itabresb TYPE TABLE OF tp_mauresb.
""不挂工单的组件获取 end
DATA:itabvbeln TYPE TABLE OF tp_itab1 WITH HEADER LINE.""后生产订单状态判断
DATA:wa_head TYPE tp_head,
gt_head TYPE TABLE OF tp_head.""SF分页
DATA:wa_headb TYPE tp_head,
gt_headb TYPE TABLE OF tp_head.""SF分页
DATA:wa_itabxh TYPE tp_itab1,
itabxh TYPE TABLE OF tp_itab1,""SF序号判断表
wa_itabxhnew TYPE tp_itab1,
itabxhnew TYPE TABLE OF tp_itab1.
* wa_itabunder TYPE tp_itab1, ""最下级子订单临时表
* itabunder TYPE TABLE OF tp_itab1.
**********************
DATA: wa_itab1 TYPE tp_itab1,
itab1 LIKE wa_itab1 OCCURS 0,""ALV主数据
***********************
wa_itab2 TYPE zgive,""临时表用于打印储存数据
itab2 TYPE TABLE OF zgive.
FIELD-SYMBOLS: <wa> TYPE tp_itab1.
DATA: t_status LIKE jstat OCCURS 0 WITH HEADER LINE,
gw_status TYPE jstat.
""---------------------
TYPES: BEGIN OF tp_resb ,
rsnum TYPE resb-rsnum,
aufnr TYPE resb-aufnr,
matnr TYPE resb-matnr,
xloek TYPE resb-xloek,
objnr TYPE resb-objnr,
beskz TYPE marc-beskz,
END OF tp_resb.""判断本工序是否做261发料
DATA: wa_resb TYPE tp_resb,
it_resb LIKE wa_resb OCCURS 0.
DATA:BEGIN OF jestls OCCURS 0,
objnr LIKE jest-objnr,
END OF jestls.""jest临时表
""----------------------
*""2015 5 20效率优化
TYPES: BEGIN OF tp_resbls ,
enmng LIKE resb-enmng,
aufnr LIKE resb-aufnr,
matnr LIKE resb-matnr,
END OF tp_resbls.
TYPES: BEGIN OF tp_zsongls ,
ydayins LIKE zsonghuo-ydayins,
aufnr LIKE zsonghuo-aufnr,
END OF tp_zsongls.
DATA:zpartls LIKE zpartappend OCCURS 0 WITH HEADER LINE,
afpols LIKE afpo OCCURS 0 WITH HEADER LINE,
afkols LIKE afko OCCURS 0 WITH HEADER LINE,
t001lls LIKE t001l OCCURS 0 WITH HEADER LINE,
marals LIKE mara OCCURS 0 WITH HEADER LINE,
resbls TYPE TABLE OF tp_resbls WITH HEADER LINE,
t024fls LIKE t024f OCCURS 0 WITH HEADER LINE,
zsongls TYPE TABLE OF tp_zsongls WITH HEADER LINE,
afpozls LIKE afpo OCCURS 0 WITH HEADER LINE,
aufkls LIKE aufk OCCURS 0 WITH HEADER LINE.
*DATA it_resb TYPE SORTED TABLE OF tp_resb WITH UNIQUE KEY rsnum rspos.
SELECTION-SCREEN BEGIN OF BLOCK ye WITH FRAME TITLE t1.
SELECT-OPTIONS:
s_aufnr FOR afko-aufnr,
s_maufnr FOR afko-maufnr,
*s_aufnrz FOR afko-aufnr,
s_vbeln FOR afpo-kdauf.
PARAMETERS s_give LIKE zsonghuo-waternum.
SELECT-OPTIONS:
s_bstnk FOR vbkd-bstkd,
s_gstrp FOR afko-gstrp,
s_gltrp FOR afko-gltrp,
s_zzdate FOR afko-gstrp,
s_fevor2 FOR marc-fevor,
s_maktx FOR makt-maktx,
s_dispo FOR marc-dispo," by ljs 20150805
*s_maabc FOR marc-maabc,""暂时性隐藏AB分类
s_normt FOR mara-normt,
s_bismt FOR mara-bismt.
SELECTION-SCREEN END OF BLOCK ye.
SELECTION-SCREEN BEGIN OF BLOCK ye3 WITH FRAME TITLE t4.
SELECT-OPTIONS:s_matnr FOR afpo-matnr ,
s_fevor1 FOR marc-fevor OBLIGATORY.
SELECTION-SCREEN END OF BLOCK ye3.
SELECTION-SCREEN BEGIN OF BLOCK ye1 WITH FRAME TITLE t2.
PARAMETERS:
yida RADIOBUTTON GROUP r1,
weida RADIOBUTTON GROUP r1 DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK ye1.
SELECTION-SCREEN BEGIN OF BLOCK ye2 WITH FRAME TITLE t3.
SELECTION-SCREEN COMMENT /1(79) comm1.
SELECTION-SCREEN COMMENT /1(79) comm2.
SELECTION-SCREEN COMMENT /1(79) comm3.
SELECTION-SCREEN END OF BLOCK ye2.
INITIALIZATION.
t1 = '查询界面'.
t2 = '筛选界面'.
t3 = '注意事项 '.
t4 = '必输选项'.
comm1 = '1.送货单打印时有2种勾选行的方式,一个是最左侧的方形按钮拖动勾选,一个是白色的勾选按钮'.
comm2 = '2.如果在报表上筛选过数据准备打印时,请先点击‘反选’按钮然后再通过最左的方形按钮选中打印'.
comm3 = '3.打印中遇到卡纸问题,请记录下没有打到的纸张的送货单号去 YMM003 重新打印对应送货单号的送货单' .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_bstnk-low.
PERFORM fm_help USING 'S_BSTNK'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_bstnk-high.
PERFORM fm_help USING 'S_BSTNK'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_maktx-low.
PERFORM fm_help1 USING 'S_MAKTX'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_maktx-high.
PERFORM fm_help1 USING 'S_MAKTX'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_give.
PERFORM fm_help2 USING 'S_GIVE'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_bismt-low.
PERFORM fm_help3 USING 'S_BISMT'.
START-OF-SELECTION.
PERFORM get_data.
END-OF-SELECTION.
IF itab1 IS INITIAL.
MESSAGE '没有数据' TYPE 'I'.
ENDIF.
IF itab1 IS NOT INITIAL.
LOOP AT itab1 INTO wa_itab1.
IF wa_itab1-del = 'X' .
stylelin-fieldname = 'CHECK'. " 需要编辑的列名
* stylelin-fieldname = 'SEL1'.
stylelin-style = cl_gui_alv_grid=>mc_style_disabled. " 设置为不可编辑状态
APPEND stylelin TO wa_itab1-field_style.
CLEAR stylelin.
stylelin-fieldname = 'SEL1'.
stylelin-style = cl_gui_alv_grid=>mc_style_enabled. " 设置为可编辑状态
APPEND stylelin TO wa_itab1-field_style.
CLEAR stylelin.
MODIFY itab1 FROM wa_itab1.
CLEAR wa_itab1.
ELSE.
stylelin-fieldname = 'CHECK'. " 需要编辑的列名
stylelin-style = cl_gui_alv_grid=>mc_style_enabled. " 设置为可编辑状态
APPEND stylelin TO wa_itab1-field_style.
CLEAR stylelin.
stylelin-fieldname = 'SEL1'.
stylelin-style = cl_gui_alv_grid=>mc_style_enabled. " 设置为可编辑状态
APPEND stylelin TO wa_itab1-field_style.
CLEAR stylelin.
* wa_itab1-check = 'X'.
MODIFY itab1 FROM wa_itab1.
CLEAR wa_itab1.
ENDIF.
ENDLOOP.
PERFORM alv_data.
ENDIF.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_data.
""将AFKO对应选择屏幕数据导出到主数据内表开始筛选
PERFORM progress2.
SELECT
afko~aufnr afko~maufnr makt~matnr makt~maktx mara~bismt mara~meins afko~gstrp afko~gltrp
afpo~wemng marc~dispo afko~rsnum afpo~psmng afko~lead_aufnr
afko~fevor AS fevor1 marc~maabc mara~normt
INTO CORRESPONDING FIELDS OF TABLE itab1
FROM afpo
JOIN afko ON afpo~aufnr = afko~aufnr
JOIN aufk ON afpo~aufnr = aufk~aufnr
JOIN makt ON afpo~matnr = makt~matnr
JOIN mara ON afpo~matnr = mara~matnr
JOIN marc ON mara~matnr = marc~matnr
WHERE afko~aufnr IN s_aufnr
AND afko~gstrp IN s_gstrp
AND afko~gltrp IN s_gltrp
AND afko~fevor IN s_fevor1
AND afpo~matnr IN s_matnr
AND aufk~pstatus NOT LIKE '%DLFL%'
AND aufk~pstatus NOT LIKE '%锁定%'
AND aufk~pstatus NE ''
AND makt~maktx IN s_maktx
AND mara~bismt IN s_bismt
AND afko~lead_aufnr NE ''
AND marc~dispo in s_dispo."by ljs 20150803
* AND marc~maabc IN s_maabc.""暂时性隐藏AB分类
"" 判断是否为最下级子订单,并判断本工序生产订单状态
cout = 1."初始化进度
CLEAR line.
DESCRIBE TABLE itab1 LINES line."计算表进度
SELECT maufnr FROM afko INTO CORRESPONDING FIELDS OF TABLE afkols.""判断最下级子订单
SORT afkols BY maufnr."2分法排序
LOOP AT itab1 INTO wa_itab1.
* f = cout / line * 50 .
* succ = f.
* cout = cout + 1.
READ TABLE afkols WITH KEY maufnr = wa_itab1-aufnr BINARY SEARCH.""读取是否为最下级子订单 如果有数据 则为非最下级
IF sy-subrc EQ 0 .
MOVE '非最下级' TO wa_itab1-under."非下级订单判定
ENDIF.
CLEAR afkols.
MODIFY itab1 FROM wa_itab1 TRANSPORTING under.
* PERFORM progress USING succ.
ENDLOOP.
CLEAR afkols[].
SORT itab1 BY aufnr.
""抓删除标志及虚拟料
SELECT resb~rsnum resb~aufnr resb~matnr resb~xloek resb~objnr ""by hyz 2015 07 15添加状态判断
INTO TABLE it_resb FROM resb
JOIN marc ON resb~matnr = marc~matnr "有下级订单,但是没有送货过来的筛选出来,方面下面做判断
WHERE resb~dumps NE 'X'""虚拟标示
AND resb~rgekz NE 'X'""去掉反冲
AND resb~enmng EQ '' ""去掉提货数为0的
AND marc~beskz EQ 'E'
AND resb~DBSKZ eq 'E'
AND resb~baugr IN s_matnr.
SORT it_resb BY rsnum aufnr .
"检查本工序的生产订单有没有做261发料 如果没有就删除这张生产订单
SELECT objnr FROM jest INTO TABLE jestls WHERE
stat EQ 'I0013' AND inact EQ space .""判断JEST是否有TECO OR DLFI的单
SORT jestls BY objnr.
LOOP AT it_resb INTO wa_resb WHERE xloek EQ 'X'.
* SELECT SINGLE * FROM jest
* WHERE objnr EQ wa_resb-objnr
* AND stat EQ 'I0013' " DELETE
* AND inact EQ space.
READ TABLE jestls WITH KEY objnr = wa_resb-objnr BINARY SEARCH. ""读取 如果有 则剔除出判断发料的行列
IF sy-subrc EQ 0.
DELETE it_resb.
CLEAR jestls.
ENDIF.
CLEAR jestls.
ENDLOOP.""by hyz 2015 07 15添加状态判断是否发料
CLEAR wa_resb.
CLEAR jestls[].""释放缓存
LOOP AT itab1 ASSIGNING <wa> WHERE under EQ '非最下级'.
READ TABLE it_resb INTO wa_resb WITH KEY
rsnum = <wa>-rsnum aufnr = <wa>-aufnr BINARY SEARCH .
IF sy-subrc EQ 0.
<wa>-del = 'X'.
ENDIF.
ENDLOOP.
* DELETE itab1 WHERE del EQ 'X'. "将没有送货过来的订单删掉 by ljs 20150807放出来
CLEAR it_resb.""清除resb临时表 释放缓存
SELECT afpo~aufnr afpo~kdauf afpo~kdpos FROM afpo
JOIN aufk ON afpo~aufnr = aufk~aufnr
INTO CORRESPONDING FIELDS OF TABLE afpols
WHERE aufk~pstatus NOT LIKE '%TECO%'""去除3个状态订单
AND aufk~pstatus NOT LIKE '%DLFL%'
AND aufk~pstatus NOT LIKE '%锁定%'
AND aufk~pstatus NE '' AND afpo~kdauf NE '' AND afpo~kdpos NE '' .
SORT afpols BY kdauf kdpos .
""抓后生产订单
LOOP AT itab1 INTO wa_itab1 WHERE maufnr EQ '&