1. 程式人生 > >打通S/4 HANA之dump的任督二脈

打通S/4 HANA之dump的任督二脈

更多內容關注公眾號:SAP Technical

點選進入:打通S/4 HANA之dump的任督二脈

 

 

迎秋風,做一場紅塵夢;望寒月,化輕煙築家國。顧盼間乾坤倒轉,一霎時滄海桑田,俠肝義膽儒生夢,鐵骨柔情武俠情,兒女情長今猶在,江湖俠骨已無多。再見,江湖。

 

武俠中最常提到的就是練就一身武功之前要打通任督二脈。任督二脈之所以重要是因為:任脈主血,為陰脈之海;督脈主氣,為陽脈之海。也就是說,任督兩脈分別對十二經脈中的手足六陰經與六陽經脈起著主導作用,任督二脈氣機充盈的話,可以灌溉十二經脈。大家可以把任督二脈想象長江和黃河,十二經脈就是連線著長江黃河的十二條支流。長江和黃河裡面的水量是否豐沛,直接決定著他們的支流是否通暢。故曰:任督通則百脈皆通。所以要練就一身絕世武功,首先要打通任督二脈。而在專案上,特別是SAP S/4 HANA專案,要想順利實施完成,關鍵就要解決一些阻礙專案進行的問題,清楚路線上的障礙,打通任督二脈,完成專案上線。所以我們今天依舊討論技術。

 

寫在前面

在之前我寫了不少關於SAP S/4 HANA出現問題的文章,可助你打通任督二脈,比如你可能會遇到這樣的:《S/4 HANA ML error分析》、《S/4 HANA的移動平均價》等是關於SAP S/4 HANA問題分析的,可以直接點選連結檢視。還有幾篇關於ECC和S4之間變化的分析文章,比如:《進一步瞭解S/4 HANA系統》、《S/4 HANA系統表對比Ⅰ》、《S/4 HANA系統表對比Ⅱ》等文章是闡述SAP S/4 HANA系統中資料結構等內容的變化,(注:最後一篇系統表對比裡的招聘資訊已經失效),我這裡就不把每一篇新增到本文的連結中了。因為今天的主題依然是SAP S/4 HANA問題分析,所以把上面的文章連結放在了前面,如果你對其他更多技巧性的文章也感興趣,可以翻閱歷史文章閱讀。

 

在SAP S/4 HANA系統遷移或者實施的過程中,顧問會遇到很多問題,而且會有一些類似的問題出現,比如我們今天要分析的一個問題,在很多配置或者標準程式中會出現SYSTEM_ABAP_ACCESS_DENIED這個錯誤。比如你在執行程式、函式、標準事務程式碼的時候就會出現,因為有很多ECC系統裡的功能將來是要被棄用的。下面我們重點分析一下這個問題。

 

錯誤重現

首先看一下這個dump錯誤出現的截圖,如下圖所示:

錯誤描述為:Access to development object prevented by system configuration。有很多種情況出現上述的這個問題,比如我使用系統的/SCWM/EGR、MMSC、MCGD、MSK4、VMG1等等,甚至是程式或者標準函式也會出現錯誤,很多時候都會碰到這個問題。下面我們來解決這個dump的問題。我們這裡說的前提條件都是在SAP S/4 HANA系統上。

 

原因&建議

在一些以前釋出的文章中我也提到過,在S/4 HANA系統中,有一些功能將不再可用,SAP在每個版本中逐漸淡化或者啟用一些功能,可能在以後更新的版本中就不再支援一些ECC原有的功能了。所以出現了prevented,你可以理解為不再相容。

 

考慮到一些客戶是實施的遷移或升級,而不是新實施S/4 HANA,因此SAP給出了一系列的向下相容措施,以保證遷移或升級可以順利進行,所以我們會看到一些功能臨時被禁用或者給出其替代方案,在這些暫時不能使用的功能中,SAP會給出暫時啟用類似原來系統中的功能,如果顧問在實施過程中,出現不確定是否可以暫時啟用的時候,可以傳送message給SAP的development support,確保沒有問題之後再使用。

 

問題解決

針對上面的這個問題,很多標準程式都會出現,所以要打通任督二脈,任督通則百脈皆通。下面就給出解決這個問題的方案。

 

1、我們需要一個具有S_ADMI_FCD許可權的系統使用者(後面會給出解釋)。看一下這個authorization object。

 

2、執行程式:ABLM_MODIFY_ITEMS,沒錯,這是一個可執行程式。如下圖所示:

 

3、同樣的,我還是先看看這個程式做了些什麼事情,如下圖所示:

從上述程式內容中可以看到,為什麼我說在第一步驟中需要新增S_ADMI_FCD許可權的系統使用者了,please extend your authorization by S_ADMI_FCD,明確說明了要加這個許可權。還有就是各位可以到系統裡看一下ablm_blacklist這是view。

 

4、執行程式後,填入引數,如下圖所示:

我這裡把引數解釋一下。點開Type的F4,可以看到有幾種引數可供選擇(TRAN,FUNC,PROG,METH,FORM),然後分析一下這幾個引數構成error的內容會是怎麼樣的。

 

對於TRAN和PROG型別,你需要在name中輸入之前出現dump的事務程式碼名稱,或者會出現類似這樣的error:error:Type: "P" Object   : "xxxxx" Procedure : " " Class   : " "."。

對於FUNC和METH型別,同樣會看到和上面差不多的error內容,這裡就需要把Procedure填入到name中了。

 

上面的這幾種型別可以歸納為:

Transactions(TRAN)--> Type 'T'

Function Modules(FUNC)--> Type 'C'

Reports (PROG)--> Type 'P'

Class Methods (METH)--> Type 'M'

Form Routines (FORM)--> Type 'F'

這樣看就比較清晰了,按照我上面列出的這些type,就可以很容易知道怎麼選擇引數了。