- SAP基金管理模塊全面解析
- 張朝良編著
- 3539字
- 2021-08-20 11:01:37
4.1 派生策略推導規則步驟類型
派生策略推導規則的使用是通過一步建一個規則,由一個或多個步驟一起來實現推導。前面步驟的結果可以提供給后面步驟使用,比如前一步結果可以作為后一步的條件、推導依據等。SAP派生策略推導規則的步驟主要提供了以下類型:初始化、分配、派生規則、表格查詢、功能模塊、增強(注:不是所有的推導規則都提供這么多的步驟類型)。
4.1.1 初始化
初始化:將推導過程中的某一字段數據(可以是源數據,也可以是輔助數據,還可以是目標數據)進行初始清空。往往將不需要的目標數據去掉,或是將規則執行條件、推導依據進行初始化,為后面步驟賦有效值做準備。定義如下:
選項卡“條件”:本步驟執行的條件。滿足條件,本步驟方可執行,如圖4.1.1-1所示。
名稱:指定條件判斷比較的字段,用戶根據實際情況來決定用哪個字段值來作為判斷條件。
①明細:單擊圖4.1.1-1中按鈕,查看如圖4.1.1-2所示。
整個字段內容:按指定字段(名稱列)的整個字段內容進行比較。
部分字段內容:按指字字段的部分內容進行比較,需要定義部分內容的開始位置和長度。起始字符位置(從0開始):指定部分內容的開始位置。字符數:指定內容的長度。功能相當于SubString函數。
在圖4.1.1-2中定義完成后,單擊按鈕返回。如果定義了部分字段內容,返回到前一界面時,會在“描述”列中標明字段的位置如:“+1(1)公司代碼”,前面的“+1(1)”代表的就是部分內容的開始位置和長度。比如模糊匹配值的判斷就是字段,通過判斷前面固定位長的值等于固定值即可。
②操作:提供比較判斷的符號。
③值:同字段進行判斷比較的值。
④鏈接:多個行的條件判斷的邏輯運算,兩種:AND和OR。
注:其他類型的條件設定與這里一樣,后面不再重復。
選項卡“定義”:
①字段:指定要清空并初始化的字段。
②單擊按鈕打開明細定義,如圖4.1.1-3所示。
圖4.1.1-1
圖4.1.1-2
圖4.1.1-3
在圖4.1.1-4中指定要清除的內容是整個字段,還是部分字段內容。如果是部分字段,在“起始字符位置(從0開始)”指定開始位置,在“字符數”指定長度。
圖4.1.1-4
4.1.2 分配
分配:推導過程中給某一字段賦值,如同A=B一樣賦值。字段可以是源數據,也可以是輔助數據,還可以是目標數據。設置如圖4.1.2-1所示。
圖4.1.2-1
①源字段:指定目標字段的值來自于哪一個字段,例如字段:基金中心=成本中心。可以單擊來定義明細,如圖4.1.2-2所示。
圖4.1.2-2
(1)允許初始值:勾選時,代表此源字段的值為空時,運行分配的賦值,反之不運行。
(2)明細:
整個字段內容:代表將整個字段的內容賦值給目標字段。
部分字段內容:將字段的一部分內容賦值給目標字段。
②常數:將目標字段指定為一個具體的常數,例如:基金中心=280001。
③目標字段:指定要被賦值的字段。
④單擊:可以指定被賦值的目標字段的明細設定,如圖4.1.2-3所示。
圖4.1.2-3
注:在賦值操作的明細設定中,必須根據自己使用的情況正確設定,否則可能會產生不正確的結果。例如在操作FI記賬時,根據成本中心和基金中心在界面錄入數據來執行派生情況,見表4.1.2-1。
表4.1.2-1
一個簡單的A=B一樣的賦值,搞出這么多名堂,可見實施PSM-FM模塊確實挺復雜的。一個非常小且不容易讓人注意的地方,一不小心會造成錯誤的結果,但顧問自己可能還不知道原因。
4.1.3 表格查詢
表格查詢,相當于使用一個SQL語句查詢一個SAP中存在的表格,然后把表格查詢結果中的其他字段數據賦值給推導過程中的字段,同時根據其執行情況,提供一個“屬性”來選擇系統響應。需要注意的是,在使用表格查詢時,限制查詢傳入的條件為表格的KEY字段,不能隨意使用表格字段作為條件來進行查詢,這限制了表格查詢的使用。前面講到的取基金中心的公司代碼,當時我們用了函數來取,其實在這里也可以用表格查詢來取(主數據表FMFCTR),如圖4.1.3-1所示。
圖4.1.3-1
在選創建表格查詢時,會要求錄入要查詢的表格(包含數據庫表格、視圖),按<Enter>鍵進入下一步。
選項卡“定義”的配置如圖4.1.3-2所示。
圖4.1.3-2
①表查詢的源字段:指要查詢表格的KEY字段值來源,來源可以為推導過程中的各個字段,也可定義為常數,單擊“明細”列所在的按鈕,可以進行明細的設置,如圖4.1.3-3所示。
②表字段到目標字段的分配:將查詢結果表格中的字段賦值給推導過程中的字段。這里的例子是取公司代碼放在輔助字段USERTEMP1,把基金中心上的基金放在目標字段FUND中。單擊明細列所在按鈕,可以進行明細設置,其類同前面講的步驟類型“分配”圖4.1.2-2中的賦值明細設定。
圖4.1.3-3
選項卡“屬性”的配置如圖4.1.3-4所示。
圖4.1.3-4
①滿足本步驟執行條件,執行后,沒有找到表格中相應的數據,系統提示報錯。
②不滿足本步驟執行條件,報錯。
③滿足本步驟執行條件,執行后,找到表格中相應的數據,結束派生策略規則的執行,后面的步驟不再執行。
④滿足本步驟執行條件,執行后,不管執行的結果如何就結束派生策略規則的執行,后面的步驟不再執行。
⑤不滿足本步驟執行條件就結束派生策略規則的執行,后面的步驟不再執行。
注:通常只有在有明確要求下才會選擇系統的響應,使用時一定要小心,尤其是后面三個選項,對派生策略規則的步驟執行有很大影響。
4.1.4 派生規則
派生規則簡單來講就是通過枚舉條件的值來推導出目標字段的值。比如已知一個變量作為條件,枚舉變量值為V1、V2……,再枚舉出目標變量對等值為T1、T2……,非常像程序開發語言中的CAS EWHEN語句。擴大一點來說,已知變量和目標變量可以是單個變量,也可以是變量矩陣(多個變量形成的值矩陣)。同樣,在系統中派生規則也提供一個“屬性”選項卡用來選擇系統響應。例如,通過WBS派生出基金計劃程序(注:在定義此步前,需調用函數FMDT_CONVERSION_WBS_INT_TO_EXT將WBS內部轉換為外部編碼,此例是將WBS內碼轉為外碼放在字段ZZ_EX_WBS中),如圖4.1.4-1。
選項卡“定義”如圖4.1.4-1所示。
圖4.1.4-1
①源字段:需要枚舉條件字段,可以是多個字段。
②目標字段:需要枚舉目標字段,可以是多個字段。
選項卡“屬性”如圖4.1.4-2所示。
圖4.1.4-2
①~⑤與步驟類型“表格查詢”中的“屬性”圖4.1.3-4中①~⑤的意義是一樣的,這里不再重述。
⑥允許有效期條目維護:勾選后,代表本步驟的派生規則在維護錄入枚舉值時,可以設定其有效的開始日期。
規則值:定義完成后,可以單擊按鈕錄入枚舉規則條目值,如圖4.1.4-3所示。
圖4.1.4-3
①單擊此按鈕,可把源字段按照起始范圍方式錄入。
②錄入源字段的值。
③錄入目標字段的值。
最終結果在源記賬數據中,當WBS為X-IDES-STD-46A~X-IDES-STD-46B時,基金計劃程序派生出來為2800-2017-01。
通過例子,很自然地想到由會計科目推導出承諾項目、由成本中心推導出基金中心、由CO中的廣義成本對象推導出基金中心等,并進一步思考通過會計科目、成本中心、資產編號、廣義的成本對象等其主數據上的相關字段值來推導出基金中心、承諾項目、基金、基金計劃程序等賬戶分配要素。
4.1.5 增強
增強,是派生規則步驟類型中的一種特殊步驟,它是在推導過程中加入一個增強代碼點,用戶可在此加入自己的邏輯代碼,來實現用戶邏輯推導后的目標數據,往往在現有派生步驟類型不能正確推導出或推導過程太復雜時才會使用到。注意:不是所有的派生策略規則推導都提供增強步驟類型。
選項卡“定義”如圖4.1.5-1所示。
圖4.1.5-1
①源字段:定義要傳到增強代碼中的源字段。定義后該字段的值會傳到增強程序中,沒有定義的字段,其值不會傳入到增強程序中。
②目標字段:定義增強程序要輸出的字段。定義該字段后,在增強程序通過邏輯計算后,可以將該字段的值輸出返回到推導步驟中的目標字段里,沒有定義的字段,其值不會返回到推導步驟中。
選項卡“屬性”如圖4.1.5-2所示。
圖4.1.5-2
①~⑤與步驟類型“表格查詢”中的“屬性”圖4.1.3-4中①~⑤的意義是一樣的,這里不再重述。
⑥用戶定義的步驟標識:可以為增強步驟指定一個用戶標識,此標識值用在增強程序中,通過此標識作為條件代表此步驟,然后可以寫出相應的邏輯代碼,可參見下面的代碼例子。
代碼:單擊圖4.1.5-1中的按鈕,可進行增強代碼的編寫。需要注意,在編寫代碼前,需要把增強步驟類型使用的增強出口組件SAPLFMDT激活(事務碼CMOD),激活后可以看到該組件是狀態綠燈。如果為紅燈,則表示增強組件沒有激活。激活出口組件后,在其出口函數EXIT_SAPLFMDT_001的包含文件ZXFMDTU01中寫入相應代碼,如圖4.1.5-3所示。
圖4.1.5-3
4.1.6 功能模塊
在推導步驟過程中調用一個功能函數,將源數據字段值傳入功能函數的參數值,再把功能函數執行后的結果數據值傳出到目標字段。
在選擇新建步驟類型為功能函數后,會彈出一個對話框要求選擇使用的函數,如圖4.1.6-1所示。
圖4.1.6-1
圖4.1.6-1中,單擊按鈕或<Enter>鍵進入步驟的詳細定義。
選項卡“定義”如圖4.1.6-2所示。
圖4.1.6-2
①源字段:定義功能函數傳入參數的字段值來源字段。
②目標字段:定義功能函數傳出參數字段輸出到目標字段。
備注:SAP系統在派生策略里預提供了大量可能在推導過程中用到的函數,這里列一部分供參考,見表4.1.6-1。
表4.1.6-1
(續)
經過研究,SAP系統可以支持用戶自己編寫的功能函數,有興趣的可以自行深入研究一下,這里不再深入講解,如圖4.1.6-3所示。
圖4.1.6-3
既然SAP系統支持用戶自定義的函數調用,那么有沒有增強類型的步驟已經不重要了,完全可以用自定義的函數來替代增強類型步驟。