财务集(set)的使用(gs01,gs02,gs03)

来源:互联网 发布:ubuntu windows10 编辑:程序博客网 时间:2024/06/06 16:29

 

REPORT  zfi_set.
        LINE-COUNT 90
        LINE-SIZE  240
        MESSAGE-ID zfi
        NO STANDARD PAGE HEADING .

*----------------------------------------------------------------------*
* TYPES OR TYPE-POOLS
*----------------------------------------------------------------------*

TABLES:
  glt0,   " G/L account master record monthly debit and credit
  t001,
  bkpf.   " 会计核算凭证标题
*----------------------------------------------------------------------*
* CONSTANTS
*----------------------------------------------------------------------*
CONSTANTS:
  c_rldnr    LIKE  glt0-rldnr  VALUE  'ZC',     "分类帐
  c_rrcty    LIKE  glt0-rrcty  VALUE  '0',      "记录类型
  c_rvers    LIKE  glt0-rvers  VALUE  '001',    "版本号
  c_rpmax    LIKE  glt0-rpmax  VALUE  '016',    "会计期间
  c_shkzgd   LIKE  bseg-shkzg  VALUE  'S',      "借方/贷方标识
  c_shkzgc   LIKE  bseg-shkzg  VALUE  'H'.

*----------------------------------------------------------------------*
* PARAMETERS AND SELECT-OPTIONS
*----------------------------------------------------------------------*

PARAMETERS:
  p_bukrs LIKE t001-bukrs OBLIGATORY,     "公司代码
  p_gjahr LIKE bsis-gjahr OBLIGATORY,     "会计年度
  p_monat LIKE bsis-monat OBLIGATORY.     "会计期间
SELECT-OPTIONS:
  s_monat FOR  bkpf-monat.                "因调整不包含的期间

*----------------------------------------------------------------------*
* INTERNAL TABLES AND WORK AREAS
*
*----------------------------------------------------------------------*

DATA:BEGIN OF t_t001 OCCURS 0,
     butxt LIKE t001-butxt,
     END OF t_t001.

DATA:
  BEGIN OF t_glt0 OCCURS 0,
    racct LIKE glt0-racct,  "总帐科目
    hslvt LIKE glt0-hslvt,  "年初余额
    hsl01 LIKE glt0-hsl01,  "第一个会计期间的余额
    hsl02 LIKE glt0-hsl02,
    hsl03 LIKE glt0-hsl03,
    hsl04 LIKE glt0-hsl04,
    hsl05 LIKE glt0-hsl05,
    hsl06 LIKE glt0-hsl06,
    hsl07 LIKE glt0-hsl07,
    hsl08 LIKE glt0-hsl08,
    hsl09 LIKE glt0-hsl09,
    hsl10 LIKE glt0-hsl10,
    hsl11 LIKE glt0-hsl11,
    hsl12 LIKE glt0-hsl12,
    hsl13 LIKE glt0-hsl13,
    hsl14 LIKE glt0-hsl14,
    hsl15 LIKE glt0-hsl15,
    hsl16 LIKE glt0-hsl16,
  END OF t_glt0.
DATA:t_delt LIKE TABLE OF t_glt0 WITH HEADER LINE.
*Store Accounting document header &item data
DATA:
  BEGIN OF t_line OCCURS 0,
    linno(3) TYPE c,
    setid    LIKE rgsbm-shortname,    " 集标识
    hslvt    LIKE glt0-hslvt,
    hslve    LIKE glt0-hslvt,
    drcrk    LIKE glt0-drcrk,         " 借方/贷方标识
  END OF t_line.
DATA:w_line LIKE LINE OF  t_line .
DATA:
  BEGIN OF t_out OCCURS 0,
    desc1(70) TYPE c,                  "科目描述
    linno1(3) TYPE c,                  "行号
    hslvt1(20) TYPE c,
    hslve1(20) TYPE c,
    desc2(70) TYPE c,
    linno2(3) TYPE c,
    hslvt2(20) TYPE c,
    hslve2(20) TYPE c,
  END OF t_out.
DATA:
  BEGIN OF t_monat OCCURS 0,
    monat LIKE bkpf-monat,
  END OF t_monat.
DATA: t_set_values TYPE STANDARD TABLE OF rgsb4 WITH
HEADER LINE.
*Store beginning balance
DATA:
  BEGIN OF t_bal OCCURS 0,
    racct    LIKE   glt0-racct,
    hslvt    LIKE   glt0-hslvt,
    hslve    LIKE   glt0-hslvt,
  END OF t_bal.
DATA:w_lastday LIKE sy-datum,
     gjahr LIKE bkpf-gjahr,
     hslve LIKE glt0-hslvt.
******************************************************
*  A T  S E L E C T I O N  S C R E E N
*
******************************************************
AT SELECTION-SCREEN.
  PERFORM f100_input_check.
  PERFORM f200_authority_check.
