繁体   English   中英

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

[英]ABAP type pool: program with type code TYPP but with name longer than five characters

我们正在用Java编写一个用于解析和转换ABAP代码的工具。 因此,我们无意编写新的ABAP代码,但我们的工具必须处理所有ABAP,甚至是过时的语句。 此外,我不是ABAP专家。

ABAP程序可以使用关键字TYPE-POOL引入的类型组。 类型组的名称最大长度为五个(内部八个,如果您加上前缀“%C”,则其名称代码为TYPP)。 过去,依靠这些假设对我们来说效果很好。

最近,我们看到类型代码为TYPP但名称超过5的ABAP程序,例如'OIA ========================== P' 。 此外,对于每个对象,还有另一个空对象,其名称相同,但类型码为INCL。 仅在也有常规类型组的情况下,才引用这些新对象。

这些新对象可能是内部对象,对我们而言无关紧要-在ABAP关键字文档中,我还没有看到对它们的任何引用。 另一方面,它们使我们感到困惑,因为我们看到了它们。

有人可以向我解释这些对象的含义并为我提供一些文档吗?

编辑:这里是EHP7 for SAP ERP 6.0系统的示例

一个示例对象。 D010INC中的条目看起来不错: 不使用类型池mrm的示例对象

现在,同一对象使用类型为pool mrm的对象。 附加物品从何而来? 使用类型池mrm的示例对象

这些对象是通过包含,扩展和交换对象引入的。 阅读:

  • 检查类型池MRM ,类型mrm_idoc_data_ers该类型包含一个包含rmrm_idoc_data_ers_sbo的语句。 类似的include语句将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结尾的引用。

最终,这些参考可以用于确定在更改开关状态时需要重新生成哪些程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM