• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
^ω^SAp傻X^o^
博客园    首页    新随笔    联系   管理    订阅  订阅
工艺路线查询报表

ZPPRQROUT01TOP:

*&---------------------------------------------------------------------*
*&  包含                ZPPRQROUT01TOP
*&---------------------------------------------------------------------*

*---------------------------------------------------------------------*
*  Tables Declare                                                     *
*---------------------------------------------------------------------*
TABLES : MAPL,TVM1T, MAKT, MARA, PLFLD, PLKO, PLPO, PLPOD.
*---------------------------------------------------------------------*
*  Internal Table Definition                                          *
*---------------------------------------------------------------------*
DATA: BEGIN OF ITAB OCCURS 0,
        MATNR LIKE MAPL-MATNR,    " 物料号
        MAKTX LIKE MAKT-MAKTX,    " 物料描述
        VBELN LIKE MAPL-VBELN,    "2011-05-12       销售订单
        POSNR LIKE MAPL-POSNR,    "2011-05-12       销售订单行项目
        WERKS LIKE MAPL-WERKS,    " 工厂
        DATUV LIKE MAPL-DATUV,    " 有效起始日期
        DATUB LIKE PLFLD-DATUB,   " 有效截止日期
        PLNTY LIKE MAPL-PLNTY,    " 任务清单类型
        PLNNR LIKE MAPL-PLNNR,    " 任务清单组码
        PLNAL LIKE MAPL-PLNAL,    " 组计数器
        PLNKN LIKE PLPO-PLNKN,     "节点
        ZAEHL LIKE MAPL-ZAEHL,    "计数器
        VERWE LIKE PLKO-VERWE,    " 任务清单使用
        STATU LIKE PLKO-STATU,    " 状态
        BMSCH LIKE PLPO-BMSCH,    " 基本数量
        MEINH LIKE PLPO-MEINH,    " 作业/工序的计量单位
        VORNR LIKE PLPO-VORNR,    " 操作/活动编号
        STEUS LIKE PLPO-STEUS,    " 控制码
        WERKS_OP LIKE PLPO-WERKS, "工序工厂
        ARBPL LIKE PLPOD-ARBPL,   " 工作中心
        KTSCH LIKE PLPO-KTSCH,    "工序代码
        LTXA1 LIKE PLPO-LTXA1,    " 工序短文本
        LGTXT TYPE STRING,        "工序长文本
        VGW01 LIKE PLPO-VGW01,    " 标准值
        VGW02 LIKE PLPO-VGW02,    " 标准值
        VGW03 LIKE PLPO-VGW03,    " 标准值
        VGW04 LIKE PLPO-VGW04,    " 标准值
        VGW05 LIKE PLPO-VGW05,    " 标准值
        VGW06 LIKE PLPO-VGW06,    " 标准值
        VGE01 LIKE PLPO-VGE01,    "标准值计量单位
        VGE02 LIKE PLPO-VGE02,    "标准值计量单位
        VGE03 LIKE PLPO-VGE03,    "标准值计量单位
        VGE04 LIKE PLPO-VGE04,    "标准值计量单位
        VGE05 LIKE PLPO-VGE05,    "标准值计量单位
        VGE06 LIKE PLPO-VGE06,    "标准值计量单位
        USR00 TYPE USRCHAR20,     "原定额
        ANZMA LIKE PLPO-ANZMA,    "雇员数
        SPMUS LIKE PLPO-SPMUS,    " 所需分解
        SPLIM LIKE PLPO-SPLIM,    "分解数
        UEMUS LIKE PLPO-UEMUS,    " 要求重叠
        MINWE LIKE PLPO-MINWE,    " 最小发送数量
        FRDLB LIKE PLPO-FRDLB,    " 指示符:带外协加工的外部处理工序
        INFNR LIKE PLPO-INFNR,    " 采购信息记录的编号
        EKORG LIKE PLPO-EKORG,    " 采购组织
        MATKL LIKE PLPO-MATKL,    " 物料组
        EKGRP LIKE PLPO-EKGRP,    " 外协加工的采购组
        PLIFZ LIKE PLPO-PLIFZ,    " 计划的天数内交货
        PEINH LIKE PLPO-PEINH,    " 价格单位
        PREIS LIKE PLPO-PREIS,    " 采购信息记录中的净价
        SAKTO LIKE PLPO-SAKTO,    " 成本要素
        WAERS LIKE PLPO-WAERS,    " 货币码
        KTEXT LIKE PLKO-KTEXT,    " 任务清单描述
        CKSELKZ LIKE PLPO-CKSELKZ,  "成本核算相关
      END OF ITAB.