************************************************************************
*   B E G I N  S E L E C T I O N
*
************************************************************************
START-OF-SELECTION.
  SET PF-STATUS 'STATUS_1000' .
  PERFORM f200_glt0_read.
  PERFORM f300_bala_calc.
  PERFORM f400_line_fill.
  PERFORM f500_line_calc.
  PERFORM f600_form_fill.
  PERFORM f700_data_calc.

AT USER-COMMAND .
  CASE sy-ucomm .
    WHEN 'FPRINT' .
*form print .
      PERFORM f_print .
    when 'EXIT' OR 'BACK' .
      leave to screen 0 .
  ENDCASE .
  CLEAR sy-ucomm .

 

************************************************************************
*   E N D  O F   S E L E C T I O N
*
************************************************************************
END-OF-SELECTION.
  PERFORM f800_form_prnt.
************************************************************************
*   B E G I N   F O R M S
*
************************************************************************
*&---------------------------------------------------------------------*
*&      Form  F100_input_check
*&---------------------------------------------------------------------*
*  Check input parameters
*
*----------------------------------------------------------------------*
FORM f100_input_check.
  SELECT SINGLE
    periv                  " 会计年度变式
    waers                  " 货币代码
    INTO (t001-periv ,
          t001-waers)
    FROM t001
   WHERE bukrs = p_bukrs.

  CASE sy-subrc.
    WHEN 0.
    WHEN 4.
      MESSAGE e021 WITH p_bukrs.
    WHEN OTHERS.
      MESSAGE e999 WITH 'Read Table'
                        'T001'
                        'Error'
                        space.
  ENDCASE.
  IF p_monat > 16.
    MESSAGE e022.
  ENDIF.
ENDFORM.                    "f100_input_check
*----------------------------------------------------------------------*
*      Form  F200_glt0_read
*
*----------------------------------------------------------------------*
*      Retrieve data from tables
*
*----------------------------------------------------------------------*
FORM f200_glt0_read.
  "Retrieve G/L account master record monthly debit and credit
  SELECT racct
         SUM( hslvt )
         SUM( hsl01 )
         SUM( hsl02 )
         SUM( hsl03 )
         SUM( hsl04 )
         SUM( hsl05 )
         SUM( hsl06 )
         SUM( hsl07 )
         SUM( hsl08 )
         SUM( hsl09 )
         SUM( hsl10 )
         SUM( hsl11 )
         SUM( hsl12 )
         SUM( hsl13 )
         SUM( hsl14 )
         SUM( hsl15 )
         SUM( hsl16 )
    FROM glt0
    INTO TABLE t_glt0
   WHERE bukrs = p_bukrs
     AND ryear = p_gjahr
     AND rrcty = c_rrcty
     AND rvers = c_rvers
     AND rpmax = c_rpmax
    GROUP BY
         racct.

  CASE sy-subrc.
    WHEN 0.
    WHEN 4.
    WHEN OTHERS.
      MESSAGE e999 WITH 'Read Table'
                        'glt0'
                        'Error'
                        space.
  ENDCASE.
  IF s_monat[] IS NOT INITIAL.
    LOOP AT s_monat.
      IF s_monat-high <> ''.
        WHILE t_monat-monat <> s_monat-high.
          IF t_monat-monat = ''.
            t_monat-monat = s_monat-low.
            APPEND t_monat.
          ELSE.
            t_monat-monat = t_monat-monat + 1.
            APPEND t_monat.
          ENDIF.
        ENDWHILE.
      ELSE.
        t_monat-monat = s_monat-low.
        APPEND t_monat.
      ENDIF.
      CLEAR:s_monat,
            t_monat.
    ENDLOOP.
    gjahr = p_gjahr - 1.
    SELECT racct
           SUM( hslvt )
           SUM( hsl01 )
           SUM( hsl02 )
           SUM( hsl03 )
           SUM( hsl04 )
           SUM( hsl05 )
           SUM( hsl06 )
           SUM( hsl07 )
           SUM( hsl08 )
           SUM( hsl09 )
           SUM( hsl10 )
           SUM( hsl11 )
           SUM( hsl12 )
           SUM( hsl13 )
           SUM( hsl14 )
           SUM( hsl15 )
           SUM( hsl16 )
      FROM glt0
      INTO TABLE t_delt
     WHERE bukrs = p_bukrs
       AND ryear = gjahr
       AND rrcty = c_rrcty
       AND rvers = c_rvers
       AND rpmax = c_rpmax
      GROUP BY
           racct.
  ENDIF.
  SELECT SINGLE butxt INTO t_t001-butxt FROM t001
      WHERE bukrs = p_bukrs.

