分享

关于 ABAP 这门编程语言的编译器和解释器

 汪子熙 2023-07-08 发布于上海

大家都知道ABAP是第四代高级语言。但我们有多少人能确定ABAP 报表是如何执行的?它有编译器还是解释器,还是两者兼有?

其实答案是:在某种程度上,它两者都有

详细说明一下:在ABAP程序执行之前,ABAP编译器必须将其翻译成一种中间语言。这种形式的程序,即以这种中间形式的程序被称为ABAP负载。然后ABAP虚拟机出现了。ABAP虚拟机是ABAP负载的解释器,也就是说,它可以执行ABAP负载。我们可以将整个场景与Java编译-解释过程相互关联。

在继续之前,我们需要了解什么是处理块。大家应该知道ABAP程序具有模块化结构。这些模块称为处理块。这只是重新组织技巧。

从逻辑上讲,如果我们看任何ABAP程序,它包含两部分:

  1. 第一部分包含全局声明。

  2. 第二部分包含处理块。

有几种类型的处理块,包括对话模块和子程序。更准确地说,有以下类型的处理块:

  1. 对话模块

  2. 事件块

  3. 子程序(子例程、功能模块和方法)。

对话模块是从屏幕流程逻辑中调用的。子程序是使用ABAP语句调用的,这些语句本身是其他处理块的一部分,而事件块是从ABAP程序外部调用的。

ABAP负载与ABAP程序的处理块一一对应,即对于ABAP程序中的每个处理块,在相应的ABAP负载中都有一个处理块。在执行任何处理块之前,首先要确定相应的ABAP程序是否已经编译过。如果已经编译过,则ABAP虚拟机可以立即开始执行处理块;否则,ABAP编译器必须先将ABAP程序翻译成ABAP负载,然后再执行它。

这是对ABAP程序编译过程的一个概述。

我已经在自己的公众号这篇文章详细介绍过ABAP负载的结构和编译过程:

顺便说一句,如果大家可以访问数据库,那么能够在D010S表中查看ABAP报告,而在D010L表中查看ABAP负载。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多