***-----
"DATA:ITAB_1 LIKE ITAB OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF ITAB_1 OCCURS 0,
        MATNR LIKE MAPL-MATNR,    " 物料号
        MAKTX LIKE MAKT-MAKTX,    " 物料描述
        "VBELN LIKE MAPL-VBELN,    "2011-05-12       销售订单
        "POSNR LIKE MAPL-POSNR,    "2011-05-12       销售订单行项目
        WERKS LIKE MAPL-WERKS,    " 工厂
        DATUV LIKE MAPL-DATUV,    " 有效起始日期
        DATUB LIKE PLFLD-DATUB,   " 有效截止日期
        "PLNTY LIKE MAPL-PLNTY,    " 任务清单类型
        PLNNR LIKE MAPL-PLNNR,    " 任务清单组码
        PLNAL LIKE MAPL-PLNAL,    " 组计数器
        "PLNKN LIKE PLPO-PLNKN,     "节点
        "ZAEHL LIKE MAPL-ZAEHL,    "计数器
        VERWE LIKE PLKO-VERWE,    " 任务清单使用
        STATU LIKE PLKO-STATU,    " 状态
        "BMSCH LIKE PLPO-BMSCH,    " 基本数量
        "MEINH LIKE PLPO-MEINH,    " 作业/工序的计量单位
        "VORNR LIKE PLPO-VORNR,    " 操作/活动编号
        "STEUS LIKE PLPO-STEUS,    " 控制码
        "WERKS_OP LIKE PLPO-WERKS, "工序工厂
        "ARBPL LIKE PLPOD-ARBPL,   " 工作中心
        "KTSCH LIKE PLPO-KTSCH,    "工序代码
        "LTXA1 LIKE PLPO-LTXA1,    " 工序短文本
        "LGTXT TYPE STRING,        "工序长文本
        VGW01 LIKE PLPO-VGW01,    " 标准值
        VGW02 LIKE PLPO-VGW02,    " 标准值
        VGW04 LIKE PLPO-VGW04,    " 标准值
        "VGW04 LIKE PLPO-VGW04,    " 标准值
        "VGW05 LIKE PLPO-VGW05,    " 标准值
        "VGW06 LIKE PLPO-VGW06,    " 标准值
        "VGE01 LIKE PLPO-VGE01,    "标准值计量单位
        "VGE02 LIKE PLPO-VGE02,    "标准值计量单位
        "VGE03 LIKE PLPO-VGE03,    "标准值计量单位
        "VGE04 LIKE PLPO-VGE04,    "标准值计量单位
        "VGE05 LIKE PLPO-VGE05,    "标准值计量单位
        "VGE06 LIKE PLPO-VGE06,    "标准值计量单位
        "USR00 TYPE USRCHAR20,     "原定额
        "SPMUS LIKE PLPO-SPMUS,    " 所需分解
        "UEMUS LIKE PLPO-UEMUS,    " 要求重叠
        "MINWE LIKE PLPO-MINWE,    " 最小发送数量
        "FRDLB LIKE PLPO-FRDLB,    " 指示符:带外协加工的外部处理工序
        "INFNR LIKE PLPO-INFNR,    " 采购信息记录的编号
        "EKORG LIKE PLPO-EKORG,    " 采购组织
        "MATKL LIKE PLPO-MATKL,    " 物料组
        "EKGRP LIKE PLPO-EKGRP,    " 外协加工的采购组
        "PLIFZ LIKE PLPO-PLIFZ,    " 计划的天数内交货
        "PEINH LIKE PLPO-PEINH,    " 价格单位
        "PREIS LIKE PLPO-PREIS,    " 采购信息记录中的净价
        "SAKTO LIKE PLPO-SAKTO,    " 成本要素
        "WAERS LIKE PLPO-WAERS,    " 货币码
        KTEXT LIKE PLKO-KTEXT,    " 任务清单描述
        "CKSELKZ LIKE PLPO-CKSELKZ,  "成本核算相关
      END OF ITAB_1.


***-----

DATA: BEGIN OF IT_MAPL OCCURS 0,
        MATNR LIKE MAPL-MATNR,    " 物料号
        WERKS LIKE MAPL-WERKS,    " 工厂
        VBELN LIKE MAPL-VBELN,    "2011-05-12       销售订单
        POSNR LIKE MAPL-POSNR,    "2011-05-12       销售订单行项目
        PLNTY LIKE MAPL-PLNTY,    " 任务清单类型
        PLNNR LIKE MAPL-PLNNR,    " 任务清单组码
        PLNAL LIKE MAPL-PLNAL,    " 组计数器
        ZKRIZ LIKE MAPL-ZKRIZ,    " 附加条件计数器
        ZAEHL LIKE MAPL-ZAEHL,    " 内部计数器
        DATUV LIKE MAPL-DATUV,    " 有效起始日期
        LOEKZ LIKE MAPL-LOEKZ,    " 删除标识
      END OF IT_MAPL.

DATA: BEGIN OF IT_PLKO OCCURS 0,
        PLNTY LIKE PLKO-PLNTY,
        PLNNR LIKE PLKO-PLNNR,
