ABAP类型池:类型代码为TYPP但名称长度超过五个字符的程序

时间:2017-11-20 10:50:40

标签: abap

我们正在用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系统的示例

示例对象。 D010INC中的条目看起来很好: example object w/o use of type pool mrm

现在使用类型池mrm的相同对象。附加包含来自哪里? example object with use of type pool mrm

1 个答案:

答案 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结尾的引用。

最终,这些引用可用于确定在切换状态发生变化时需要重新生成哪些程序。