ZR_FI_001

*===============================基本信息===============================*
* 标题:资产负债报表
* 创建日期:2004-12-14        
*===============================定    义===============================*

************************************************************************
* 基本代码
************************************************************************
REPORT ZR_FI_001
NO STANDARD PAGE HEADING
LINE-COUNT 90
LINE-SIZE  152
MESSAGE-ID ZFI1.

************************************************************************
* INCLUDE:包含文件
************************************************************************
INCLUDE OLE2INCL.

************************************************************************
* TABLE: 定义TABLE
************************************************************************
TABLES: T001,  "公司代码
        GLT0,  "总帐科目主记录业务额
        ANLC.  "资产值字段
************************************************************************
*INTERNAL TABLES
************************************************************************
*定义内表ITAB_QM(期未数)
*说明:GLT0-hslvt是本位币的余额结转(货币 2)
DATA: BEGIN OF ITAB_QM OCCURS 10.
DATA: "流动资产:
      XJ      LIKE GLT0-HSLVT,   "现金
      DQTZ    LIKE GLT0-HSLVT,   "短期投资
      YSPJ    LIKE GLT0-HSLVT,   "应收票据
      YSZK    LIKE GLT0-HSLVT,   "应收帐款
      HZZB    LIKE GLT0-HSLVT,   "减:坏帐准备
      YSZKJE  LIKE GLT0-HSLVT,   "应收帐款净额
      YFZK    LIKE GLT0-HSLVT,   "预付帐款
      YSBTK   LIKE GLT0-HSLVT,   "应收补贴款
      QTYSK   LIKE GLT0-HSLVT,   "其他应收款
      CH      LIKE GLT0-HSLVT,   "存货
      DTFY    LIKE GLT0-HSLVT,   "待摊费用
      ZCLS    LIKE GLT0-HSLVT,   "待处理流动资产净损失
      ZQTZ    LIKE GLT0-HSLVT,   "一年内到期的长期债券投资
      QTLDZC      LIKE GLT0-HSLVT,"其他流动资产
      TOTAL_LDZC  LIKE GLT0-HSLVT,"流动资产合计

      "长期投资:
      CQTZ    LIKE GLT0-HSLVT,   "长期投资
      "固定资产:
      GDZCYZ  LIKE GLT0-HSLVT,   "固定资产原价
      LJZJ    LIKE GLT0-HSLVT,   "减:累计折旧
      GDZCJZ  LIKE GLT0-HSLVT,   "固定资产净值
      GDZCQL  LIKE GLT0-HSLVT,   "固定资产清理
      ZJGC    LIKE GLT0-HSLVT,   "在建工程
      GDZCSS      LIKE GLT0-HSLVT,"待处理固定资产净损失
      TOTAL_GDZC  LIKE GLT0-HSLVT,"固定资产合计

      "无形资产及递延资产:
      WXZC    LIKE GLT0-HSLVT,   "无形资产
      TYZC    LIKE GLT0-HSLVT,   "递延资产
      TOTAL_WXZC    LIKE GLT0-HSLVT,"无形资产及递延资产合计

      "其他长期资产:
      QCCQZC    LIKE GLT0-HSLVT, "其他长期资产
      "递延税项
      TYSXJX    LIKE GLT0-HSLVT, "递延税项借项
      TOTAL_ZC  LIKE GLT0-HSLVT, "资产总计

      "流动负债:
      DQJK    LIKE GLT0-HSLVT,   "短期借款
      YFPJ    LIKE GLT0-HSLVT,   "应付票据
      YIFZK   LIKE GLT0-HSLVT,   "应付帐款
      YUSZK   LIKE GLT0-HSLVT,   "预收帐款
      YFGZ    LIKE GLT0-HSLVT,   "应付工资
      YFFLF   LIKE GLT0-HSLVT,   "应付福利费
      YFGL    LIKE GLT0-HSLVT,   "应付股利
      YJSJ    LIKE GLT0-HSLVT,   "应交税金
      QTYJK   LIKE GLT0-HSLVT,   "其他应交款
      QTYFK   LIKE GLT0-HSLVT,   "其他应付款
      YTFY    LIKE GLT0-HSLVT,   "预提费用
      DQCQFZ  LIKE GLT0-HSLVT,   "一年内到期的长期负债
      QTLDFZ  LIKE GLT0-HSLVT,   "其他流动负债
      TOTAL_LDFZ LIKE GLT0-HSLVT,"流动负债合计

      "长期负债:
      CQJK    LIKE GLT0-HSLVT,   "长期借款
      YFZQ    LIKE GLT0-HSLVT,   "应付债券
      CQYFK   LIKE GLT0-HSLVT,   "长期应付款
      QTCQFZ  LIKE GLT0-HSLVT,   "其他长期负债
      ZFZZJ   LIKE GLT0-HSLVT,   "其中:住房周转金
      TOTAL_CQFZ LIKE GLT0-HSLVT,"长期负债合计

      "递延税项:
      TYSXDX    LIKE GLT0-HSLVT, "递延税项贷项
      TOTAL_FZ  LIKE GLT0-HSLVT, "负债合计

      "所有者权益(或股东权益):
      SSZB    LIKE GLT0-HSLVT,   "实收资本(或股本)
      YGFTZ   LIKE GLT0-HSLVT,   "减:已归还投资
      SSZBJE  LIKE GLT0-HSLVT,   "实收资本(或股本)净额
      ZBGJ    LIKE GLT0-HSLVT,   "资本公积
      YYGJ    LIKE GLT0-HSLVT,   "盈余公积
      GYJ     LIKE GLT0-HSLVT,   "其中:公益金
      WFPLL   LIKE GLT0-HSLVT,   "未分配利润
      TOTAL_QY   LIKE GLT0-HSLVT,"所有者权益合计
      TOTAL_FZQY LIKE GLT0-HSLVT,"负债及所有者权益总计

      "其它
      WFPLL_2   LIKE GLT0-HSLVT.  "未分配利润
DATA: END OF ITAB_QM.

*定义内表ITAB_NC(年初数)
DATA: ITAB_NC LIKE ITAB_QM OCCURS 10 WITH HEADER LINE.

*定义内表ITAB(作为辅助使用)
DATA: BEGIN OF ITAB OCCURS 10.
        INCLUDE STRUCTURE GLT0.
      DATA: TAMOUNT LIKE GLT0-HSLVT.
DATA: END OF ITAB.


*定义内表ITAB_WFP(作为辅助使用)
  DATA: BEGIN OF ITAB_WFP OCCURS 10.
        INCLUDE STRUCTURE GLT0.
        DATA: TAMOUNT LIKE GLT0-HSLVT.
  DATA: END OF ITAB_WFP.

*定义本期数内表ITAB1_WFP
DATA: BEGIN OF ITAB1_WFP OCCURS 0,
        XSSL LIKE GLT0-HSLVT,      "一、主营业务收入
        XSCB LIKE GLT0-HSLVT,      "减:主营业务成本
        XSSJ LIKE GLT0-HSLVT,      "减:主营业务税金及附加

        TOTAL_CSLR LIKE GLT0-HSLVT,"二、主营业务利润
        QTYWLR LIKE GLT0-HSLVT,    "加:其他业务利润

        XSFY LIKE GLT0-HSLVT,      "减:营业费用
        GLFY LIKE GLT0-HSLVT,      "减:管理费用
        CWFY LIKE GLT0-HSLVT,      "减:财务费用

        TOTAL_YYLR LIKE GLT0-HSLVT,"三、营业利润
        TZSY LIKE GLT0-HSLVT,      "加:投资收益
        PTSL LIKE GLT0-HSLVT,      "加:补贴收入
        YYWSL LIKE GLT0-HSLVT,     "加:营业处收入
        YYWZC LIKE GLT0-HSLVT,     "减:营业处支出
        SYDZ LIKE GLT0-HSLVT,      "加:以前年度损益调整

        TOTAL_LRZE LIKE GLT0-HSLVT,"四、利润总额
        SDS LIKE GLT0-HSLVT,       "减:所得税

        TOTAL_JLR LIKE GLT0-HSLVT, "五、净利润
      END OF ITAB1_WFP.
