首页 文章

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

提问于
浏览
1

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

ABAP程序可以使用由关键字TYPE-POOL引入的类型组 . 类型组的名称的最大长度为5(如果计算前缀“%C”,则内部为8),其类型代码为TYPP . 在过去,依赖这些假设对我们来说效果很好 .

最近,我们看到类型代码为TYPP但名称长于5的ABAP程序,例如'OIA =========================== P' . 此外,对于其中的每一个,还有另一个具有相同名称但类型代码为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

    这些对象通过包含,扩展和切换对象引入 . 阅读:

    • 检查类型池 MRM ,键入 mrm_idoc_data_ers - 该类型包含要包含 rmrm_idoc_data_ers_sbo 的语句 . 类似的include语句将 rmrm_upd_arseg_nfm 拉入 mrm_upd_arseg . 这解释了最后两行 . 你的解析器应该已经 grab 了 .

    • RMRM_IDOC_DATA_ERS_SBO 包含一个名为 RMRM_IDOC_DATA_ERS_SBO_02 的增强点,属于增强点 ES_RMRM_IDOC_DATA_ERS_SBO . 同样, RMRM_UPD_ARSEG_NFM 包含属于增强点 ES_RMRM_UPD_ARSEG_NFM 的增强点 RMRM_UPD_ARSEG_NFM_01 .

    • 对于 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 结尾的引用 .

    最终,这些引用可用于确定当开关状态改变时需要重新生成哪些程序 .

相关问题