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

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

时间:2023-07-15 10:14:39浏览次数:35  
标签:负载 处理 程序 解释器 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负载。

标签:负载,处理,程序,解释器,ABAP,编译,编译器
From: https://www.cnblogs.com/sap-jerry/p/17555630.html

相关文章

  • 每日一个 ChatGPT 使用小技巧系列之4:使用 AI 工具对 SAP ABAP 代码的编写质量进行打分
    本系列之前的文章:与其整天担心AI会取代程序员,不如先让AI帮助自己变得更强大每日一个ChatGPT使用小技巧系列之1-给出提纲或者素材,让ChatGPT帮你写作每日一个ChatGPT使用小技巧系列之2-用ChatGPT研读SAPABAPBAPI的实现源代码每日一个ChatGPT使用......
  • SAP ABAP 函数 TR_REQUEST_CHOICE
    TR_REQUEST_CHOICE是SAPABAP中的一个函数模块,它用于在系统中处理传输请求。传输请求是SAP系统中的一个重要概念,它用于管理和控制系统中对象的传输。这些对象可以是程序、表、视图等。TR_REQUEST_CHOICE函数模块提供了一种界面,允许用户在系统中选择一个传输请求。它有一个......
  • 关于 SAP ABAP 事务码 SM30 里的 Restrict Data Range
    SAPABAP事务码SM30里的RestrictDataRange区域的Enterconditions和Variant这两个选项有什么作用?SAPABAP中的SM30事务码用于维护表的条目。在使用SM30事务时,RestrictDataRange区域允许用户定义一些限制条件,可以帮助缩小查询或更改的数据范围。这对于大型表......
  • 编译器和 gdb
    g++-oXXXX.cpp编译-ggdb调试-O2吸氧-pg看函数运行-ftrapv有没有溢出-fsanitize=address看数组有没有越界-pg-ftrapv-fsanitize=address都要运行一遍(./XX)-pg后面还要gprof-b./XX如果越界了,后面两个会给出Aborted直接终止gdb调试gdb(./)XX开始......
  • ABAP OLE 常用实例
    OLE方式一编辑模版上传模板(smw0)下载模板DATA:lo_objdataLIKEwwwdatatab,ls_errtxtTYPEstring,li_rcLIKEsy-subrc.SELECTSINGLErelidobjidINTOCORRESPONDINGFIELDSOFlo_objdataFROMwwwdata......
  • Net 编译器平台--- Roslyn Scripting APIs
    引言上一篇中.Net编译器平台---Roslyn,介绍了Roslyn的各项功能,包括公开API,使用语法,使用语义,使用工作区等功能。那么回到上一篇中提到的问题,实现类似这样的功能(以下代码为伪代码):stringscriptText="inta=1;intb=2;returna+b;";varresult=Script.Run(scriptTex......
  • Visual Code 配置 Anaconda解释器
    PyCharm比较“重量级”,可以选择轻量级的集成开发环境(IntegratedDevelopmentEnvironment,IDE)来运行简单代码软件安装1.安装VSCode2.安装Anaconda环境配置1.安装Python插件(插件默认安装到C盘的一个位置)......
  • Net 编译器平台 --- Roslyn
    引言最近做一个功能想要动态执行C#脚本,就是预先写好代码片段,在程序运行时去执行代码段,比如像这样(以下代码为伪代码):stringscriptText="inta=1;intb=2;returna+b;";varresult=Script.Run(scriptText);查阅了一些资料,发现.Net的开源编译器平台-Roslyn,可以支......
  • C++ 设计模式之解释器模式
    设计模式之解释器模式解释器模式,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式解决的问题是,如果一种特定类型的问题发生的频率足够高,那么可能就只得将该问题的各个示例表述为一个简单语言中的句子。这样就可以构建......
  • 【ABAP】下载模板文件进行批导程序
    日常开发中遇到的批导开发程序,都是通过tcode:SMW0将模板excel文件上传到服务器界面上放置下载模板的工具栏按钮,用户使用时下载模板并编辑数据,然后上传文件进行导入处理程序如下REPORTzfile_upload.TABLES:sscrfields.SELECTION-SCREENFUNCTIONKEY1.SELECTION-SCRE......