*定义本年累计数内表ITAB2_WFP
DATA: ITAB2_WFP LIKE ITAB1_WFP OCCURS 10 WITH HEADER LINE.


*定义2005/2期初数据内表
DATA: BEGIN OF ITAB_FIRST OCCURS 10.
        INCLUDE STRUCTURE ZFI02.
DATA: END OF ITAB_FIRST.
*定义损益表的2005/2期初数据内表
DATA: BEGIN OF ITAB_FIRST_WFP OCCURS 10.
        INCLUDE STRUCTURE ZFI03.
DATA: END OF ITAB_FIRST_WFP.

*往数据库增加运行日志
DATA: BEGIN OF IT_ZREPORTLOG OCCURS  0.
        INCLUDE TYPE ZREPORTLOG.
DATA: END OF IT_ZREPORTLOG.
************************************************************************
* CONSTANTS : 定义常量
************************************************************************

************************************************************************
* TYPE : 定义数据类型
************************************************************************
TYPE-POOLS: SLIS.

************************************************************************
* DATA : 定义变量
************************************************************************
*单据表格上相关坐标值定义
DATA: A1 TYPE I VALUE 0,
      A2 TYPE I VALUE 0,
      A3 TYPE I VALUE 0,
      A4 TYPE I VALUE 0,
      A5 TYPE I VALUE 0,
      A6 TYPE I VALUE 0,
      A7 TYPE I VALUE 0,
      A8 TYPE I VALUE 0,
      A9 TYPE I VALUE 0.

DATA: B1 TYPE I VALUE 0,
      B2 TYPE I VALUE 0,
      B3 TYPE I VALUE 0,
      B4 TYPE I VALUE 0,
      B5 TYPE I VALUE 0,
      B6 TYPE I VALUE 0,
      B7 TYPE I VALUE 0,
      B8 TYPE I VALUE 0.

DATA: NAME_LAST LIKE USER_ADDR-NAME_LAST,
      NAME_FIRST LIKE USER_ADDR-NAME_FIRST,
      NAME(16).

DATA: G_DAY(2),
      G_LEN TYPE I,
      G_MOD TYPE I,
      V_KANSW LIKE ANLC-KANSW, "累积购置和生产费用
      V_KNAFA LIKE ANLC-KNAFA, "累计正常折旧
      P_KANSW LIKE ANLC-KANSW. "
************************************************************************
* DEFINE: 定义宏
************************************************************************
*普通报表格式的输出宏
DEFINE MACRO1.               "画表格
  WRITE: AT /A1   SY-VLINE.
  WRITE: AT  B1   &1.
  WRITE: AT  A2   SY-VLINE.
  WRITE: AT  B2   &2 CENTERED.
  WRITE: AT  A3   SY-VLINE.
  WRITE: AT  B3   &3 RIGHT-JUSTIFIED.
  WRITE: AT  A4   SY-VLINE.
  WRITE: AT  B4   &4 RIGHT-JUSTIFIED.
  WRITE: AT  A5   SY-VLINE.
  WRITE: AT  B5   &5.
  WRITE: AT  A6   SY-VLINE.
  WRITE: AT  B6   &6 CENTERED.
  WRITE: AT  A7   SY-VLINE.
  WRITE: AT  B7   &7 RIGHT-JUSTIFIED.
  WRITE: AT  A8   SY-VLINE.
  WRITE: AT  B8   &8 RIGHT-JUSTIFIED.
  WRITE: AT  A9   SY-VLINE.
END-OF-DEFINITION.
************************************************************************
*  SELECTION SCREEN : 定义报表筛选条件
************************************************************************
*确定过滤参数
SELECTION-SCREEN BEGIN OF BLOCK BLK_001 WITH FRAME. TITLE BLK_001 .
    PARAMETERS : P_BUKRS LIKE GLT0-BUKRS OBLIGATORY MEMORY ID 001_1."公司代码
    PARAMETERS : P_RYEAR(4) TYPE C OBLIGATORY MEMORY ID 001_2."报表年度DEFAULT SY-DATUM+0(4)
    PARAMETERS : P_PERID(2) TYPE C OBLIGATORY MEMORY ID 001_3."报表期间DEFAULT SY-DATUM+4(2)
SELECTION-SCREEN END OF BLOCK BLK_001.


*===============================事    件===============================*
************************************************************************
* INITIALIZATION.启动程序开始执行
************************************************************************
INITIALIZATION.
  PERFORM. SUB_INI.
************************************************************************
* AT SELECTION SCREEN:
************************************************************************
AT SELECTION-SCREEN.
  PERFORM. F_CHECK_INPUT.          "检查用户输入
************************************************************************
* START OF SELECTION:
************************************************************************
START-OF-SELECTION.
*往数据库增加运行日志
  IT_ZREPORTLOG-MANDT = SY-MANDT.
  IT_ZREPORTLOG-TCODE = SY-TCODE.
  IT_ZREPORTLOG-DATUM = SY-DATUM.
  IT_ZREPORTLOG-UZEIT = SY-UZEIT.
  IT_ZREPORTLOG-UNAME = SY-UNAME.
  IT_ZREPORTLOG-TITLE = SY-TITLE.
  APPEND IT_ZREPORTLOG.
  INSERT INTO ZREPORTLOG VALUES IT_ZREPORTLOG .

  PERFORM. CAL_DAY.    "每月天数判断
  PERFORM. F_READ_DATA.
  PERFORM. F_PRINT_REPORT.
************************************************************************
* END OF SELECTION
************************************************************************
END-OF-SELECTION.

************************************************************************
* TOP OF PAGE
************************************************************************
TOP-OF-PAGE.
  PERFORM. SUB_HEAD.
************************************************************************
* END OF PAGE
************************************************************************
END-OF-PAGE.
  PERFORM. SUB_BOTTOM.


*===============================子 例 程===============================*
*&---------------------------------------------------------------------*
*过滤条件有效性检查
*&---------------------------------------------------------------------*
FORM. F_CHECK_INPUT.
DATA: L_DATE LIKE LIKP-ERDAT.

  IF P_PERID+1(1) = ''.
    CONCATENATE '0' P_PERID INTO P_PERID.
  ENDIF.

  CONCATENATE P_RYEAR P_PERID '01' INTO L_DATE.
  IF L_DATE <= '20050101'.
    MESSAGE E001.    "不能运行该期间的报表!
  ENDIF.

  IF ( P_PERID < '01' ) OR ( P_PERID > '16' ).
    MESSAGE E000.    "该会计期间不存在!
  ENDIF.
ENDFORM.                    " F_CHECK_INPUT
*&---------------------------------------------------------------------*
*从数据库中读取数据,填充报表输出时所用的内表
*&---------------------------------------------------------------------*
FORM. F_READ_DATA .
DATA: L_WFPLL_QM LIKE GLT0-HSLVT,
      L_WFPLL_NC LIKE GLT0-HSLVT.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE ITAB
   FROM GLT0
   WHERE RYEAR = P_RYEAR AND
         BUKRS = P_BUKRS AND
         RACCT > '0010000000'.

  REFRESH ITAB_QM.
  CLEAR ITAB_QM.
  REFRESH ITAB_NC.
  CLEAR ITAB.
