我们正在用Java编写一个解析和转换ABAP代码的工具。因此,我们无意编写新的ABAP代码,但我们的工具必须处理所有ABAP,甚至是过时的语句。此外,我不是ABAP专家。
ABAP程序可以使用由关键字TYPE-POOL引入的类型组。类型组的名称最大长度为5(如果计算前缀"%C"则内部为8),其类型代码为TYPP。在过去,依赖这些假设对我们来说效果很好。
最近,我们看到类型代码为TYPP但名称长于5的ABAP程序,例如,' OIA ======================= ==== P&#39 ;.此外,对于其中的每一个,还有另一个具有相同名称但类型代码为INCL的空对象。仅当常规类型组也是这样时,才会引用这些新对象。
这些新对象可能是内部对象,与我们无关 - 我在ABAP关键字文档中没有看到任何对它们的引用。另一方面,他们让我们感到困惑,因为我们看到了他们。
有人可以向我解释这些物品的含义并指出一些文件吗?
编辑:此处来自EHP7 for SAP ERP 6.0系统的示例
答案 0 :(得分:0)
这些对象是通过包含,扩展和切换对象引入的。阅读:
MRM
,键入mrm_idoc_data_ers
- 该类型包含要包含rmrm_idoc_data_ers_sbo
的语句。类似的包含语句会将rmrm_upd_arseg_nfm
拉入mrm_upd_arseg
。这解释了最后两行。你的解析器应该已经抓住了。RMRM_IDOC_DATA_ERS_SBO
包含一个名为RMRM_IDOC_DATA_ERS_SBO_02
的增强点,属于增强点ES_RMRM_IDOC_DATA_ERS_SBO
。同样,RMRM_UPD_ARSEG_NFM
包含属于增强点RMRM_UPD_ARSEG_NFM_01
的增强点ES_RMRM_UPD_ARSEG_NFM
。ES_RMRM_IDOC_DATA_ERS_SBO
,存在名为ISAUTO_MRM_RMRM_IDOC_DATA_ERS
的增强实现。对于ES_RMRM_UPD_ARSEG_NFM
,存在名为/NFM/MM_RMRM_UPD_ARSEG_NFM
的实现。这解释了以=E
ISAUTO_MRM_RMRM_IDOC_DATA_ERS
位于包ISAUTO_MRM
中。实施/NFM/MM_RMRM_UPD_ARSEG_NFM
位于包/NFM/MM
中。这解释了以=P
结尾的引用。显然,不会为每个包生成这些引用:ISAUTO_MRM
由交换机AM_ERS
控制,包/NFM/MM
由交换机/NFM/MM
控制。这解释了以=S
结尾的引用。 最终,这些引用可用于确定在切换状态发生变化时需要重新生成哪些程序。