ENDFORM.                    "f200_glt0_read
*----------------------------------------------------------------------*
*      Form  F300_bala_calc
*
*----------------------------------------------------------------------*
*      Calculate the  balance for accout
*
*----------------------------------------------------------------------*
FORM f300_bala_calc.
  DATA: z_fname(13) TYPE c,
        z_period_c(2) TYPE c,
        z_period_i TYPE i.

  FIELD-SYMBOLS <fs01>.

  z_period_i = p_monat.

  SORT t_glt0 BY racct.
  LOOP AT t_glt0.
*** BALANCE FROM BEGINNING TO THIS PERIOD
    DO z_period_i TIMES.
      z_period_c = sy-index.
      SHIFT z_period_c RIGHT DELETING TRAILING space.
      TRANSLATE z_period_c USING ' 0'.
      CONCATENATE 'T_glt0-HSL' z_period_c INTO z_fname.

      ASSIGN (z_fname) TO <fs01> .
      t_bal-hslve = t_bal-hslve + <fs01>.
    ENDDO.

*** ENDING BALANCE = BEGINNING BALANCE + MOVEMENT HAPPENED THIS PERIOD
    t_bal-hslvt = t_glt0-hslvt.
    READ TABLE t_delt WITH KEY racct = t_glt0-racct.
    IF sy-subrc = 0.
      LOOP AT t_monat.
        CONCATENATE 'T_DELT-HSL' t_monat-monat INTO z_fname.
        ASSIGN (z_fname) TO <fs01> .
        t_bal-hslvt = t_bal-hslvt - <fs01>.
      ENDLOOP.
    ENDIF.
    t_bal-hslve = t_bal-hslve + t_bal-hslvt.
*** MOVE BALANCE INTO OUTPUT INTERNAL TABLE
    t_bal-racct = t_glt0-racct.
    APPEND t_bal.
    CLEAR:t_bal,
          t_glt0.
  ENDLOOP.
  LOOP AT t_delt.
    READ TABLE t_bal WITH KEY racct = t_delt-racct.
    IF sy-subrc <> 0.
      CLEAR t_bal.
      LOOP AT t_monat.
        CONCATENATE 'T_DELT-HSL' t_monat-monat INTO z_fname.
        ASSIGN (z_fname) TO <fs01> .
        t_bal-hslvt = t_bal-hslvt - <fs01>.
      ENDLOOP.
      t_bal-hslve = t_bal-hslve + t_bal-hslvt.
      t_bal-racct = t_delt-racct.
      APPEND t_bal.CLEAR t_bal.
    ENDIF.
  ENDLOOP.
ENDFORM.                    "f300_bala_calc
*----------------------------------------------------------------------*
*      Form  f400_line_fill
*
*----------------------------------------------------------------------*
*      Fill Lines for balance sheet
*
*----------------------------------------------------------------------*
FORM f400_line_fill.
  PERFORM f410_line_fill USING '001' 'BALANCE001'.
  PERFORM f410_line_fill USING '002' 'BALANCE002'.
  PERFORM f410_line_fill USING '003' 'BALANCE003'.
  PERFORM f410_line_fill USING '004' 'BALANCE004'.
  PERFORM f410_line_fill USING '005' 'BALANCE005'.
  PERFORM f410_line_fill USING '006' 'BALANCE006'.
  PERFORM f410_line_fill USING '007' 'BALANCE007'.
  PERFORM f410_line_fill USING '008' 'BALANCE008'.
  PERFORM f410_line_fill USING '009' 'BALANCE009'.
  PERFORM f410_line_fill USING '010' 'BALANCE010'.
  PERFORM f410_line_fill USING '011' 'BALANCE011'.
*流动资产合计
  PERFORM f410_line_fill USING '013' 'BALANCE012'.
  PERFORM f410_line_fill USING '014' 'BALANCE013'.
  PERFORM f410_line_fill USING '015' 'BALANCE014'.
  PERFORM f410_line_fill USING '016' 'BALANCE015'.
  PERFORM f410_line_fill USING '017' 'BALANCE016'.
  PERFORM f410_line_fill USING '018' 'BALANCE017'.
  PERFORM f410_line_fill USING '019' 'BALANCE018'.
  PERFORM f410_line_fill USING '020' 'BALANCE019'.
  PERFORM f410_line_fill USING '021' 'BALANCE020'.
  PERFORM f410_line_fill USING '022' 'BALANCE021'.
  PERFORM f410_line_fill USING '023' 'BALANCE022'.
  PERFORM f410_line_fill USING '024' 'BALANCE023'.
  PERFORM f410_line_fill USING '025' 'BALANCE024'.
  PERFORM f410_line_fill USING '026' 'BALANCE025'.
  PERFORM f410_line_fill USING '027' 'BALANCE026'.
  PERFORM f410_line_fill USING '028' 'BALANCE027'.
  PERFORM f410_line_fill USING '029' 'BALANCE028'.