*********
*& 开始循环,处理每月期未数
*& itab-tamount-> 表示本月总金额
*& itab-hslvt -> 表示本位币的余额结转 (货币 2);相当于年初数
*& itab-hsl01~16 -> 表示按本位币的期间中移动的总计 (货币2);即各月的变动金额
*********
LOOP AT ITAB.
  CASE P_PERID.
    WHEN '01'.
      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01.
    WHEN '02'.
      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02.
    WHEN '03'.
      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02 + ITAB-HSL03.
    WHEN '04'.
      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02 + ITAB-HSL03
                   + ITAB-HSL04.
    WHEN '05'.
      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02 + ITAB-HSL03
                   + ITAB-HSL04 + ITAB-HSL05.
    WHEN '06'.
      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02 + ITAB-HSL03
                   + ITAB-HSL04 + ITAB-HSL05 + ITAB-HSL06.
    WHEN '07'.
      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02 + ITAB-HSL03
                   + ITAB-HSL04 + ITAB-HSL05 + ITAB-HSL06 + ITAB-HSL07.
    WHEN '08'.
      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02 + ITAB-HSL03
                   + ITAB-HSL04 + ITAB-HSL05 + ITAB-HSL06 + ITAB-HSL07
                   + ITAB-HSL08.
    WHEN '09'.
      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02 + ITAB-HSL03
                   + ITAB-HSL04 + ITAB-HSL05 + ITAB-HSL06 + ITAB-HSL07
                   + ITAB-HSL08 + ITAB-HSL09.
    WHEN '10'.
      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02 + ITAB-HSL03
                   + ITAB-HSL04 + ITAB-HSL05 + ITAB-HSL06 + ITAB-HSL07
                   + ITAB-HSL08 + ITAB-HSL09 + ITAB-HSL10.
    WHEN '11'.
      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02 + ITAB-HSL03
                   + ITAB-HSL04 + ITAB-HSL05 + ITAB-HSL06 + ITAB-HSL07
                   + ITAB-HSL08 + ITAB-HSL09 + ITAB-HSL10 + ITAB-HSL11.
    WHEN '12'.
      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02 + ITAB-HSL03
                   + ITAB-HSL04 + ITAB-HSL05 + ITAB-HSL06 + ITAB-HSL07
                   + ITAB-HSL08 + ITAB-HSL09 + ITAB-HSL10 + ITAB-HSL11
                   + ITAB-HSL12 + ITAB-HSL13 + ITAB-HSL14 + ITAB-HSL15
                   + ITAB-HSL16.
*    WHEN '13'.
*      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02 + ITAB-HSL03
*                   + ITAB-HSL04 + ITAB-HSL05 + ITAB-HSL06 + ITAB-HSL07
*                   + ITAB-HSL08 + ITAB-HSL09 + ITAB-HSL10 + ITAB-HSL11
*                   + ITAB-HSL12 + ITAB-HSL13.
*    WHEN '14'.
*      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02 + ITAB-HSL03
*                   + ITAB-HSL04 + ITAB-HSL05 + ITAB-HSL06 + ITAB-HSL07
*                   + ITAB-HSL08 + ITAB-HSL09 + ITAB-HSL10 + ITAB-HSL11
*                   + ITAB-HSL12 + ITAB-HSL13 + ITAB-HSL14.
*    WHEN '15'.
*      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02 + ITAB-HSL03
*                   + ITAB-HSL04 + ITAB-HSL05 + ITAB-HSL06 + ITAB-HSL07
*                   + ITAB-HSL08 + ITAB-HSL09 + ITAB-HSL10 + ITAB-HSL11
*                   + ITAB-HSL12 + ITAB-HSL13 + ITAB-HSL14 + ITAB-HSL15.
*    WHEN '16'.
*      ITAB-TAMOUNT = ITAB-HSLVT + ITAB-HSL01 + ITAB-HSL02 + ITAB-HSL03
*                   + ITAB-HSL04 + ITAB-HSL05 + ITAB-HSL06 + ITAB-HSL07
*                   + ITAB-HSL08 + ITAB-HSL09 + ITAB-HSL10 + ITAB-HSL11
*                   + ITAB-HSL12 + ITAB-HSL13 + ITAB-HSL14 + ITAB-HSL15
*                   + ITAB-HSL16.
  ENDCASE.
  MODIFY ITAB INDEX SY-TABIX.

*  汇总明细科目至总账科目
  "存货
  IF ITAB-RACCT+2(2) = '12' OR ITAB-RACCT+2(8) = '41020001'
   OR ITAB-RACCT+2(8) = '41020002' OR ITAB-RACCT+2(8) = '41020003'.
    ITAB_QM-CH = ITAB_QM-CH + ITAB-TAMOUNT.  "期未数(ITAB_QM)
    ITAB_NC-CH  = ITAB_NC-CH + ITAB-HSLVT.     "期初数(ITAB_NC)
  ELSE.
  CASE ITAB-RACCT+2(4).
"====流动资产:
    "货币资金
    WHEN '1001' OR '1002' OR '1009'.
      ITAB_QM-XJ = ITAB_QM-XJ + ITAB-TAMOUNT.  "期未数(ITAB_QM)
      ITAB_NC-XJ  = ITAB_NC-XJ + ITAB-HSLVT.     "期初数(ITAB_NC)
    "短期投资
    WHEN '1101' OR '1102'.
      ITAB_QM-DQTZ = ITAB_QM-DQTZ + ITAB-TAMOUNT.
      ITAB_NC-DQTZ  = ITAB_NC-DQTZ + ITAB-HSLVT.
    "应收票据
    WHEN '1111'.
      ITAB_QM-YSPJ = ITAB_QM-YSPJ + ITAB-TAMOUNT.
      ITAB_NC-YSPJ  = ITAB_NC-YSPJ + ITAB-HSLVT.
    "应收帐款
    WHEN '1131'.
      ITAB_QM-YSZK = ITAB_QM-YSZK + ITAB-TAMOUNT.
      ITAB_NC-YSZK  = ITAB_NC-YSZK + ITAB-HSLVT.
    "减:坏帐准备
    WHEN '1141'.
      ITAB_QM-HZZB = ITAB_QM-HZZB + ITAB-TAMOUNT.
      ITAB_NC-HZZB  = ITAB_NC-HZZB + ITAB-HSLVT.
    "应收帐款净额(略)
    "预付帐款
    WHEN '1151'.
      ITAB_QM-YFZK = ITAB_QM-YFZK + ITAB-TAMOUNT.
      ITAB_NC-YFZK  = ITAB_NC-YFZK + ITAB-HSLVT.
    "应收补贴款
    WHEN '1161'.
      ITAB_QM-YSBTK = ITAB_QM-YSBTK + ITAB-TAMOUNT.
      ITAB_NC-YSBTK  = ITAB_NC-YSBTK + ITAB-HSLVT.
    "其他应收款
    WHEN '1133'.
      ITAB_QM-QTYSK = ITAB_QM-QTYSK + ITAB-TAMOUNT.
      ITAB_NC-QTYSK  = ITAB_NC-QTYSK + ITAB-HSLVT.
    "存货(在上面处理)
    "待摊费用
    WHEN '1301'.
      ITAB_QM-DTFY = ITAB_QM-DTFY + ITAB-TAMOUNT.
      ITAB_NC-DTFY  = ITAB_NC-DTFY + ITAB-HSLVT.
    "待处理流动资产净损失(无)
    "一年内到期的长期债券投资(无)
    "其他流动资产
    WHEN '1498' OR '6001'.
      IF ITAB-RACCT+2(4) = '1498' OR ITAB-RACCT+2(8) = '60010001'.
        ITAB_QM-QTLDZC = ITAB_QM-QTLDZC + ITAB-TAMOUNT.
        ITAB_NC-QTLDZC  = ITAB_NC-QTLDZC + ITAB-HSLVT.
      ENDIF.
