无打印报表

--------------------------------------------------------无打印报表--------------------------------------------------------
*&---------------------------------------------------------------------*
*& REPORT  ZPPR_0006
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZPPR_0006 NO STANDARD PAGE HEADING MESSAGE-ID ZSELEN_PRINT.
"申明表
TABLES: MSEG,
        MAKT,
        PLPO,
        CRHD,
        MKPF,
        PLKO.
TYPE-POOLS:SLIS.
"定义结构
TYPES:BEGIN OF TW_MSEG,
       BOX   TYPE C         ,
       MATNR TYPE MSEG-MATNR,"物料
       MAKTX TYPE MAKT-MAKTX,"物料描述
       MENGE TYPE MSEG-MENGE,"入库数量
       VORNR TYPE PLPO-VORNR,"工序号
       WERKS TYPE MSEG-WERKS,"工厂
       BUDAT TYPE MKPF-BUDAT,"过账日期
       ARBPL TYPE CRHD-ARBPL ,"工作中心
       VGW03 TYPE PLPO-VGW03,"标准工时(人工)
       VGE03 TYPE PLPO-VGE03,"标准单位(人工)
       SUM1  TYPE  P DECIMALS 2 ,
       VGW02 TYPE PLPO-VGW02,"标准工时(机器)
       VGE02 TYPE PLPO-VGE02,"标准单位(机器)
       SUM2  TYPE  P  DECIMALS 2 ,
       VGW04 TYPE PLPO-VGW04,"标准工时(制费)
       VGE04 TYPE PLPO-VGE04,"标准单位(制费)
       SUM3  TYPE  P  DECIMALS 2 ,
       PLNNR TYPE MAPL-PLNNR,"组
       PLNAL TYPE MAPL-PLNAL,"组计数器
       BMSCH TYPE PLKO-BMSCH,"基本数
       ARBID TYPE PLPO-ARBID,"对象表示
       ZAEHL TYPE MAPL-ZAEHL,"计数器
  END OF TW_MSEG.
TYPES:TAB_MSEG TYPE TABLE OF TW_MSEG.
DATA :GW_MSEG  TYPE TW_MSEG,
      GT_MSEG  TYPE TABLE OF TW_MSEG.
" 选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
  SELECT-OPTIONS:
      S_MATNR FOR MSEG-MATNR,
      S_WERKS FOR MSEG-WERKS,
      S_BUDAT FOR MKPF-BUDAT.
SELECTION-SCREEN END OF BLOCK B1.

START-OF-SELECTION.
PERFORM FRM_GET_DATA.
PERFORM FRM_DISPLAY.

" 取数据
FORM FRM_GET_DATA.

 FIELD-SYMBOLS <FS_MSEG> TYPE TW_MSEG.

SELECT DISTINCT
       MSEG~MATNR "物料
       MAKT~MAKTX "物料描述
       MSEG~MENGE "入库数量
*       MSEG~AUFNR "订单号
*       MSEG~BWART "移动类型
       MSEG~WERKS "工厂
       MKPF~BUDAT "过账日期
       PLPO~VORNR"工序号
       CRHD~ARBPL "工作中心
       PLPO~VGW03"标准工时(人工)
       PLPO~VGE03"标准单位(人工)
       PLPO~VGW02"标准工时(机器)
       PLPO~VGE02"标准单位(机器)
       PLPO~VGW04"标准工时(制费)
       PLPO~VGE04"标准单位(制费)
       MAPL~PLNNR "组
       MAPL~PLNAL "组计数器
       MAPL~ZAEHL "计数器
       PLKO~BMSCH "基本数
       PLPO~ARBID "对象表
  INTO CORRESPONDING FIELDS OF TABLE GT_MSEG
  FROM MSEG
  INNER JOIN MAKT ON MSEG~MATNR = MAKT~MATNR
  INNER JOIN MKPF ON MSEG~MBLNR = MKPF~MBLNR
  INNER JOIN MAPL ON MSEG~MATNR = MAPL~MATNR AND
                     MSEG~WERKS = MAPL~WERKS
  INNER JOIN PLKO ON MAPL~PLNNR = PLKO~PLNNR AND
                     MAPL~PLNAL = PLKO~PLNAL AND
                     MAPL~ZAEHL = PLKO~ZAEHL
  INNER JOIN PLPO ON MAPL~PLNNR = PLPO~PLNNR AND
                     MAPL~ZAEHL = PLPO~ZAEHL AND
                     MAPL~PLNTY = PLPO~PLNTY AND
                     PLKO~BMSCH = PLPO~BMSCH
  INNER JOIN CRHD ON PLPO~ARBID = CRHD~OBJID
  WHERE MSEG~MATNR IN S_MATNR AND
        MSEG~WERKS IN S_WERKS AND
        MKPF~BUDAT IN S_BUDAT AND
        MSEG~BWART = '101'    AND
        MSEG~VGART_MKPF = 'WF'.
  IF SY-SUBRC <> 0.
   MESSAGE S001 DISPLAY LIKE 'E'.
    STOP.
  ENDIF.