*非流动资产合计030
**资产总计031
*****************************************************
  PERFORM f410_line_fill USING '032' 'BALANCE029'.
  PERFORM f410_line_fill USING '033' 'BALANCE030'.
  PERFORM f410_line_fill USING '034' 'BALANCE031'.
  PERFORM f410_line_fill USING '035' 'BALANCE032'.
  PERFORM f410_line_fill USING '036' 'BALANCE033'.
  PERFORM f410_line_fill USING '037' 'BALANCE034'.
  PERFORM f410_line_fill USING '038' 'BALANCE035'.
  PERFORM f410_line_fill USING '039' 'BALANCE036'.
  PERFORM f410_line_fill USING '040' 'BALANCE037'.
  PERFORM f410_line_fill USING '041' 'BALANCE038'.
  PERFORM f410_line_fill USING '042' 'BALANCE039'.
  PERFORM f410_line_fill USING '043' 'BALANCE040'.
*流动负债合计044
  PERFORM f410_line_fill USING '045' 'BALANCE041'.
  PERFORM f410_line_fill USING '046' 'BALANCE042'.
  PERFORM f410_line_fill USING '047' 'BALANCE043'.
  PERFORM f410_line_fill USING '048' 'BALANCE044'.
  PERFORM f410_line_fill USING '049' 'BALANCE045'.
  PERFORM f410_line_fill USING '050' 'BALANCE046'.
  PERFORM f410_line_fill USING '051' 'BALANCE047'.
*非流动负债合计052
**负债总计053
  PERFORM f410_line_fill USING '054' 'BALANCE048'.
  PERFORM f410_line_fill USING '055' 'BALANCE049'.
  PERFORM f410_line_fill USING '056' 'BALANCE050'.
  PERFORM f410_line_fill USING '057' 'BALANCE051'.
  PERFORM f410_line_fill USING '058' 'BALANCE052'.


*所有者权益(或股东权益)合计
**负债和所有者权益(或股东权益)总计
ENDFORM.                    "f400_line_fill
*----------------------------------------------------------------------*
*      Form  f500_line_calc
*
*----------------------------------------------------------------------*
*      Calculate line amount
*
*----------------------------------------------------------------------*
FORM f500_line_calc.
  DATA: hslvt1 LIKE glt0-hslvt ,
        hslve1 LIKE glt0-hslvt,
        hslvt2 LIKE glt0-hslvt ,
        hslve2 LIKE glt0-hslvt.
  LOOP AT t_line.
    IF NOT t_line-setid IS INITIAL.
      PERFORM f510_set_explode USING t_line-setid
                               CHANGING
                                     t_line-hslvt
                                     t_line-hslve.
      MODIFY t_line.
    ENDIF.
  ENDLOOP.
  LOOP AT t_line WHERE NOT setid IS INITIAL.
*流动资产合计
    IF t_line-linno >= '001' AND t_line-linno <= '011'.
      t_line-linno = '012'.
      t_line-drcrk = c_shkzgd.
      t_line-setid = space.
      COLLECT t_line.
    ENDIF.
*非流动资产合计
    IF t_line-linno >= '013' AND t_line-linno <= '029'.
      t_line-linno = '030'.
      t_line-drcrk = c_shkzgd.
      t_line-setid = space.
      IF t_line-linno = '021' .
        t_line-hslvt = 0 - t_line-hslvt.
        t_line-hslve = 0 - t_line-hslve.
      ENDIF .
      COLLECT t_line.
    ENDIF.
*流动负债合计
    IF t_line-linno >= '032' AND t_line-linno <= '043'.
      t_line-linno = '044'.
      t_line-drcrk = c_shkzgc.
      t_line-setid = space.
      COLLECT t_line.
    ENDIF.
*非流动负债合计
    IF t_line-linno >= '045' AND t_line-linno <= '051'.
      t_line-linno = '052'.
      t_line-drcrk = c_shkzgc.
      t_line-setid = space.
      COLLECT t_line.
    ENDIF.
