财务集(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
- 财务集(set)的使用(gs01,gs02,gs03)
- GS01/GS02/GS03 Set and transport request
- SAP 参数(条件表)灵活配置GS01/GS02/GS03
- 参数(条件表)灵活配置GS01/GS02/GS03
- GS03的FM
- SAP SET --> Via TX: GS01/02/03
- set的使用题集
- 使用程序生成财务预制凭证的方法(一)
- 使用程序生成财务预制凭证的方法(二)
- 使用程序生成财务预制凭证的方法(三)
- 退货的财务处理
- 财务相关的英语单词
- 财务的几个表
- 财务自由的感觉
- 财务凭证的替代
- 财务大写的有关规定
- SSAS中命名集(SET)的使用
- 财务
- 算法设计之迭代法!
- 架构师心目中的关键词(转)
- Google背后的IT架构策略揭秘
- PKU 3581 Sequence 解题报告
- 常用算法设计之回溯法!
- 财务集(set)的使用(gs01,gs02,gs03)
- weblogic启动不起来的解决方法(10月27日工作日志)
- 2008年2月编程语言排名
- 什么才是软件开发的葵花宝典?(转)
- 常见设计模式分类
- 还在读Essential C++
- PM PA认证考试大纲
- SQL语法速查
- C语言中各种数据类型长度的总结(转)