ABAP新语法

2020-08-21 02:24发布

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

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


专家您好,

为什么我会通过使用新语法来获取错误消息,例如 当我替换语句时:

读取表mt_xyz将分配给键测试组件a =  -t。

使用:

 ASSIGN mt_xyz [关键测试组件a =  -t]至

我收到错误消息,指出第二(新)语句中未完全指定密钥,但是使用旧语法,它可以正常工作而没有任何问题。

BR

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

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


专家您好,

为什么我会通过使用新语法来获取错误消息,例如 当我替换语句时:

读取表mt_xyz将分配给键测试组件a =  -t。

使用:

 ASSIGN mt_xyz [关键测试组件a =  -t]至

我收到错误消息,指出第二(新)语句中未完全指定密钥,但是使用旧语法,它可以正常工作而没有任何问题。

BR

付费偷看设置
发送
4条回答
lukcy2020
1楼 · 2020-08-21 02:47.采纳回答

您没有用相应的新语句"替换"旧语句,而是将其更改为"不同"。 您需要使自己熟悉"免费搜索键"和"按表搜索键"的ABAP概念。

"不幸的是",有关如何使用免费搜索键和按表键搜索的语法和可用功能已从"旧"更改为"新",这可能会给您带来麻烦 从。 新语法中不提供基于键的带有强制BINARY SEARCH的FREE SEARCH KEY,在新的语法中,如果您使用的组件不正确,则很可能避免此用法的错误(与BINARY SEARCH语句不应为 还是首选)。

"实际上,这将"对应"

 "按表键搜索:仅使用键的所有组件
 "注意:新旧版本都会引发相同的语法错误
 读取表mt_xyz为分配表键测试组件a =  -t。
 ASSIGN mt_xyz [关键测试组件a =  -t]至。

 "通过自由键进行搜索:使用表的任何组件
 "这通常导致顺序搜索,
 和新旧功能之间的功能有所不同,新旧功能暗中使用了其他"可用"键
 读取表mt_xyz用键a =  -t分配。
 ASSIGN mt_xyz [a =  -t]到。

 "通过免费的强制二进制搜索:
 "使用表的任何组件并基于键强制进行二进制搜索
 读取表mt_xyz为分配键测试组件a =  -t。
 ASSIGN mt_xyz [?????  ]到。  "没有可用的等效功能
 

遇到此类问题时,请使用SAP ABAP文档,这真的很有帮助!

>>如果空闲键与某些或所有主表键重叠,则 读取已排序的表和哈希表时,将执行READ TABLE下描述的优化。

>>与指定了自由键的READ TABLE语句不同,不能强制对表表达式执行二进制搜索,而不会强制执行二进制搜索。 可以指定明确的表键来使用辅助键来优化搜索。

天桥码农
2楼-- · 2020-08-21 02:53

我可以理解一个"新语法"问题....或者可能是2 .... 3。 但实际上,您每天都在垃圾邮件中发布这些信息。 也许对您来说更好的选择是花一些时间(很多?)来实际使用语法(旧的和新的)一段时间……然后再回来问您当时的问题。 现在,您什么都没学到.....只是将其喂给您....这使得它很难保留。 只是我的0.02美元。

SAP小黑
3楼-- · 2020-08-21 02:50

仅仅是ABAP新版本中引入的语句可能需要更严格的检查。 表表达式要求您完整输入密钥。 READ TABLE的等效语法不是必需的。

Pascal Ditzel

您是 混合出现的情况,您的原始READ TABLE语句与一个自由搜索键以及对问题中的部分键的强制二进制搜索没有对应的(新)表表达式,而根据您的上述评论,READ TABLE语句与一个自由键 搜索键并且没有强制二进制搜索会执行对应的(新)表表达式:

1。 带有READ TABLE的自由搜索键(没有在完整/部分主/次键上进行强制二进制搜索)具有对应的表表达式:
" READ TABLE itab WITH KEY comp1 = opernd1 ASSIGNING 。->自由搜索 键
 使用密钥source_key = iv_dlv_key读取表mt_dlv_kl_fu ASSIGNING 。

 " ASSIGN itab [comp1 =操作数1]至。->免费搜索键
 ASSIGN mt_dlv_kl_fu [source_key = iv_dlv_key]至

另请参阅table_exp的SAP ABAP文档-itab_line语法:

>>表表达式根据指定的自由搜索键读取行。
>>搜索的方式与在语句READ TABLE中指定自由搜索键comp1 =操作数1 comp2 =操作数2 ...时完全相同。
>>同样,可以根据"指定组件"部分中的规则来指定组件comp1 comp2...。此外,必须指定兼容或可转换的操作数操作数1操作数2。
>>如果自由键与某些或所有主表键重叠,则在读取排序表和哈希表时将执行READ TABLE下描述的优化。

2。 在完整/部分主键/副键上进行强制二进制搜索的免费搜索键没有相应的表表达式:
使用键KEY读取表itab key_name COMPONENTS comp1 =操作数1分配。
 分配itab [?????  ]至。  "没有等效的表表达式可用

>>与指定了自由键的语句READ TABLE不同,不能强制对表表达式进行二进制搜索,并且不可能指定显式表键来优化使用

3。使用指定表键的搜索具有对应的表表达式,并且始终要求提供FULL键:

" KEY,具有一个组成部分:
 "这仅在'key_name'仅具有COMPONENT comp1时有效!
 使用表键key_name读取表itab components comp1 =操作数1分配。
 分配itab [密钥key_name组件comp1 =操作数1]至。

 " KEY包含两个部分:
 "这仅在'key_name'仅具有COMPONENTS comp1和comp2的情况下有效!
 使用表键读取表itab key_name组件comp1 =操作数1 comp2 =操作数2分配。
 分配itab [密钥key_name组件comp1 =操作数1 comp2 =操作数2]至

>>必须通过指定组件完全覆盖表键,并且不能指定不属于表键的任何组件。

一周热门 更多>