*      IF ( ITAB-RACCT+2(8) = '14980001' ) OR ( ITAB-RACCT+2(8) = '14980002' )
*       OR ( ITAB-RACCT+2(8) = '60010001' ).
*        ITAB_QM-QTLDZC = ITAB_QM-QTLDZC + ITAB-TAMOUNT.
*        ITAB_NC-QTLDZC  = ITAB_NC-QTLDZC + ITAB-HSLVT.
*      ENDIF.
    "流动资产合计(略)

"====长期投资:
    "长期投资
    WHEN '1401'.
      ITAB_QM-CQTZ = ITAB_QM-CQTZ + ITAB-TAMOUNT.
      ITAB_NC-CQTZ  = ITAB_NC-CQTZ + ITAB-HSLVT.

"====固定资产:
    "固定资产原价
    WHEN '1501'.
      ITAB_QM-GDZCYZ = ITAB_QM-GDZCYZ + ITAB-TAMOUNT.
      ITAB_NC-GDZCYZ  = ITAB_NC-GDZCYZ + ITAB-HSLVT.
    "减:累计折旧
    WHEN '1502'.
      ITAB_QM-LJZJ = ITAB_QM-LJZJ + ITAB-TAMOUNT.
      ITAB_NC-LJZJ  = ITAB_NC-LJZJ + ITAB-HSLVT.
    "固定资产净值(无)
    "固定资产清理
    WHEN '1701'.
      ITAB_QM-GDZCQL = ITAB_QM-GDZCQL + ITAB-TAMOUNT.
      ITAB_NC-GDZCQL  = ITAB_NC-GDZCQL + ITAB-HSLVT.
    "在建工程
    WHEN '1603'.
      ITAB_QM-ZJGC = ITAB_QM-ZJGC + ITAB-TAMOUNT.
      ITAB_NC-ZJGC  = ITAB_NC-ZJGC + ITAB-HSLVT.
    "待处理固定资产净损失
    WHEN '1911'.
      ITAB_QM-GDZCSS = ITAB_QM-GDZCSS + ITAB-TAMOUNT.
      ITAB_NC-GDZCSS  = ITAB_NC-GDZCSS + ITAB-HSLVT.
    "固定资产合计(略)

"====无形资产及递延资产:
    "无形资产
    WHEN '1801'.
      ITAB_QM-WXZC = ITAB_QM-WXZC + ITAB-TAMOUNT.
      ITAB_NC-WXZC  = ITAB_NC-WXZC + ITAB-HSLVT.
    "递延资产(无)
    "无形资产及递延资产合计(略)

"====其他长期资产:
    "其他长期资产
    WHEN '1901'.
      ITAB_QM-QCCQZC = ITAB_QM-QCCQZC + ITAB-TAMOUNT.
      ITAB_NC-QCCQZC  = ITAB_NC-QCCQZC + ITAB-HSLVT.
"====递延税项
    "递延税项借项(无)
    "资产总计(略)

"====流动负债:
    "短期借款
    WHEN '2101'.
      ITAB_QM-DQJK = ITAB_QM-DQJK + ITAB-TAMOUNT.
      ITAB_NC-DQJK  = ITAB_NC-DQJK + ITAB-HSLVT.
    "应付票据
    WHEN '2111'.
      ITAB_QM-YFPJ = ITAB_QM-YFPJ + ITAB-TAMOUNT.
      ITAB_NC-YFPJ  = ITAB_NC-YFPJ + ITAB-HSLVT.
    "应付帐款
    WHEN '2121'.
      ITAB_QM-YIFZK = ITAB_QM-YIFZK + ITAB-TAMOUNT.
      ITAB_NC-YIFZK  = ITAB_NC-YIFZK + ITAB-HSLVT.
    "预收帐款
    WHEN '2131'.
      ITAB_QM-YUSZK = ITAB_QM-YUSZK + ITAB-TAMOUNT.
      ITAB_NC-YUSZK  = ITAB_NC-YUSZK + ITAB-HSLVT.
    "应付工资
    WHEN '2151'.
      ITAB_QM-YFGZ = ITAB_QM-YFGZ + ITAB-TAMOUNT.
      ITAB_NC-YFGZ  = ITAB_NC-YFGZ + ITAB-HSLVT.
    "应付福利费
    WHEN '2153'.
      ITAB_QM-YFFLF = ITAB_QM-YFFLF + ITAB-TAMOUNT.
      ITAB_NC-YFFLF  = ITAB_NC-YFFLF + ITAB-HSLVT.
    "应付股利
    WHEN '2161'.
      ITAB_QM-YFGL = ITAB_QM-YFGL + ITAB-TAMOUNT.
      ITAB_NC-YFGL  = ITAB_NC-YFGL + ITAB-HSLVT.
    "应交税金
    WHEN '2171'.
      ITAB_QM-YJSJ = ITAB_QM-YJSJ + ITAB-TAMOUNT.
      ITAB_NC-YJSJ  = ITAB_NC-YJSJ + ITAB-HSLVT.
    "其他应交款(无)
    WHEN '2176'.
      ITAB_QM-QTYJK = ITAB_QM-QTYJK + ITAB-TAMOUNT.
      ITAB_NC-QTYJK  = ITAB_NC-QTYJK + ITAB-HSLVT.
    "其他应付款
    WHEN '2181'.
      ITAB_QM-QTYFK = ITAB_QM-QTYFK + ITAB-TAMOUNT.
      ITAB_NC-QTYFK  = ITAB_NC-QTYFK + ITAB-HSLVT.
    "预提费用
    WHEN '2191'.
      ITAB_QM-YTFY = ITAB_QM-YTFY + ITAB-TAMOUNT.
      ITAB_NC-YTFY  = ITAB_NC-YTFY + ITAB-HSLVT.
    "一年内到期的长期负债(无)
    "其他流动负债(无)
    "流动负债合计(略)
"====长期负债:(无)
    "长期借款
    WHEN '2201'.
      ITAB_QM-CQJK = ITAB_QM-CQJK + ITAB-TAMOUNT.
      ITAB_NC-CQJK  = ITAB_NC-CQJK + ITAB-HSLVT.
"====递延税项:(无)
"====所有者权益(或股东权益):
    "实收资本(或股本)
    WHEN '3101'.
      ITAB_QM-SSZB = ITAB_QM-SSZB + ITAB-TAMOUNT.
      ITAB_NC-SSZB  = ITAB_NC-SSZB + ITAB-HSLVT.
    "减:已归还投资(无)
    "实收资本(或股本)净额(无)
    "资本公积
    WHEN '3111'.
      ITAB_QM-ZBGJ = ITAB_QM-ZBGJ + ITAB-TAMOUNT.
      ITAB_NC-ZBGJ  = ITAB_NC-ZBGJ + ITAB-HSLVT.
    "盈余公积
    WHEN '3121'.
      ITAB_QM-YYGJ = ITAB_QM-YYGJ + ITAB-TAMOUNT.
      ITAB_NC-YYGJ  = ITAB_NC-YYGJ + ITAB-HSLVT.
    "其中:公益金(无)
    "未分配利润(略)
    "另取未分配利润科目
    WHEN '3131' OR '3141'.
      ITAB_QM-WFPLL_2 = ITAB_QM-WFPLL_2 + ITAB-TAMOUNT.
      ITAB_NC-WFPLL_2 = ITAB_NC-WFPLL_2 + ITAB-HSLVT.
      IF P_RYEAR = '2005'.
        L_WFPLL_QM = L_WFPLL_QM + ITAB-HSL02.
      ENDIF.
    WHEN '5801'.
      IF ITAB-RACCT+2(8) = '58010000' OR ITAB-RACCT+2(8) = '58010001'.
        ITAB_QM-WFPLL_2 = ITAB_QM-WFPLL_2 + ITAB-HSLVT.
        ITAB_NC-WFPLL_2 = ITAB_NC-WFPLL_2 + ITAB-HSLVT.
      ENDIF.
    "所有者权益合计(略)
    "负债及所有者权益总计(略)
  ENDCASE.
  ENDIF.

