[英]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中的条目看起来不错:
The same object now using type pool mrm. 现在,同一对象使用类型为pool mrm的对象。 Where do the additional includes come from?
附加物品从何而来?
These objects are introduced through inclusions, extensions and switched objects. 这些对象是通过包含,扩展和交换对象引入的。 To read along:
阅读:
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
. rmrm_upd_arseg_nfm
拉入mrm_upd_arseg
。 That explains the last two lines. 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
。 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
结尾的引用 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: 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.