1、1 ALE/IDOC 介面技術 目錄 第一章 ALE IDOC 簡介 2 第一節 簡介 . 2 第二節 操作 . 3 change point01 3 change point02 4 Inbound Function 5 Filter COMMIT WORK. CALL FUNCTION DEQUEUE_ALL. change point02 Change point 的第二種方法就是 SMD,通過一系列的配置和 Job,你就可以做到,讓不同的 Message type 自動分發。這裏所謂的自動分發,就是當一個系統中的主數據發生修改,創建,刪除時,其他相關聯的系統也會自動更新。我這邊主要用的
2、就是這個技術。 下面來具體講一下: 有幾張表大家需要熟悉: BDCP : change point BDCPS: Change pointer: Status BDCP2: Aggregated Change Pointers (BDCP, BDCPS) T-code:BD52 change document item for message type Table : TBD62. T-code:BD61 Activate change pointers-generally0 M. m7 A3 G, J 0 d T-code:BD50 Activate change pointers for
3、message type Table : TBDA2 T-code:BD60 Additional Data for Message Type (這裏要配 Function,所以之前需要定義好相關的 Function) Table :TBDME 關於 BD60 中的 Function,標準的是 MASTERIDOC_CREATE_SMD_*, *是 Message type; 同樣這個 Function 是用以執行 change point 和生成 IDoc 的 其中要注意的幾點: 1.read all not processed change pointer for the give mes
4、sagetype CALL FUNCTION CHANGE_POINTERS_READ 2.MSGFN 的幾種狀態: 009(新建主數據 ), 004(修改過的數據 ), 003(刪除的數據 ), 018(沒有改動,但是附屬於它的 segment 需要分發 ) 3. CALL FUNCTION MASTERIDOC_CREATE_MATMAS 上面的 Function 中 CALL FUNCTION MASTER_IDOC_DISTRIBUTE 就是把 IDoc 傳到 ALE,進行分發。 4. write staus of all processed pointers CALL FUNCTIO
5、N CHANGE_POINTERS_STATUS_WRITE 5 T-code :BD64 change distribution model,把 message type T-code :BD21 它對應的是程式 RBDMIDOC,它會根據 BD60 中的配置,找到相應的Function 進行分發。在實際應用中,會設置 batch job,使這一切都成爲自動化。 Inbound Function ALE/IDoc 在 Outbound 的時候,需要有程式來生成 IDoc,在 Inbound 的時候需要有程式來解析 IDoc,從而在 R/3 中生成主數據。 4 R) Q0 c3 9 由於 Ou
6、tbound 有: Message Control, Change Point, Stand-Alone 三種方式,所以就衍生出三種不同 Outbound 程式。但是概念上,總體是一緻的,隻是實現是一些參數和功能不一樣。相比而言, Inbound 就比較單一,就隻有一種方式,而且格式固定。 下面就放一個 Inbound Function 的例子,參數的話和標準的都一樣的。 6 7 Filter & Conversion SAP 爲了 ALE/IDoc 更具靈活性,提供了 Filter 和 Conversion 功能。 Filter 是針對Message type 的,而 Conversion
7、則是針對 Sender 和 Receiver 的。 Filter 的一般定義流程爲: T-code: BD95-BD59-BD64, Filter 是針對 Outbound 使用的,可以時一些不符合 Filter 的數據過濾掉,不生成 IDoc,也不發送。 還有一種 Filter 是叫 Segment Filter, T-code: BD56,在裏面定義的 Segment 將會被過濾掉,但是要注意的是,對於一些強制欄位無效,同時要過濾父節點時,子節點也要過濾。 Conversion 可以在 Inbound 和 Outbound 中執行的動作,下圖是它的一些事務: 8 ( 依次用 Convert
8、ing Data Between Sender and Receiver 中的 transaction 進行Coversion 的定義和分配。 Filter 和 Conversion 在實際應用中還是用得比較多的。 比如協力廠商系統中的 Account number 和 SAP 中不一樣,那麽 Outbound 的時候,就需要做一個相關的 Mapping,轉換一下,反之亦然。 發送給指定 Partner 時, Filter 則可以過濾掉很多無關的 IDoc,提高系統的效率,減少負載。總的來說, Filter 和 Conversion 給整個 Outbound 和 Inbound 流程帶來靈活性
9、。 注: Filter 也可以在 BAPI 中使用,這裏不再展開。 IDoc Extension: SAP 已經提供很多標準的 IDoc type、 Message type 及相關的程式,可以通過配置就可以完成一般的分發和接受。 但是,由於客戶的定制化,很多標準表做過了增強,同時也有一些新增的主數據需要傳輸,所以就需要對現有的一些 IDoc 及相關程式做增強。我們假設標準的主數據已經做過增強(比如 MATMAS, DEBMAS 等),下面講一下增強的一般流程。 1.WE31,建立將要 APPEND 到標準 IDoc type 的 segment 2.WE30,建立 IDoc Extensio
10、n,就是在 Development object 中選擇 Extension。 Link 到你需要的標準 IDoc type。選擇相應的節點,將剛才建立的 segment 加入。 3.release segment 和 IDoc extension 4.WE82 進行配置 5.找到相應的出口(可以參照之前找出口的一些方法,用 Se84 也行,我個人比較喜歡備一份手冊在身邊,隨用隨查) 6.然後就是用 SMOD 做相應的增強: 例子 MGV00001: XIT_SAPLMV01_002(IDoc Create), EXIT_SAPLMV02_002(IDoc Post) 7.其他的步驟和之前一般
11、步驟一緻。同時要注意, Append 的在標準表中的數據,如果要實現 change point 功能,那麽需要在它的 Data element 中, Further Characteristics label中勾選 change document% g. 9 Serialization Serialization 在 ALE/IDoc 中的一個應用。有一些標準的 Serialization Groups,實際定制的不多,這裏隻是作爲一個知識儲備講一下。 何爲 Serizalization?就是一系列的 Message type 按一定序列發送接受,可以理解爲打包發送。這與一般的單個的 Mess
12、age type 不同, SAP 有它特定的一些設置,下面就讓我們來看看這些設置。 從圖中,我們可以看到, Serialization for Sending and Receiving Data 有兩種方式, Serialization using message types 和 Serialization using business objects。由於後者會牽涉到 BAPI-ALE 介面的一些知識,我們隻對前者做一些瞭解。 1.BD44 Define Serialization Groups 2.BD64 在你要用的 Model View 中必須加入 Message type: SER
13、DAT,並生成 partner profile. 3.WE20 在 Outbound 端, Output Model 必須設置爲 Transfer IDoc Immed. 4.在 Inbound 端 , Define Inbound Processing 5.Inbound 的 partner profile 中, Processing by Function Module 中,除 SERDAT 外,其他 Message type 都需設置成 Trigger by background program。 6.相關的幾個程式: RBDSER01(創建), RBDSER02(分發), RBDSER
14、03(檢查接受狀態),RBDSER04(直接接收) 10 Others 對 ALE/IDoc 進行了一個粗略的總結,而實際上 ALE/IDoc 還有很多應用,比如與 BAPI的介面(實際上就用 BAPI 把 ALE/IDoc 的內容封裝起來),這樣就方便做一些外部調用等動作了,與其他 SAP 系統的介面( BI、 PI 等),與協力廠商系統的交互( EDI)等一系列的應用。總的來說,這項技術在 SAP 中很有用。 還是要重提一句話,這種實踐性很強的技術,一定要多練習,光看書是沒用的。所以我在一些文章中也就點到爲止,要大家自己去體會和應用的。我寫的一些也就是平時用的比較多的 ALE/IDoc 中
15、的內容,像 ALE-BAPI 我沒有寫,是因爲有用但不多,我自己也是做個知識儲備。關於與其 他系統諸如( BI、 PI)的介面,有機會就在日後寫寫。 如果要從事這方面工作的化,首先要瞭解 ALE/IDoc 的機制,如何實現的?有哪些關鍵的 function 和流程?而後可能要瞭解一些標準化的東西,比如 XML, EDI, RosettaNet 等,這對以後做 PI 及介面也有利。同時,自己身邊一定要常備一些有用的參考資料,這樣可以大大減少你的工作量。像 ALE/IDoc 這種內容比較多的技術,就要多寫幾個文檔,多做幾個模闆。時間一長,一些步驟記不清是很正常的,這時候那些文檔和模闆就派上用場了。但是學習的時候,一些概念一定要清楚,要知道個來龍去脈,這種東西就像九陽神功,隻會越練越牛比。外功忘了,學起來快,內功沒練好,外功再好也是繡花枕頭 最近,發現 SAP 已經有 WebService 了,其架構已經開始轉向了 SOA。當國內有些搞學術的人還在對 SOA 爭論不休的時候,人家已經實現了。 SAP 從技術上來講確實是領先於業內的。這對我們這些 SAP 從業人員意味著什麽?源源不斷的新知識向我們湧來,要不斷地更新現有的知識才能跟得上變化。 我的理念還是沒有變,先形而上的道,後形而下的術。把握整體,逐個擊破,抓住重點,實用第一。