*更新内表ITAB_NC,ITAB_QM
  MODIFY ITAB_NC INDEX SY-TABIX.
  MODIFY ITAB_QM INDEX SY-TABIX.
ENDLOOP.

*未分配利润处理
  PERFORM. F_WFPLL.
*2000公司年初"其他流动资产"&"未分配利润"特殊处理
  IF P_BUKRS = '2000'.
    PERFORM. F_MPS.
  ENDIF.

  ITAB_NC-WFPLL = ITAB_NC-WFPLL + ITAB_NC-WFPLL_2 .
  ITAB_QM-WFPLL = ITAB_QM-WFPLL + ITAB_QM-WFPLL_2 - L_WFPLL_QM.
  MODIFY ITAB_NC INDEX SY-TABIX.
  MODIFY ITAB_QM INDEX SY-TABIX.

*2005年年初数据特殊处理
  IF P_RYEAR = '2005'.
    PERFORM. F_FIRST_DO.
  ENDIF.

*最终数据合计及总计
  PERFORM. F_TOTAL.

ENDFORM.                    " F_READ_DATA
*&---------------------------------------------------------------------*
*&      2005年数据特殊处理
*&      从表ZFI02中取2005年2月的期初数据
*&---------------------------------------------------------------------*
FORM. F_FIRST_DO.
  SELECT *
    INTO CORRESPONDING FIELDS OF TABLE ITAB_FIRST
    FROM ZFI02
    WHERE RRCTY = '1'
      AND BUKRS = P_BUKRS.

  LOOP AT ITAB_FIRST.
*-----资产
    ITAB_NC-CH = ITAB_FIRST-CH.
    ITAB_NC-XJ = ITAB_FIRST-XJ.
    ITAB_NC-DQTZ = ITAB_FIRST-DQTZ.
    ITAB_NC-YSPJ = ITAB_FIRST-YSPJ.
    ITAB_NC-YSZK = ITAB_FIRST-YSZK.
    ITAB_NC-HZZB = 0 - ITAB_FIRST-HZZB.
    ITAB_NC-YFZK = ITAB_FIRST-YFZK.
    ITAB_NC-YSBTK = ITAB_FIRST-YSBTK.
    ITAB_NC-QTYSK = ITAB_FIRST-QTYSK.
    ITAB_NC-DTFY = ITAB_FIRST-DTFY.
    ITAB_NC-QTLDZC = ITAB_FIRST-QTLDZC.
    ITAB_NC-CQTZ = ITAB_FIRST-CQTZ.
    ITAB_NC-GDZCYZ = ITAB_FIRST-GDZCYZ.
    ITAB_NC-LJZJ = 0 - ITAB_FIRST-LJZJ.
    ITAB_NC-GDZCQL = ITAB_FIRST-GDZCQL.
    ITAB_NC-ZJGC = ITAB_FIRST-ZJGC.
    ITAB_NC-GDZCSS = ITAB_FIRST-GDZCSS.
    ITAB_NC-WXZC = ITAB_FIRST-WXZC.
    ITAB_NC-QCCQZC = ITAB_FIRST-QCCQZC.

*------负债及所有者权益
    ITAB_NC-DQJK = 0 - ITAB_FIRST-DQJK.
    ITAB_NC-YFPJ = 0 - ITAB_FIRST-YFPJ.
    ITAB_NC-YIFZK = 0 - ITAB_FIRST-YIFZK.
    ITAB_NC-YUSZK = 0 - ITAB_FIRST-YUSZK.
    ITAB_NC-YFGZ = 0 - ITAB_FIRST-YFGZ.
    ITAB_NC-YFFLF = 0 - ITAB_FIRST-YFFLF.
    ITAB_NC-YFGL = 0 - ITAB_FIRST-YFGL.
    ITAB_NC-YJSJ = 0 - ITAB_FIRST-YJSJ.
    ITAB_NC-QTYFK = 0 - ITAB_FIRST-QTYFK.
    ITAB_NC-CQJK = 0 - ITAB_FIRST-CQJK.
    ITAB_NC-YTFY = 0 - ITAB_FIRST-YTFY.
    ITAB_NC-SSZB = 0 - ITAB_FIRST-SSZB.
    ITAB_NC-ZBGJ = 0 - ITAB_FIRST-ZBGJ.
    ITAB_NC-YYGJ = 0 - ITAB_FIRST-YYGJ.
    ITAB_NC-WFPLL = 0 - ITAB_FIRST-WFPLL.

*---更新内表ITAB_NC
    MODIFY ITAB_NC INDEX SY-TABIX.
  ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*最终数据合计及总计
