一、基本概念
- FI会计模块中输入一笔业务将会记一个财务凭证,SAP系统中将凭证信息分为抬头信息和明细信息两部分加以存储。其中抬头(Header)信息存储在透明表BKPF中,明细(行项目Items)信息存放在BSEG等簇表中。
- 在财务凭证记账的时候,数据被插入BKPF 和 BSEG,如果有必要,数据同时插入其下六张表中的一个未清表。做清帐的时候,数据从六张表中的一个未清表删除,同时插入对应的已清表。
- 什么是簇表?
在DATABASE (数据层),除了我们定义的主键,然后把其他的内容都当成表格的一个字段存起来。也就是说这个表的结构可以理解为:主键+ 一个存储功能的字段的 组合。- 表簇和簇表的区别和联系?
表簇,是该表在DATABASE的存储结构,
簇表,是该表在SAP DICTIONARY展现在我们眼前的结构。
- BSEG本身是一个簇表 (Cluster Table),它隶属于表簇(TABLE CLUSTER)RFBLG。
二、 与六张基本表的关系
-
BSEG可以拆分成以下6张表:
- BSEG主要通过key“公司代码BUKRS”、“凭证号BELNR”、“会计年度GJAHR”、“行号BUZEI”和这六张表关联。
- 一般情况下一笔业务产生的凭证都是未清的,那么:如果该业务行是客户相关的,则被记录到BSID;
如果该业务行是供应商相关的,则被记录到BSIK;
无论和客户相关还是和供应商相关,都是和总帐相关,所以也会有记录到BSIS;
但是如果这笔业务被清帐了,则相应的记录会从BSIK转移到BSAD 。
三、注意事项
- 存入BSEG等簇表时是以binary save的形式将一张凭证的明细部分的所有行项目信息编辑成一个长文本,再存入表簇RFBLG中的vardata项目中。
- 存入6个相应的透明表时则是根据上述行项目的性质,分别存入相应的透明表,表中每条记录只记载一条行项目信息。
有了上述的知识,我们不难理解:
使用T-code:FB03查看凭证的明细信息时,实际是读取BSEG等簇表的信息。
使用T-code:FBL1N , FBL3N, FBL5N 分别查看供应商,总账,客户的未清和已清项信息时,实际上读取BSIK、BSAK等会计凭证表的信息。 - 对於簇表或Pool Table,都是SAP系统本身在使用的,因此簇表本身是不存在资料库实体的,虽然是可以在ABAP使用,不过还是有一些限制:
不能使用select distinct or group by语法
不能使用Native SQL
不能使用specify field names after the order by clause
不能再建立次索引
查询时一定要用KEY FIELD