CharlieShen

新人,大家多关照啦@_@

  博客中心 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 登录 ::
  3994 随笔 :: 0 文章 :: 20 评论 :: 0 Trackbacks
Cached @ 2025/4/27 0:24:07Control ASP.skins_cogitation_controls_blogstats_ascx
<2007年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

留言簿(14)

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

Cached @ 2025/4/27 0:24:07Control ASP.skins_cogitation_controls_singlecolumn_ascx

ABAP学习中--两个报表

最近学了这两个报表!

报表一:根据输入发电量统计物资消耗情况。

*&---------------------------------------------------------------------*
*& Report  Z_TEST01
*&
*&---------------------------------------------------------------------*
*&Author chenyanjun
*&
*&---------------------------------------------------------------------*

REPORT  Z_TEST01 NO STANDARD PAGE HEADING.
*--------------------------定义数据------------------------------------------*
*-----------WERKS=工厂,NAME1=工厂名称,BUDAT=凭证日期,MBLNR=物料凭证编号,MJAHR=物料凭证年度,VGART=凭证类型----------*
DATA: BEGIN OF IT_RESULT OCCURS 0,
      WERKS LIKE T001W-WERKS,
      NAME1 LIKE T001W-NAME1,
      BUDAT LIKE MKPF-BUDAT,
      DMBTR LIKE MSEG-DMBTR,
      ZWZXH TYPE P DECIMALS 3,
    END OF IT_RESULT.
DATA: BEGIN OF IT_T001W OCCURS 0,
        WERKS LIKE T001W-WERKS,
        NAME1 LIKE T001W-NAME1,
      END OF IT_T001W.
DATA: BEGIN OF IT_MKPF OCCURS 0,
      MBLNR LIKE MKPF-MBLNR,
      MJAHR LIKE MKPF-MJAHR,
      BUDAT LIKE MKPF-BUDAT,
     END OF IT_MKPF.
DATA: BEGIN OF IT_MSEG OCCURS 0,
      MBLNR LIKE MSEG-MBLNR,
      MJAHR LIKE MSEG-MJAHR,
      ZEILE LIKE MSEG-ZEILE,
      WERKS LIKE MSEG-WERKS,
      DMBTR LIKE MSEG-DMBTR,
      SHKZG LIKE MSEG-SHKZG,
     END OF IT_MSEG.

TYPE-POOLS: SLIS.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
  IS_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: TMP_TITLE(70),
      TMP_REPID LIKE SY-REPID.
*----------------初始选择屏幕--------------------*
SELECT-OPTIONS: S_WERKS FOR IT_RESULT-WERKS,
                S_BUDAT FOR IT_RESULT-BUDAT.
PARAMETERS: P_ZFDL TYPE P DECIMALS 2 OBLIGATORY.
PARAMETERS: R1 RADIOBUTTON GROUP RAD1,
            R2 RADIOBUTTON GROUP RAD1 DEFAULT 'X'.
*-------------------TOP-OF-PAGE------------------*
TOP-OF-PAGE.
  PERFORM FRM_HEAD_OUTPUT .
*------------------START-OF-SELECTION-------------*
START-OF-SELECTION.
  PERFORM FRM_GETDATA.
  PERFORM FRM_PROCESS.
*------------------END-OF-SELECTION---------------*
END-OF-SELECTION.
  PERFORM FRM_OUTPUT.
*&---------------------------------------------------------------------*
*&      Form  FRM_GETDATA
*&---------------------------------------------------------------------*
*      获取数据
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_GETDATA .
  SELECT * FROM T001W
    INTO CORRESPONDING FIELDS OF TABLE IT_T001W
    WHERE WERKS IN S_WERKS.

  SELECT * FROM MKPF
    INTO CORRESPONDING FIELDS OF TABLE IT_MKPF
    WHERE VGART EQ 'WA' AND BUDAT IN S_BUDAT.

  SELECT * FROM MSEG
    INTO CORRESPONDING FIELDS OF TABLE IT_MSEG
    WHERE WERKS IN S_WERKS
     AND BWART IN ('201','202','261','262').