*所有者权益(或股东权益)合计
    IF t_line-linno >= '054' AND t_line-linno <= '058'.
      t_line-linno = '059'.
      t_line-drcrk = c_shkzgc.
      t_line-setid = space.
      IF t_line-linno = '056' .
        t_line-hslvt = 0 - t_line-hslvt.
        t_line-hslve = 0 - t_line-hslve.
      ENDIF .
      COLLECT t_line.
    ENDIF.

  ENDLOOP.
  LOOP AT t_line WHERE linno = '030' OR linno = '057'  .
    IF  t_line-linno = '031' .
      CLEAR :hslvt1, hslvt2 .
      CLEAR :hslve1 , hslve2 .
      CLEAR w_line .
      READ TABLE t_line INTO w_line  WITH KEY linno = '030' .
      IF sy-subrc = 0 .
        hslvt1 = w_line-hslvt .
        hslve1 = w_line-hslve .
      ENDIF .
      CLEAR w_line .
      READ TABLE t_line INTO w_line  WITH KEY linno = '012'.
      IF sy-subrc = 0 .
        hslvt2 = w_line-hslvt .
        hslve2 = w_line-hslve .
      ENDIF .
      t_line-hslvt = hslvt1 + hslvt2 .
      t_line-hslve = hslve1 + hslve2 .
      t_line-linno = '031' .
      t_line-drcrk = c_shkzgd.
      t_line-setid = space .
      APPEND  t_line .
    ENDIF .
    IF t_line-linno = '057' .
      CLEAR :hslvt1, hslvt2 .
      CLEAR :hslve1 , hslve2 .
      CLEAR w_line .
      READ TABLE t_line INTO w_line  WITH KEY linno = '044' .
      IF sy-subrc = 0 .
        hslvt1 = w_line-hslvt .
        hslve1 = w_line-hslve .
      ENDIF .
      CLEAR w_line .
      READ TABLE t_line INTO w_line  WITH KEY linno = '057'.
      IF sy-subrc = 0 .
        hslvt2 = w_line-hslvt .
        hslve2 = w_line-hslve .
      ENDIF .
      t_line-hslvt = hslvt1 + hslvt2 .
      t_line-hslve = hslve1 + hslve2 .
      t_line-linno = '060' .
      t_line-drcrk = c_shkzgc.
      t_line-setid = space .
      APPEND t_line .
    ENDIF .
  ENDLOOP .

  LOOP AT t_line.
    IF  t_line-linno >= '032' .
      t_line-hslvt = 0 - t_line-hslvt.
      t_line-hslve = 0 - t_line-hslve.
    ENDIF.
    IF t_line-linno = '031'.
      hslve = t_line-hslve.
    ENDIF.
    IF t_line-linno = '060'.
      IF t_line-hslve <> hslve.
        MESSAGE i060.
      ENDIF.
    ENDIF.
    MODIFY t_line.
  ENDLOOP.
