会计科目作为 FI 模块非常重要的主数据,数据导入是非常重要的一环。本篇介绍利用 SAP 标准的批输入导入程序 RFBISA00
结合 LSMW 进行导入的方法。使用标准导入程序的优点是通用性比较好,不必每个项目都重复操作一遍。
批输入程序 RFBISA00
适用于 ECC6 之前的版本,因为 S/4 Hana 变更了会计科目主数据的数据表 SKB1 的字段结构,而 RFBISA00
的程序代码并没有考虑这些字段结构的变化,相应变更程序的字段结构,所以不能使用。具体来说:
1)增加了 总账科目类型 字段,该字段有如下几种类型:
- X: 资产负债表科目
- P: 初级成本和收入 (既是会计科目,又是成本要素)
- N: 营业外收支 (只在 FI 中作为科目使用,不是成本要素)
- S: 次级成本
2)增加了 Cost Element Type: 如果启用了 Controlling area,并且科目的类型为 P 或者 N , 才显示这个字段
会计科目主数据的字段结构
RFBISA00
程序定义的数据结构包括如下类型:
BGR00 record type 0 session prefix
BSK00 record type 1 header data
BSKA1 record type 2 data record (chart of accounts data)
BSKAT record type 2 data record (name of G/L accounts)
BSKB1 record type 2 data record (company code data)
BSKX record type 5 extended header record
程序并且规定导入文件必须符合下面的两种结构:
Alternative 1
Record type 0 (BGR00)
Record type 1 (BSK00)
Record type 2 (BSKA1)
Record type 2 (BSKAT)
Record type 2 (BSKB1)
Record type 1 (BSK00)
...
Record type 0 (BGR00)
...
Alternative 2
Record type 0 (BGR00)
Record type 5 (BSKX)
Record type 5 (BSKX)
...
Record type 0 (BGR00)
...
好在我们并不需要进入源代码了解各个结构所包含的字段,SAP 提供的数据传输工具 SXDA_TOOLS 可以帮我们了解主数据的数据结构。用事务码 SXDA_TOOLS 进入下面的界面,选择对象类型和程序:
然后通过菜单 Goto -> Mapping plan 进入下面界面:
界面列出了会计科目主数据的所有字段,点击 Save to PC File 按钮导出为文件,最好保存为 Excel File,以方便在后续步骤中利用本步骤导出的数据。对导出的文件稍作整理,保留必要的字段,一般来说,下面这些字段已经够了:
LSMW 导入会计科目主数据
创建 LSMW 工程
LSMW 工程包括project、sub-project 和 object 三个层次,这个主要是为了增加灵活性,比如可以定义:
- Project: ZFI, 表示 FI 模块数据导入
- Sub-project: ZFI01 表示主数据导入,ZFI02 表示业务数据导入
-
Object: ZFICOA 表示会计科目导入
维护工程的属性
LSMW 工程属性定义采取什么方法来导入数据,可以是以下 4 种:
- 录屏
- Batch input / Direct input
- BAPI
- IDoc
会计科目主数据导入使用 SAP 提供的 Batch input 程序:
完成该步骤后保存。下面界面是选择的程序:
维护源结构
对于程序 RFBISA00
来说,需要的字段是确定的,在导入的时候,数据来自文本文件,所以关键就是确定文本文件包括哪些字段,与目标结构如何对应。源结构 (source structure)就是定义一个包含导入字段的容器。因为后面我们基于事务码 FS01 来导入,所以把源结构命名为 FS01:
维护源字段
在这个步骤中,利用 Table Maintenance 界面,可以将 SXDA_TOOLS 导出的数据拷贝过来,注意 CHAR 类型需要替换为 C。操作过程:
维护后,源结构下面的字段如下:
维护结构的关系
本步骤定义源结构与目标结构的关系。目标结构是批输入程序定义的,源结构只有一个,点击创建关系按钮,自动选择为 FS01。
维护字段映射
在维护源字段的时候,使用过的是系统字段名称,这样在本步骤中,可以利用 Auto field mapping 功能。
因为我们在维护源结构的时候,没有包括 TCODE 这个字段,因为对于导入数据来说,都将用 FS01 这个事务码,所以不用从文件中导入,在本步骤维护为固定值即可。 选中 TCODE 字段,点击工具栏上的 Insert Rule 按钮,在弹出的对话框中,选择 Constant,然后维护为 FS01:
指定文件
LSMW 从文本文件中导入数据,在指定文件前,我们先编制要导入的数据,这一步也利用 SXDA_TOOLS 下载的 Excel 文件,用于生成所需要的列。将 Excel 另存为制表符分割的 txt 文件,可以保留第一行表头。
注意下面界面要与文本文件的结构一致。
读取文件的数据
下面的几个步骤,包括 Assign Files, Read Data, Display Read Data ,Convert Data , Display Converted Data 依次执行即可。到 Display Converted Data 这个步骤,SAP 显示了目标结构及导入的内容,可以点进去查看。
点击 RGB00,可以看到各字段被填充为:
创建批输入会话
要执行文件数据导入,需要选择 Update File Immediately。
如果这一步骤在创建 Batch Input Session 时有错误,需要根据错误返回到 Read Data 这一步修改数据后再重复后面的操作步骤,直到问题解决。
如果本步骤无错误,使用事务码 SM35 查看生成的批输入会话,然后在 SM35 中执行或者 在 LSMW 中执行最后一步跳转到 SM35。
LSMW 导入导出
LSMW 支持将操作步骤导出为脚本,并在另外系统中导入,从而支持不同的项目间共享。
- 导出:Extras -> Export Project
- 导入: Extras -> Import Projects