简体   繁体   English

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

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

We are writing a tool in Java that parses and transforms ABAP code. 我们正在用Java编写一个用于解析和转换ABAP代码的工具。 We therefore have no intention to write new ABAP code but our tool has to handle all of ABAP, even obsolete statements. 因此,我们无意编写新的ABAP代码,但我们的工具必须处理所有ABAP,甚至是过时的语句。 Furthermore, I'm not an ABAP expert. 此外,我不是ABAP专家。

ABAP programs can use type groups, introduced by key word TYPE-POOL. ABAP程序可以使用关键字TYPE-POOL引入的类型组。 Names of type groups have a maximal length of five (internally eight, if you count the prefix "% C"), their type code is TYPP. 类型组的名称最大长度为五个(内部八个,如果您加上前缀“%C”,则其名称代码为TYPP)。 In the past, relying on these assumptions worked well for us. 过去,依靠这些假设对我们来说效果很好。

Recently, we see ABAP programs with type code TYPP but with name longer than 5, eg, 'OIA===========================P'. 最近,我们看到类型代码为TYPP但名称超过5的ABAP程序,例如'OIA ========================== P' 。 Furthermore, for each of those, there is another, empty object with same name but type code INCL. 此外,对于每个对象,还有另一个空对象,其名称相同,但类型码为INCL。 These new objects are referenced only if a regular type group is, too. 仅在也有常规类型组的情况下,才引用这些新对象。

These new objects may be internal ones and irrelevant for us - I haven't seen any reference to them in the ABAP Keyword Documentation. 这些新对象可能是内部对象,对我们而言无关紧要-在ABAP关键字文档中,我还没有看到对它们的任何引用。 On the other hand, they are confusing us because we see them. 另一方面,它们使我们感到困惑,因为我们看到了它们。

Can someone explain to me the meaning of these objects and point me to some documentation? 有人可以向我解释这些对象的含义并为我提供一些文档吗?

Edit: Here examples from an EHP7 for SAP ERP 6.0 system 编辑:这里是EHP7 for SAP ERP 6.0系统的示例

An example object. 一个示例对象。 Entries in D010INC look fine: D010INC中的条目看起来不错: 不使用类型池mrm的示例对象

The same object now using type pool mrm. 现在,同一对象使用类型为pool mrm的对象。 Where do the additional includes come from? 附加物品从何而来? 使用类型池mrm的示例对象

These objects are introduced through inclusions, extensions and switched objects. 这些对象是通过包含,扩展和交换对象引入的。 To read along: 阅读:

  • Check type pool MRM , type mrm_idoc_data_ers - that type contains a statement to include rmrm_idoc_data_ers_sbo . 检查类型池MRM ,类型mrm_idoc_data_ers该类型包含一个包含rmrm_idoc_data_ers_sbo的语句。 A similar include statement pulls rmrm_upd_arseg_nfm into mrm_upd_arseg . 类似的include语句将rmrm_upd_arseg_nfm拉入mrm_upd_arseg That explains the last two lines. 这就解释了最后两行。 Your parser should have caught that. 您的解析器应该已经抓住了这一点。
  • RMRM_IDOC_DATA_ERS_SBO contains an enhancement point named RMRM_IDOC_DATA_ERS_SBO_02 that belongs to an enhancement spot ES_RMRM_IDOC_DATA_ERS_SBO . RMRM_IDOC_DATA_ERS_SBO包含一个名为RMRM_IDOC_DATA_ERS_SBO_02的增强点,该增强点属于增强点ES_RMRM_IDOC_DATA_ERS_SBO Similarly, RMRM_UPD_ARSEG_NFM contains an enhancement point RMRM_UPD_ARSEG_NFM_01 that belongs to the enhancement spot ES_RMRM_UPD_ARSEG_NFM . 类似地, RMRM_UPD_ARSEG_NFM包含属于增强点RMRM_UPD_ARSEG_NFM_01的增强点ES_RMRM_UPD_ARSEG_NFM
  • For ES_RMRM_IDOC_DATA_ERS_SBO , an enhancement implementation named ISAUTO_MRM_RMRM_IDOC_DATA_ERS exists. 对于ES_RMRM_IDOC_DATA_ERS_SBO ,存在名为ISAUTO_MRM_RMRM_IDOC_DATA_ERS的增强实现。 For ES_RMRM_UPD_ARSEG_NFM , an implementation named /NFM/MM_RMRM_UPD_ARSEG_NFM exists. 对于ES_RMRM_UPD_ARSEG_NFM ,存在名为/NFM/MM_RMRM_UPD_ARSEG_NFM的实现。 That explains the references ending with =E 这就解释了以=E结尾的引用
  • The implementation ISAUTO_MRM_RMRM_IDOC_DATA_ERS is located in the package ISAUTO_MRM . 实现ISAUTO_MRM_RMRM_IDOC_DATA_ERS位于包ISAUTO_MRM The implementation /NFM/MM_RMRM_UPD_ARSEG_NFM is located in the package /NFM/MM . 实现/NFM/MM_RMRM_UPD_ARSEG_NFM位于包/NFM/MM That explains the references ending with =P . 这就解释了以=P结尾的引用。 Obviously, these references are not generated for every package: 显然,并不是每个包都生成这些引用:
  • The package ISAUTO_MRM is controlled by the switch AM_ERS , the package /NFM/MM is controlled by the switch /NFM/MM . ISAUTO_MRM由开关AM_ERS控制,包/NFM/MM由开关/NFM/MM That explains the references ending in =S . 这就解释了以=S结尾的引用。

Ultimately, these references can be used to determine which programs need to be re-generated when the state of a switch is changed. 最终,这些参考可以用于确定在更改开关状态时需要重新生成哪些程序。

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

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