一段代码

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 '&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值