*          plnkn LIKE plko-plnkn,
        PLNAL LIKE PLKO-PLNAL,
        PLNKN LIKE PLPO-PLNKN,     "节点
        ZAEHL LIKE PLKO-ZAEHL,
        DATUV LIKE PLKO-DATUV,
        TECHV LIKE PLKO-TECHV,
        AENNR LIKE PLKO-AENNR,
        LOEKZ LIKE PLKO-LOEKZ,
        VERWE LIKE PLKO-VERWE,    " 任务清单使用
        STATU LIKE PLKO-STATU,    " 状态
        BMSCH LIKE PLPO-BMSCH,    " 基本数量
        MEINH LIKE PLPO-MEINH,    " 计量单位
        VORNR LIKE PLPO-VORNR,    " 操作/活动编号
        STEUS LIKE PLPO-STEUS,    " 控制码
        KTSCH LIKE PLPO-KTSCH,    "工序代码
        LTXA1 LIKE PLPO-LTXA1,    " 工序短文本
*          arbpl LIKE plpo-arbpl,
      END OF IT_PLKO.
*----------------------------------------------------------------------*
* ALV Definition                                                       *
*----------------------------------------------------------------------*
TYPE-POOLS: SLIS.

DATA: G_REPID        TYPE SY-REPID,
      GT_FIELDCAT    TYPE SLIS_T_FIELDCAT_ALV,
      GT_LAYOUT      TYPE SLIS_LAYOUT_ALV,
      GT_SORTINFO    TYPE SLIS_SORTINFO_ALV,
      GT_LVC_TITLE   TYPE LVC_TITLE,
      GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
      GT_EVENTS      TYPE SLIS_T_EVENT,
      GT_FCAT        TYPE LVC_T_FCAT,
      GT_TABLE       TYPE REF TO DATA,
      GS_SETTINGS    TYPE LVC_S_GLAY,
      F2CODE         LIKE SY-UCOMM VALUE '&TEA'.

DATA: G_STATUS_FORM  TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET',
      G_COMMAND_FORM TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.
DATA: EVENTS         TYPE SLIS_ALV_EVENT OCCURS 0 WITH HEADER LINE.
*---------------------------------------------------------------------*
*  Gobal Definition                                                   *
*---------------------------------------------------------------------*
DATA       G_POS   TYPE I.

*---------------------------------------------------------------------*
*  End                                                                *
*---------------------------------------------------------------------*

 

 

ZPPRQROUT01S01:

*&---------------------------------------------------------------------*
*&  包括                ZPPRQROUT01S01
*&---------------------------------------------------------------------*
*---------------------------------------------------------------------*
*  Define the selection screen here                                   *
*---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-T01.
SELECT-OPTIONS:  S_MATNR FOR  MARA-MATNR.                 " 物料号
*                 S_MVGR1 FOR TVM1T-MVGR1.
PARAMETERS: S_DATUV LIKE PLKO-DATUV DEFAULT SY-DATUM." 有效日期
SELECT-OPTIONS: S_ARBPL FOR  PLPOD-ARBPL.                " 工作中心
PARAMETERS    :  P_PLNTY LIKE MAPL-PLNTY OBLIGATORY
                                         DEFAULT 'N',     " 任务清单类型
                 P_WERKS LIKE MARC-WERKS OBLIGATORY       " 工厂
                                         DEFAULT '1010'.
SELECT-OPTIONS:S_MATKL FOR MARA-MATKL.
SELECTION-SCREEN END OF BLOCK BLK1.

SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
PARAMETERS:CB_1 AS CHECKBOX MODIF ID 1 USER-COMMAND C1.
*           CB_2 AS CHECKBOX,
*           CB_3 AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK BLK2.

*************屏幕控制***********
AT SELECTION-SCREEN.     "屏幕执行声明
AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
*    ID 'ACTVT' FIELD '*'
ID 'WERKS' FIELD P_WERKS.
IF SY-SUBRC <> 0.
  MESSAGE '您没有分配工厂代码' && P_WERKS && '权限,请检查' TYPE  'E'.
ENDIF.
AT SELECTION-SCREEN OUTPUT.
  IF CB_1 = ''.
    LOOP AT SCREEN.
      IF SCREEN-GROUP4 = '010' OR SCREEN-GROUP4 = '011' .
        SCREEN-ACTIVE = 0.
      ENDIF.
      MODIFY SCREEN.
    ENDLOOP.
  ENDIF.

 

 

ZPPRQROUT01F01:

*&---------------------------------------------------------------------*
*&  包括                ZPPRQROUT01F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  F_GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_GET_DATA .
*- 分配任务清单到物料 数据
  SELECT  MAPL~MATNR
          MAPL~WERKS
          MAPL~PLNTY
          MAPL~PLNNR
          MAPL~PLNAL
          MAPL~ZKRIZ
          MAPL~ZAEHL
          MAPL~DATUV
          MAPL~LOEKZ
          MAPL~VBELN
          MAPL~POSNR
     FROM MAPL
    INNER JOIN MARA ON MAPL~MATNR = MARA~MATNR
    INTO CORRESPONDING FIELDS OF TABLE IT_MAPL
    WHERE MAPL~MATNR IN S_MATNR
*      AND MARA~MVGR1 IN S_MVGR1
      AND MAPL~WERKS EQ P_WERKS
      AND MAPL~PLNTY EQ P_PLNTY
      AND MAPL~LOEKZ EQ SPACE
      AND MARA~MATKL IN S_MATKL.

  IF IT_MAPL[] IS NOT INITIAL.
    SELECT PLKO~PLNTY
           PLKO~PLNNR
