• 沒有找到結果。

第三章 系統功能與架構

3.4 SAP .NET C ONNECTOR

SAP .NET Connector 2.0 是位於 Visual Studio .NET 內部的一套設計環境,用來做為 Microsoft .NET 平台 和 SAP 系統之間的溝通介面。架構如圖 3-8 所示,包括設計環境 和執行環境,主要功能有:

‹ 支援遠端功能呼叫 (Remote Function Call ; RFC ) 及 Web Service。

‹ 可開發各種應用程式,例如:Web 表單、Windows 表單、或 Console 端的應用程式。

‹ 使用 Visual Studio .NET 所提供的共通程式語言環境 ( Common Language Runtime;

圖 3-12 SAP .NET Connector Architecture CLR ) 例如: Visual Basic .NET、C#、or C++ 等來撰寫程式。

設計環境:

¾ isual Studio.NET 2003 之中,與 SAP Application Server 互動。

¾

料來源:SAP .NET Connector 2.0 Online Help

‹

結合在 V

¾ 讓 Visual Studio.NET 可讀取 SAP 商業物件庫(BOR)或資料辭典(DDIC)中 BAPI 及遠端功能模組(RFM),以產生描述 SAP 商業物件的 VB 或 C#程式碼 讓 Visual Studio.NET 可以與 SAP Method 整合製作出 Proxy,使得 .NET 應用 程式與 .NET proxy class 產生互動。

¾ 提供圖形化介面容易製訂解決方案,並容易瞭解 SAP 系統與 Microsoft .NET 之間物件的運作方式。

z Destination component:建立與 SAP之間的 RFC 連線字串 或 SOAP 連線字 串(URL), 對應到 web.config or app.config file 的個別元素

z SAP Table component:含有遠端功能模組 RFM 的複雜式輸出入參數 (例如:

物料主檔表格),它結合了大部分 .NET 的資料控制。

z SAP proxies wizard:根據 SAP DDIC或Web Service Description Language (WSDL)文件產生 SAP proxies 並載入 RFM 或 BAPI 。

SAP .NET Connector 在 Visual Studio .NET 中所提供的設計開發工具,如圖 3-13 所示,其中幾項重要工具包括有:

z SAP Server Explore:讀取SAP R/3的BOR,提供BAPI與RFM的所有參數內容。

z SAP Toolbox:SAP .NET Connector 所有工具箱的組合。

z Logon Wizard:定義簽入SAP系統的參數,如Server目的位址,Client no,語言。

z SAP Proxy Class:將BAPI或RFM製作成的Proxy 並儲存成sapwsdl文件。

z Databinding:將SAP Tables的資料繫結至 .NET DataGrid等資料控制器中。

圖 3-13 Visual Studio 中 SAP .NET Connector 設計開發工具

‹ 執行環境:

¾ .NET 客戶端應用程式透過 proxy class 來使用.NET Connector runtime library(例 如:SAP.Connector.dll 和 SAP.Connector.Rfc.dll)。

¾ proxy 負責以二進位 SAP RFC 協定或 SOAP 來存取 SAP Application Server,並 安排 SAP 和 .NET 之間的資料轉換。

¾ 將 SAP 例外狀況(exception)回傳給 .NET 的例外狀況、提供 RFC 追蹤、並與 ABAP/4 除錯程式整合。

¾ .NET 客戶端應用程式使用遠端功能模組(RFM) 來執行 SAP 內部功能。

圖 3-14 SAP .NET Connector Runtime Architecture

資料來源:SAP .NET Connector: Architecture and Functionality, Microsoft

z SAP 客戶端應用程式︰

ASP .NET web application:利用網頁存取 SAP 系統的資訊(如:請購單簽核狀況) Windows form application:提供互動式的 GUI 介面程式開發 (如:輸入採購單) Console application:存取 SAP 系統訊息並做為 NT 批次處理的一部份。

z 共通程式語言環境 ( Common Language Runtime; CLR ):