*&---------------------------------------------------------------------*
FORM. F_TOTAL.
  "应收帐款净额
  ITAB_QM-YSZKJE = ITAB_QM-YSZK + ITAB_QM-HZZB.
  ITAB_NC-YSZKJE = ITAB_NC-YSZK + ITAB_NC-HZZB.
  "流动资产合计
  ITAB_QM-TOTAL_LDZC = ITAB_QM-XJ + ITAB_QM-DQTZ + ITAB_QM-YSPJ + ITAB_QM-YSZKJE +
                     ITAB_QM-YFZK + ITAB_QM-YSBTK + ITAB_QM-QTYSK +
                     ITAB_QM-CH + ITAB_QM-DTFY + ITAB_QM-ZCLS + ITAB_QM-ZQTZ +
                     ITAB_QM-QTLDZC.
  ITAB_NC-TOTAL_LDZC =  ITAB_NC-XJ + ITAB_NC-DQTZ + ITAB_NC-YSPJ + ITAB_NC-YSZKJE +
                     ITAB_NC-YFZK + ITAB_NC-YSBTK + ITAB_NC-QTYSK +
                     ITAB_NC-CH + ITAB_NC-DTFY + ITAB_NC-ZCLS + ITAB_NC-ZQTZ +
                     ITAB_NC-QTLDZC.
  "固定资产净值
  ITAB_QM-GDZCJZ = ITAB_QM-GDZCYZ + ITAB_QM-LJZJ.
  ITAB_NC-GDZCJZ = ITAB_NC-GDZCYZ + ITAB_NC-LJZJ.
  "固定资产合计
  ITAB_QM-TOTAL_GDZC = ITAB_QM-GDZCJZ + ITAB_QM-GDZCQL + ITAB_QM-ZJGC +
                     ITAB_QM-GDZCSS.
  ITAB_NC-TOTAL_GDZC =  ITAB_NC-GDZCJZ + ITAB_NC-GDZCQL + ITAB_NC-ZJGC +
                     ITAB_NC-GDZCSS.
  "无形资产及递延资产合计
  ITAB_QM-TOTAL_WXZC = ITAB_QM-WXZC + ITAB_QM-TYZC.
  ITAB_NC-TOTAL_WXZC  = ITAB_NC-WXZC + ITAB_NC-TYZC.
  "资产总计
  ITAB_QM-TOTAL_ZC = ITAB_QM-TOTAL_LDZC + ITAB_QM-CQTZ + ITAB_QM-TOTAL_GDZC +
                   ITAB_QM-TOTAL_WXZC + ITAB_QM-QCCQZC + ITAB_QM-TYSXJX.
  ITAB_NC-TOTAL_ZC  = ITAB_NC-TOTAL_LDZC + ITAB_NC-CQTZ + ITAB_NC-TOTAL_GDZC +
                   ITAB_NC-TOTAL_WXZC + ITAB_NC-QCCQZC + ITAB_NC-TYSXJX.

  "流动负债合计
  ITAB_QM-TOTAL_LDFZ = ITAB_QM-DQJK + ITAB_QM-YFPJ + ITAB_QM-YIFZK +
                     ITAB_QM-YUSZK + ITAB_QM-YFGZ + ITAB_QM-YFFLF +
                     ITAB_QM-YFGL + ITAB_QM-YJSJ + ITAB_QM-QTYJK +
                     ITAB_QM-QTYFK + ITAB_QM-YTFY + ITAB_QM-DQCQFZ +
                     ITAB_QM-QTLDFZ.
  ITAB_NC-TOTAL_LDFZ  = ITAB_NC-DQJK + ITAB_NC-YFPJ + ITAB_NC-YIFZK +
                     ITAB_NC-YUSZK + ITAB_NC-YFGZ + ITAB_NC-YFFLF +
                     ITAB_NC-YFGL + ITAB_NC-YJSJ + ITAB_NC-QTYJK +
                     ITAB_NC-QTYFK + ITAB_NC-YTFY + ITAB_NC-DQCQFZ +
                     ITAB_NC-QTLDFZ.
  "长期负债合计(略)
  ITAB_QM-TOTAL_CQFZ = ITAB_QM-CQJK + ITAB_QM-YFZQ + ITAB_QM-CQYFK + ITAB_QM-QTCQFZ.
  ITAB_NC-TOTAL_CQFZ = ITAB_NC-CQJK + ITAB_NC-YFZQ + ITAB_NC-CQYFK + ITAB_NC-QTCQFZ.
  "负债合计
  ITAB_QM-TOTAL_FZ = ITAB_QM-TOTAL_LDFZ + ITAB_QM-TOTAL_CQFZ + ITAB_QM-TYSXDX.
  ITAB_NC-TOTAL_FZ  = ITAB_NC-TOTAL_LDFZ + ITAB_NC-TOTAL_CQFZ + ITAB_NC-TYSXDX.
  "实收资本(或股本)净额
  ITAB_QM-SSZBJE = ITAB_QM-SSZB - ITAB_QM-YGFTZ.
  ITAB_NC-SSZBJE  = ITAB_NC-SSZB - ITAB_NC-YGFTZ.
  "所有者权益合计
  "2005年数据特殊处理
  IF P_RYEAR = '2005'.
    ITAB_QM-WFPLL = ITAB_NC-WFPLL + ITAB_QM-WFPLL.
  ENDIF.

  ITAB_QM-TOTAL_QY = ITAB_QM-SSZBJE + ITAB_QM-ZBGJ + ITAB_QM-YYGJ +
                   ITAB_QM-WFPLL.
  ITAB_NC-TOTAL_QY  = ITAB_NC-SSZBJE + ITAB_NC-ZBGJ + ITAB_NC-YYGJ +
                   ITAB_NC-WFPLL.
  "负债及所有者权益总计
  ITAB_QM-TOTAL_FZQY = ITAB_QM-TOTAL_FZ + ITAB_QM-TOTAL_QY.
  ITAB_NC-TOTAL_FZQY  = ITAB_NC-TOTAL_FZ + ITAB_NC-TOTAL_QY.

  MODIFY ITAB_NC INDEX SY-TABIX.
  MODIFY ITAB_QM INDEX SY-TABIX.
ENDFORM.                   "F_TOTAL.
*&---------------------------------------------------------------------*
*&      计算各期间未分配利润(ITAB_NC-WFPLL,ITAB_QM-WFPLL)
*&---------------------------------------------------------------------*
FORM. F_WFPLL.
DATA: TAMOUNT1 LIKE GLT0-HSLVT,    "本期数
      TAMOUNT2 LIKE GLT0-HSLVT.    "本年累计数

  CLEAR ITAB1_WFP.
  REFRESH ITAB1_WFP.
  CLEAR ITAB2_WFP.
  REFRESH ITAB2_WFP.

  SELECT *
    FROM GLT0
    INTO CORRESPONDING FIELDS OF TABLE ITAB_WFP
    WHERE BUKRS = P_BUKRS AND RYEAR = P_RYEAR.  "公司代码、会计年度

*开始循环
  LOOP AT ITAB_WFP.
   CASE P_PERID.
     WHEN '01'.
       TAMOUNT1 = ITAB_WFP-HSL01.
       TAMOUNT2 = ITAB_WFP-HSL01.
     WHEN '02'.
       TAMOUNT1 = ITAB_WFP-HSL02.
       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02.
     WHEN '03'.
       TAMOUNT1 = ITAB_WFP-HSL03.
       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02 + ITAB_WFP-HSL03.
     WHEN '04'.
       TAMOUNT1 = ITAB_WFP-HSL04.
       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02 + ITAB_WFP-HSL03
                + ITAB_WFP-HSL04.
     WHEN '05'.
       TAMOUNT1 = ITAB_WFP-HSL05.
       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02 + ITAB_WFP-HSL03
                + ITAB_WFP-HSL04 + ITAB_WFP-HSL05.
     WHEN '06'.
       TAMOUNT1 = ITAB_WFP-HSL06.
       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02 + ITAB_WFP-HSL03
                + ITAB_WFP-HSL04 + ITAB_WFP-HSL05 + ITAB_WFP-HSL06.
     WHEN '07'.
       TAMOUNT1 = ITAB_WFP-HSL07.
       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02 + ITAB_WFP-HSL03
                + ITAB_WFP-HSL04 + ITAB_WFP-HSL05 + ITAB_WFP-HSL06 + ITAB_WFP-HSL07.
     WHEN '08'.
       TAMOUNT1 = ITAB_WFP-HSL08.
       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02 + ITAB_WFP-HSL03
                + ITAB_WFP-HSL04 + ITAB_WFP-HSL05 + ITAB_WFP-HSL06 + ITAB_WFP-HSL07
                + ITAB_WFP-HSL08.
     WHEN '09'.
       TAMOUNT1 = ITAB_WFP-HSL09.
       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02 + ITAB_WFP-HSL03
                + ITAB_WFP-HSL04 + ITAB_WFP-HSL05 + ITAB_WFP-HSL06 + ITAB_WFP-HSL07
                + ITAB_WFP-HSL08 + ITAB_WFP-HSL09.
     WHEN '10'.
       TAMOUNT1 = ITAB_WFP-HSL10.
       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02 + ITAB_WFP-HSL03
                + ITAB_WFP-HSL04 + ITAB_WFP-HSL05 + ITAB_WFP-HSL06 + ITAB_WFP-HSL07
                + ITAB_WFP-HSL08 + ITAB_WFP-HSL09 + ITAB_WFP-HSL10.
     WHEN '11'.
       TAMOUNT1 = ITAB_WFP-HSL11.
       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02 + ITAB_WFP-HSL03
                + ITAB_WFP-HSL04 + ITAB_WFP-HSL05 + ITAB_WFP-HSL06 + ITAB_WFP-HSL07
                + ITAB_WFP-HSL08 + ITAB_WFP-HSL09 + ITAB_WFP-HSL10 + ITAB_WFP-HSL11.
     WHEN '12' OR '13' OR '14' OR '15' OR '16'.
       TAMOUNT1 = ITAB_WFP-HSL12 + ITAB_WFP-HSL13 + ITAB_WFP-HSL14 + ITAB_WFP-HSL15 +
                  ITAB_WFP-HSL16.
       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02 + ITAB_WFP-HSL03
                + ITAB_WFP-HSL04 + ITAB_WFP-HSL05 + ITAB_WFP-HSL06 + ITAB_WFP-HSL07
                + ITAB_WFP-HSL08 + ITAB_WFP-HSL09 + ITAB_WFP-HSL10 + ITAB_WFP-HSL11
                + ITAB_WFP-HSL12 + ITAB_WFP-HSL13 + ITAB_WFP-HSL14 + ITAB_WFP-HSL15
                + ITAB_WFP-HSL16.
