我经常通过论坛、github 等分享 ABAP 代码,这些代码通常适用于任何 ABAP-based system .不幸的是,经常发生我使用的一些对象(数据库表、类型等)只存在于我正在使用的解决方案中(例如在 ABAP 系统上工作的 C/4HANA)。

重要的是要了解 SAP 开发的几个解决方案,它们独立于其他解决方案,但要安装在 ABAP 系统上,其中包括 ABAP 语言本身和紧密链接的外部对象,如 ABAP 字典中的那些。此类 SAP 解决方案有 SAP R/3、SAP CRM、SAP SRM、SAP SCM、SAP BW、S/4HANA、C/4HANA、BW/4HANA、SAP 解决方案管理器等。

例如,假设我想问一个关于 ABAP 中连接的问题,我提供了以下示例(我在 C/4HANA 系统上开发,但问题与 C/4HANA 无关):

REPORT. 
DATA gt_partner TYPE TABLE OF crmd_order_index-partner_no. 
SELECT DISTINCT a~partner_no 
    INTO TABLE gt_partner 
    FROM crmd_order_index AS a INNER JOIN crm_jest AS b 
    ON a~header = b~objnr 
    UP TO 10 ROWS. 
cl_demo_output=>write( crmd_order_index ). 

很多人有 S/4HANA,而不是 C/4HANA,所以代码不会在他们的系统上编译,因为数据库表 crmd_order_index仅存在于 C/4HANA 中。可能那些人不会回答,或者他们无法验证他们的回答,所以我想我可以努力改进这个例子,让它在任何 ABAP 系统上运行。这当然是一个非常简单的例子,但是想象一下你有几十或几百行。

我知道一种解决方案是安装 ABAP Developer Edition在我们自己的笔记本电脑上,因为它包含最小的 ABAP 配置,并在上面测试 ABAP 代码。但是安装起来比较复杂,时间长,占用磁盘空间很大,只是为了检查一个“简单的东西”。

是否有另一种方法可以轻松快速地检查 ABAP 代码是否可以在任何基于 ABAP 的系统中编译?还是有其他想法?

我还希望此解决方案适用于 abapGit 这样大的代码例如。

有关信息:
  • 一种在任何基于 ABAP 的系统中工作的著名 ABAP 工具是 abapGit .
  • 问题不在于版本(例如检查在 ABAP 7.52 系统上生成的 ABAP 代码是否在 ABAP 7.0 系统上编译),因为我认为这是一个更复杂的问题。
  • 在 StackOverflow 中,一个 ABAP 问题的代码在任何 ABAP 系统上都不起作用,这削弱了 Minimal, Reproducible Examples 的原则。 .
  • 请您参考如下方法:

    分享一段 ABAP 示例代码的最简洁的方法似乎是这样的:

  • 创建一个本地包,例如 $MY_SAMPLE ,
  • 将所有示例代码和依赖项复制到
  • 把它推到一个新的、干净的 https://www.github.com带有 abapGit 的存储库, 和
  • 添加 README它提供了编写代码的 ABAP 版本。

  • 使用这些最佳实践:
  • 将代码和依赖项减少到使示例工作所需的最低限度。删除对与问题没有直接关系的其他开发对象的调用。尽可能限制自己使用 ABAP 平台提供的功能和 API。
  • 如果存在构成问题一部分的依赖项,例如“我如何使用 CRM 功能模块 XYZ?”,或者由于大小或版权(!)原因而无法复制,请确定它们所属的 SAP 软件组件的,并将其列为 README 中的依赖项.
  • 通过执行它来验证示例是否可以编译和工作。这是不可靠的,因为它可能会意外地访问您忘记复制的未复制依赖项,但它至少会给您一个想法。

  • ABAP 在这里并不特别。在任何开发语言中,提供最少的工作示例始终是一项努力。它需要将受影响的代码从不必要的依赖项中分离出来,并用最少的工作 stub 替换所需的代码。这就是为什么提出好问题是一项艰巨的工作,以及为什么 StackOverflow 欣赏具有声誉的好问题的部分原因。


    评论关闭
    IT干货网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!