不少 ABAP 初學者經過各類社交平臺向我提出這個問題:數據庫
ABAP初學者如何系統地學習ABAP編程?編程
因此我專門寫了一篇同名的文章來回答。服務器
文章裏提到,個人 ABAP 學習之路,其實並無閱讀過中文的 ABAP 書籍,而是逐一地把 SAP 標準教材裏和 ABAP 相關的那些電子版的 PDF 書籍吃透:函數
而對於 ABAP 初學者來講,最重要的就是 BC400,BC401 和 BC402 三本。工具
從本文開始,咱們踏上 ABAP 標準教材,BC400 學習之路。學習
本書共有 541頁,分爲總共 9 個單元來組織。本文介紹第二單元內容:ABAP 開發工具介紹開發工具
顧名思義,ABAP 倉庫存放了 ABAP 服務器上全部的程序,函數,數據庫表定義等開發對象。ABAP 倉庫裏包含的內容,以下圖所示,是 Cross-Client 的。如何理解這個 Cross-Client 概念呢?
spa
當咱們登陸 SAP GUI 時,選中一個 ABAP 系統後,下一步須要選擇登陸該系統的哪個 Client. Client 有的時候也稱爲 Tenant,中文翻譯成租戶。咱們一次只能登陸某個 ABAP 系統的某一個 client..net
以下圖所示,這個名爲 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的原創文章,盡在:"汪子熙":