*           plko~plnkn
           PLKO~PLNAL
           PLPO~PLNKN     "节点
           PLKO~ZAEHL
           PLKO~DATUV
           PLKO~TECHV
           PLKO~AENNR
           PLKO~LOEKZ
           PLPO~BMSCH
           PLPO~MEINH
           PLPO~VORNR
           PLPO~STEUS
           PLPO~LTXA1
           PLPO~KTSCH
      INTO CORRESPONDING FIELDS OF TABLE IT_PLKO
      FROM PLKO JOIN
                PLAS
                ON PLKO~PLNTY = PLAS~PLNTY
               AND PLKO~PLNNR = PLAS~PLNNR
               AND PLKO~PLNAL = PLAS~PLNAL
            JOIN PLPO
                ON PLPO~PLNTY = PLAS~PLNTY
               AND PLPO~PLNNR = PLAS~PLNNR
               AND PLPO~PLNKN = PLAS~PLNKN
*          join plpo on plko~plnty = plpo~plnty
*               and plko~plnnr = plpo~plnnr
**               AND plko~plnal = plpo~vplal
*               and plko~zaehl = plpo~zaehl
           JOIN CRHD AS C ON C~OBJID = PLPO~ARBID
*      and c~objty = 'A'
       FOR ALL ENTRIES IN IT_MAPL
      WHERE PLKO~PLNTY = IT_MAPL-PLNTY
        AND PLKO~PLNNR = IT_MAPL-PLNNR
        AND PLKO~PLNAL = IT_MAPL-PLNAL
        AND PLPO~LOEKZ EQ SPACE
        AND C~ARBPL IN S_ARBPL
        AND C~OBJTY = 'A'
        AND PLKO~DATUV <= S_DATUV.
  ENDIF.

  SORT IT_PLKO BY PLNTY
                  PLNNR
                  PLNAL.
  DELETE ADJACENT DUPLICATES FROM IT_PLKO COMPARING PLNTY PLNNR PLNAL.

ENDFORM.                    " F_GET_DATA
*&---------------------------------------------------------------------*
*&      Form  F_DEAL_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_DEAL_DATA .
  DATA: BEGIN OF IT_MAKT OCCURS 0,
          MATNR LIKE MAKT-MATNR,
          MAKTX LIKE MAKT-MAKTX,
        END OF IT_MAKT.
  DATA : IT_TSK_TAB TYPE TABLE OF CAPP_TSK WITH HEADER LINE,
         IT_OPR_TAB TYPE TABLE OF CAPP_OPR WITH HEADER LINE.
*         lt_phase_tab type standard table of capp_opr with header line,
*         lt_SUBOPR_TAB TYPE STANDARD TABLE OF CAPP_OPR WITH HEADER LINE,
*         lt_REFERR_TAB TYPE STANDARD TABLE OF CAPP_OPR WITH HEADER LINE,
*         lt_REFMIS_TAB TYPE STANDARD TABLE OF CAPP_OPR WITH HEADER LINE.
  DATA: LTD_TLINE TYPE STANDARD TABLE OF TLINE,
        LTH_TLINE TYPE TLINE,
         LWK_NAME TYPE THEAD-TDNAME.

*- 物料描述 数据
  SELECT MAKT~MATNR
         MAKT~MAKTX
    INTO CORRESPONDING FIELDS OF TABLE IT_MAKT
    FROM MAKT
     FOR ALL ENTRIES IN IT_MAPL
   WHERE MAKT~MATNR EQ IT_MAPL-MATNR
     AND MAKT~SPRAS EQ SY-LANGU.
*- 内表排序
  SORT : IT_MAPL BY PLNTY PLNNR PLNAL,
         IT_MAKT BY MATNR.
  LOOP AT IT_PLKO.
    READ TABLE IT_MAPL WITH KEY PLNTY = IT_PLKO-PLNTY
                                PLNNR = IT_PLKO-PLNNR
                                PLNAL = IT_PLKO-PLNAL BINARY SEARCH.
    IF SY-SUBRC EQ 0.
      CALL FUNCTION 'CARO_ROUTING_READ'
        EXPORTING
         DATE_FROM                  = '19000101'
         DATE_TO                    = '99991231'
         PLNTY                      = IT_PLKO-PLNTY
         PLNNR                      = IT_PLKO-PLNNR
         PLNAL                      = IT_PLKO-PLNAL
         MATNR                      = IT_MAPL-MATNR
         BUFFER_DEL_FLG             = 'X'
         DELETE_ALL_CAL_FLG         = 'X'
         ADAPT_FLG                  = 'X'
         IV_CREATE_ADD_CHANGE       = ' '
       TABLES
        TSK_TAB                    = IT_TSK_TAB
*       SEQ_TAB                    =
        OPR_TAB                    = IT_OPR_TAB
*        phase_tab                  = lt_phase_tab
*        SUBOPR_TAB                 = lt_SUBOPR_TAB
*       REL_TAB                    =
*       COM_TAB                    =
*        REFERR_TAB                 = lt_REFERR_TAB
*        REFMIS_TAB                 = lt_REFMIS_TAB
       EXCEPTIONS
         NOT_FOUND                  = 1
         REF_NOT_EXP                = 2
         NOT_VALID                  = 3
         OTHERS                     = 4
                .
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ELSE.
        SORT IT_TSK_TAB BY ZAEHL DESCENDING.
        SORT IT_OPR_TAB BY PLNKN ASCENDING
                           ZAEHL DESCENDING.
        DELETE ADJACENT DUPLICATES FROM IT_OPR_TAB COMPARING PLNNR PLNKN.
        DELETE ADJACENT DUPLICATES FROM IT_TSK_TAB COMPARING PLNNR.
        LOOP AT IT_TSK_TAB.
          MOVE-CORRESPONDING IT_PLKO TO ITAB.
          MOVE : IT_MAPL-MATNR TO ITAB-MATNR,
                 IT_MAPL-WERKS TO ITAB-WERKS.
          MOVE-CORRESPONDING IT_TSK_TAB TO ITAB.
          READ TABLE IT_MAKT WITH KEY MATNR = ITAB-MATNR BINARY SEARCH.
          IF SY-SUBRC EQ 0.
            MOVE IT_MAKT-MAKTX TO ITAB-MAKTX.
          ENDIF.
          LOOP AT IT_OPR_TAB.
*- 取工作中心
*            SELECT SINGLE crhd~arbpl INTO itab-arbpl
*              FROM crhd JOIN
*                   afvc ON afvc~arbid = crhd~objid
*             WHERE plnnr EQ it_opr_tab-plnnr
*               AND zaehl EQ it_opr_tab-zaehl.
            CLEAR ITAB-ARBPL.
            SELECT SINGLE CRHD~ARBPL INTO ITAB-ARBPL
              FROM CRHD
             WHERE CRHD~OBJID EQ IT_OPR_TAB-ARBID.

            MOVE : IT_OPR_TAB-BMSCH TO ITAB-BMSCH,
                   IT_OPR_TAB-MEINH TO ITAB-MEINH,
                   IT_OPR_TAB-VORNR TO ITAB-VORNR,
                   IT_OPR_TAB-STEUS TO ITAB-STEUS,
*                   it_opr_tab-arbpl TO itab-arbpl,
                   IT_OPR_TAB-VGW01 TO ITAB-VGW01,
                   IT_OPR_TAB-VGW02 TO ITAB-VGW02,
                   IT_OPR_TAB-VGW03 TO ITAB-VGW03,
                   IT_OPR_TAB-VGW04 TO ITAB-VGW04,
                   IT_OPR_TAB-VGW05 TO ITAB-VGW05,
                   IT_OPR_TAB-VGW06 TO ITAB-VGW06,
                   IT_OPR_TAB-VGE01 TO ITAB-VGE01,
                   IT_OPR_TAB-VGE02 TO ITAB-VGE02,
                   IT_OPR_TAB-VGE03 TO ITAB-VGE03,
                   IT_OPR_TAB-VGE04 TO ITAB-VGE04,
                   IT_OPR_TAB-VGE05 TO ITAB-VGE05,
                   IT_OPR_TAB-VGE06 TO ITAB-VGE06,
*                  原定额
                   IT_OPR_TAB-USR00 TO ITAB-USR00,
                   IT_OPR_TAB-ANZMA TO ITAB-ANZMA,
                   IT_OPR_TAB-SPMUS TO ITAB-SPMUS,
                   IT_OPR_TAB-SPLIM TO ITAB-SPLIM,
                   IT_OPR_TAB-UEMUS TO ITAB-UEMUS,
                   IT_OPR_TAB-MINWE TO ITAB-MINWE,
                   IT_OPR_TAB-FRDLB TO ITAB-FRDLB,
                   IT_OPR_TAB-INFNR TO ITAB-INFNR,
                   IT_OPR_TAB-EKORG TO ITAB-EKORG,
                   IT_OPR_TAB-MATKL TO ITAB-MATKL,
                   IT_OPR_TAB-EKGRP    TO ITAB-EKGRP,
                   IT_OPR_TAB-PLIFZ    TO ITAB-PLIFZ,
                   IT_OPR_TAB-PEINH    TO ITAB-PEINH,
                   IT_OPR_TAB-PREIS    TO ITAB-PREIS,
                   IT_OPR_TAB-SAKTO    TO ITAB-SAKTO,
                   IT_OPR_TAB-WAERS    TO ITAB-WAERS,
                   IT_OPR_TAB-KTSCH TO ITAB-KTSCH,
                   IT_OPR_TAB-LTXA1 TO ITAB-LTXA1,
                   IT_OPR_TAB-CKSELKZ TO ITAB-CKSELKZ,
                   IT_OPR_TAB-WERKS TO ITAB-WERKS_OP.   "工序工厂
            IF IT_OPR_TAB-INFNR IS NOT INITIAL.
              SELECT SINGLE PEINH NETPR WAERS FROM EINE
                  INTO (ITAB-PEINH,ITAB-PREIS,ITAB-WAERS)
                  WHERE INFNR = IT_OPR_TAB-INFNR
                    AND EKORG = IT_OPR_TAB-EKORG
                    AND ESOKZ = IT_OPR_TAB-ESOKZ
                    AND WERKS = IT_OPR_TAB-WERKS.
            ENDIF.
            ITAB-VBELN = IT_MAPL-VBELN.
            ITAB-POSNR = IT_MAPL-POSNR.
