The class cl_system_transaction_state contains several useful utility methods:
- get_in_update_task: return the flag whether current code is running with normal work process or in update work process
- get_on_commit: return flag whether current code is called because of a previous registration via PERFORM ON COMMIT and triggered by COMMIT WORK
- get_sap_luw_key: return current LUW ID I just use a very simple report to test them. First I call the FM ZSQF in a normal way, then call it via update task, then register it with PERFORM ON COMMIT and trigger it via COMMIT WORK.
WRITE: / 'Direct call ZSQF begin...'.
DATA(lv_luw_key) = cl_system_transaction_state=>get_sap_luw_key( ).
WRITE:/ 'LUW key in main program:', lv_luw_key.
CALL FUNCTION 'ZSQF'.
WRITE: / 'Direct call ZSQF end...'.
CALL FUNCTION 'ZSQF' IN UPDATE TASK.
PERFORM call_fm ON COMMIT.
COMMIT WORK AND WAIT.
lv_luw_key = cl_system_transaction_state=>get_sap_luw_key( ).
WRITE:/ 'LUW key in main program after COMMIT WORK:', lv_luw_key.
FORM call_fm.
WRITE:/ 'ZSQF is called on COMMIT begin...'.
CALL FUNCTION 'ZSQF'.
WRITE:/ 'ZSQF is called on COMMIT end...'.
ENDFORM.
In the function module ZSQF, I just print out the three flags.
DATA(lv_in_update) = cl_system_transaction_state=>get_in_update_task( ).
DATA(lv_on_commit) = cl_system_transaction_state=>get_on_commit( ).
DATA(lv_luw_key) = cl_system_transaction_state=>get_sap_luw_key( ).
WRITE: / 'Am I in update task? ' , lv_in_update.
WRITE: / 'Am I triggered via PERFORM ON COMMIT?', lv_on_commit.
WRITE: / 'Current LUW Key' , lv_luw_key.
The execution result shows the fact that the normal FM call, the FM registered to COMMIT WORK and the update task all run within the same LUW, and also proves the explanation of COMMIT WORK in ABAP help: “The COMMIT WORK statement closes the current SAP LUW and opens a new one”.
The WRITE keyword executed in update task will not generate any output in SE38 list, and apart from switching on “update debugging” and check the three flags in debugger, there is also another way to log the content of the variable like lv_luw_key: Just create a new checkpoint group via tcode SAAB, specify option “Log” for Logpoints and maximum validity period.
Then append the following code in the FM implementation:
IF lv_in_update = 1.
LOG-POINT ID ZUPDATELOG SUBKEY 'Current LUW KEY' FIELDS lv_luw_key.
ENDIF.
Now after report execution, go to tcode SAAB, click Log tab, and we can find the content of lv_luw_key which is logged by the above ABAP code LOG-POINT ID ZUPDATELOG SUBKEY ‘Current LUW KEY’ FIELDS lv_luw_key.
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关推荐
ABAP调优是提高ABAP程序执行效率的关键技术,它涉及到代码优化的多个方面。以下是一些关于ABAP代码优化的重要知识点: 1. **优化Open SQL**:在编写Open SQL时,应尽量利用索引来提升查询性能。对于标准内表,可以...
8. ABAP Workbench:这是SAP开发环境,包括ABAP Editor、Test Debugging工具、Repository Browser等,用于编写、测试和调试ABAP代码。 通过这个“ABAP程序设计源代码”的压缩包,你可以看到如何实际应用以上知识点...
7. **ABAP动态编程**: 动态编程允许在运行时生成和执行代码,这在处理复杂逻辑或灵活编程需求时非常有用。例如,使用EXEC SQL动态执行SQL语句,或使用CALL FUNCTION动态调用函数模块。 8. **ABAP与Web服务**: ABAP...
ABAP提供了强大的调试工具,如ABAP Debugger,允许开发者在运行时检查变量,步进执行代码,设置断点等。 12. **ABAP注释**: ABAP注释对于理解和维护代码至关重要。单行注释以"%"开始,多行注释以"***"开始并以"*...
这篇中文帮助文档是学习ABAP的重要资源,尤其对于中文环境下的学习者来说,它提供了清晰易懂的解释和指导。 一、ABAP基础 1. 数据类型:ABAP支持多种数据类型,如CHAR、INT、FLOAT、STRING等,以及结构化数据类型...
ABAP提供了多种开发工具,如SE80(ABAP Objects浏览器)、SE38(ABAP编辑器)和SE24(ABAP源代码编辑器)。 2. ABAP基本语法: - 数据类型:ABAP有多种预定义的数据类型,如CHAR、INT、FLOAT等,以及自定义数据...
9. **ABAP开发工具**:SAP提供了ABAP Development Workbench,包括SE80、SE38等工具,用于编写、调试和测试ABAP代码。教程会指导如何使用这些工具进行日常开发。 10. **单元测试与质量保证**:了解如何使用ABAP ...
SAP Workbench是ABAP开发的主要环境,包括ABAP Editor、Transaction Code、Repository Browser等工具,用于编写、调试和管理ABAP代码。 5. **ABAP Reports** ABAP Reports是ABAP中最基础的程序类型,用于生成报表...
总的来说,动态内表在ABAP编程中是提高代码灵活性和效率的重要工具,但在使用时需谨慎,特别是涉及数据更新和删除的操作,需要确保遵循最佳实践,避免引发潜在的数据错误。通过正确理解和应用这些技术,我们可以编写...
你可以定义类、对象、属性和方法,实现继承、封装和多态性,从而提高代码的复用性和可维护性。此外,ABAP Objects还引入了接口、事件和异常处理机制,进一步增强了ABAP的面向对象能力。 事务码(Transaction Code)...
《SAP ABAP大全》是针对企业信息化领域中SAP系统的一种高级编程语言——ABAP的全面指南。SAP ABAP(Advanced Business Application Programming)是SAP公司开发的一种专用于其R/3系统和NetWeaver平台的编程语言,它...
SAP提供了SE80开发工作台,用于编写、测试和调试ABAP4代码,还包括事务码如SE38(用于运行ABAP程序)和SE24(用于编辑ABAP源代码)。 6. **SAP报表开发**: 使用ABAP4开发报表,如ABAP Report,是SAP系统中最常见...
SAP系统中的数据存储在数据库表中,ABAP提供了一系列的数据库命令(如SELECT, UPDATE, DELETE)来操作这些数据。理解表格结构和如何进行数据库交互对于开发高效的应用至关重要。 4. **ABAP Structures and Classes...
8. ABAP与ABAP/4 Development Workbench:将介绍如何使用SE80和其他开发工具进行代码编辑、调试和测试,以及版本管理和变更控制。 9. ABAP与SAP NetWeaver:讨论ABAP在SAP NetWeaver平台中的角色,以及如何利用...
SAP的ABAP Workbench提供了一整套开发工具,如SE38用于编辑和运行ABAP程序,SE80用于对象导航,SE11用于查看数据库表结构。 以上只是对ABAP命令大全的一个概述,实际使用时需要深入学习每个命令的细节及其在不同...
SAP提供ABAP Test Cockpit (ATC)进行静态代码分析和质量检查,而Debugging工具则帮助开发者在运行时定位和解决问题。 九、实例程序开发 在实际项目中,ABAP程序员会根据需求编写报表、对话程序、函数模块等,通过...
《SAP ABAP编程手册》是一本全面介绍SAP ABAP(Advanced Business Application Programming)的文档,涵盖了ABAP编程的各个方面。ABAP是SAP系统中的主要编程语言,用于开发企业级的应用程序,如报表、用户接口以及...
6. **数据库操作**:ABAP提供标准的数据库函数,如SELECT、INSERT、UPDATE、DELETE等,以及Open SQL和Native SQL,这些都可以在多个场景下重用。 7. **报表和事务代码**:SAP提供报表(Reports)和事务代码...
13. **ABAP Test Cockpit (ATC)**:质量保证工具,用于代码审查和静态分析,确保代码遵循最佳实践和SAP标准。 14. **ABAP Development Tools (ADT)**:基于Eclipse的集成开发环境,提供现代的代码编辑、调试和版本...
ABAP(Advanced Business Application Programming)是SAP公司开发的一种编程语言,主要应用于SAP系统中的业务逻辑编写。本“ABAP语法详解教材”提供了一套系统化的学习路径,旨在帮助初学者和进阶者深入理解并掌握...