SAP BW数据源增强管理
生活随笔
收集整理的這篇文章主要介紹了
SAP BW数据源增强管理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一.數據源增強介紹
我們常會遇到系統標準的數據源,或者我們自建的數據源無法滿足要求的情況,這個時候在數據源中添加幾個相關的字段,可能就能滿足我們的要求,這個時候就要用到數據源的增強。?
數據源增強分為結構增強和功能增強。
?
1)??? 結構增強:對于FM(功能模塊Function Module)創建的數據源不存在結構增強,因為提取結構是由開發人員自定義的,只有當提取結構是系統自動生成時才需要結構增強這個功能。
?
2)??? 功能增強:當我們做了結構增強或者需要修改數據源里某些字段的數據時,可以通過功能增強來完成。
?
?
接下來我們分別介紹這兩種數據源增強方式。
一.結構增強
1.???? 增強提取結構
事務代碼:RSA6進入事務代碼RSA6,選中你需要增強的那個數據源,點擊增強提取結構。
?
?
2.???? 添加字段并激活
?填寫需要增強的字段和類型長度,數量和金額填寫計量單位,點擊 激活。 使用事務代碼:RSA3?
測試提取數據。
?
?
二.功能增強
1.???? 進入相應增強
事務代碼:SMOD進入事務代碼SMOD,填寫增強號“R SAP0001”,選擇組件,點擊顯示。
? 表1 相關增強功能名
| 增強功能名 | 相應描述 |
| EXIT_SAPLRSAP_001 | 事務數據相關增強 |
| EXIT_SAPLRSAP_002 | 主數據屬性增強 |
| EXIT_SAPLRSAP_003 | 主數據文本相關增強, 只能用于BW版本1.2B,2.0A以后被002替換 |
| EXIT_SAPLRSAP_004 | 層次結構增強 |
?
2.???? 編輯程序并激活
?雙擊“ZXRSAU01”創建Include程序。 ?
?
編寫代碼修改或者填充相關字段,點擊 激活。
? ?
?
3.???? 通過BAdI實現
事務代碼: SE19 創建一個BAdI Name: RSU5_SAPI_BADI。 Implementation Name: ZRSU5_SAPI_BADI。 填寫描述,點擊激活。 在Interface選項卡,會看到系統自動創建了一個class: ZCL_IM_RSU5_SAPI_BADI雙擊這個class。 進入Class Interface界面,會看到有兩個method:
DATA_TRANSFORM 用于一般數據的增強(事務數據,主數據和文本),
HIER_TRANSFORM 用于層次數據的增強。 雙擊method,就可以根據method的參數進行編碼了。 為了便于管理,我們為每一個需要增強的數據源創建一個method,然后在方法DATA_TRANSFORM和HIER_TRANSFORM中動態調用。
?
示例代碼:
METHOD IF_EX_RSU5_SAPI_BADI~DATA_TRANSFORM.
DATA: LV_METHOD TYPE SEOCMPNAME.
* check if any data is extracted
CHECK C_T_DATA IS NOT INITIAL.
* get method name for datasource
* add one character as methods can't start with a number
CONCATENATE 'M_' I_DATASOURCE INTO LV_METHOD.
* check whether method exist
SELECT SINGLE CMPNAME
INTO LV_METHOD
FROM SEOCOMPO
WHERE CLSNAME = 'ZCL_IM_RSU5_SAPI_BADI'
AND CMPNAME = LV_METHOD.
CHECK SY-SUBRC EQ 0.
* check method is implemented
CALL METHOD (LV_METHOD)
EXPORTING
????? I_UPDMODE??? = I_UPDMODE
????? I_T_SELECT?? = I_T_SELECT
????? I_T_FIELDS?? = I_T_FIELDS
CHANGING
????? C_T_DATA???? = C_T_DATA
????? C_T_MESSAGES = C_T_MESSAGES.
ENDMETHOD.
建一個Static Method M_SFLIGHT(注意:這里我們以'M_' + 數據源名稱作為 Method的名稱,因為有些系統的數據源以數字開頭,而Method不允許以數字開頭) 點擊 Parameters。 設置參數如下: 保存后,返回Method界面。 點擊Code。 下面就跟SMOD一樣,可以進行編碼。
? ?
示例代碼:
METHOD SFLIGHT.
FIELD-SYMBOLS: <S> TYPE ZOXHHD0148.
DATA: RATE TYPE P DECIMALS 2.
* map the data
LOOP AT C_T_DATA ASSIGNING <S>.
CHECK <S>-SEATSMAX IS NOT INITIAL.
CLEAR RATE.
*計算航班使用率
??? RATE = <S>-SEATSOCC / <S>-SEATSMAX * 100.
IF RATE >= '90.00'.
????? <S>-FLAG = 'X'.?"使用率大于90%,打上標記
ENDIF.
ENDLOOP.
ENDMETHOD.
?
?
比較兩種方式BAdI和出口: 建議使用BAdI的方式, 用戶出口User Exit方式增強RSAP0001只能包含在一個項目中, 而BAdI方式可以為RSU5_SAPI_BADI創建多個Implementation,這樣就可以為每個模塊建一個Implementation,每個數據源建一個method,更加便于數據源增強管理。
補充: 數據源相關事務代碼
?表2 數據源開發常用事務碼
?
| 事務代碼 | 描述 |
| RSA5 | 激活標準數據源 |
| SBIW | 激活LO數據源 |
| RSO2 | 自定義數據源 |
| RSA6 | 數據源結構增強 |
| SMOD | 數據源功能增強 |
| RSA3 | 測試數據源 |
| SE37 | 創建數據源功能塊 |
| SE19 | BAdI編輯器 (Business Add-In Builder) |
總結
以上是生活随笔為你收集整理的SAP BW数据源增强管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP业务测评之库存预留
- 下一篇: 创建SM30表维护时权限组NC是什么用途