LOOP AT GT_MSEG ASSIGNING <FS_MSEG>.
  DATA : A TYPE P  DECIMALS 2,
         B TYPE P DECIMALS  2,
         C TYPE P DECIMALS  2.
                IF <FS_MSEG>-MENGE IS NOT INITIAL AND
                   <FS_MSEG>-VGE03 = 'H'.
                        A = <FS_MSEG>-MENGE * <FS_MSEG>-VGW03 .
                        B = <FS_MSEG>-MENGE * <FS_MSEG>-VGW02 .
                        C = <FS_MSEG>-MENGE * <FS_MSEG>-VGW04 .
                        <FS_MSEG>-SUM1 = A.
                        <FS_MSEG>-SUM2 = B.
                        <FS_MSEG>-SUM3 = C.
                      ELSE.
                        A = <FS_MSEG>-MENGE * <FS_MSEG>-VGW03 / 60.
                        B = <FS_MSEG>-MENGE * <FS_MSEG>-VGW02 / 60.
                        C = <FS_MSEG>-MENGE * <FS_MSEG>-VGW04 / 60.
                        <FS_MSEG>-SUM1 = A.
                        <FS_MSEG>-SUM2 = B.
                        <FS_MSEG>-SUM3 = C.
                ENDIF.
  ENDLOOP.
  SORT GT_MSEG BY MATNR MENGE.
ENDFORM.

FORM FRM_DISPLAY.
  DATA : LV_REPID        TYPE SY-REPID,
         LS_GRID_SETTING TYPE LVC_S_GLAY,
         LS_LAYOUT       TYPE LVC_S_LAYO,
         LT_FCAT         TYPE LVC_T_FCAT,
         LT_SORT         TYPE LVC_T_SORT,
         LS_VARIANT      TYPE DISVARIANT.
  LV_REPID = SY-REPID.
  PERFORM FRM_GRID_SETTING CHANGING LS_GRID_SETTING.
  PERFORM FRM_BUILD_LAYOUT CHANGING LS_LAYOUT.
  PERFORM FRM_BUILD_FCAT CHANGING LT_FCAT.
  PERFORM FRM_BUILD_VARIANT CHANGING LS_VARIANT.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      I_CALLBACK_PROGRAM       = LV_REPID
      I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
      I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
      I_GRID_SETTINGS          = LS_GRID_SETTING
      IS_LAYOUT_LVC            = LS_LAYOUT
      IT_FIELDCAT_LVC          = LT_FCAT
      I_SAVE                   = 'A'
      IS_VARIANT               = LS_VARIANT
    TABLES
      T_OUTTAB                 = GT_MSEG
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.
  IF SY-SUBRC <> 0.
* IMPLEMENT SUITABLE ERROR HANDLING HERE
  ENDIF.
ENDFORM.

FORM FRM_GRID_SETTING  CHANGING PW_GRID TYPE LVC_S_GLAY.
  PW_GRID-EDT_CLL_CB = 'X'.
ENDFORM.                    " FRM_GRID_SETTING

FORM FRM_BUILD_LAYOUT  CHANGING PS_LAYOUT TYPE  LVC_S_LAYO.
  PS_LAYOUT-ZEBRA = 'X'.
  PS_LAYOUT-CWIDTH_OPT = 'X'.
* PS_LAYOUT-SEL_MODE = 'A'.
  PS_LAYOUT-NO_ROWMARK = 'X'.
ENDFORM.                    " FRM_BUILD_LAYOUT

