笔者之前的文章,介绍了特殊符号星号 * 在 ABAP 世界的十一种用法:
ABAP 里星号 * 的十种用法
星号在 ABAP 中的十大应用场景之补充:搜索和字符串操作
本文再补充一种用法,这种用法只适用于 ABAP Development Tool 里的 ABAP 开发。SAPGUI 里无效。
在 ABAP Development Tool 里编辑代码时,我们可以用 " * ",来限定 ABAP Code Completion 结果列表里的记录。
举个例子:
我在下图第 37 行代码中,输入 `l*_a*`, 意思是在代码自动补全的列表里,我只期望看到那些以 l 开头,中间包含 `_a` 的属性或者方法。
比较一下,如果我直接输入 `l`, 那么可供选择的条目数太多了,效率比较低:
以上这个功能在 SAPGUI 里不可用。
多说一句,ABAP Development Tool 里当我们键入下列特殊符号时,代码补全(Code Completion) 会自动触发。
-
~
=>
->
除此以外,我们可以使用默认的快捷键 Ctrl + Space 来手动触发。但这个组合键和操作系统的输入法切换快捷键冲突了。此时可以在 ABAP Development Tool 的 Preference 设置里,选择 General->Keys, 将 Content Assist 对应的快捷键另外设置一个就好了。
ABAP Development Tool 里 Code Completion 如何实现的?
选择 ABAP Development Tool 的 Show View,打开 ABAP Communication Log 视图:
然后点击 Start Logging:
重新触发 Code Completion 操作,就可以观察 ABAP Development Tool 发送到 ABAP 后台的请求和响应明细了:
Restful API 请求的 url 和请求明细:
/sap/bc/adt/abapsource/codecompletion/proposal
ABAP 后台返回的 Code Completion 分析结果:
在 ABAP 后台使用 SICF 事务码,查看 adt 节点的 handler class,在其 HANDLE_REQUEST 方法设置断点,就可以慢慢单步调试进去,查看 ABAP Code Completion 在后台的实现原理了。
关于 SICF 事务码的更多介绍,请参阅笔者的文章:
从 ABAP Netweaver 的 SICF 到 SAP Kyma 的 Lambda Function
领取专属 10元无门槛券
私享最新 技术干货