我经常通过论坛、github等来共享ABAP代码,这通常是为了在任何基于ABAP的系统上工作。不幸的是,我使用的一些对象(数据库表、类型等)只存在于我所使用的解决方案中(例如,在ABAP系统上工作的C/4HANA )。
重要的是要了解SAP开发的几种解决方案,它们独立于其他解决方案,但将安装在ABAP系统上,ABAP系统包括ABAP语言本身和ABAP字典中的那些紧密链接的外部对象。这种SAP解决方案有SAP R/3、SAP CRM、SAP SRM、SAP SCM、SAP BW、S/4HANA、C/4HANA、BW/4HANA、SAP解决方案经理等。
例如,假设我想问一个关于ABAP中的join的问题,我提供了以下示例(我是在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开发版,因为它包含最小的ABAP配置,并在上面测试ABAP代码。但它的安装比较复杂,时间长,占用了大量的磁盘空间,只是为了检查一个“简单的东西”。
是否有另一种方法可以轻松快速地检查ABAP代码是否在任何基于ABAP的系统中编译?或者其他的想法?
我也希望这个解决方案适用于像abapGit这样大的代码。
供参考:
发布于 2019-12-02 10:30:52
共享ABAP示例代码的最干净方法似乎如下:
$MY_SAMPLE ),README,它提供了为代码编写的ABAP版本。通过这些最佳做法:
README中的依赖项列出。ABAP在这里并不特别。在任何开发语言中,提供最少的工作示例总是一种努力。它要求将受影响的代码从不必要的依赖项中分离出来,并用最小的工作存根替换所需的依赖项。这是为什么问好问题是一项艰巨的工作,也是为什么StackOverflow喜欢有声誉的好问题的部分原因。
发布于 2019-12-19 22:45:43
桑德拉,我认为这个问题没有一个好的或容易的答案。多年来,我们一直受到这个问题的困扰。我经常在不同版本的ABAP语言中被烧坏。特别是SQL和ABAP单元测试。就连好的老char02上周也把我们烧死了。是的,Char02是s/4 Hana中不再支持的特定于行业的数据元素。你需要有每一个可能的释放液abap,确保一切都是好的。有一个远程语法检查选项,这听起来不错。但是,它从7.02 SP14开始。因此,这对7.0没有好处,您首先需要访问这些版本。谁能负担得起呢?为什么1 ABAP系统不能做向下兼容的检查。(对我来说,这并不奇怪,ABAPGit已经确定了一个最新的但不是最新的abap版本为“当前版本”。我们必须支持7.0到7.5+的代码,因为我们有从S/4 hana到7.0的客户,有一个代码库。我们还有一个通用的代码库,包括SolMan/ CRM、SAP网关和ECC业务套件。在所有环境中保持代码库干净是说起来容易做起来难。
就示例而言,严格地坚持ABAP示例听起来很容易,但是除非您限制自己的SFLIGHT或诸如T002 / T006这样的表,否则这比人们意识到的要困难。
一个基本但并不完美的解决方案是在发布前检查传输中所有对象的开发类。我们这样做已经有一段时间了。跟踪什么是有效的基础对象,目的是什么是困难的。我使用了基对象,这些对象在7.2系统上不存在,在导入时失败。然后,您可以在支票中添加一个TADIR日期。
最后,我将最古老的(7.0)系统作为烟雾测试导入。
我正在观察某人是否有灵丹妙药的解决方案:祝你好运
发布于 2020-12-08 08:41:59
由于版本向下兼容,所以您可以设置一个非常低版本的系统,并在此基础上开发您的代码。ABAP是在4.6C版中引入的
https://stackoverflow.com/questions/59125177
复制相似问题