********** 工序长文本

            CONCATENATE SY-MANDT ITAB-PLNTY ITAB-PLNNR IT_OPR_TAB-PLNKN IT_OPR_TAB-ZAEHL INTO LWK_NAME. "对象名
            CLEAR ITAB-LGTXT.
            CALL FUNCTION 'READ_TEXT'
              EXPORTING
                CLIENT                        = SY-MANDT
                ID                            = 'PLPO'
                LANGUAGE                      = '1'
                NAME                          = LWK_NAME
                OBJECT                        = 'ROUTING'
*     ARCHIVE_HANDLE                = 0
*     LOCAL_CAT                     = ' '
*   IMPORTING
*     HEADER                        =
              TABLES
                LINES                         = LTD_TLINE
             EXCEPTIONS
               ID                            = 1
               LANGUAGE                      = 2
               NAME                          = 3
               NOT_FOUND                     = 4
               OBJECT                        = 5
               REFERENCE_CHECK               = 6
               WRONG_ACCESS_TO_ARCHIVE       = 7
               OTHERS                        = 8.
            IF SY-SUBRC = 0.
              LOOP AT LTD_TLINE INTO LTH_TLINE FROM 2.
                CONCATENATE ITAB-LGTXT  LTH_TLINE-TDLINE INTO ITAB-LGTXT.
              ENDLOOP.
            ENDIF.



            APPEND ITAB.
            CLEAR IT_OPR_TAB.
          ENDLOOP.
          CLEAR : ITAB, IT_TSK_TAB.
        ENDLOOP.

      ENDIF.
    ENDIF.
  ENDLOOP.
*- 释放不再使用内表
  FREE : IT_MAKT, IT_MAPL, IT_PLKO.

ENDFORM.                    " F_DEAL_DATA
*&---------------------------------------------------------------------*
*&      Form  F_FIELDCAT_BUILD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_FIELDCAT_BUILD .
*- ALV格式输出设置
  GT_LAYOUT-ZEBRA = 'X'.
*  gt_layout-box_fieldname = 'SELKZ'.
  GT_LAYOUT-DETAIL_POPUP = 'X'.
  GT_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  GT_LAYOUT-CELL_MERGE = 'X'.
  GT_LAYOUT-DETAIL_INITIAL_LINES = 'X'.


  IF CB_1 = 'X'.
    PERFORM F_INPUT_FIELDCAT USING:   'MATNR'  '物料号'          'X' 18,
                                    'MAKTX'  '物料描述'        '' 40,
                                    "'VBELN'  '销售订单'  '',
                                    "'POSNR'  '行项目'  '',
                                    'WERKS'  '工厂'            '' 4,
                                    'DATUV'  '有效起始日期'    SPACE 10,
                                    'DATUB'  '有效截止日期'    SPACE 10,
                                    "'PLNTY'  '任务清单类型'    SPACE,
                                    'PLNNR'  '任务清单组码'    SPACE 8,
                                    'PLNAL'  '组计数器'        SPACE 2,
                                    'KTEXT'  '任务清单描述'    SPACE 40,
                                    'VERWE'  '任务清单使用'    SPACE 3,
                                    'STATU'  '状态'            SPACE 3,
                                    "'BMSCH'  '基本数量'        SPACE,
                                    "'MEINH'  '作业/工序的计量单位'  SPACE,
                                   " 'VORNR'  '工序号'          SPACE,
                                   " 'STEUS'  '控制码'          SPACE,
                                   " 'WERKS_OP'  '工序工厂'     SPACE,
                                   " 'ARBPL'  '工作中心'        SPACE,
                                   " 'KTSCH'  '工序代码'       SPACE,
                                   " 'LTXA1'  '工序短文本'      SPACE,
                                   " 'LGTXT' '长文本' SPACE,
                                    'VGW01'  '准备工时'        SPACE 12,
                                    "'VGE01'  '人工工时单位'    SPACE,
                                    'VGW02'  '人工工时'        SPACE 12,
                                    "'VGE02'  '机器工时单位'    SPACE,
                                    'VGW04'  '机器工时'        SPACE 12.
    "'VGE03'  '检验工时单位'    SPACE.
    "'VGW04'  '物料消耗'          SPACE,
    "'VGE04'  '物料消耗单位'        SPACE.
    "'VGW05'  '动力'        SPACE,
    "'VGE05'  '动力单位'    SPACE,
    "'VGW06'  '其他'        SPACE,
    "'VGE06'  '其他单位'    SPACE.
    " 'USR00'  '原定额'         SPACE,
    " 'SPMUS'  '所需分解'        SPACE,
    " 'UEMUS'  '要求重叠'        SPACE,
    " 'MINWE'  '最小发送数量'    SPACE,
    " 'CKSELKZ'  '成本核算相关'  SPACE,
    " 'FRDLB'  '指示符:带外协加工的外部处理工序'  SPACE,
    " 'INFNR'  '采购信息记录'    SPACE,
    " 'EKORG'  '采购组织'        SPACE,
    " 'MATKL'  '物料组'          SPACE,
    " 'EKGRP'  '采购组'          SPACE,
    " 'PEINH'  '价格单位'        SPACE,
    " 'PREIS'  '净价'            SPACE,
    " 'SAKTO'  '成本要素'        SPACE,
    " 'WAERS'  '货币码'          SPACE.
  ELSE.
    PERFORM F_INPUT_FIELDCAT USING:   'MATNR'  '物料号'          'X' 18,
                                      'MAKTX'  '物料描述'        '' 40,
