在设置会计科目表的时候,对科目清单中的科目,需要有一个严谨的设计,既要考虑账务处理的要求,也要满足 SAP 技术上的要求。本篇总结会计科目在 SAP 技术上的一些要点。
会计科目设置时考虑因素
从技术上来说,要考虑如下因素:
- 哪些科目需要设置未清项目管理 (open item manangement)
- 哪些科目须设为自动过账科目
- 字段状态码,为减少工作量,尽可能使用 SAP 标准字段状态码,比如 G045 - GR/IR,G067 - 统驭科目
- 损益科目中,哪些科目需要设为成本要素?哪些科目不能设为成本要素科目?
重要科目说明
固定资产清理科目
SAP 要求固定资产清理科目( Fixed asset clearing) 为损益科目,但不能为成本要素。按中国会计科目体系,固定资产清理科目为资产负债表科目,与 SAP 系统的要求不一致。
解决办法:
- 第一个方法:按 SAP 要求,将固定资产清理科目作为损益科目。这种方法有两个问题,一般情况下损益科目与资产类科目的编号范围不一致,这样固定资产清理科目放在损益科目中,与固定资产科目不在一起。第二个问题是,损益科目每年结转的时候,科目余额结转至留存收益。尽管固定资产清理是一个中间科目,但这也会导致问题。所以实务中并不多见。
- 第二个方法:将固定资产清理科目作为资产负债表科目,但需要在创建科目钱,用 OBA5 将 AC305/ AC306 消息改为警告,创建完成之后再修改回去。
GR/IR
GR/IR 科目是 SAP 用于采购收货和发票校验的中间科目,该科目有如下要求:
- 本位币余额
- Open item management
- 系统自动记账
- SAP 提供了一个专门字段状态变式 G045
生产成本
西方会计为损益科目,中国一般设为资产负债表科目。
生产成本-在制品转出
SAP 生产成本科目是作为损益科目的,中国一般是作为存货类科目,作为存货的一部分。生产成本-在制品转出科目用于月末结转在制品,这个科目不能设成本要素,否则月结出现错误。
不必设为成本要素的损益科目
以下科目可考虑不设成本要素:
- 主营业务成本: 主营业务成本科目以及主营业务成本差异科目,可以不设为成本要素
- 营业税 / 消费税 / 城建税 / 教育费附加/ 资源税等一般不设为成本要素
- 财务费用: 一般不设成本要素
- 固定资产减值损失: 固定资产减值损失,固定资产处置损益可以不设成本要素
会计科目清单报表
为了方便对会计科目的字段属性进行检查,我编写了如下程序对科目的重要字段进行检查。也可用于展示科目表,可供参考。
REPORT z_cocd_gl_list.
TABLES: ska1.
* For ALV
DATA: gr_salv_table TYPE REF TO cl_salv_table.
* ALV toolbar
DATA: gr_functions TYPE REF TO cl_salv_functions_list.
* Layout settings
DATA: gr_layout TYPE REF TO cl_salv_layout,
layout_key TYPE salv_s_layout_key.
* AVL columns
DATA: gr_columns TYPE REF TO cl_salv_columns_table,
gr_column TYPE REF TO cl_salv_column_table.
* Define a structure representing Company code COA
TYPES: BEGIN OF ty_coa,
ktopl LIKE ska1-ktopl, " Chart of account
bukrs LIKE skb1-bukrs, " Company code
saknr LIKE ska1-saknr, " G/L account number
bilkt LIKE ska1-bilkt, " Group account number
altkt LIKE skb1-altkt, " Alternative account number
xbilk LIKE ska1-xbilk, " Is B/S account
gvtyp LIKE ska1-gvtyp, " Is P/L account
ktoks LIKE ska1-ktoks, " Account group
mwskz LIKE skb1-mwskz, " Tax category
xmwno LIKE skb1-xmwno, " Indicator: Tax code is not a required field
fstag LIKE skb1-fstag, " Field status group
mitkz LIKE skb1-mitkz, " Is recon. account
waers LIKE skb1-waers, " Currency
xsalh LIKE skb1-xsalh, " Only balances in local curreny
xintb LIKE skb1-xintb, " Post systematically
xkres LIKE skb1-xkres, " Display line items
xopvw LIKE skb1-xopvw, " Open item management
zuawa LIKE skb1-zuawa, " Sort key
txt20c LIKE skat-txt20, " Short text in Chinese
txt50c LIKE skat-txt50, " Text-Chinese
txt20e LIKE skat-txt20, " Short text in English
txt50e LIKE skat-txt50, " Text-English
END OF ty_coa.
DATA: gt_coa TYPE STANDARD TABLE OF ty_coa,
gs_coa LIKE LINE OF gt_coa.
* Selection screen
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_bukrs LIKE t001-bukrs. " company code
SELECT-OPTIONS:
s_saknr FOR ska1-saknr. " account number
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get_data.
IF NOT gt_coa IS INITIAL.
PERFORM disp_data.
ELSE.
WRITE 'No data is found.'.
ENDIF.
FORM get_data.
DATA: l_ktopl LIKE t001-ktopl. " chart of account ID
DATA: ls_cocd_detail LIKE bapi0002_2.
* Get chart of account from company code
CALL FUNCTION 'BAPI_COMPANYCODE_GETDETAIL'
EXPORTING
companycodeid = p_bukrs
IMPORTING
companycode_detail = ls_cocd_detail.
IF sy-subrc = 0.
l_ktopl = ls_cocd_detail-chrt_accts.
ENDIF.
* Get chart of account for given company code
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_coa
FROM ska1
INNER JOIN skb1 ON ska1~saknr = skb1~saknr
WHERE ska1~ktopl = l_ktopl " chart of account
AND skb1~bukrs = p_bukrs " company code
AND ska1~saknr IN s_saknr. " account number
* Adding languages
LOOP AT gt_coa INTO gs_coa.
SELECT SINGLE txt20 txt50 INTO (gs_coa-txt20c, gs_coa-txt50c)
FROM skat
WHERE ktopl = l_ktopl " chart of account
AND saknr = gs_coa-saknr " account number
AND spras = '1'. " language for Simplified Chinese
SELECT SINGLE txt20 txt50 INTO (gs_coa-txt20e, gs_coa-txt50e)
FROM skat
WHERE ktopl = l_ktopl
AND saknr = gs_coa-saknr
AND spras = 'E'. " langugae for English
MODIFY gt_coa FROM gs_coa.
CLEAR gs_coa.
ENDLOOP.
ENDFORM. "get_data
FORM disp_data.
* TRY.
CALL METHOD cl_salv_table=>factory
* EXPORTING
* LIST_DISPLAY = IF_SALV_C_BOOL_SAP=>FALSE
* R_CONTAINER =
* CONTAINER_NAME =
IMPORTING
r_salv_table = gr_salv_table
CHANGING
t_table = gt_coa .
* CATCH CX_SALV_MSG .
* ENDTRY.
* ALV toolbar
gr_functions = gr_salv_table->get_functions( ).
gr_functions->set_all( ).
* ALV layout settings
gr_layout = gr_salv_table->get_layout( ).
layout_key-report = sy-repid.
gr_layout->set_key( layout_key ).
gr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
* Set column description for languages
gr_columns = gr_salv_table->get_columns( ).
* 设置科目描述(短文)-ZH
gr_column ?= gr_columns->get_column( 'TXT20C' ).
gr_column->set_long_text( '科目短文(中)' ).
gr_column->set_medium_text( '科目短文(中)' ).
gr_column->set_short_text( '科目短文(中)' ).
* 设置科目描述-ZH
gr_column ?= gr_columns->get_column( 'TXT50C' ).
gr_column->set_long_text( '科目中文' ).
gr_column->set_medium_text( '科目中文' ).
gr_column->set_short_text( '科目中文' ).
* 设置科目描述(短文)-EN
gr_column ?= gr_columns->get_column( 'TXT20E' ).
gr_column->set_long_text( '科目短文(英)' ).
gr_column->set_medium_text( '科目短文(英)' ).
gr_column->set_short_text( '科目短文(英)' ).
* 设置科目描述-ZH
gr_column ?= gr_columns->get_column( 'TXT50E' ).
gr_column->set_long_text( '科目英文' ).
gr_column->set_medium_text( '科目英文' ).
gr_column->set_short_text( '科目英文' ).
* 显示ALV
gr_salv_table->display( ).
ENDFORM.
网友评论