程式設計師可以選擇習慣的程式語言來開發 (如: Visual Basic .NET、C++、C# ) 以處理 SAP proxies內的資料,SAP proxies可以自動更新及制定。

z Web 程式執行時:

SAP R/3 4.6D 以下的版本是利用 RFC 協定 (librfc32.dll) ,SAP 6.20 以上的本 才能選擇使用 RFC 或 SOAP。SOAP 是來自於 Microsoft .NET framework SoapHttpClientProtocol class.

以下將針對 SAP .NET Connector 的幾個組成部分做詳細的說明。

‹ SAP Proxy Concept (運作方式如圖 3-14 所示)

¾ Proxy:

z 描述被 C#或 VB 使用的 SAP BAPIs 或 RFMs,可被任何.NET 應用程式所存取。

z Visual Studio.NET 根據 SAP 資料辭典(DDIC)或商業物件庫(BOR)內的 RFM 或 BAPI 來產生 Proxies,運作邏輯完全存在於 SAP 系統中。

z 可以是客戶端(SAPClient class)或伺服器端(SAPServer class)的形式。

z 客戶端應用程式使用 Proxy 到遠端 SAP 系統上執行功能。

z Proxies 都含有方法(methods)、參數(parameters)、資料型態(data types)以及屬 性(properties)

z 製作 Proxy class 時,可取得 SAP 具體的 meta data,並儲存在產生的 SAP Proxies SAPWSDL(wsdl)文件中。

z 發生問題時,Proxy 的 method 將會丟出例外狀況,支援除錯及檢修功能。

¾ Proxy field:

z 新增 Proxy field 時,必須選擇資料型態並指定到 method 的欄位或參數。

z Proxies 會先自動為每個 BAPI 關鍵欄位建立 Proxy field,例如 CustomerNo 就 是客戶編號關鍵欄位。

z 將 SAP Method 傳回的資料結果繫結在應用程式以及 .NET 的資料控制項 (例 如:利用 textbox 取得參數值),databound 自動更新,降低參數的數量預防超載。

圖 3-15 SAP Proxy Concept

資料來源:SAP .NET Connector 2.0 Online Help

‹ SAP Data Types Concept (如圖 3-16 所示)

¾ Proxy class 也定義了被 Connector 使用到的 .NET 型態和 SAP 資料型態之間屬 性轉換。產生 SAP proxy 時,Connector 檢查 RFM 或 BAPI 並確定資料型態。

¾ SAP 的簡單資料型態被對應到 .NET 資料型態,如表 3-2 所示。

¾ 複雜的資料型態如 SAP Structure 或 Table 是由簡單的資料型態所組成。例如:

Structure 客戶地址是由客戶編號,名字,街道,城市,等等欄位組成;Table 則集合多個 Structure。

¾ 可以將 SAPTables 內所有的資料繫結(databind)到.NET 的控制欄位上。

圖 3-16 SAP Data Types Concept

資料來源:SAP .NET Connector 2.0 Online Help

表 3-2 SAP ABAP Data Type 與.NET CLS Data Type 轉換對照表

ABAP Type .NET CLS

C (String) String

I (integer) Int32

F (Float) Double

D (Date) String

T (Time) String

P (BCD Packed,Qty ,Currency,Decimal) Decimal

N (Numc) String

X (Binary and Raw) Byte [ ]

RFC String String

Xstring String

‹ Data-binding

¾ SAP .NET Connector 2.0 已經把 SAP 物件和.NET 控制器資料結合起來。

¾ Proxy field 可以被定義成任何 .NET 參數,將 Proxy field 指派給 Proxies 時,此 參數會由參數列中去除,連接產生器產生一種超載方法。如果 Proxies 全部參數 都被指派了欄位,則呼叫 BAPI 或 RFM 時程式碼可以不加參數。

z 範例說明:Function Module RFC_CUSTOMER_GET

Function Module 參數串列 參數說明

_CustNo 客戶編號

_CustName 客戶名稱

RFC_CUSTOMER_GET

SAPTable Customer_T 客戶地址表格 VB.NET 原本的程式碼將看起來像這樣︰

SapProxy.Rfc_Customer_Get(kunnr as string, name1 as string byref Customer_T as BRFCKNA1Table)

當新增 Proxy field 給 Proxy 的參數串列後 :

Function Module 參數串列 Proxy field Type

_CustNo CustNo String

_CustName CustName String

RFC_CUSTOMER_GET

SAPTable Customer_T tblCust BRFCKNA1Table VB.NET 程式碼可改為這種超載方法,只不過不必加參數︰

SapProxy.Rfc_Customer_Get()

¾ Proxy field 除了保存欄位預設值外,還可以繫結 Data-binding 到 .NET 資料欄位 如:textbox 或 DataGrid 等,直接控制 BAPI 回傳的參數值。

¾ Windows form 上的欄位會自動執行 Data-binding,但是 Web form 上 Data-binding 必須在程式中明確地重新呼叫,例如︰

Me.DataBind()

‹ SAP Login Form and SAPLoginProvider

¾ SAPLogin form 和 ASP.NET 應用程式利用 SAPLoginProvider Class 為 proxy 建立 一條連接線並做帳號密碼驗証,產生 SAPLogin1.aspx。

¾ 內建 destination 元件,用來儲存簽入時的連接字串,並保證連接訊息到目的地 的正確性。

¾ SAPLogin form 第一次簽入成功之後,才能將網頁重新導向其他網頁(例如,

default.aspx)頁。

呼叫 SAPLogin1.aspx 時,執行下列邏輯︰

z 首先在 session 內查看連接訊息,若連線已經存在 Cookie,則嘗試使用 OpenConnection 的方式開啟 SAP 連接。

z 若是不成功,就通知 ASP .NET 發生例外工作,並積極重新連接。

z 若在 session 狀態上的是實際連接,選擇保留時,Cookie 會將已經加密的完整 連線資訊儲存到硬碟。

z SAP Login form 提供其它連接辨識和 Single-Sign-On 給許多特定帳號的連線。

z SAP Login form 也在 SAP Portal 上支持 Single-Sign-On。讓使用者進入簽入頁 之前,嘗試使用 MySAPSSO2 技術來簽入,簽入成功後,將立即返回之前的 網頁而不必輸入帳號和密碼。

相關文件