ENDFORM.                    " FRM_GETDATA
*&---------------------------------------------------------------------*
*&      Form  FRM_PROCESS
*&---------------------------------------------------------------------*
*       对数据进行处理
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_PROCESS .
  LOOP AT IT_MSEG.
    CLEAR IT_RESULT.
    READ TABLE IT_MKPF WITH KEY MBLNR = IT_MSEG-MBLNR
                                MJAHR = IT_MSEG-MJAHR.
    CHECK SY-SUBRC EQ 0.
    READ TABLE IT_T001W WITH KEY WERKS = IT_MSEG-WERKS.
    IT_RESULT-WERKS = IT_T001W-WERKS.
    IT_RESULT-NAME1 = IT_T001W-NAME1.
    IT_RESULT-BUDAT = IT_MKPF-BUDAT.
    CASE IT_MSEG-SHKZG.
      WHEN 'H'.
        IT_RESULT-DMBTR = IT_MSEG-DMBTR.
      WHEN 'S'.
        IT_RESULT-DMBTR = 0 - IT_MSEG-DMBTR.
    ENDCASE.
    IF NOT P_ZFDL IS INITIAL.
      IT_RESULT-ZWZXH = IT_RESULT-DMBTR / P_ZFDL.
    ELSE.
      IT_RESULT-ZWZXH = 0.
    ENDIF.
    COLLECT IT_RESULT.
  ENDLOOP.
ENDFORM.                    " FRM_PROCESS
*&---------------------------------------------------------------------*
*&      Form  FRM_OUTPUT
*&---------------------------------------------------------------------*
*       输出数据
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_OUTPUT .
  IF R2 = 'X' .
    GT_FIELDCAT-FIELDNAME = 'WERKS'.
    GT_FIELDCAT-SELTEXT_M = '电厂编号'.
    APPEND GT_FIELDCAT.
    CLEAR GT_FIELDCAT.
    GT_FIELDCAT-FIELDNAME = 'NAME1'.
    GT_FIELDCAT-SELTEXT_M = '电厂名称'.
    GT_FIELDCAT-OUTPUTLEN = 30.
    APPEND GT_FIELDCAT.
    CLEAR GT_FIELDCAT.
    GT_FIELDCAT-FIELDNAME = 'BUDAT'.
    GT_FIELDCAT-SELTEXT_M = '计算期间'.
    GT_FIELDCAT-OUTPUTLEN = 10.
    APPEND GT_FIELDCAT.
    CLEAR GT_FIELDCAT.
    GT_FIELDCAT-FIELDNAME = 'DMBTR'.
    GT_FIELDCAT-SELTEXT_M = '物资消耗(万元)'.
    GT_FIELDCAT-OUTPUTLEN = 20.
    APPEND GT_FIELDCAT.
    CLEAR GT_FIELDCAT.
    GT_FIELDCAT-FIELDNAME = 'ZWZXH'.
    GT_FIELDCAT-SELTEXT_M = '物资消耗(万元/kwh)'.
    GT_FIELDCAT-OUTPUTLEN = 30.
    APPEND GT_FIELDCAT.
    CLEAR GT_FIELDCAT.
    TMP_TITLE = '大唐集团下属电厂单位容量(千瓦时)库存资金占用额'.
    TMP_REPID = SY-REPID.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        I_CALLBACK_PROGRAM = TMP_REPID
        IT_FIELDCAT        = GT_FIELDCAT[]
        I_GRID_TITLE       = TMP_TITLE
      TABLES
        T_OUTTAB           = IT_RESULT.
  ENDIF.
  IF R1 = 'X'.
    LOOP AT IT_RESULT.
      WRITE: '|',(10) IT_RESULT-WERKS CENTERED, '|' ,(40) IT_RESULT-NAME1 , '|' , (15) IT_RESULT-BUDAT CENTERED, '|' ,
             (21) IT_RESULT-DMBTR, '|' , (22) IT_RESULT-ZWZXH , '|'.
      ULINE /.
    ENDLOOP.
  ENDIF.
ENDFORM.                    " FRM_OUTPUT
*&---------------------------------------------------------------------*
*&      Form  FRM_HEAD_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_HEAD_OUTPUT .

    ULINE .
    WRITE: '|' ,(10)  '电厂编号' CENTERED, '|' ,  (40) '电厂名称' CENTERED, '|' , (15) '计算期间' CENTERED, '|' ,
     (21) '物资消耗(万元)' CENTERED , '|' , (22) '物资消耗(万元/kwh)' CENTERED , '|'.
    ULINE /.

