ABAP 系统有比较完善的修改控制权限管控,比如笔者试图修改一个 SAP ABAP 系统里标准的函数,就会遇到如下的警告消息,然后修改的尝试会被阻止:
You are not authorized to make changes (authorization object S_DEVELOP)
但有的时候,出于项目需求,我们确实需要为一些 ABAP 标准程序增添新的功能。本文介绍如何采取 ABAP 增强(Enhancement) 的方式来完成我们的目的。ABAP 标准程序和其增强程序的存储是完全独立的。SAP 负责开发 ABAP 标准程序,而项目里的 ABAP 开发人员,即学习本教程的各位朋友,负责开发 ABAP 标准程序的增强程序。即使将来被增强的 ABAP 标准程序又有了更新或者 bug 修复,也不会影响到项目里的 ABAP 开发人员编写的增强程序。反之亦然。
本文通过一个实际的例子向大家介绍如何增强一个 ABAP 标准程序。
假设我们有一个 SAP 标准 ABAP 报表:ZSTANDARD
,我用这个报表来模拟 SAP 标准程序。
REPORT z.
DATA: lt_data TYPE string_table.
FORM get_output CHANGING ct_data TYPE string_table.
APPEND 'Hello' TO ct_data.
APPEND 'World' TO ct_data.
ENDFORM.
FORM print_output USING it_data TYPE string_table.
DATA: lv_line TYPE string.
LOOP AT it_data INTO lv_line.
WRITE:/ lv_line.
ENDLOOP.
ENDFORM.
START-OF-SELECTION.
PERFORM get_output USING lt_data.
PERFORM print_output USING lt_data.
执行之后,打印两行数据:
Hello
World
非常简单的一个 ABAP 报表。
假设我们的需求是,不修改这个 ABAP 报表的源代码,就能让其打印三行数据,即在 World 后,增加第三行 Jerry 的打印。
下面是采用 SAP ABAP 自带的增强开发工具对其增强的详细步骤介绍。
总结
本文通过一个实际的例子,介绍了如何不通过修改 SAP 标准 ABAP 程序源代码的方式,对其的功能进行增强,即采取 ABAP 增强开发的方式进行二次开发,这是一种在实际 SAP 项目实施过程中使用非常广泛的技术。
网友评论