2010-11-12 120 views
3


我們目前有一個SAP系統,其中使用了兩個不同的客戶端002和004。我的任務是在ABAP中編寫一個程序來創建一個關於用戶分配的報告。這份報告在兩個客戶上的表現基本相同。但我必須選擇不同的表格,並在兩個客戶端上選擇不同數量的表格。取決於哪個客戶端,用戶呼叫報告已登錄。
問題:有沒有辦法在不同的客戶端之間區分ABAP代碼?像:區分不同SAP客戶端(Mandanten)之間的ABAP

IF client = 002. 
*dothis. 
ELSE. 
*dothatdifferentthing. 
ENDIF. 

在此先感謝。

回答

9

當前客戶端可在域系統

例如:

IF sy-mandt = '002'. 
*dothis. 
ELSE. 
*dothatdifferentthing. 
ENDIF. 
+0

謝謝。有時候我很容易。似乎我用錯誤的關鍵字搜索。或者是一般的。 – omnibrain 2010-11-12 14:29:25

+0

99%的SAP表在其關鍵字中包含字段mandt或客戶端(不包括它的客戶端不依賴於客戶端),因此您可以使代碼客戶端依賴(避免重複代碼),並添加'client = sy-mandt'或者對每個數據庫訪問都使用'mandt = sy-mandt'和'CLIENT SPECIFIED'(讀取,更新,刪除...)請參閱FROM語句上的sap幫助 – franblay 2011-11-25 10:50:37

+1

系統自動將約束應用於SQL查詢,因此默認情況下獲取'mandt = sy-mandt'的數據 – hotzen 2013-04-12 22:18:09

5

另外一個建議 - 嘗試這樣做的面向對象的方式,餡所有普通代碼的抽象超,並創建兩個子類,其只攜帶依賴於客戶端的代碼。然後,基於SY-MANDT,實例化任一個子類。這可能有助於減少重複代碼...