SAP簇表BSEG取数优化的方法
来源:互联网 发布:迪杰斯特拉算法 详解 编辑:程序博客网 时间:2024/05/21 09:15
BSEG于一般的透明表不同,它是一个簇表。对于一个簇表来说,除了主键项目外,其他项目都被编辑到一个长文本项目中,一起存储在表簇RFBLG中的vardata项目中,这就决定了作为簇表的BSEG无法再建立键值以外的索引(INDEX),所以一般我们对于透明表来说当主键项目不全或完全没有时,追加索引的作法对于BSEG表来说就不好用了。而BSEG簇表又是SAP系统中FI 会计模块中最常被使用的数据表,所以运用好对BSEG表的访问技术对于FI会计模块的扩展开发(ADDON)至关重要。
对於簇表来说,在数据库中没有与之同名的实体物理表相对应,所以虽然其可在ABAP中使用,但还是有一些限制的:
除此之外,对BSEG的访问要使用主键项目,如果没有主键项目虽然语法调试能够通过,但是程序执行起来,耗时长,效率低,而且随着业务量的增加执行时间问题会越发严重,甚至导致程序不能正常执行结束。
那么如果当键值不足时怎么办呢?回答,使用二次索引透明表,具体方法如下描述。比如,和销售凭证有关的业务,根据销售凭证编号和明细编号,选取相关会计凭证明细信息。
在这个例子中,对BSEG的检索条件中因为没有主键项目,所以执行起来,程序很慢。变通的方法:
1)、首先根据销售凭证编号和明细编号,从BSID中检索出未清帐明细行项目
2)、再根据销售凭证编号和明细编号,从BSAD中检索出已清帐明细行项目
3)、然后再根据上面检索出的主键列表,从BSEG中检索出相应的明细行项目
4)、对透明表BSID和BSAD追加以VBEL2(销售凭证编号)和POSN2(销售凭证明细编号)为键值的索引(对于透明表可追加索引)
这样一来,1)和2)步骤地操作有索引,3)步骤的操作有全主键项目,检索速度应该有保证。采购方面的业务、物料方面的业务等都可如法炮制。
最后需要说明一点,不是所有的SAP系统都可以使用这种方法,能否使用取决于R/3系统的设计和配置。所以在试图使用该方法时应充分调查相关透明表与BSEG中的纪录是否相符,别速度提高了,结果处理对象范围减小了或增大了,那就与初衷背道而驰了,效率的提升一定要在确保业务数据正确的基础上再加以考虑。
SAP R/3系统中也有几个专门用来读取BSEG表信息的函数,可适当参考使用,它们是:READ_BSEG、GET_ALL_BSEG。
另外最有效率的方法是改善你的应用和需求,要使需求合理规范,这才能使效率达到最高化。
对於簇表来说,在数据库中没有与之同名的实体物理表相对应,所以虽然其可在ABAP中使用,但还是有一些限制的:
- 不能使用Select distinct语法
BSEG中的字段存储在VARDATA中,所以不能使用distinct语句对单个项目去除重复。 - 不能使用Native SQL
在数据库中没有与之同名的实体物理表相对应,所以不能使用Native SQL 对BSEG操作。 - 不能使用Order by 语法
BSEG中的字段存储在VARDATA中,所以不能使用Order by语句对单个项目排序。 - 不能再追加创建索引
BSEG中的字段存储在VARDATA中,所以不能再追加创建索引。
除此之外,对BSEG的访问要使用主键项目,如果没有主键项目虽然语法调试能够通过,但是程序执行起来,耗时长,效率低,而且随着业务量的增加执行时间问题会越发严重,甚至导致程序不能正常执行结束。
那么如果当键值不足时怎么办呢?回答,使用二次索引透明表,具体方法如下描述。比如,和销售凭证有关的业务,根据销售凭证编号和明细编号,选取相关会计凭证明细信息。
在这个例子中,对BSEG的检索条件中因为没有主键项目,所以执行起来,程序很慢。变通的方法:
1)、首先根据销售凭证编号和明细编号,从BSID中检索出未清帐明细行项目
2)、再根据销售凭证编号和明细编号,从BSAD中检索出已清帐明细行项目
3)、然后再根据上面检索出的主键列表,从BSEG中检索出相应的明细行项目
4)、对透明表BSID和BSAD追加以VBEL2(销售凭证编号)和POSN2(销售凭证明细编号)为键值的索引(对于透明表可追加索引)
这样一来,1)和2)步骤地操作有索引,3)步骤的操作有全主键项目,检索速度应该有保证。采购方面的业务、物料方面的业务等都可如法炮制。
最后需要说明一点,不是所有的SAP系统都可以使用这种方法,能否使用取决于R/3系统的设计和配置。所以在试图使用该方法时应充分调查相关透明表与BSEG中的纪录是否相符,别速度提高了,结果处理对象范围减小了或增大了,那就与初衷背道而驰了,效率的提升一定要在确保业务数据正确的基础上再加以考虑。
SAP R/3系统中也有几个专门用来读取BSEG表信息的函数,可适当参考使用,它们是:READ_BSEG、GET_ALL_BSEG。
另外最有效率的方法是改善你的应用和需求,要使需求合理规范,这才能使效率达到最高化。
阅读全文
1 0
- SAP簇表BSEG取数优化的方法
- SAP簇表(cluster table)BSEG使用方法
- 浅谈SAP 中ABAP循环和取数代码优化
- [性能] SAP销售订单取数逻辑优化---索引表
- 如何提高读取BSEG的性能(sap已清项和未清项的提取)
- 如何提高读取BSEG的性能(sap已清项和未清项的提取)
- 如何提高读取BSEG的性能(sap已清项和未清项的提取)
- 如何提高读取BSEG的性能(sap已清项和未清项的提取)
- 如何提高读取BSEG的性能(SAP已清项和未清项的管理)
- SAP FI 新增BSEG可替代的字段 GGB1 表GB01 程序:RGUGBR00
- SAP FI 新增BSEG可替代的字段 GGB1 表GB01 程序:RGUGBR00
- 如何实现SAP跨系统取数
- BSEG
- SAP ABAP程序优化方法
- SAP ABAP程序优化方法
- 关于cluster table(簇表)BSEG
- 关于cluster table(簇表)BSEG
- 关于cluster table(簇表)BSEG
- java自学-变量
- Spring-基于注解的配置[01定义Bean+扫描Bean]
- zookeeper原理(转)
- ubuntu自动挂载硬盘
- 逻辑与 逻辑或 三目运算符 if else 20170721
- SAP簇表BSEG取数优化的方法
- Codeforces Round #388 (Div. 2) 749B Parallelogram is Back
- java 线程介绍
- 20170722:数据库命题
- Python爬虫json和JsonPath系列之十一
- Python——解析命令行参数docopt模块
- 正交向量与正交子空间
- Python中MD5编码
- 聚类算法--K值估计及效果评估