ENDFORM.                    " FRM_HEAD_OUTPUT

报表二:统计库存资金占用情况

*&---------------------------------------------------------------------*
*& Report  Z_TEST03
*&
*&---------------------------------------------------------------------*
*&Author : chenyanjun
*&
*&---------------------------------------------------------------------*

REPORT Z_TEST03 NO STANDARD PAGE HEADING.
*----------------定义工厂表所需信息-----------------*
DATA: BEGIN OF IT_T001W OCCURS 0,
        WERKS LIKE T001W-WERKS ,
        NAME1 LIKE T001W-NAME1 ,
        PFACH LIKE T001W-PFACH ,
END OF IT_T001W.
*---------------定义总库存额信息------------------------*
DATA: BEGIN OF IT_S032 OCCURS 0,
        WBWBEST LIKE S032-WBWBEST,
        WERKS LIKE S032-WERKS,
END OF IT_S032.
*--------------------定义结果数据信息-----------------------------*
DATA: BEGIN OF IT_RESULT OCCURS 0,
        NAME1 LIKE T001W-NAME1,
        PFACH LIKE T001W-PFACH,
       WBWBEST LIKE S032-WBWBEST,
END OF IT_RESULT.

DATA PWBWBEST TYPE P DECIMALS 3.

SELECT-OPTIONS S_WERKS FOR IT_T001W-WERKS.
*--------------------输出面眉HEADING-------------------*
TOP-OF-PAGE.
  PERFORM FRM_HEAD_OUTPUT .
*------------------START-OF-SELECTION-------------*
START-OF-SELECTION.
  PERFORM FRM_GETDATA.
  PERFORM FRM_PROCESS.
*------------------END-OF-SELECTION---------------*
END-OF-SELECTION.
  PERFORM FRM_OUTPUT.
*&---------------------------------------------------------------------*
*&      Form  FRM_HEAD_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_HEAD_OUTPUT .
  ULINE.
  WRITE: '|' , (30) '电厂' CENTERED,'|', (25) '装机容量(kwh)' CENTERED,'|',
        (28) '库存资金(万元)' CENTERED, '|' , (28) '库存资金占用额(万元/kwh)' CENTERED , '|'.
  ULINE /.
ENDFORM.                    " FRM_HEAD_OUTPUT
*&---------------------------------------------------------------------*
*&      Form  FRM_GETDATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_GETDATA .

  SELECT * FROM T001W
  INTO CORRESPONDING FIELDS OF TABLE IT_T001W
  WHERE FABKL EQ 'ZT'.

  SELECT * FROM S032
  INTO CORRESPONDING FIELDS OF TABLE IT_S032
  WHERE WERKS IN S_WERKS.
ENDFORM.                    " FRM_GETDATA
*&---------------------------------------------------------------------*
*&      Form  FRM_PROCESS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_PROCESS .
  LOOP AT IT_S032.
    CLEAR IT_RESULT.
    READ TABLE IT_T001W WITH KEY
                WERKS = IT_S032-WERKS.
    IT_RESULT-NAME1 = IT_T001W-NAME1.
    IT_RESULT-PFACH = IT_T001W-PFACH * 10000.
    IT_RESULT-WBWBEST = IT_S032-WBWBEST / 10000.
*    IT_RESULT-PWBWBEST = IT_RESULT-WBWBEST / IT_RESULT-PFACH.
    COLLECT IT_RESULT.
  ENDLOOP.
ENDFORM.                    " FRM_PROCESS
*&---------------------------------------------------------------------*
*&      Form  FRM_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_OUTPUT .
  LOOP AT IT_RESULT.
    PWBWBEST = IT_RESULT-WBWBEST * 10000 / IT_RESULT-PFACH.
    WRITE: '|', (30) IT_RESULT-NAME1 , '|' , (25) IT_RESULT-PFACH CENTERED , '|' ,
           (28) IT_RESULT-WBWBEST, '|', (28) PWBWBEST , '|'.
    ULINE /.
  ENDLOOP.
ENDFORM.                    " FRM_OUTPUT

分享按钮发布于: 2007-08-29 06:38 CharlieShen 阅读(183) 评论(0)  编辑 收藏