*     WHEN '13'.
*       TAMOUNT1 = ITAB_WFP-HSL13.
*       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02 + ITAB_WFP-HSL03
*                + ITAB_WFP-HSL04 + ITAB_WFP-HSL05 + ITAB_WFP-HSL06 + ITAB_WFP-HSL07
*                + ITAB_WFP-HSL08 + ITAB_WFP-HSL09 + ITAB_WFP-HSL10 + ITAB_WFP-HSL11
*                + ITAB_WFP-HSL12 + ITAB_WFP-HSL13.
*     WHEN '14'.
*       TAMOUNT1 = ITAB_WFP-HSL14.
*       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02 + ITAB_WFP-HSL03
*                + ITAB_WFP-HSL04 + ITAB_WFP-HSL05 + ITAB_WFP-HSL06 + ITAB_WFP-HSL07
*                + ITAB_WFP-HSL08 + ITAB_WFP-HSL09 + ITAB_WFP-HSL10 + ITAB_WFP-HSL11
*                + ITAB_WFP-HSL12 + ITAB_WFP-HSL13 + ITAB_WFP-HSL14.
*     WHEN '15'.
*       TAMOUNT1 = ITAB_WFP-HSL15.
*       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02 + ITAB_WFP-HSL03
*                + ITAB_WFP-HSL04 + ITAB_WFP-HSL05 + ITAB_WFP-HSL06 + ITAB_WFP-HSL07
*                + ITAB_WFP-HSL08 + ITAB_WFP-HSL09 + ITAB_WFP-HSL10 + ITAB_WFP-HSL11
*                + ITAB_WFP-HSL12 + ITAB_WFP-HSL13 + ITAB_WFP-HSL14 + ITAB_WFP-HSL15.
*     WHEN '16'.
*       TAMOUNT1 = ITAB_WFP-HSL16.
*       TAMOUNT2 = ITAB_WFP-HSL01 + ITAB_WFP-HSL02 + ITAB_WFP-HSL03
*                + ITAB_WFP-HSL04 + ITAB_WFP-HSL05 + ITAB_WFP-HSL06 + ITAB_WFP-HSL07
*                + ITAB_WFP-HSL08 + ITAB_WFP-HSL09 + ITAB_WFP-HSL10 + ITAB_WFP-HSL11
*                + ITAB_WFP-HSL12 + ITAB_WFP-HSL13 + ITAB_WFP-HSL14 + ITAB_WFP-HSL15
*                + ITAB_WFP-HSL16.
    ENDCASE.

*  汇总明细科目
    CASE ITAB_WFP-RACCT.
      "一、主营业务收入
      WHEN '0051010101' OR '0051010102' OR '0051010301' OR '0051010302'
          OR '0051010303' OR '0051019901'.
        ITAB1_WFP-XSSL = ITAB1_WFP-XSSL + TAMOUNT1.
        ITAB2_WFP-XSSL = ITAB2_WFP-XSSL + TAMOUNT2.
      "减:主营业务成本
      WHEN '0054010101' OR '0054010102' OR '0054010301' OR '0054010302'
          OR '0054010303'.
        ITAB1_WFP-XSCB = ITAB1_WFP-XSCB + TAMOUNT1.
        ITAB2_WFP-XSCB = ITAB2_WFP-XSCB + TAMOUNT2.
      "减:主营业务税金及附加
      WHEN '0054020001' OR '0054020002' OR '0054020003'
        OR '0054020004' OR '0054020005' OR '0054020099'.
        ITAB1_WFP-XSSJ = ITAB1_WFP-XSSJ + TAMOUNT1.
        ITAB2_WFP-XSSJ = ITAB2_WFP-XSSJ + TAMOUNT2.

      "二、主营业务利润(略)
      "加:其他业务利润
      WHEN '0051020000' OR '0051020001' OR '0051020002'."其他业务收入
        ITAB1_WFP-QTYWLR = ITAB1_WFP-QTYWLR - TAMOUNT1.
        ITAB2_WFP-QTYWLR = ITAB2_WFP-QTYWLR - TAMOUNT2.
      WHEN '0054050000' OR '0054050001' OR '0054050002'."其他业务支出
        ITAB1_WFP-QTYWLR = ITAB1_WFP-QTYWLR - TAMOUNT1.
        ITAB2_WFP-QTYWLR = ITAB2_WFP-QTYWLR - TAMOUNT2.
      "减:营业费用
      WHEN '0055010000' OR '54010101'.
        ITAB1_WFP-XSFY = ITAB1_WFP-XSFY + TAMOUNT1.
        ITAB2_WFP-XSFY = ITAB2_WFP-XSFY + TAMOUNT2.
      "减:管理费用
      WHEN '0055020000' OR '0055020001' OR '0055020002'.
        ITAB1_WFP-GLFY = ITAB1_WFP-GLFY + TAMOUNT1.
        ITAB2_WFP-GLFY = ITAB2_WFP-GLFY + TAMOUNT2.
      "减:财务费用
      WHEN '0055030001' OR '0055030002' OR '0055030003' OR '0055030004'
       OR '0055030005'.
        ITAB1_WFP-CWFY = ITAB1_WFP-CWFY + TAMOUNT1.
        ITAB2_WFP-CWFY = ITAB2_WFP-CWFY + TAMOUNT2.

      "三、营业利润(略)
      "加:投资收益
      WHEN '0052010101' OR '0052010201' OR '0052010301'.
        ITAB1_WFP-TZSY = ITAB1_WFP-TZSY + TAMOUNT1.
        ITAB2_WFP-TZSY = ITAB2_WFP-TZSY + TAMOUNT2.
      "补贴收入
      WHEN '0052030001'.
        ITAB1_WFP-PTSL = ITAB1_WFP-PTSL + TAMOUNT1.
        ITAB2_WFP-PTSL = ITAB2_WFP-PTSL + TAMOUNT2.
      "营业外收入
      WHEN '0053010001' OR '0053010002' OR '0053010003' OR
           '0053010004' OR '0053010005' OR '0053010099'.
        ITAB1_WFP-YYWSL = ITAB1_WFP-YYWSL + TAMOUNT1.
        ITAB2_WFP-YYWSL = ITAB2_WFP-YYWSL + TAMOUNT2.
      "减:营业外支出
      WHEN '0056010001' OR '0056010002' OR '0056010003' OR '0056010004' OR
           '0056010005' OR '0056010006' OR '0056010007' OR '0056010008' OR
           '0056010009' OR '0056010099'.  "增加科目56010009的金额 MODIFY BY ZWM AT 2007-07-02
        ITAB1_WFP-YYWZC = ITAB1_WFP-YYWZC + TAMOUNT1.
        ITAB2_WFP-YYWZC = ITAB2_WFP-YYWZC + TAMOUNT2.
      "加:以前年度损益调整
      WHEN '0058010000' OR '0058010001'.
        ITAB1_WFP-SYDZ = ITAB1_WFP-SYDZ + TAMOUNT1.
        ITAB2_WFP-SYDZ = ITAB2_WFP-SYDZ + TAMOUNT2.

      "四、利润总额(略)
      "减:所得税
      WHEN '0057010000'.
        ITAB1_WFP-SDS = ITAB1_WFP-SDS + TAMOUNT1.
        ITAB2_WFP-SDS = ITAB2_WFP-SDS + TAMOUNT2.
      "五、净利润(略)
    ENDCASE.