ENDFORM.                    "f500_line_calc
*----------------------------------------------------------------------*
*      Form  f600_form_fill
*
*----------------------------------------------------------------------*
*      Balance sheet form create
*
*----------------------------------------------------------------------*
FORM f600_form_fill.
  PERFORM f610_form_fill USING '流动资产:CURRENT ASSETS' space
                               '流动负债:CURRENT LIABILITIES' space.
  PERFORM f610_form_fill USING '  货币资金 Cash' '001'
                               '  短期借款Short-term Loans' '032'.
  PERFORM f610_form_fill USING '  交易性金融资产Trading Financial Assets' '002'
                               '  交易性金融负债Trading Financial Liabilities' '033'.
  PERFORM f610_form_fill USING '  应收票据 Notes Receivable' '003'
                               '  应付票据Notes Payable' '034'.
  PERFORM f610_form_fill USING '  应收账款 Accounts Receivable' '004'
                               '  应付账款Accounts Payable' '035'.

  PERFORM f610_form_fill USING '  预付款项 Prepayments' '005'
                               '  预收款项 Advances From Customers' '036'.

  PERFORM f610_form_fill USING '  应收利息 Interest Receivable' '006'
                               '  应付职工薪酬 Wages Payable' '037'
                               .
  PERFORM f610_form_fill USING '  应收股利 Dividend Receivable' '007'
                               '  应交税费 Tax Payable' '038'.
  PERFORM f610_form_fill USING '  其他应收款Other Receivables' '008'
                               '  应付利息 Interest Payable' '039'.
  PERFORM f610_form_fill USING '  存货 Inventory' '009'
                               '  应付股利Dividend Payable' '040'.
  PERFORM f610_form_fill USING '  一年内到期的非流动资产 Non-current Assets due in One Year' '010'
                               '  其他应付款Other Payables' '041'.
  PERFORM f610_form_fill USING '  其他流动资产 Other Current Assets'  '011'
                               '  一年内到期的非流动负债Non-current Liabilities due in One Year'  '042'.
  PERFORM f610_form_fill USING '      流动资产合计 Total Current Assets' '012'
                               '  其他流动负债 Other Current Liabilities'  '043'.
  PERFORM f610_form_fill USING '非流动资产:NON-CURRENT ASSETS' space
                               '      流动负债合计 Total Current Liabilities' '044'.
  PERFORM f610_form_fill USING '  可供出售金融资产Available-for-sale Financial Assets' '013'
                               '非流动负债:NON-CURRENT LIABILITIES' space.
  PERFORM f610_form_fill USING '  持有至到期投资Held-to-maturity Investment' '014'
                               '  长期借款 Long-term Loans' '045'.
  PERFORM f610_form_fill USING '  长期应收款Long-term Receivable ' '015'
                               '  应付债券 Debenture Payable' '046'.
  PERFORM f610_form_fill USING '  长期股权投资Long-term Equity Investment' '016'
                               '  长期应付款Long-term Payable' '047'.
  PERFORM f610_form_fill USING '  投资性房地产Investment Real Estate' '017'
                               '  专项应付款 Designated Fund Payable' '048'.
  PERFORM f610_form_fill USING '  固定资产 Fixed Assets' '018'
                               '  预计负债 Estimated Liabilities' '049'.
  PERFORM f610_form_fill USING '  在建工程Construction in Progress' '019'
                               '  递延所得税负债 Deferred Tax Payable' '050'.
  PERFORM f610_form_fill USING '  工程物资 Projects and Other Resources' '020'
                               '  其他非流动负债 Other Non-current Liabilities' '051'.
  PERFORM f610_form_fill USING '  固定资产清理 Idle Assets in Pending' '021'
                               '      非流动负债合计 Non-current Liabilities' '052'.
  PERFORM f610_form_fill USING '  生产性生物资产 Productive Living Assets' '022'
                               '          负债合计 Total Liabilities' '053'.
  PERFORM f610_form_fill USING '  油气资产 Oil and Gas Assets' '023'
                               '所有者权益(或股东权益):EQUITY' space.
  PERFORM f610_form_fill USING '  无形资产Intangible Assets' '024'
                               '  实收资本(或股本)Paid-in Capitals' '054'.
  PERFORM f610_form_fill USING '  开发支出Research and Development Expenses' '025'
                               '  资本公积 Capital Surplus' '055'.
  PERFORM f610_form_fill USING '  商誉 Goodwill' '026'
                               '  减:库存股 Treasury Stock' '056'.
  PERFORM f610_form_fill USING '  长期待摊费用 Deferred Expenses' '027'
                               '  盈余公积 Welfare Fund Reserves' '057'.
  PERFORM f610_form_fill USING '  递延所得税资产 Deferred Tax Assets' '028'
                               '  未分配利润 Undistributed Profit' '058'.
  PERFORM f610_form_fill USING '  其他非流动资产 Other Non-current Assets' '029'
                               '        所有者权益(或股东权益)合计 Total Equity' '059'.
  PERFORM f610_form_fill USING '      非流动资产合计 Total Non-current Assets' '030'
                               '  ' space.
  PERFORM f610_form_fill USING '资产总计 TOTAL ASSETS' '031'
                               '负债和所有者权益(或股东权益)总计 TOTAL LIABILITIES AND EQUITY' '060'.

 

ENDFORM.                    "f600_form_fill
*----------------------------------------------------------------------*
*      Form  f700_data_calc
*
*----------------------------------------------------------------------*
*      Calculate lines amount for B/S
*
*----------------------------------------------------------------------*
FORM f700_data_calc.
  LOOP AT t_out.
    READ TABLE t_line WITH KEY linno = t_out-linno1.
    IF sy-subrc = 0.
      IF t_line-drcrk = c_shkzgc.
        t_line-hslvt = t_line-hslvt * ( -1 ).
        t_line-hslve = t_line-hslve * ( -1 ).
      ENDIF.
      WRITE: t_line-hslvt TO t_out-hslvt1 RIGHT-JUSTIFIED,
             t_line-hslve TO t_out-hslve1 RIGHT-JUSTIFIED.
    ENDIF.
    READ TABLE t_line WITH KEY linno = t_out-linno2.
    IF t_line-drcrk = c_shkzgd.
      t_line-hslvt = t_line-hslvt * ( -1 ).
      t_line-hslve = t_line-hslve * ( -1 ).
    ENDIF.
    IF sy-subrc = 0.
      WRITE:t_line-hslvt TO t_out-hslvt2 RIGHT-JUSTIFIED,
            t_line-hslve TO t_out-hslve2 RIGHT-JUSTIFIED.
    ENDIF.
    MODIFY t_out.
  ENDLOOP.
