EHP4和EHP7的末尾行为不同

2020-09-05 16:10发布

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

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


你好

我们最近将系统从EHP4升级到EHP7。 我们有如下一段代码,该代码在EHP4中可以正常工作,但在EHP7中的行为却有所不同。 ITAB1在所有行的字段COL10,COL11和COL12中都有值。 在EHP4中,SUM语句将COL10,COL11和COL12中的值相加(根据" AT END OF"文档),并填充到ITAB2中。 但是在EHP7中,ITAB2中的COL10列已填充为0。 像在EHP4中一样,在COL11和COL12列中填充总和值。

我附上了表ZZTAB1的屏幕快照,从中键入了ITAB1和ITAB2。 GP1和GP2被命名为包括。

EHP4和EHP7的AT END OF语句之间是否有区别? 请告知。

 按GP1 GP2排序itab1。
 在itab1处循环进入wa1。
  在GP2末尾。
   和。
   将wa1附加到itab2。
  Endat。
 结束循环。

(50.3 kB)

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

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


你好

我们最近将系统从EHP4升级到EHP7。 我们有如下一段代码,该代码在EHP4中可以正常工作,但在EHP7中的行为却有所不同。 ITAB1在所有行的字段COL10,COL11和COL12中都有值。 在EHP4中,SUM语句将COL10,COL11和COL12中的值相加(根据" AT END OF"文档),并填充到ITAB2中。 但是在EHP7中,ITAB2中的COL10列已填充为0。 像在EHP4中一样,在COL11和COL12列中填充总和值。

我附上了表ZZTAB1的屏幕快照,从中键入了ITAB1和ITAB2。 GP1和GP2被命名为包括。

EHP4和EHP7的AT END OF语句之间是否有区别? 请告知。

 按GP1 GP2排序itab1。
 在itab1处循环进入wa1。
  在GP2末尾。
   和。
   将wa1附加到itab2。
  Endat。
 结束循环。

(50.3 kB)
付费偷看设置
发送
7条回答
梦想连接
1楼-- · 2020-09-05 16:23

不知道这是否与它有任何关系,但是从EhP4到EhP7还应该意味着肯定要迁移到UniCode系统...检查SAP注释?

SAP浪
2楼-- · 2020-09-05 16:18

除了其他人指出的以外,这似乎是COLLECT命令的一种情况,而不是AT END ... SUM ...

也请发布工作代码,伪代码替换不适用于以下情况: 就像您所说的那样,存在一个奇特的问题。

CPLASF-自律
3楼-- · 2020-09-05 16:18

使用别名(GP1,GP2)非常少见,也许是AT END出现了一个错误。

您应该在SAP支持部门开票。 您需要提供一个SAP示例来重现(带有示例数据或访问系统的最少代码)。

如果这只是程序中的错误,如果您希望我们进行调查,请提供可重现的示例 代码和一些示例数据。 例如:

 TYPES:BEGIN OF zzstruc1," GP1
          col1 TYPE C LENGTH 10,
          col2 TYPE f,
          col3 TYPE f,
        zzstruc1的结尾,
        zzstruc2的开头," GP2
          col6 TYPE C LENGTH 10,
          col7 TYPE C LENGTH 3,
          col8 TYPE C长度5
          col9 TYPE C LENGTH 1,
        zzstruc2的结尾,
        zzstruc3," GP3的开始
          col10 TYPE p LENGTH 13小数,8,
          col11 TYPE p LENGTH 13小数8,
          col12 TYPE p LENGTH 13小数,8,
        zzstruc3的结尾。
 类型:
   zztab1的开始,
     类型3长度的mandt,
     objnr类型n长度10。
     包括类型zzstruc1 AS gp1。
     包括类型zzstruc2 AS gp2。
     包括类型zzstruc3 AS gp3。
 类型:
 zztab1的结尾,
 zztab1_s带有空密钥的zztab1的标准类型表。
 DATA(itab1)= VALUE zztab1_s(
     (col1 ='A'col9 ='A'col10 = 5)
     (col1 ='A'col9 ='A'col10 = 7)
     (col1 ='B'col9 ='A'col10 = 2))。
 DATA(itab2)= VALUE zztab1_s()。
 按gp1 gp2排序itab1。
 将itab1循环到DATA(wa1)中。
   在gp2结束时。
     和。
     将wa1附加到itab2。
   ENDAT。
 结局。
 ASSERT itab2 = VALUE zztab1_s("期望已验证或运行时错误
     (col1 ='A'col9 ='A'col10 = 12)
     (col1 ='B'col9 ='A'col10 = 2))。

PS:您的代码看起来很奇怪,因为您仅按GP1和GP2进行排序。 您应该按MANDT,OBJNR,GP1和GP2进行排序,因为" AT END OF component "在" component"左侧的所有组件处进行分组中断。 如果至少没有按MANDT和OBJNR进行排序,则会得到错误的结果。

浮生未央
4楼-- · 2020-09-05 16:36

然后使用哈希表进行收集。 高效。

SC_Yao
5楼-- · 2020-09-05 16:36

如果在GP1上首先进行排序,什么时候GP2会结束?

My梦
6楼-- · 2020-09-05 16:34

Hello Jelena Perfiljeva,Matthew Billingham

我们已将SUM更改为COLLECT。 现在可以使用了。 谢谢。

一周热门 更多>