两个内部表不兼容或不可转换-MDG-M

2020-09-07 08:00发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我目前正在使用一些自定义字段扩展MARM和UNITOFMSR实体。

这就是我所做的:

  • 扩展MARM
  • 扩展了SMEINH(MARM的更改表)
  • 扩展了MARM X和UI结构
  • 将字段添加到T130F
  • 将它们添加到数据模型
  • 生成的结构
  • SMT映射
  • MM调整后的分期
  • 清除了UI元数据缓冲区
  • 已将字段添加到UI
  • 在某些情况下在规则服务中添加了一些规则以默认字段(我知道这不是问题,因为我注释掉了所有新代码,并且该问题仍在发生)

问题来了-每当我尝试在MDG中启动或继续一个过程时,我都会得到简短的转储,内容如下:

两个内部表不兼容或不可转换

我以相同的方式扩展了数百个字段,但从未遇到过此问题。 转储在类CL_USMD_GOV_API的标准方法read_entity_buffer中发生:

创建 DATA lr_data就像et_data的线一样。

*分析请求的数据结构

*必须这样做,因为写缓冲区也需要组件表。

*出于这个原因,我们在此处获取并将结果提供给et_components

*,然后在WRITE_ENTITY_BUFFER中重复使用。

lr_data_struc?= cl_abap_typedescr => describe_by_data_ref(p_data_ref = lr_data)。

lt_components = lr_data_struc->组件。

*尝试从READ BUFFER中读取数据

使用KEY实体= iv_entity_name"键

的mt_entity_read_buffer读取表

entity_key = "密钥

版本= iv_版"密钥"

read_mode = iv_data_source" key

request_mode = iv_request_mode

组件= lt_components

分配

如果sy-subrc = 0。

ASSIGN -结果-> *至

检查sy-subrc =0。 "未调用写操作-> READ/RETRIEVE_CHAR_VALUE引发的异常

et_data =

当它碰到UNITOFMSR缓冲区条目之一时,我以粗体突出显示了该问题。 在转储时,我看不到et_data和之间没有区别,除了et_data是一个排序表,而是标准表。

关于什么可能导致该问题以及如何解决的任何想法?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我目前正在使用一些自定义字段扩展MARM和UNITOFMSR实体。

这就是我所做的:

  • 扩展MARM
  • 扩展了SMEINH(MARM的更改表)
  • 扩展了MARM X和UI结构
  • 将字段添加到T130F
  • 将它们添加到数据模型
  • 生成的结构
  • SMT映射
  • MM调整后的分期
  • 清除了UI元数据缓冲区
  • 已将字段添加到UI
  • 在某些情况下在规则服务中添加了一些规则以默认字段(我知道这不是问题,因为我注释掉了所有新代码,并且该问题仍在发生)

问题来了-每当我尝试在MDG中启动或继续一个过程时,我都会得到简短的转储,内容如下:

两个内部表不兼容或不可转换

我以相同的方式扩展了数百个字段,但从未遇到过此问题。 转储在类CL_USMD_GOV_API的标准方法read_entity_buffer中发生:

创建 DATA lr_data就像et_data的线一样。

*分析请求的数据结构

*必须这样做,因为写缓冲区也需要组件表。

*出于这个原因,我们在此处获取并将结果提供给et_components

*,然后在WRITE_ENTITY_BUFFER中重复使用。

lr_data_struc?= cl_abap_typedescr => describe_by_data_ref(p_data_ref = lr_data)。

lt_components = lr_data_struc->组件。

*尝试从READ BUFFER中读取数据

使用KEY实体= iv_entity_name"键

的mt_entity_read_buffer读取表

entity_key = "密钥

版本= iv_版"密钥"

read_mode = iv_data_source" key

request_mode = iv_request_mode

组件= lt_components

分配

如果sy-subrc = 0。

ASSIGN -结果-> *至

检查sy-subrc =0。 "未调用写操作-> READ/RETRIEVE_CHAR_VALUE引发的异常

et_data =

当它碰到UNITOFMSR缓冲区条目之一时,我以粗体突出显示了该问题。 在转储时,我看不到et_data和之间没有区别,除了et_data是一个排序表,而是标准表。

关于什么可能导致该问题以及如何解决的任何想法?

付费偷看设置
发送
7条回答
clever101
1楼 · 2020-09-07 08:47.采纳回答

你好本杰明,

您找到了解决该问题的方法。 除了材料实体,我在这里也面临着同样的问题。

最诚挚的问候,

Daniel

95年老男孩
2楼-- · 2020-09-07 08:48