FORM FRM_BUILD_FCAT  CHANGING PT_FCAT TYPE LVC_T_FCAT.
  DATA : LW_FCAT TYPE LVC_S_FCAT.

  DEFINE  FCAT.
    CLEAR LW_FCAT.
    LW_FCAT-COL_POS = &1.
    LW_FCAT-FIELDNAME = &2.
    LW_FCAT-TABNAME = &3.
    LW_FCAT-QFIELDNAME = &4.
    LW_FCAT-CHECKBOX = &5.
    LW_FCAT-EDIT = &6.
    LW_FCAT-SCRTEXT_L = LW_FCAT-SCRTEXT_M = LW_FCAT-SCRTEXT_S = &7.
    LW_FCAT-CONVEXIT = &8.
    APPEND LW_FCAT TO PT_FCAT.
  END-OF-DEFINITION.
  FCAT 1 'BOX' 'GT_VBAK' SPACE 'X' 'X' TEXT-F15 SPACE.
  FCAT 2 'MATNR'  'GT_MSEG' SPACE SPACE SPACE TEXT-F01  SPACE .
  FCAT 3 'MAKTX'  'GT_MSEG' SPACE SPACE SPACE TEXT-F02  SPACE.
  FCAT 4 'MENGE'  'GT_MSEG' SPACE SPACE SPACE TEXT-F03  SPACE.
  FCAT 5 'VORNR'  'GT_MSEG' SPACE SPACE SPACE TEXT-F04  SPACE.
  FCAT 6 'ARBPL'  'GT_MSEG' SPACE SPACE SPACE TEXT-F05  SPACE.
  FCAT 7 'VGW03'  'GT_MSEG' SPACE SPACE SPACE TEXT-F06  SPACE.
  FCAT 8 'VGE03'  'GT_MSEG' SPACE SPACE SPACE TEXT-F07  SPACE.
  FCAT 9 'SUM1'   'GT_MSEG' SPACE SPACE SPACE TEXT-F08  SPACE.
  FCAT 10 'VGW02' 'GT_MSEG' SPACE SPACE SPACE TEXT-F09  SPACE.
  FCAT 11 'VGE02' 'GT_MSEG' SPACE SPACE SPACE TEXT-F10  SPACE.
  FCAT 12 'SUM2'  'GT_MSEG' SPACE SPACE SPACE TEXT-F11  SPACE.
  FCAT 13 'VGW04' 'GT_MSEG' SPACE SPACE SPACE TEXT-F12  SPACE.
  FCAT 14 'VGE04' 'GT_MSEG' SPACE SPACE SPACE TEXT-F13  SPACE.
  FCAT 15 'SUM3'  'GT_MSEG' SPACE SPACE SPACE TEXT-F14  SPACE.

ENDFORM.                    " FRM_BUILD_FCAT

FORM FRM_BUILD_VARIANT  CHANGING PS_VARIANT TYPE DISVARIANT.
  PS_VARIANT-USERNAME = SY-UNAME.
  PS_VARIANT-REPORT = SY-REPID.
*  PS_VARIANT-VARIANT = P_VAR.
ENDFORM.                    " FRM_BUILD_VARIANT

FORM PF_STATUS USING P_EXTAB TYPE SLIS_T_EXTAB .

  SET PF-STATUS 'STATUS' .

ENDFORM.
FORM USER_COMMAND USING    P_UCOMM TYPE SY-UCOMM
                    P_RS_SELFIELD TYPE SLIS_SELFIELD .
  FIELD-SYMBOLS : <FS_MSEG> TYPE TW_MSEG.

   P_RS_SELFIELD-REFRESH = 'X'.
   P_RS_SELFIELD-COL_STABLE = 'X'.
   P_RS_SELFIELD-ROW_STABLE = 'X'.
  CASE  P_UCOMM.
    WHEN 'SALL'.

      LOOP AT GT_MSEG ASSIGNING <FS_MSEG>.
        <FS_MSEG>-BOX = 'X'.
      ENDLOOP.
    WHEN 'SN'.
      LOOP AT GT_MSEG ASSIGNING <FS_MSEG>.
        CLEAR <FS_MSEG>-BOX.
      ENDLOOP.
  ENDCASE.
ENDFORM.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值