在設置會計科目表的時候,對科目清單中的科目,需要有一個嚴謹的設計,既要考慮賬務處理的要求,也要滿足 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.