嗨,我面对计量单位实体的类似问题。

在运行时,调试模式-创建度量单位实体的引用结构,该引用结构与数据模型结构不匹配。 插入语句被调用,由于缺少匹配结构,我们在系统中转储。

这是在我们的一种情况下发生的,不是全部。.我在下面尝试过,还没有运气。

MDGIGM-清晰的UI metedata缓冲区

奄奄一息的小鱼
3楼-- · 2020-09-07 08:38

Bejamin,

最近你们对MDG系统进行的任何升级....

绿领巾童鞋
4楼-- · 2020-09-07 08:48

你好,丹尼尔,

按照承诺-现在是星期四,我可以从SAP访问我的笔记:

这是一个罕见的问题,仅发生在Unicode系统中,其中Include以奇数偏移量开始并且具有特定类型的字段,因此这就是为什么它不经常发生的原因。

Governance API的读取实体缓冲区存储从不同来源以及在代码堆栈的不同级别(便捷API,Governance API,模型等)创建的结构。 根据创建这些结构的位置,其中一些可以通过自定义数据模型的数据引用来创建(在本例中为Flat结构),而其他一些则可以通过诸如/MDGMM/_S_MM_PP_MATERIAL之类的主要持久性映射结构来创建


在ABAP包含结构中,由于使用Unicode系统而引入了对位要求,并且由于此原因,将插入对位间隙以满足这些要求。 相反,在这种情况下,平面结构会自动对齐,并且不会插入对齐间隙。

有关对齐的更多信息和规则,您可以检查以下链接:

对齐

https://help.sap.com/abapdocu_70/zh-CN/ABENALIGNMENT_GLOSRY .htm

Unicode系统中的对齐方式

https://help.sap.com/abapdocu_70/zh-CN/ABENUNICODE_ALIGNMENT .htm

数据对象对齐:

https://help.sap.com/abapdocu_70/zh-CN/ABENALIGNMENT .htm

在包含开始处使用数据类型P(或INT4?)将导致插入对齐间隙,直到对齐Include结构为止,而使用数据类型C将自动对齐 ,则不会插入任何空格。

为了检查结构/MDGMM/_S_MM_PP_MATERIAL的每个字段的偏移量,转到事务SE37并执行功能模块DD_SHOW_NAMETAB。 填写以下参数,单击"执行",然后单击"显示功能模块的输出列表"以显示详细的结构信息:

SHORTNT = <空白>

状态= A

TABNAME =/MDGMM/_S_MM_PP_MATERIAL

GETALL = X

将此与结构快照进行比较将显示由对齐间隙引起的任何未对齐。

正如我所说-为了防止这种情况的发生,我所做的就是在包含(在数据模型中)的开头创建一个伪字段ZZADUMMY。 此命名约定将其放在我的结构的Z字段顶部。 而且它是C型的(顺便说一下,我用了长度2,因为这是我对齐间隙的大小,但我认为这并不重要)

谢谢

Ben

95年老男孩
5楼-- · 2020-09-07 08:33

嗨,我面临度量单位实体的类似问题。

在运行时,调试模式-创建了度量单位实体的引用结构 与数据模型结构不匹配。 会调用一条插入语句,由于缺少匹配结构,我们正在系统中转储。

这是在我们的情况之一中发生的,不是全部。 p>

运行报告-USMD_ADJUST_STAGING

运行报告-USMD_ADAPT_BRF

MDGIGM-清除UI元数据缓冲区

粗暴的香蕉
6楼-- · 2020-09-07 08:55

已排序的表没有任何条目。

标准表只有一个条目,其中包含MARM/UNITOFMSR的所有标准键。

所有生成的表都有添加的自定义字段。 即使我在调试器上执行该语句失败,我也可以查看两个表,以了解除表类型(排序标准)外,它们的结构完全相同。

我不理解它,因为我没有触摸该实体的标准键。

更重要的是,我已经将它们全部拿出并开始将它们一个一个地添加。 在9个字段中。 可以添加其中两个并保持其正常工作。 尽管在所有已生成的数据库表和数据库表中都使用相同的数据元素,其余的都导致转储。

当学会了学习
7楼-- · 2020-09-07 08:51

你好,

即使我曾经遇到同样的错误。

请按照以下步骤操作,

1。 再激活一次数据模型。

2。 在MDGIMG中激活与您的实体相对应的结构。

3。 如果有SMT映射,请删除SMT映射,并节省更多时间。

4。 重新创建SMT映射,然后保存。

5。 运行调整阶段报告。

这将解决您的问题。

谢谢

Girish

一周热门 更多>