BSEG于一般的透明表不同,它是一个簇表。对于一个簇表来说,除了主键项目外,其他项目都被编辑到一个长文本项目中,一起存储在表簇RFBLG中的vardata项目中,这就决定了作为簇表的BSEG无法再建立键值以外的索引(INDEX),所以一般我们对于透明表来说当主键项目不全或完全没有时,追加索引的作法对于BSEG表来说就不好用了。而BSEG簇表又是SAP系统中FI 会计模块中最常被使用的数据表,所以运用好对BSEG表的访问技术对于FI会计模块的扩展开发(ADDON)至关重要。
这篇文章我们就来谈谈如何高效地对BSEG进行访问处理。
对於簇表来说,在数据库中没有与之同名的实体物理表相对应,所以虽然其可在ABAP中使用,但还是有一些限制的:
1. 不能使用Select distinct语法
BSEG中的字段存储在VARDATA中,所以不能使用distinct语句对单个项目去除重复。
2. 不能使用Native SQL
在数据库中没有与之同名的实体物理表相对应,所以不能使用Native SQL 对BSEG操作。
3. 不能使用Order by 语法
BSEG中的字段存储在VARDATA中,所以不能使用Order by语句对单个项目排序。
4. 不能再追加创建索引
BSEG中的字段存储在VARDATA中,所以不能再追加创建索引。
除此之外,对BSEG的访问要使用主键项目,如果没有主键项目虽然语法调试能够通过,但是程序执行起来,耗时长,效率低,而且随着业务量的增加执行时间问题会越发严重,甚至导致程序不能正常执行结束。
那么如果当键值不足时怎么办呢?回答,使用二次索引透明表,具体方法如下描述。
比如和销售凭证有关的业务,根据销售凭证编号和明细编号,选取相关会计凭证明细信息。
SELECT *
FROM BSEG
WHERE VBEL2 = 'XXXXXXXXXX' “ 销售凭证编号
AND POSN2 = 'YYYYYY'. “ 销售凭证明细编号
在这个例子中,对BSEG的检索条件中因为没有主键项目,所以执行起来,程序很慢。
变通的方法:
1)首先根据销售凭证编号和明细编号,从BSID中检索出未清帐明细行项目。
SELECT BURKS “ 公司代码
BELNR “ 财务凭证编号
GJAHR “ 会计年度
BUZEL “ 会计凭证中的行项目
FROM BSID
INTO TABLE TAB_KEY “ 存放主键项目的内部表
WHERE VBEL2 = 'XXXXXXXXXX' “ 销售凭证编号
AND POSN2 = 'YYYYYY'. “ 销售凭证明细编号
2)再根据销售凭证编号和明细编号,从BSAD中检索出已清帐明细行项目。
SELECT BURKS “ 公司代码
BELNR “ 财务凭证编号
GJAHR “ 会计年度
BUZEL “ 会计凭证中的行项目
FROM BSAD
APPEND TABLE TAB_KEY “ 存放主键项目的内部表
WHERE VBEL2 = 'XXXXXXXXXX' “ 销售凭证编号
AND POSN2 = 'YYYYYY'. “ 销售凭证明细编号
3)然后再根据上面检索出的主键列表,从BSEG中检索出相应的明细行项目。
SELECT BSCHL "転記キー
KOART "勘定タイプ
UMSKZ "特殊仕訳コ
SHKZG "借方/貸方
HKONT "総勘定元帳
GSBER "事業領域
DMBTR "国内通貨額
WRBTR "伝票通貨額
ZUONR "ソートキー
SGTXT "明細テキス
ZFBDT "期日計算の
ZTERM "支払条件キ
ZLSCH "支払方法
ZLSPR "支払保留キ
HBKID "取引銀行の
BVTYP "取引先銀行
FROM BSEG
INTO TABLE TAB_BSEG “ 存放检索结果的内部表
FOR ALL ENTRIES IN TAB_KEY “ 存放主键项目的内部表
WHERE BUKRS = TAB_KEY-BUKRS. “ 公司代码
AND GJAHR = TAB_KEY-GJAHR “ 财务凭证编号
AND BELNR = TAB_KEY-BELNR “ 会计年度
AND BUZEI = TAB_KEY-BUZEI. “ 会计凭证中的行项目
4)这么处理之所以能够提高效率,关键还得对透明表BSID和BSAD追加以VBEL2(销售凭证编号)和POSN2(销售凭证明细编号)为键值的索引(对于透明表可追加索引)。
这样一来,1)和2)步骤地操作有索引,3)步骤的操作有全主键项目,检索速度应该有保证。
采购方面的业务、物料方面的业务等都可如法炮制。
最后需要说明一点,不是所有的SAP体统都可以使用这种方法,能否使用取决于R/3系统的设计和配置。所以在试图使用该方法时应充分调查相关透明表与BSEG中的纪录是否相符,别速度提高了,结果处理对象范围减小了或增大了,那就与初衷背道而驰了,效率的提升一定要在确保业务数据正确的基础上再加以考虑。
SAP R/3系统中也有几个专门用来读取BSEG表信息的函数,可适当参考使用,它们是:
READ_BSEG
GET_ALL_BSEG
另外最有效率的方法是改善你的应用和需求,要使需求合理规范,这才能使效率达到最高化。
分享到:
相关推荐
为了提高BSEG表的处理效率,在实际应用中可以采取以下策略: 1. **使用二次索引透明表**:例如,在需要基于特定字段(如销售凭证编号和明细编号)查询BSEG表的情况下,可以先从相关表(如BSID)中获取必要的信息,...
ABAP编程中提高执行效率的几个技巧 ABAP编程是高级商业应用程序编程语言,由SAP公司开发,用于应用程序的交互式开发。随着系统的运行,系统中的数据量会越来越大,这就对程序的运行速度产生很大的影响,甚至有些...
在SAP ABAP开发中,程序效率至关...总的来说,提升SAP ABAP程序效率需要综合考虑数据库负载、查询优化、代码结构和批量处理等多个方面。遵循最佳实践并持续优化代码,可以显著提高程序的运行速度,降低系统资源消耗。
在 SAP 的财务信息系统(Financial Accounting, 简称 FI)中,簇表(Cluster Table)是一种非常重要的数据存储结构,它主要用于存储大量的会计凭证数据,通过将相关的记录组织在一起,提高了数据处理效率。本教程将...
2. **采用存在的索引表**:利用SAP预定义的索引表,如BSEG的六个索引表,可以更有效地访问数据,减少查询时间。 3. **使用合适的数据视图**:视图通过预定义的查询逻辑简化数据访问,特别是当视图包含内在连接时,...
总的来说,通过理解BAPI_BUKRS_CREATE_DOCUMENTS的工作原理,结合批导入模板和增强功能,你可以有效地在SAP系统中批量生成会计凭证,提高财务处理效率。批量产生会计凭证.docx文档可能提供了更详细的步骤和示例,...
### SAP BW 常用数据源与 InfoCube 在 SAP Business Warehouse (SAP BW) 的环境中,数据源和 InfoCube 是...此外,通过合理设计 InfoCube 和 ODS 对象,可以有效提高数据处理效率和质量,进一步提升企业的业务洞察力。
正确理解和应用其规则和限制,可以帮助开发者优化查询效率,避免常见的性能问题和数据处理陷阱。通过遵循上述指导原则,可以确保在复杂的数据处理任务中,既能充分利用FOR ALL ENTRIES IN的功能,又能保持代码的健壮...
在SAP系统中,FI(Financial Accounting,财务会计)模块是企业进行财务处理的核心部分,它涵盖了财务报表、账户管理、...在学习SAP FI的过程中,熟练使用这些表能够提高工作效率,并确保财务数据的准确性和完整性。
### SAP系统中的清账流程与ABAP语言应用 #### SAP清账基础知识 SAP系统作为全球领先的业务...通过深入理解SAP系统的清账流程及其与ABAP语言的结合,可以帮助企业更高效地管理财务数据,提高财务管理的准确性和效率。
3. **透明表和集群表**:透明表(Tabular Transparent)允许直接访问数据库,而集群表(Cluster Table)将多个表的数据聚合在一起,提高查询效率。在SAP中,如BSAD这样的透明表通常用于记录详细交易信息,而集群表可能...
【SAP凭证退代】是SAP系统中的一项功能,主要涉及到会计凭证的修改和替换。在SAP中,退代通常是指撤销原有凭证并创建...在实际工作中,确保正确执行这些步骤和了解对应的错误处理方法是提高效率和避免数据错误的关键。
- 理解SAP标准数据模型有助于避免重复开发,利用现有资源提高效率。 - 在进行自定义开发时,应尽可能遵循SAP的最佳实践,确保与标准系统兼容,并保持数据一致性。 总之,SAP ABAP数据模型是SAP系统中数据存储和...
总的来说,SAP的周期性凭证功能是企业财务管理中的一个重要工具,它简化了重复性财务流程,提高了效率,同时也保证了数据的准确性和一致性。正确地创建、维护和管理周期性凭证对于确保SAP财务系统的有效运行至关重要...
汇编伪指令是汇编语言中一种特殊的指令,它们并不直接对应机器码,而是用于辅助汇编过程,如指示汇编器如何处理源代码。在本文中,我们将深入...了解并熟练掌握这些指令,能极大地提高编写汇编程序的效率和代码质量。
### SAP发票校验表关系详解 #### 一、概述 SAP系统作为企业资源规划(ERP)...这不仅有助于提高发票处理的效率,还能确保数据的准确性和一致性。企业应充分利用这些表的关系特性,优化内部流程,提升财务管理的质量。
### 单片机指令说明(汇编)详细解析 #### 一、概述 单片机是一种集成微处理器、存储器及多种输入/输出接口于一体的微型计算机系统,广泛应用于...此外,通过合理利用这些指令,可以优化程序结构,提高程序执行效率。