*                                      'VBELN'  '销售订单'  '',
*                                      'POSNR'  '行项目'  '',
                                      'WERKS'  '工厂'            '' 4,
                                      'DATUV'  '有效起始日期'    SPACE 10,
                                      'DATUB'  '有效截止日期'    SPACE 10,
                                      'PLNTY'  '任务清单类型'    SPACE 1,
                                      'PLNNR'  '任务清单组码'    SPACE 8,
                                      'PLNAL'  '组计数器'        SPACE 2,
                                      'KTEXT'  '任务清单描述'    SPACE 40,
                                      'VERWE'  '任务清单使用'    SPACE 3,
                                      'STATU'  '状态'            SPACE 3,
                                      'BMSCH'  '基本数量'        SPACE 15,
                                      'MEINH'  '作业/工序的计量单位'  SPACE 3,
                                      'VORNR'  '工序号'          SPACE 4,
                                      'STEUS'  '控制码'          SPACE 4,
                                      'WERKS_OP'  '工序工厂'     SPACE 4,
                                      'ARBPL'  '工作中心'        SPACE 8,
                                      'KTSCH'  '工序代码'        SPACE 7,
                                      'LTXA1'  '工序短文本'      SPACE 40,
                                      'LGTXT' '长文本' SPACE 200,
                                      'VGW01'  '准备工时'        SPACE 12,
                                      'VGE01'  '准备工时单位'    SPACE 3,
                                      'VGW02'  '人工工时'        SPACE 12,
                                      'VGE02'  '人工工时单位'    SPACE 3,
                                      'VGW03'  '间接人工'        SPACE 12,
                                      'VGE03'  '间接人工单位'    SPACE 3,
                                      'VGW04'  '机器工时'          SPACE 12,
                                      'VGE04'  '机器工时进单位'        SPACE 3,
                                      'VGW05'  '动力'        SPACE 12,
                                      'VGE05'  '动力单位'    SPACE 3,
                                      'VGW06'  '物料消耗'        SPACE 12,
                                      'VGE06'  '物料消耗单位'    SPACE 3,
*                                      'USR00'  '原定额'         SPACE,
                                      'ANZMA'  '雇员数'         SPACE 7,
                                      'SPMUS'  '所需分解'        SPACE 1,
                                      'SPLIM'  '分解数'         SPACE 3,
                                      'UEMUS'  '要求重叠'        SPACE 1,
                                      'MINWE'  '最小发送数量'    SPACE 15,
                                      'CKSELKZ'  '成本核算相关'  SPACE 1,
                                      'FRDLB'  '指示符:带外协加工的外部处理工序'  SPACE 1,
                                      'INFNR'  '采购信息记录'    SPACE 10,
                                      'EKORG'  '采购组织'        SPACE 4,
                                      'MATKL'  '物料组'          SPACE 9,
                                      'EKGRP'  '采购组'          SPACE 3,
                                      'PEINH'  '价格单位'        SPACE 5,
                                      'PREIS'  '净价'            SPACE 13,
                                      'SAKTO'  '成本要素'        SPACE 10,
                                      'WAERS'  '货币码'          SPACE 5.
  ENDIF.

ENDFORM.                    " F_FIELDCAT_BUILD
*&---------------------------------------------------------------------*
*&      Form  F_EVENTCAT_BUILD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_EVENTCAT_BUILD .

ENDFORM.                    " F_EVENTCAT_BUILD
*&---------------------------------------------------------------------*
*&      Form  F_ALV_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_ALV_DISPLAY .
  SORT ITAB BY MATNR WERKS PLNTY PLNNR PLNAL VORNR.
*- alv函数输出数据

  IF CB_1 = ''.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        I_CALLBACK_PROGRAM       = SY-REPID
*      i_callback_pf_status_set = g_status_form
*      i_callback_user_command  = 'USER_COMMAND'    "g_command_form
        IS_LAYOUT                = GT_LAYOUT
        IT_FIELDCAT              = GT_FIELDCAT[]
*      it_events                = events[]
        I_SAVE                   = 'A'
      TABLES
        T_OUTTAB                 = ITAB[]
      EXCEPTIONS
        PROGRAM_ERROR            = 1
        OTHERS                   = 2.
    IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ELSE.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM       = SY-REPID
