这是 Jerry 2021 年的第 35 篇文章,也是汪子熙公众号总共第 311 篇原创文章。
Jerry 已经告别 ABAP 开发很长一段时间了,最近有朋友问我一个关于 ABAP Development Tool 里代码模板的使用问题。我觉得这个代码模板功能,对 ABAP 开发者来说算是一个比较实用的功能,所以单独写一篇文章,把我给这位朋友的解答分享出来。
先介绍下问题的上下文:在 SAPGUI 里,我们可以使用工具栏这个 Pattern 按钮,输入一个函数的名称比如 READ_TEXT:
然后,ABAP 编辑器会帮助我们,自动生成调用这个函数的代码模板,如下图所示。当一个 ABAP 函数具有较多的输入输出参数时,这个功能很有用,省去了我们手动敲入代码的时间。
这位朋友的困扰是,到了 ABAP Development Tool 环境下面,找不到 Pattern 按钮了,因此不知道如何继续使用 ABAP 代码模板功能。
实际上,在 ABAP Development Tool (以前我们称为 ABAP in Eclipse) 里,ABAP 代码模板仍然能够继续使用。和 SAPGUI 不同之处在于,其触发方式有所变化,不再是通过点击 IDE 里某按钮触发。
首先,在 Windows -> Preferences 里,修改 ABAP Development Tool 里触发代码自动补全的快捷键。
选择 Keys -> Content Assist,默认的快捷键是 Ctrl + Space. 这个按键组合,在 Windows 系统里会触发输入法切换,因此我们需要将其更改成其他的按键组合。
我将其修改成了 Shift + L:
在 ABAP 编辑器里,输入 CALL FUNCTION 'READ 之后,敲 Shift + L :
就会看到所有以 READ 开头的 ABAP 函数列表。从列表里选择 read_text 函数之后,在弹出框能看到该函数的输入输出参数,即所谓的 signature 明细。
键入 Shift + Enter,就可以像在 SAPGUI 里点击 Pattern 一样,自动将该函数的调用代码,插入到当前 ABAP 代码中了。
此外,在 ABAP Editor 的 ABAP Templates 里,我们可以修改 ABAP Development Tool 自带的标准 ABAP 模板,也可以自定义新的 ABAP 代码模板。
新建一个 ABAP 模板,使用按钮 Insert Variable, 可以在模板代码里插入类似 ABAP 编程语言 sy-uname 等系统变量。
比如来一段 Jerry 文章 你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧 里提到的注释。
最后编辑好的 ABAP 代码模板如下图所示,另存为 JerryCustomTemplate:
在 ABAP 编辑器中,输入 je,然后敲 Shift + L,从下拉列表里选择 JerryCustomTemplate 即可:
可以看到代码模板里插入的变量,已经自动被替换成其实际值了。
关于 SAP ABAP Development Tool 的更多介绍,可以阅读 Jerry 之前的文章:
不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧
给你的ABAP对象打上标签(Tag)
ABAP开发环境终于支持以驼峰命名法自动格式化ABAP变量名了
比如在 ABAP Development Tool 里设置 ABAP Formatter,让其支持驼峰命名法:
以及此处导入 ABAP 关键字的颜色配置,让你的 ABAP 编辑器具有五彩缤纷的视觉效果:
https://github.com/FreHu/eclipse-abap-keywordcolors
感谢阅读。
ABAP专题
Jerry的ABAP, Java和JavaScript乱炖
ABAP开发人员未来应该学些什么
Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现
Jerry的ABAP原创技术文章合集
300行ABAP代码实现一个最简单的区块链原型
使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数
在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务
ABAP vs Java, 蛙泳 vs 自由泳
聊聊C语言和ABAP
动手使用ABAP Channel开发一些小工具,提升日常工作效率
我用ABAP做过的那些无聊的事情
不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧
使用Visual Studio Code编写和激活ABAP代码
你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧
在SAP云平台ABAP编程环境上编写第一段ABAP程序
SAP官方发布的ABAP编程规范
ABAP Code Inspector那些隐藏的功能,您都知道吗?
还在用ABAP进行SAP产品的二次开发?来了解下这种全新的二次开发理念吧
ABAP Netweaver体内的那些寄生式编程语言
从SAP社区上的一篇博客开始,聊聊SAP产品命名背后的那份情怀
云端的ABAP Restful服务开发
如何在SAP云平台ABAP编程环境里把CDS view暴露成OData服务
使用abapGit在ABAP On-Premises系统和SAP云平台ABAP环境之间进行代码传输
30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用
Jerry带您了解Restful ABAP Programming模型系列之二:Action和Validation的实现
Jerry带您了解Restful ABAP Programming模型系列之三:云端ABAP应用调试
SAP云平台上的ABAP编程环境里如何消费第三方服务
ABAP开发者上云的时候到了 - 现在大家可以免费使用SAP云平台ABAP环境的试用版了
学而不思则罔 - SAP云平台ABAP编程环境的由来和适用场景
SAP云平台里的三叉戟应用
如何基于Restful ABAP Programming模型开发并部署一个支持增删改查的Fiori应用
SAP 2019 TechEd Key Note解读:云时代下SAP从业人员如何做二次开发?
有哪些ABAP关键字和语法,到了ABAP云环境上就没办法用了?
ABAP开发环境终于支持以驼峰命名法自动格式化ABAP变量名了
利用ABAP 740的新关键字REDUCE完成一个实际工作任务
一段让人瑟瑟发抖的ABAP代码
昨日万圣节ABAP怪兽级代码谜团,公布答案啦
介绍一种在ABAP内核态进行内表高效拷贝的方法
使用SAP Cloud Application Programming模型开发OData的一个实际例子
当ABAP遇见普罗米修斯
使用ABAP绘制可伸缩矢量图
ABAP开发环境语法高亮的那些事儿
SAP错误消息调试之七种武器:让所有的错误消息都能被定位
使用ABAP操作Excel的几种方法
SAP GUI里的收藏夹事务码管理工具
SAP GUI和Windows注册表
有了Debug权限就能干坏事?小心了,你的一举一动尽在系统监控中
ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX这些东东是什么鬼
实现ABAP条件断点的三种方式
使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈
一个13年ABAP老兵的建议:了解这些基础知识,对ABAP开发有百利而无一害
SAP ABAP Netweaver容器化, 不可能完成的任务吗?
SAP产品增强技术回顾
SAP API开发方法大全
浅谈Java和SAP ABAP的静态代理和动态代理,以及ABAP面向切面编程的尝试
SAP ABAP应用服务器的HTTP响应状态码(Status Code)
SAP ABAP里存在Java List这种集合工具类么?CL_OBJECT_COLLECTION了解一下
ABAP面试题系列:写一组会出现死锁(Deadlock)的ABAP程序
SAP ABAP Netweaver服务器的标准登录方式讲解
SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer
SAP ABAP SM50的另类用途 - ABAP工作进程对数据库表读取操作的检测
关于SAP ABAP字符变量和字符串变量字符个数的一个知识点,和一个血案
SAP ABAP一组关键字 IS BOUND, IS NOT INITIAL和IS ASSIGNED的用法辨析
SAP ABAP和Java里的弱引用(WeakReference)和软引用(SoftReference)
SAP AMDP介绍 - ABAP托管的HANA数据库过程
给你的ABAP对象打上标签(Tag)
历史上的今天:编程语言中null引用的十亿美元错误