*更新内表ITAB1_WFP,ITAB2_WFP
    MODIFY ITAB1_WFP INDEX SY-TABIX.
    MODIFY ITAB2_WFP INDEX SY-TABIX.
    TAMOUNT1 = 0.
    TAMOUNT2 = 0.
  ENDLOOP.


*--2005年数据特殊处理
  IF P_RYEAR = '2005'.
    PERFORM. F_FIRST_DO_WFPLL.
  ENDIF.

*--去负号
   "本月数
   ITAB1_WFP-XSSL = 0 - ITAB1_WFP-XSSL.
   ITAB1_WFP-TZSY = 0 - ITAB1_WFP-TZSY.
   ITAB1_WFP-YYWSL = 0 - ITAB1_WFP-YYWSL.
   ITAB1_WFP-SYDZ = 0 - ITAB1_WFP-SYDZ.
   ITAB1_WFP-PTSL = 0 - ITAB1_WFP-PTSL.

   "本年累计数
   ITAB2_WFP-XSSL = 0 - ITAB2_WFP-XSSL.
   ITAB2_WFP-TZSY = 0 - ITAB2_WFP-TZSY.
   ITAB2_WFP-YYWSL = 0 - ITAB2_WFP-YYWSL.
   ITAB2_WFP-SYDZ = 0 - ITAB2_WFP-SYDZ.
   ITAB2_WFP-PTSL = 0 - ITAB2_WFP-PTSL.

*--最终数据合计及总计
*处理本期数ITAB1_WFP
  "二、主营业务利润
  ITAB1_WFP-TOTAL_CSLR = ITAB1_WFP-XSSL - ITAB1_WFP-XSCB  - ITAB1_WFP-XSSJ.
  "三、营业利润
  ITAB1_WFP-TOTAL_YYLR = ITAB1_WFP-TOTAL_CSLR + ITAB1_WFP-QTYWLR - ITAB1_WFP-XSFY -
                     ITAB1_WFP-GLFY - ITAB1_WFP-CWFY.
  "四、利润总额
  ITAB1_WFP-TOTAL_LRZE = ITAB1_WFP-TOTAL_YYLR + ITAB1_WFP-TZSY + ITAB1_WFP-PTSL +
                     ITAB1_WFP-YYWSL - ITAB1_WFP-YYWZC + ITAB1_WFP-SYDZ.
  "五、净利润
  ITAB1_WFP-TOTAL_JLR = ITAB1_WFP-TOTAL_LRZE - ITAB1_WFP-SDS.
  MODIFY ITAB1_WFP INDEX SY-TABIX.

*处理本年累计数ITAB2_WFP
  "二、主营业务利润
  ITAB2_WFP-TOTAL_CSLR = ITAB2_WFP-XSSL - ITAB2_WFP-XSCB  - ITAB2_WFP-XSSJ.
  "三、营业利润
  ITAB2_WFP-TOTAL_YYLR = ITAB2_WFP-TOTAL_CSLR + ITAB2_WFP-QTYWLR - ITAB2_WFP-XSFY -
                     ITAB2_WFP-GLFY - ITAB2_WFP-CWFY.
  "四、利润总额
  ITAB2_WFP-TOTAL_LRZE = ITAB2_WFP-TOTAL_YYLR + ITAB2_WFP-TZSY + ITAB2_WFP-PTSL +
                     ITAB2_WFP-YYWSL - ITAB2_WFP-YYWZC + ITAB2_WFP-SYDZ.
  "五、净利润
  ITAB2_WFP-TOTAL_JLR = ITAB2_WFP-TOTAL_LRZE - ITAB2_WFP-SDS.
  MODIFY ITAB2_WFP INDEX SY-TABIX.


  ITAB_NC-WFPLL = TAMOUNT1.
  ITAB_QM-WFPLL = TAMOUNT1 + ITAB2_WFP-TOTAL_JLR.

  ITAB_NC-WFPLL = 0 - ITAB_NC-WFPLL.
  ITAB_QM-WFPLL = 0 - ITAB_QM-WFPLL.
ENDFORM.                    " F_WFPLL
*&---------------------------------------------------------------------*
*&2000公司年初"其他流动资产"&"未分配利润"特殊处理
*&---------------------------------------------------------------------*
FORM. F_MPS.
DATA: L_TOTAL LIKE GLT0-HSLVT.    "MPS利润合计
*定义内表ITAB_MPS(作为辅助使用)
  DATA: BEGIN OF ITAB_MPS OCCURS 10.
        INCLUDE STRUCTURE GLT0.
        DATA: TAMOUNT LIKE GLT0-HSLVT.
  DATA: END OF ITAB_MPS.

  SELECT *
    FROM GLT0
    INTO CORRESPONDING FIELDS OF TABLE ITAB_MPS
    WHERE BUKRS = P_BUKRS   "公司代码
      AND RYEAR < P_RYEAR   "会计年度
      AND RACCT = '0060010001'.

  L_TOTAL = 0.
  LOOP AT ITAB_MPS.
    L_TOTAL = L_TOTAL + ITAB_MPS-HSL01 + ITAB_MPS-HSL02 + ITAB_MPS-HSL03
             + ITAB_MPS-HSL04 + ITAB_MPS-HSL05 + ITAB_MPS-HSL06 + ITAB_MPS-HSL07
             + ITAB_MPS-HSL08 + ITAB_MPS-HSL09 + ITAB_MPS-HSL10 + ITAB_MPS-HSL11
             + ITAB_MPS-HSL12 + ITAB_MPS-HSL13 + ITAB_MPS-HSL14 + ITAB_MPS-HSL15
             + ITAB_MPS-HSL16.
  ENDLOOP.

  ITAB_NC-QTLDZC = ITAB_NC-QTLDZC + L_TOTAL.
  ITAB_NC-WFPLL = ITAB_NC-WFPLL - L_TOTAL.

  ITAB_QM-QTLDZC = ITAB_QM-QTLDZC + L_TOTAL.
  ITAB_QM-WFPLL = ITAB_QM-WFPLL - L_TOTAL.
ENDFORM.
*&---------------------------------------------------------------------*
*&      损益表上的2005年数据特殊处理
*&      从表ZFI03中取2005年2月的累计数据
*&---------------------------------------------------------------------*
FORM. F_FIRST_DO_WFPLL.
  SELECT *
    INTO CORRESPONDING FIELDS OF TABLE ITAB_FIRST_WFP
    FROM ZFI03
    WHERE RRCTY = '1'
      AND BUKRS = P_BUKRS.

  LOOP AT ITAB_FIRST_WFP.
    IF P_PERID = '02'.
&n

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/765243/viewspace-253281/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/765243/viewspace-253281/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值