构造函数+子字段访问权限-GETWA_NOT_ASSIGNED。 ABAP内核错误?

2020-09-07 22:21发布

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

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


也许是另一个ABAP内核错误,尚未纠正?

使用以下代码,DATA(name)= ...使用GETWA_NOT_ASSIGNED进行简短的转储。 在某些其他情况下,它可能不会失败,但返回的值将具有不同的偏移量an和不同的长度!

 DATA(text)='hello'。
 在文本结果数据(匹配项)中查找所有'l'事件。
 LOOP AT匹配ASSIGNING FIELD-SYMBOL()。
   DATA(名称)= to_upper(CONV字符串(text +  -offset( -length)))。  "短暂的垃圾
 ENDLOOP。

这是由于构造函数表达式与子字段访问结合使用了 。 如果我删除其中之一,那没关系。

似乎子字段访问/构造函数表达式的确是一个问题,因为我在表理解内还存在另一个COND(不是CONV)问题。 将其移至LET aux = str + off(len)已解决了该问题,但我没有看到有关该主题的注释(仅 1972833 接近,但用于旧内核741)。

您是否遇到相同的问题,您的ABAP版本/内核是什么,您知道SAP note/kernel解决了什么问题吗?

我的ABAP版本:

  • ABAP 7.52(7.5C)SP0内核753 SP300。
  • ABAP 7.52 SP1内核753 SP16。

非常感谢您。

桑德拉

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

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


也许是另一个ABAP内核错误,尚未纠正?

使用以下代码,DATA(name)= ...使用GETWA_NOT_ASSIGNED进行简短的转储。 在某些其他情况下,它可能不会失败,但返回的值将具有不同的偏移量an和不同的长度!

 DATA(text)='hello'。
 在文本结果数据(匹配项)中查找所有'l'事件。
 LOOP AT匹配ASSIGNING FIELD-SYMBOL()。
   DATA(名称)= to_upper(CONV字符串(text +  -offset( -length)))。  "短暂的垃圾
 ENDLOOP。

这是由于构造函数表达式与子字段访问结合使用了 。 如果我删除其中之一,那没关系。

似乎子字段访问/构造函数表达式的确是一个问题,因为我在表理解内还存在另一个COND(不是CONV)问题。 将其移至LET aux = str + off(len)已解决了该问题,但我没有看到有关该主题的注释(仅 1972833 接近,但用于旧内核741)。

您是否遇到相同的问题,您的ABAP版本/内核是什么,您知道SAP note/kernel解决了什么问题吗?

我的ABAP版本:

  • ABAP 7.52(7.5C)SP0内核753 SP300。
  • ABAP 7.52 SP1内核753 SP16。

非常感谢您。

桑德拉

付费偷看设置
发送
8条回答
愤怒的猪头君
1楼 · 2020-09-07 22:45.采纳回答

为便于记录,我在SAP支持部门发布了一个事件。 我会及时通知您。

(我自己使用的链接: 258494/2019构造函数 +子字段访问->短转储GETWA_NOT_ASSIGNED

更新20190603:已通过SAP注释 2791097-具有偏移量/长度访问的ABAP表达式产生错误的结果

樱桃小丸子0093
2楼-- · 2020-09-07 22:55

如果我这样做,则可以:

 DATA(text)=' 你好'。
 数据部分。
 在文本结果数据(匹配项)中查找所有'l'事件。
 LOOP AT匹配ASSIGNING FIELD-SYMBOL()。
   part = text +  -offset( -length)。
 结局。
 

,但如果我这样做,则语法错误:

 DATA(text)='hello'。
在文本中查找'l'的所有出现结果数据(匹配) 。
LOOP AT匹配ASSIGNING FIELD-SYMBOL()。
DATA(part)= text + -offset( -length)。
ENDLOOP。

如果我这样分隔行,则不会转储:

在文本结果数据(匹配项)中查找所有'l'事件。
LOOP AT匹配项ASSIGNING FIELD-SYMBOL( )。 DATA(conv)= CONV字符串(text + -offset( -length))。
DATA(name)= to_upper(conv)。 ENDLOOP。

可能与内联声明中的泛型类型有关……

haha101010
3楼-- · 2020-09-07 23:05

Sandra您好,希望您一切都好

发生错误是因为解释器无法将静态 char 转换为 string (就像您之前所做的那样)。 field-symbol语句具有动态更改变量内容的能力(无需使用MODIFY语句或任何其他...),因此无法将char(5)转换为string(255),因为字符串值是 表内容很长。

我对您的代码做了一些更改。 请再次测试

 DATA(文本)= CONV字符串('hello')。
 在文本结果数据(匹配项)中查找所有" l"事件。
 LOOP AT匹配ASSIGNING FIELD-SYMBOL()。
 * DATA(名称)= to_upper(CONV字符串(text +  -offset( -length)))。  "短暂的垃圾
   DATA(名称)= to_upper(text +  -offset( -length))。  "没有转储:)
 ENDLOOP。

KR,
亚瑟·席尔瓦(Arthur Silva)

SAP小菜
4楼-- · 2020-09-07 22:49

桑德拉·罗西哦,是的,我 知道。 但是,如果您要使用老式的结构...;-)

半个程序猿
5楼-- · 2020-09-07 23:10

Sandra,

您是否尝试过我发送的代码?

没有字段符号,没有错误:

 data(v1)='Hello'。
 data(v2)= to_upper(转换字符串(v1 + 2(1)))。

带有字段符号:错误:

 DATA(名称)= to_upper(CONV字符串(text +  -offset( -length)))。

不要将字段符号与内联声明混淆。

haha101010
6楼-- · 2020-09-07 22:49
Baoming ROSE
7楼-- · 2020-09-07 22:56

SAP回答了他们将要更正此错误,他们将发布新的SAP注释...以继续。

一周热门 更多>