什么是 SAP ABAP 系统的工作进程(Work Process)

文摘   2024-09-30 18:18   北京  

ABAP 系统架构图里,Work Process 工作进程的地位如下图所示。

ABAP 工作进程的概念和作用,同《计算机操作系统》中的同名概念有所差异。

操作系统的进程,是对正在运行中的程序的一个抽象。线程则是操作系统分配处理器时间资源的基本单元,是进程之内独立执行的一个单元。对于操作系统而言,其调度单元是线程。一个进程至少包括一个线程,通常将该线程称为主线程。

ABAP 应用服务器也有调度器(Dispatcher)的概念, 如下图黄色高亮区域所示。调度的对象就是一个个工作进程,如下图绿色区域所示。

工作进程负责执行 ABAP 应用程序的各个对话步骤(Dialog Step). 它们是 ABAP 应用服务器的组成部分。

本文接下来将分别介绍 ABAP 工作进程的结构以及不同的分类。

工作进程的结构

下图展示了工作进程的各个组成部分:

☕ 屏幕处理器(Screen processor)

在 ABAP 应用开发中,用户交互和程序处理逻辑是分开的。从编程的角度来看,用户交互是通过屏幕来控制的。除了显示输入界面,屏幕还包含流程逻辑(flow logic),它负责控制大部分用户与系统的交互行为。

SAP NetWeaver ABAP 中的屏幕处理器负责执行这些流程逻辑。通过调度器,屏幕处理器负责在工作进程和 SAPGUI 之间通信,调用流程逻辑中的模块,并确保将屏幕上的字段内容传递到流程逻辑中。

🐍 ABAP 处理器

ABAP 应用程序的核心处理逻辑是用 ABAP 编程语言编写的,ABAP 处理器负责执行这些处理逻辑,并与数据库接口进行通信。

屏幕处理器会告诉 ABAP 处理器,接下来应该处理流程逻辑中的哪个模块。

下图展示了在应用程序运行过程中,屏幕处理器和 ABAP 处理器的相互作用。

📖 数据库接口

数据库接口提供了以下几项服务:

  • 建立和断开工作进程与数据库之间的连接

  • 访问数据库表

  • 访问存储库对象(例如 ABAP 程序、屏幕等)

  • 访问 Catalog 信息(如 ABAP Dictionary)

  • 管理事务处理(提交和回滚操作)

  • 管理 ABAP 应用服务器上的表缓存

下图展示了数据库接口的各个组成部分以及与数据库层的交互逻辑。

图中显示了两种访问数据库的方式:Open SQL 和 Native SQL.

Open SQL 是标准 SQL 的一个子集,并且完全集成在 ABAP 中。它允许 ABAP 开发人员在不考虑具体数据库系统的情况下访问业务数据。

Open SQL 包含标准 SQL 的数据操作部分(DML),这意味着它可以用于读取(SELECT)和修改(INSERT、UPDATE、DELETE)数据。

至于标准 SQL 中的数据定义语言(DDL)和数据控制语言(DCL),在 SAP NetWeaver ABAP 中则由 ABAP Dictionary 和授权系统来处理。这些功能与底层数据库解除了耦合关系,提供了统一的数据库操作范围。

关于数据库接口的更多详细介绍,参考笔者的文章:

ABAP 系统里的透明表(Transparent Table),如何理解透明的含义?

Open SQL 还进一步扩展了标准 SQL 的功能,提供了一些与 ABAP 其他结构结合使用时,可以简化或加快数据库访问的语句。OPEN SQL 还允许在 ABAP 应用服务器上缓存某些表,以减少过多的数据库访问次数。

在这种情况下,数据库接口负责比较缓存与实际数据库中的数据。缓存部分存储在当前工作进程的内存中,将部分内容存储在所有工作进程共享的内存中。

如果 SAP NetWeaver ABAP 部署在多个 ABAP 应用服务器上,各个服务器的缓存数据,将在设定的时间间隔内通过缓存管理器进行同步。

Native SQL 允许直接访问数据库系统提供的编程接口中的所有功能。在 Native SQL 中,可以使用数据库特定的 SQL 语句。

Native SQL 接口将这些语句直接发送到数据库系统并执行,使得程序能够利用相应数据库的完整 SQL 功能,但这也意味着使用 Native SQL 的程序将依赖于特定的数据库系统。

因此通常情况下,ABAP 应用程序应该尽量避免使用 Native SQL.

工作进程的类型

在启动 SAP NetWeaver ABAP 之前,SAP ABAP Basis 从业人员需要确定针对每个 ABAP 应用服务器,将分配工作进程的数量以及类型。

由于所有工作进程的结构都是相同的,工作进程的类型并不会影响 ABAP 应用服务器的技术特性,只会决定服务器上执行的任务类型。

调度器会启动工作进程,并根据其类型分配相应的任务。

下图展示了 ABAP 应用服务器内不同类型的工作进程:

对话工作进程(Dialog Work Process)

对话工作进程负责处理来自活动用户的请求,执行对话步骤。这是 ABAP 应用服务器里数量最多最普遍的一种工作进程。

更新工作进程(Update Work Process)

更新工作进程负责执行数据库更新请求。这些更新请求是 SAP 逻辑单元工作(LUW)的一部分,它将对话操作产生的数据库操作,捆绑成一个数据库 LUW,在后台进行处理。

SE37 里标注为 Update Module 的 Function Module,运行在更新工作进程内。

后台工作进程

后台工作进程处理不需要用户交互的程序即后台作业。

使用事务码 SM37 将 ABAP 程序调度成以后台作业的方式运行。

锁定工作进程

锁定工作进程管理共享内存区域中的锁定表(Lock Table)。该锁定表包含了 SAP NetWeaver ABAP 服务器的逻辑数据库锁定信息,是 SAP 逻辑单元工作(LUW)概念的重要组成部分。

在 SAP NetWeaver 应用服务器中,只能拥有一个全局的锁定表。通常情况下,一个锁定工作进程就足够执行所需的任务。

Spool 工作进程

Spool 工作进程负责将顺序数据集传递到打印设备。每个 ABAP 应用服务器只能包含一个 Spool 工作进程。

使用事务码 SM50 查看系统各种类型的工作进程总数,以及当前可用的数量。

工作进程的类型决定了 ABAP 应用服务器提供的服务。一个应用服务器可以同时具备多种功能。举例来说,它既可以作为对话服务器,也可以作为锁定服务器,前提是它同时拥有多个对话工作进程和一个锁定工作进程。

更多阅读

码农干货铺
永远要保持一种无论何时何地都逼着自己更努力更优秀来享受更好生活的学习状态
 最新文章