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

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

大家都知道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负载。


相关文章
|
6月前
|
程序员
什么是 ABAP 编程语言里的 Exception 断点
什么是 ABAP 编程语言里的 Exception 断点
|
存储 SQL 网络协议
ABAP 编程语言中 Class(类)的设计原理剖析
ABAP 编程语言中 Class(类)的设计原理剖析
|
Shell Linux 应用服务中间件
ABAP 面试题:如何使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令?
ABAP 面试题:如何使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令?
|
6月前
|
数据库 开发者
什么是 ABAP 编程语言里的 sy-subrc
什么是 ABAP 编程语言里的 sy-subrc
|
Shell Linux 应用服务中间件
使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令
使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令
|
6月前
|
大数据 数据处理 云计算
道家学派创始人老子,对 SAP ABAP 这门编程语言的客观评价
道家学派创始人老子,对 SAP ABAP 这门编程语言的客观评价
|
IDE Java 程序员
Eclipse 不为人所知的另一面 - 企业管理软件领域 ABAP 编程语言开发利器(下)
Eclipse 不为人所知的另一面 - 企业管理软件领域 ABAP 编程语言开发利器
|
IDE Java API
Eclipse 不为人所知的另一面 - 企业管理软件领域 ABAP 编程语言开发利器(上)
Eclipse 不为人所知的另一面 - 企业管理软件领域 ABAP 编程语言开发利器
什么是 ABAP 编程语言的 Used Memory 和 Allocated Memory
什么是 ABAP 编程语言的 Used Memory 和 Allocated Memory
ABAP 编程语言里的 Reference Semantic - 引用语义
ABAP 编程语言里的 Reference Semantic - 引用语义

热门文章

最新文章