ENDFORM.                    "f600_form_fill
*&---------------------------------------------------------------------*
*&      Form  F800_form_prnt
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
*      Print the report
*
*----------------------------------------------------------------------*
FORM f800_form_prnt.
  DATA:z_linno1(3) TYPE c,
       z_linno2(3) TYPE c,
       z_poper LIKE t009b-poper.
  z_poper = p_monat.
  CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
    EXPORTING
      i_gjahr        = p_gjahr
      i_periv        = t001-periv
      i_poper        = z_poper
    IMPORTING
      e_date         = w_lastday
    EXCEPTIONS
      input_false    = 1
      t009_notfound  = 2
      t009b_notfound = 3
      OTHERS         = 4.
  IF sy-subrc <> 0.
    MESSAGE e009 WITH 'LAST_DAY_OF_MONTHS' '' '' ''.
  ENDIF.
  WRITE:120 '资 产 负 债 表'.
  SKIP 2.
  WRITE:/120 'BALANCE SHEEET'.
  WRITE:/3 '企业名称:  NAME OF COMPANY',
        200 '会外工01表         FORM KWG-01',
        /3 t_t001-butxt,
        122 w_lastday,
        200 '单 位: 元         Currency Unit'.
  ULINE /1(239).
  WRITE:/01(01) '|'                                 NO-GAP,
          (70) '资    产 '            CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP,
          (05) '行 号 '                 CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP,
          (20) '期  初  数  '           CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP,
          (20) '期  末  数  '           CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP,
          (70) '负 债 及 所 有 者 权 益 ' CENTERED NO-GAP,
          (01) '|'                                 NO-GAP,
          (05) '行 号 '                 CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP,
          (20) '期  初  数  '           CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP,
          (20) '期  末  数  '           CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP.
  WRITE AT:
         /1       '|',
         72       '|',
         78       '|',
         99       '|',
        120       '|',
        191       '|',
        197       '|',
        218       '|',
        239       '|'.
  WRITE:/01(01) '|'                                 NO-GAP,
          (70) 'ASSETS '                CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP,
          (05) 'LINE'                   CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP,
          (20) 'AT BEG.OF YEAR'         CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP,
          (20) 'AT END.OF PERIOD'       CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP,
          (70) 'LIABILITIES AND EQUITY' CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP,
          (05) 'LINE'                   CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP,
          (20) 'AT BEG.OF YEAR'         CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP,
          (20) 'AT END.OF PERIOD'       CENTERED   NO-GAP,
          (01) '|'                                 NO-GAP.
  ULINE /1(239).
  LOOP AT t_out.
    IF t_out-linno1 <> 0.
      z_linno1 = t_out-linno1.
    ENDIF.
    IF t_out-linno2 <> 0.
      z_linno2 = t_out-linno2.
    ENDIF.
    DATA: hslvt1(20).
    DATA: hslve1(20).
    DATA: hslvt2(20).
    DATA: hslve2(20).
    CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
      CHANGING
        value = t_out-hslvt1.
    CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
      CHANGING
        value = t_out-hslve1.
    CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
      CHANGING
        value = t_out-hslvt2.
    CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
      CHANGING
        value = t_out-hslve2.
    IF t_out-hslvt1 = '0.00'.
      t_out-hslvt1 = space.
    ENDIF.
    IF t_out-hslve1 = '0.00'.
      t_out-hslve1 = space.
    ENDIF.
    IF t_out-hslvt2 = '0.00'.
      t_out-hslvt2 = space.
    ENDIF.
    IF t_out-hslve2 = '0.00'.
      t_out-hslve2 = space.
    ENDIF.
    WRITE:/01(01) '|'                                 NO-GAP,
            (70) t_out-desc1              NO-GAP,
            (01) '|'                                 NO-GAP,
            (05) z_linno1                 CENTERED   NO-GAP,
            (01) '|'                                 NO-GAP,
            (20) t_out-hslvt1      RIGHT-JUSTIFIED   NO-GAP,
            (01) '|'                                 NO-GAP,
            (20) t_out-hslve1      RIGHT-JUSTIFIED   NO-GAP,
            (01) '|'                                 NO-GAP,
            (70) t_out-desc2              NO-GAP,
            (01) '|'                                 NO-GAP,
            (05) z_linno2                 CENTERED   NO-GAP,
            (01) '|'                                 NO-GAP,
            (20) t_out-hslvt2     RIGHT-JUSTIFIED   NO-GAP,
            (01) '|'                                 NO-GAP,
            (20) t_out-hslve2     RIGHT-JUSTIFIED   NO-GAP,
            (01) '|'                                 NO-GAP.
    ULINE /1(239).
    CLEAR:t_out,
          z_linno1,
          z_linno2.
  ENDLOOP.
  WRITE:/02 '法定代表人:',73 '主管会计工作的负责人:' ,200 '制 表 人:'.
ENDFORM.                    " F800_form_prnt
*----------------------------------------------------------------------*
*      Form  f410_line_fill
*
*----------------------------------------------------------------------*
*      Fill Lines for B/S
*
*----------------------------------------------------------------------*
FORM f410_line_fill USING p_linno TYPE c
                          p_setid.
  t_line-linno = p_linno.
  t_line-setid = p_setid.
  APPEND t_line.
