我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

这篇文章将为大家详细讲解有关如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

小编做SAP CRM Fiori应用开发时,在学习JavaScript时,读过这本书:

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

书中使用这种语法图讲解JavaScript的语法:

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

其实ABAP帮助文档里也存在类似的语法图,只是藏在一个不起眼的角落,不为大家所熟知:

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

以关键字APPEND为例,查看其语法图:

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

单击超链接,语法图就展示出来了,我觉得比帮助文档里的文字描述直观得多:

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

点击问号,可以查看图里每个组成部分的详细说明:

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

我们有时候发现编写的ABAP代码,运行时不能按照自己的期望工作,往往是因为对ABAP帮助文档里描述的ABAP关键字的功能理解得似是而非。如果你阅读有的关键字帮助文档时,感到晦涩难懂时,不妨换个角度,看一看它的语法图,说不定能够豁然开朗。

Jerry之前学习过SAP Commerce,在搭建开发环境执行ant all命令行进行项目构建时,发现会自动生成大量的.java文件。我的同事告诉我,这些Java文件的内容,是基于一个叫做Velocity的Java模板引擎生成的。

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

这些位于Hybris安装包内,以.vm结尾的文件,即Velocity的模板文件:

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

打开这些模板文件,发现由下图蓝色区域所示的静态内容和红色区域所示的变量组成。

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

在基于这些模板文件生成Java文件时,以$开头的变量会被运行时计算出的实际值替换,例如$currentDateTime被替换成实际执行ant all命令行构建项目的时间戳。

一个基于上图模板文件生成的Java文件的例子:

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

那么ABAP里有没有类似Java Velocity这种模板引擎呢?

和JavaScript一样,ABAP里也有字符串模板(String Template)的概念:

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

ABAP字符串模板定义在两根竖线之内,如上图第14行代码所示。字符串模板里包含静态的字符串文本和ABAP变量名。在运行时,这些充当占位符的ABAP变量会被其实际包含的值所取代。

下图是JavaScript里的字符串模板的一个例子,只不过分隔符从ABAP的竖线换成了单引号:

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

使用ABAP的字符串模板,我们同样可以实现类似Java Velocity动态生成代码的需求。Jerry之前的文章 浅谈Java和SAP ABAP的静态代理和动态代理,以及ABAP面向切面编程的尝试 曾经介绍过。

将需要动态创建的ABAP类的源代码用字符串模板拼凑好,存储到内表lt_source中,然后调用关键字GENERATE SUBROUTINE POOL,创建生命周期只存在于当前会话期间内的临时ABAP类。

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

如果想生成全局ABAP类,即生成之后能够持久化在ABAP服务器上,并且能够通过SE24和SE80打开,则将拼凑好的包含ABAP类实现源代码的内表传给ABAP类的创建API,即函数SEO_CLASS_CREATE_COMPLETE.

下图代码根据内表mt_sourcecode里存储的内容,在$TMP包下创建了一个新的ABAP类。

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

以上就是ABAP最常用的两种自动生成代码的方式。

其实还有第三种方式,应用在SAP一些框架比如BRFplus自动生成ABAP类的场景里:

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

可以通过关键字ABAP CODE COMPOSER找到帮助文档。

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

下面Jerry就通过一个实际的例子介绍如何使用ABAP Code Composer自动生成代码。

和Java Velocity思路一样,我们基于一个ABAP模板自动生成新的代码。创建一个ABAP Include充当模板,取名ZSINGLETON:

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

模板代码如下,定义了一个用单例设计模式(Singleton)实现的ABAP类的基本骨架。

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

这个ABAP模板里以$开头和$结尾的变量,作用和Java Velocity里的变量类似,充当占位符的角色,运行时被模板的调用者传入的实际值替换。

而@if和@end, 和Velocity的#if与#end一样,在根据模板生成实际代码时,提供了简单的条件分支处理和控制功能。

我的ZSINGLETON模板里总共定义了4个变量:

  • $I_PARAM-class$

  • $I_PARAM-global$

  • $I_PARAM-interface$

  • $I_PARAM-exception$

最后写一个ABAP程序,使用Code Composer消费ZSINGLETON模板,将上述4个变量的实际值传入,生成一个可以持久化保存的ABAP单例类,名称为第18行代码指定的ZCL_JERRY.

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

下图是通过ABAP模板和ABAP Code Composer生成的ABAP类的源代码,可以看到之前模板里通过$定义的变量,已经被调用模板生成ABAP类时传入的实际值替换了。

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

关于如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer

这篇文章将为大家详细讲解有关如何分析SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。小编做SAP CRM Fio
2023-06-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录