*      i_callback_pf_status_set = g_status_form
*      i_callback_user_command  = 'USER_COMMAND'    "g_command_form
      IS_LAYOUT                = GT_LAYOUT
      IT_FIELDCAT              = GT_FIELDCAT[]
*      it_events                = events[]
      I_SAVE                   = 'A'
    TABLES
      T_OUTTAB                 = ITAB_1[]
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.
    IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDIF.
ENDFORM.                    " F_ALV_DISPLAY
*&---------------------------------------------------------------------*
*&      Form  F_INPUT_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM F_INPUT_FIELDCAT USING  VALUE(P_FIELD)
                             VALUE(P_NAME)
                             VALUE(P_KEY)
                             VALUE(P_LEN).
  DATA: ST_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

  ST_FIELDCAT-COL_POS     =   G_POS.
  ST_FIELDCAT-TABNAME     =   'itab'.
  ST_FIELDCAT-FIELDNAME   =   P_FIELD.
  ST_FIELDCAT-SELTEXT_L   =   P_NAME.
  ST_FIELDCAT-outputlen   =   P_LEN.
  CASE P_FIELD.
    WHEN 'WERKS' OR 'WERKS_OP' OR 'USR00'.

    WHEN OTHERS.
      ST_FIELDCAT-NO_ZERO     =   'X'.
  ENDCASE.
  ST_FIELDCAT-KEY         =   P_KEY.
  APPEND ST_FIELDCAT TO GT_FIELDCAT.
  CLEAR ST_FIELDCAT.
  G_POS = G_POS + 1.
ENDFORM.                    "F_INPUT_FIELDCAT
*&---------------------------------------------------------------------*
*&      Form  F_DOSUM_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_DOSUM_DATA .

  CLEAR:ITAB_1,ITAB_1[].

  "是否删除前加工
*  IF CB_2 = 'X'.
*    DELETE ITAB WHERE KTSCH = '201001' OR KTSCH = '201006'.
*    DELETE ITAB WHERE PLNAL = '02'.
*  ENDIF.
*-----2012.11.27过滤天线栽线工序 如勾选则过滤 204001工序码
*  IF CB_3 = 'X'.
*    DELETE ITAB WHERE KTSCH = '204001' .
*    DELETE ITAB WHERE PLNAL = '02'.
*  ENDIF.
  SORT ITAB BY MATNR.
  LOOP AT ITAB.
    MOVE-CORRESPONDING ITAB TO ITAB_1.
    COLLECT ITAB_1.
    CLEAR ITAB.
  ENDLOOP.


ENDFORM.                    " F_DOSUM_DATA

 

 

 

ZPPR004:

REPORT ZPPR004.
*&---------------------------------------------------------------------*
*& Report  ZPPR_QROUT01
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
*&--------------------------------------------------------------------*
* Include
*&--------------------------------------------------------------------*
include ZPPRQROUT01TOP.
include ZPPRQROUT01S01.
include ZPPRQROUT01F01.

*&---------------------------------------------------------------------*
* 2012.11.27增加报表开发需求信息维护按钮功能
*&---------------------------------------------------------------------*
"包含程序
*include ZABAP01.
"初始化事件

*INITIALIZATION.
  "工具栏添加信息标识图标
*  PERFORM SUB_INIT.
  "计算使用次数
*  PERFORM SUB_USENO.
  "屏幕检查事件

*AT SELECTION-SCREEN.
*  CASE SSCRFIELDS-UCOMM.
*   WHEN 'FC01'.
*调用3000屏幕
*      CALL SCREEN 3000 STARTING AT 20 30 .
*    WHEN OTHERS.
*  ENDCASE.

*  G_POS = 1.

**---------------------------------------------------------------------*
** Initialization                                                      *
**---------------------------------------------------------------------*
*INITIALIZATION.
*  G_POS = 1.
*---------------------------------------------------------------------*
* start of selection                                                  *
*---------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM F_GET_DATA.
  PERFORM F_DEAL_DATA.
***-----
  IF CB_1 = 'X'.
    PERFORM F_DOSUM_DATA.

  ENDIF.
***-----
  PERFORM F_FIELDCAT_BUILD.
  PERFORM F_EVENTCAT_BUILD.

  PERFORM F_ALV_DISPLAY.

END-OF-SELECTION.

*Text elements
*----------------------------------------------------------
* 002 显示方式
* T01 请选择运行条件


*Selection texts
*----------------------------------------------------------
* CB_1         工时汇总显示
* CB_2         过滤前加工
* CB_3         过滤天线栽线
* P_PLNTY         工艺类型
* P_WERKS         工厂
* S_ARBPL         工作中心
* S_DATUV         生效日期
* S_MATNR         物料编码
* S_MVGR1         物料组1


*Messages
*----------------------------------------------------------
*
* Message class: Hard coded
*   您无权限更改开发信息,只有ABAP工程师可修改!

 

^_^很多人都把资料锁进了note里,以后还怎么百度呢^_^
posted on 2019-12-30 09:37  ^ω^SAP傻X^o^  阅读(623)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3