关于abap:ABAP-标准培训教程-BC400-学习教程之二Crossclient-和-Clientspecific-的区别

47次阅读

共计 1568 个字符,预计需要花费 4 分钟才能阅读完成。

很多 ABAP 初学者通过各种社交平台向我提出这个问题:

ABAP 初学者如何系统地学习 ABAP 编程?

所以我专门写了一篇同名的文章来答复。

文章里提到,我的 ABAP 学习之路,其实并没有浏览过中文的 ABAP 书籍,而是逐个地把 SAP 规范教材里和 ABAP 相干的那些电子版的 PDF 书籍吃透:

而对于 ABAP 初学者来说,最重要的就是 BC400,BC401 和 BC402 三本。

从本文开始,咱们踏上 ABAP 规范教材,BC400 学习之路。

本书共有 541 页,分为总共 9 个单元来组织。本文介绍第二单元内容:ABAP 开发工具介绍

ABAP Repository(仓库)的概念

顾名思义,ABAP 仓库寄存了 ABAP 服务器上所有的程序,函数,数据库表定义等开发对象。ABAP 仓库里蕴含的内容,如下图所示,是 Cross-Client 的。如何了解这个 Cross-Client 概念呢?

当咱们登录 SAP GUI 时,选中一个 ABAP 零碎后,下一步须要抉择登录该零碎的哪一个 Client. Client 有的时候也称为 Tenant,中文翻译成租户。咱们一次只能登录某个 ABAP 零碎的某一个 client.

如下图所示,这个名为 CRM Infinity Development System 的 ABAP 零碎,有 001,002,100,102,110 等多个 Client,每个 Client 都有不同的 用处,比方 001 用于 CRM 715 规范开发,002 用于 CRM_PLUS 规范开发,以此类推。

大家能够把 ABAP 服务器设想成大楼,而把 Client 设想成大楼里一层层楼。

所谓 Cross Client,意思是指该 ABAP 对象,在一台 ABAP 服务器所有 Client 都可见,并且登录每个 Client,看到的该对象内容都完全一致。

看个具体例子。

咱们登录 SAP GUI,事物码 SE80 关上 ABAP Repository:

下图显示的是用户名 WANGJER 在这台 ABAP 服务器上创立的所有本地 ABAP 对象。不同类型的 ABAP 对象,寄存在不同的文件夹里。

因为 ABAP Repository 里的内容是 Cross Client 的,以上面这个名为 CL_JERRY_TOOL 的 ABAP 类为例, 咱们登录该 ABAP 零碎的任何 Client, 关上这个 ABAP 类, 看到的源代码都完全相同。

再回到这张图最上层左边的 Client-specific (翻译成 Client 相干)类型,即 Application Data 和 Customizing Data.

所谓 Application Data,即利用数据。比方销售订单,服务订单,某公司生产的产品,卖给客户的名称等等。所有这些利用数据都存储在 ABAP 数据库表里,并且这些数据库表都有 Client 字段作为主键。

比方我登录 ABAP 零碎 的 001 Client,那么我查看所有的数据库表,显然都只能看到主键为 001 对应的记录。这也是一个天经地义的行为。在某些基于 ABAP 的 SAP 云产品,比方 SAP Cloud for Customer,多个客户可能共享同一台服务器,彼此寄存的 Application Data 也共享同一张表,通过 Client ID 作为主键来辨别。试想这种利用数据的 Client-Specific 个性,如果更改成 Cross Client,岂不是要乱套了,因为那样一来,每个客户能够任意浏览其它客户存在同一张数据库表里的数据,数据隔离 (tenant isolation) 就无从谈起。

除了 Application Data 之外,Customizing Data 也是 Client Specific 即 Client 相干的。Customizing Data 也和 ABAP 利用相干,但同 Application Data 不同,Customing Data 寄存的是影响 ABAP 利用执行流的数据,而非销售订单,服务订单,客户订单这种业务数据。

更多 Jerry 的原创文章,尽在:” 汪子熙 ”:

正文完
 0