ENDFORM.                    "f600_form_fill
*----------------------------------------------------------------------*
*      Form  f510_set_explode
*
*----------------------------------------------------------------------*
*      Explode Accounting Set
*
*----------------------------------------------------------------------*
FORM f510_set_explode USING p_setid TYPE c
                      CHANGING
                            p_hslvt LIKE glt0-hslvt
                            p_hslve LIKE glt0-hslvt.

  DATA:z_setnr(90) TYPE c.
  REFRESH:t_set_values.
  CONCATENATE '0000' p_setid INTO z_setnr.
  CALL FUNCTION 'G_SET_GET_ALL_VALUES'
    EXPORTING
      setnr         = z_setnr
    TABLES
      set_values    = t_set_values
    EXCEPTIONS
      set_not_found = 1
      OTHERS        = 2.
  IF sy-subrc = 0.
  ELSE.

  ENDIF.
  LOOP AT t_set_values.
    LOOP AT t_bal WHERE racct BETWEEN t_set_values-from
                                 AND  t_set_values-to.
      p_hslvt = p_hslvt + t_bal-hslvt.
      p_hslve = p_hslve + t_bal-hslve.
    ENDLOOP.
  ENDLOOP.
ENDFORM.                    "f600_form_fill
*----------------------------------------------------------------------*
*      Form  f610_form_fill
*
*----------------------------------------------------------------------*
*      Balance sheet form create
*
*----------------------------------------------------------------------*
FORM f610_form_fill USING p_desc1 TYPE c
                          p_linno1
                          p_desc2 TYPE c
                          p_linno2.
  t_out-desc1 = p_desc1.
  t_out-linno1 = p_linno1.
  t_out-desc2 = p_desc2.
  t_out-linno2 = p_linno2.
  APPEND t_out.
ENDFORM.                    "f600_form_fill
*&---------------------------------------------------------------------*
*&      Form  f200_authority_check
*&---------------------------------------------------------------------*
FORM f200_authority_check .
  AUTHORITY-CHECK OBJECT 'F_KNA1_BUK'
           ID 'BUKRS' FIELD p_bukrs.
  IF sy-subrc NE 0.
    MESSAGE e068(zfi) WITH p_bukrs.
    STOP .
  ENDIF.
ENDFORM.                    " f200_authority_check
*&---------------------------------------------------------------------*
*&      Form  f_print
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f_print .
  DATA: fm_name TYPE rs38l_fnam.
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  EXPORTING
  formname = 'ZFI_JACKXIONG'
* VARIANT = ' '
* DIRECT_CALL = ' '
  IMPORTING
  fm_name = fm_name
* EXCEPTIONS
* NO_FORM = 1
* NO_FUNCTION_MODULE = 2
* OTHERS = 3
  .
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CALL FUNCTION fm_name
 EXPORTING
   p_butxt = t_t001-butxt
   p_lastday = w_lastday
* ARCHIVE_INDEX =
* ARCHIVE_PARAMETERS =
* CONTROL_PARAMETERS =
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
* OUTPUT_OPTIONS =
* USER_SETTINGS = 'X'

* IMPORTING
* DOCUMENT_OUTPUT_INFO =
* JOB_OUTPUT_INFO =
* JOB_OUTPUT_OPTIONS =
  TABLES
  g_tab_data = t_out
*  g_tab_head = t_head
*  g_tab_foot = t_foot
  EXCEPTIONS
  formatting_error = 1
  internal_error = 2
  send_error = 3
  user_canceled = 4
  OTHERS = 5.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " f_print

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝贝咳嗽很厉害怎么办 开车有人别车怎么办 判刑罚金交不起怎么办 罚金太多交不起怎么办 判决书上的罚金怎么办 刑事罚款不交怎么办 缎面的鞋脏了怎么办 夏天脸上长粉刺怎么办 鬃狮不吃东西怎么办 买二手车的车牌怎么办 榴莲打开了肉没熟怎么办 gmat的prep做完怎么办 电脑没ip地址怎么办 电脑ip地址缺失怎么办 cos还原不了人物怎么办 执行局抓人十五天不放人怎么办 笔记本电脑键盘按键错乱怎么办 靠墙倒立上不去怎么办 医院多收钱了怎么办 学生总是转笔怎么办 吃错东西呕吐怎么办 手腕筋扭伤了怎么办 右膝盖内侧疼痛怎么办 膝盖关节腔积液怎么办 小孩玩游戏花钱怎么办 初三玩手机上瘾怎么办 无线网有感叹号怎么办 台式电脑网络感叹号怎么办 忘记发红包密码怎么办 电信诈骗被骗后怎么办 C小孩讨厌上学怎么办 军训来大姨妈怎么办 夏天军训来月经怎么办 军训遇到大姨妈怎么办 长春市图书馆读者证怎么办 济宁图书馆怎么办读者卡 海南省图书馆读者证怎么办 小孩子特别能吃怎么办 小孩吃不下去药怎么办 小孩不肯去上学怎么办 初中没有团员证怎么办