摘要:SAP财务系统中,BSEG是凭证行项目簇表,由BSAS、BSIS、BSAK、BSIK、BSAD、BSID六个表组成,分别对应总账、应付、应收的已清/未清项目。业务发生时数据写入BKPF(凭证抬头)和BSEG,并根据类型存入对应未清表(BSIS/BSIK/BSID);清账时从未清表移至已清表(BSAS/BSAK/BSAD)。BSEG作为虚拟表读取效率较低,且对ABAP操作有限制:不支持distinct/group by、Native SQL等操作,必须使用关键字段查询。应收账款等科目同时关联客户/供应商
BSEG 和 BSIS、BSAS、BSID、BSAD、BSIK、BSAK 六个表的关系 BSAS+BSIS+BSAK+BSIK+BSAD+BSID = BSEG
*-----------------------------------------------------------------------------------------------------
BSAS │ BSIS ==>all GL documents
BSAK │ BSIK ==>all AP documents
BSAD │ BSID ==>all AR documents
BKPF 是财务凭证抬头,BSEG 是财务凭证行项目。
在财务凭证记账的时候,数据被插入 BKPF 和 BSEG,如果有必要,数据同时插入以上六张表中的一个 未清表。
做清帐的时候,数据从六张表中的一个未清表删除,同时插入对应的已清表。
BSAD:应收明细(已清帐)客户
BSID:应收明细(未清帐)客户
BSAS:总帐明细(已清帐)总账
BSIS:总帐明细(未清帐)总账
BSAK:应付明细(已清帐)供应商
BSIK:应付明细(未清帐)供应商
BSEG 主要通过“凭证号”“会计年度”“行号”和这六张表关联
一般情况下一笔业务产生的凭证都是未清的,那么:如果该业务行是客户相关的,则被记录到 BSID;
如果该业务行是供应商相关的,则被记录到 BSIK;
无论和客户相关还是和供应商相关,都是和总帐相关,所以也会有记录到 BSIS;
但是如果这笔业务被清帐了,则相应的记录会从 BSIS 转移到 BSAS
一般情况下:应收账款、预收账款、其他应收款、应收汇票等科目既和客户相关,又和未清项管理的总帐 科目相关;
应付账款、预付账款、其他应付款、应付汇票等科目既和供应商相关,又和未清项管理的总帐科目相关;
其他总帐科目一般不启用未清项管理,所以记录一般都放在 BSIS 中。
BSEG 本身是一个 Cluster Table(簇表),BSEG 就是由上述的六大表的集成,当要读取”BSEG”Table 时就 等于去读取那六个表,这样你可以想像它读起来会就多慢。对於簇表或 Pool Table,都是 SAP 系统本身在 使用的,因此簇表本身是不存在资料库实体的,虽然是可以在 ABAP 使用,不过还是有一些限制:
1.不 能使用 select distinct or group by 语法
2.不能使用 Native SQL
3.不能使用 specify field names after the order by clause
4.不能在建立次索引
5.查询时一定要用 KEY FIELD