SAP 資料表批次來源外掛程式 (SAP Table 外掛程式) 可讓您讀取 SAP 標準和自訂資料表或檢視畫面中的資料。這項工具可使用 Cloud Data Fusion,將大量資料從 SAP 應用程式擷取至 BigQuery 或任何其他支援的目標系統。外掛程式具備下列主要功能:
- 使用 SAP ECC、SAP S4/HANA 或 SAP BW 做為來源系統
- 未使用 SAP CDC (變更資料擷取) 追蹤及擷取資料來源中的新資料和差異資料
- 使用批次擷取模式
- 支援使用 SAP 資料表和 ABAP CDS 檢視畫面做為資料來源
- 透過應用程式層存取 SAP 資料
您可以讀取下列來源的資料:
- 透明表格
- 叢集資料表
- 撞球桌
- ABAP CDS 檢視畫面
- SAP BW ADSO 物件
支援的軟體版本
軟體 | 版本 |
---|---|
SAP S4/HANA | SAP S4/HANA 1909 以上版本 |
SAP ECC | SAP ERP6 NW 7.31 SP16 以上版本 |
SAP JCo | SAP JCo 3.0.20 以上版本 |
Cloud Data Fusion | 6.3 以上版本 |
如要進一步瞭解 SAP on Google Cloud,請參閱「SAP on Google Cloud簡介」。
事前準備
設定 SAP 表格外掛程式使用的下列系統和服務:
- 設定 SAP ERP 系統。這項程序包含下列步驟:
- 安裝 SAP 傳輸檔案。
- 設定必要的 SAP 授權和角色。
- 設定 SAP Java 連接器。
-
- 重要事項:請選擇與 Cloud Data Fusion 版本相容的外掛程式版本。
- 如果您升級 Cloud Data Fusion 執行個體或外掛程式的版本,請評估這些變更對管道功能範圍和效能造成的影響。
建立 Cloud Data Fusion 和 SAP 之間的 RFC 連線。
- 確認 Cloud Data Fusion 執行個體與 SAP 伺服器之間已啟用通訊。
- 針對私人執行個體,請設定虛擬私有雲網路對等互連。
- SAP 系統和 Cloud Data Fusion 執行個體必須位於同一個專案。
設定外掛程式
- 前往 Cloud Data Fusion 網頁介面,然後按一下「Studio」。
- 確認已選取「資料管道 - 批次」 (而非「即時」)。
- 在「Source」選單中,按一下「Sap Table」。SAP 資料表節點會顯示在管道中。
- 如要設定來源,請前往 SAP 資料表節點,然後按一下「Properties」。
輸入下列屬性。如需完整清單,請參閱「屬性」。
- 為 SAP 資料表節點輸入標籤,例如
SAP tables
。 輸入連線詳細資料。您可以設定新的一次性連線,或現有的可重複使用的連線。
新連結
如要新增一次性 SAP 連線,請按���下列步驟操作:
- 關閉「Use connection」。
在「Connection」專區中,請在下列欄位中輸入 SAP 帳戶的相關資訊:
- 在「Reference name」欄位中,輸入用於識別這個沿革來源的連線名稱。
- 在「SAP 用戶端」欄位中,輸入 SAP 中特定執行個體或環境的用戶端名稱。SAP 管理員可以提供客戶名稱。
- 在「SAP 語言」欄位中輸入 SAP 登入語言。預設值為 EN (英文)。
選取下列其中一種連線類型。
- 直接 (透過 SAP 應用程式伺服器)。如果您選擇這個預設類型,請在下列欄位中輸入資訊:SAP 應用程式伺服器主機、SAP 系統編號和 SAP 路由器。
- 負載平衡 (透過 SAP Message Server)。如果您選擇這類型,請在下列欄位中輸入資訊:SAP Message Server 主機、SAP Message Server 服務或連接埠號碼、SAP 系統 ID (SID) 和 SAP 登入群組名稱。
在「SAP table/view name」(SAP 資料表/檢視畫面名稱) 欄位中,輸入 SAP 系統中的資料表或檢視畫面名稱。
提供 SAP 憑證:請向 SAP 管理員索取 SAP 登入使用者名稱和 密碼。
在「JCo Library Cloud Storage path」欄位中,輸入 Cloud Storage 中 SAP Java Connector (SAP JCo) 路徑,其中包含您上傳的 SAP JCo 程式庫檔案。
如要根據 SAP 的中繼資料產生資料結構,並將 SAP 資料類型對應至相應的 Cloud Data Fusion 資料類型,請按一下「Get schema」。詳情請參閱「資料類型對應」。
選用步驟:如要最佳化從 SAP 擷取的負載,請在下列欄位中輸入資訊:
使用篩選選項,您可以根據所選條件 (例如具有已定義值集的資料欄) 擷取記錄。在
WHERE
子句中,使用 OpenSQL 語法定義條件。舉例來說,這項查詢會傳回Roster
資料表中SchoolID
欄值為SchoolID > 52
的���有資料列:SELECT * FROM Roster WHERE SchoolID > 52;
詳情請參閱「支援的篩選器」。
在「要擷取的資料列數」欄位中,您可以提供正整數的資料列數,藉此限制要擷取的資料。
您可以在「分割次數」欄位中建立分割區,以便並行擷取資料記錄,進而提升效能。分割數量可能會影響 SAP 工作程序,因此請務必謹慎選取。
在「Package size」欄位中,指定在單一 SAP 網路呼��中要擷取的記錄數量。套件大小會影響效能和可用資���,因此必須謹慎選用。
可重複使用的連線
如要重複使用現有的連線,請按照下列步驟操作:
- 開啟「Use connection」。
- 按一下「瀏覽連線」。
按一下連線名稱。
如果不存在連線,請按照下列步驟建立可重複使用的連線:
- 依序點選「新增連線」>「SapTable」。
- 在隨即開啟的「Create a SapTable connection」頁面中,輸入連線名稱和說明。
- 在「SAP 用戶端」欄位中,輸入 SAP 中特定執行個體或環境的用戶端名稱。SAP 管理員可以提供用戶端名稱。
- 在「SAP language」欄位中輸入 SAP 登入語言。預設值為 EN (英文)。
選取下列其中一種連線類型。
- 直接 (透過 SAP 應用程式伺服器)。如果您選擇這個預設類型,請在下列欄位中輸入資訊:SAP 應用程式伺服器主機、SAP 系統編號和 SAP 路由器。
- 負載平衡 (透過 SAP Message Server)。如果您選擇這類型,請在下列欄位中輸入資訊:SAP Message Server 主機、SAP Message Server 服務或連接埠號碼、SAP 系統 ID (SID) 和 SAP 登入群組名稱。
提供 SAP 憑證:請向 SAP 管理員索取 SAP 登入使用者名稱和 密碼值。
在「JCo 程式庫 Cloud Storage 路徑」欄位中,輸入 Cloud Storage 中的 SAP Java Connector (SAP JCo) 路徑,其中包含您上傳的 SAP JCo 程式庫檔案。
選用:在「Additional SAP connection properties」欄位中,輸入必須覆寫 SAP JCo 預設值的鍵/值組合。
按一下 [建立]。
- 為 SAP 資料表節點輸入標籤,例如
屬性
屬性 | 已啟用巨集 | 必要屬性 | 說明 |
---|---|---|---|
標籤 | 否 | 是 | 資料管道中的節點名稱。 |
使用連線 | 否 | 否 | 使用可重複使用的連線。如果使用連線,您不需要提供憑證。詳情請參閱「管理連線」。 |
參照名稱 | 否 | 是 | 如果未開啟「使用連線」,就會顯示這個欄位。 用於系統系譜的連線名稱。 |
名稱 | 否 | 是 | 如果已開啟「使用連線」,系統就會顯示這個欄位。可重複使用的連線名稱。 |
SAP 用戶端 | 是 | 是 | SAP 系統中的執行個體或環境。 |
拍攝快照 | 是 | 是 | 啟用 SAP 中的資料快照。 何時應開啟快照功能:
何時應關閉快照:您正在平行執行多個大量資料擷取作業。快照會使用 SAP 中的緩衝區資料表,這可能會導致 SAP 中的 out of memory 問題。不過,在資料擷取作業完成後,緩衝區表格會清除。 |
SAP 語言 | 是 | 是 | 顯示及處理 SAP 使用者介面和資料的語言。 |
連線類型 | 否 | 是 | SAP 連線類型:直接或負載平衡。 |
SAP 應用程式伺服器主機 | 是 | 否 | 僅限「直接」連線類型,這個主機名稱來自 SAP 應用程式伺服器,可做為 SAP 用戶端 (例如 SAP 網頁介面、網路瀏覽器或行動應用程式) 與基礎資料庫之間的中介軟體層。 |
SAP 系統���號 | 是 | 否 | 僅適用於「直接」連線類型,這個編號是指派給每個 SAP 系統的專屬 ID。例如:00 。 |
SAP 路由器 | 是 | 否 | 僅適用於「直接」連線類型,這是 Proxy 伺服器的路由器字串,可為 SAP 系統與外部用戶端或合作夥伴之間的通訊提供安全通道。 |
SAP Message Server 主機 | 是 | 否 | 僅適用於「負載平衡」連線類型,這是主機名稱,可在 SAP 中跨多個應用程式伺服器進行負載平衡。 |
SAP Message Server 服務或通訊埠號碼 | 是 | 否 | 僅限負載平衡連線類型,這是 SAP 訊息伺服器監聽 SAP 客戶端和 SAP 內應用程式伺服器傳入連線的網路通訊埠。 |
SAP 系統 ID (SID) | 是 | 否 | 僅適用於負載平衡連線類型,這個 ID 會指派給每個 SAP 系統。 |
SAP 登入群組名稱 | 是 | 否 | 多個 SAP 應用程式伺服器的邏輯群組或設定名稱。預設為 PUBLIC 。 |
SAP 表格/檢視名稱 | 是 | 是 | 有效的資料表或視圖名稱 (不區分大小寫),可擷取所有資料欄。 |
SAP 登入使用者名稱 | 是 | 是 | SAP 的使用者名稱 建議:如果使用者名稱會定期變更,請使用巨集。 |
SAP 登入密碼 | 是 | 是 | SAP 密碼。 建議使用安全巨集。 |
GCP 專案 ID | 是 | 是 | Google Cloud 專案 ID。 |
SAP JCo 程式庫 GCS 路徑 | 是 | 是 | 您上傳 SAP JCo 程式庫檔案的 Cloud Storage 路徑。 |
取得結構定義 | 不適用 | 不適用 | 外掛程式會根據 SAP 的中繼資料產生結構定義,並將 SAP 資料類型對應至相應的 Cloud Data Fusion 資料類型。請參閱「資料類型對應」。 |
其他 SAP 連線資源屬性 | 是 | 否 | 設定其他 SAP JCo 屬性,以便覆寫 SAP JCo 預設值。舉例來說,設定 jco.destination.pool_capacity = 10 會覆寫預設的連線集區容量。 |
篩選器 | 是 | 否 | 在 Open SQL 語法中指定的條件,可使用 SQL WHERE 子句進行篩選。根據條件擷取記錄,例如資料欄中具有特定值組或值範圍的記錄。詳情請參閱「支援的篩選器」。 |
要擷取的資料列數量 | 是 | 否 | 限制擷取的記錄數量。
|
要產生的分割數量 | 是 | 否 | 建立分割區,以便並行擷取記錄。 執行階段引擎會在擷取記錄時建立指定數量的分區 (和 SAP 連線)。 請謹慎提高這個值,因為這會增加與 SAP 的同時連線數量。 建議:請為每個管道和同時執行的管道總數,規劃 SAP 連線。 如果值為 0 或空白,Cloud Data Fusion 會根據可用的執行者數量、要擷取的記錄和套件大小,選擇適當的值。 |
套件大小 | 是 | 否 | 在單一 SAP 網路呼叫中要擷取的記錄數量。這是在每次網路擷取呼叫期間,SAP 在記憶體中緩衝的記錄數量。 設定這項屬性時請小心謹慎。多個資料管道會擷取資料,導致記憶體用量達到極限,進而因 Out of memory 錯���而失敗。
|
支援的篩選器
系統支援下列篩選器條件。
包含比較運算子的篩選條件
使用比較運算子,根據值之間的比較執行更複雜的篩選作業。
語法
SELECT * FROM table_name WHERE column_name > value; \ SELECT * FROM table_name WHERE column_name BETWEEN value1 AND value2;
範例
AUDAT GT '20230914'
包含 LIKE
運算子的篩選器
使用 LIKE
運算子進行模式比對。如要比對任何字元,請使用 %
符號做為萬用字元。
語法
SELECT * FROM table_name WHERE column_name LIKE 'pattern%';
範例
ERNAM LIKE 'KIRAN%'
包含 IN
運算子的篩選器
使用 IN
運算子指定要比對的值清單。
語法
SELECT * FROM table_name WHERE column_name \ IN ('value1', 'value2', 'value3');
範例
ERNAM IN ( 'LEE' , 'KIRAN' )
包含邏輯運算子的篩選器
使用邏輯運算子指定要比對的值清單。
語法
SELECT * FROM table_name WHERE condition1 AND condition2; \ SELECT * FROM table_name WHERE condition1 OR condition2; \ SELECT * FROM table_name WHERE NOT condition;
範例
( AUDAT EQ '20220615' ) AND ( ERNAM LIKE 'LEE%' )
( AUDAT EQ '20220615' ) OR ( AUDAT EQ '20220617' )
包含日期範圍的篩選條件
使用日期範圍,擷取日期時間欄位落在特定日期範圍內的資料列。
語法
SELECT * FROM table_name \ WHERE datetime_column >= 'start_date' AND datetime_column <= 'end_date';
範例
AUDAT GE '20230910' AND AUDAT LE '20230914'
包含日期比較的篩選器
使用日期比較功能,擷取使用日期時間的資料列。
語法
SELECT * FROM table_name WHERE datetime_column > 'target_date';
範例
AUDAT GE '20230910' AND AUDAT LE '20230914'
結合日期和時間的篩選器
如果您的日期時間欄同時包含日期和時間,您可以據此進行篩選。
語法
SELECT * FROM table_name \ WHERE datetime_column >= 'target_datetime' \ AND datetime_column <= 'target_datetime';
範例
TIMESTAMP GE '20210602144800' AND TIMESTAMP LE '20210624080836'
(時間戳記格式:YYYYMMDDHHMMSS)
使用邏輯運算子結合多個條件的篩選器
您可以使用邏輯運算子 (例如 AND
和 OR
) 擷取符合多個條件的資料列。
語法
SELECT * FROM table_name \ WHERE (column1 = 'value1' AND column2 > value2) \ OR (column3 = 'value3' AND column4 < value4);
範例
( ERNAM EQ 'LEE' AND AUDAT GT '20220722' ) \ OR ( BSTNK EQ 'PO54321065' AND BSTDK LT '20220714' )
篩選結合巢狀條件的條件
您可以以巢狀方式結合條件,建立複雜的篩選器。
語法
SELECT * FROM table_name \ WHERE (column1 = 'value1' OR (column2 = 'value2' AND column3 > value3)) \ AND column4 = 'value4';
範例
( ERDAT EQ '20220722' OR ( ERNAM EQ 'LEE' AND VDATU GT '20210623' ) ) \ AND FMBDAT EQ '20220722'
使用子查詢的篩選器
您可以使用子查詢,根據其他查詢的結果進行篩選。
語法
SELECT * FROM table_name \ WHERE column1 IN (SELECT related_column FROM other_table WHERE condition);
範例
VBELN IN ( SELECT VBELN FROM VBAK WHERE ERNAM = 'LEE' )
篩選結合日期和值條件的資料
您可以在複雜的篩選條件中結合日期和值條件。
語法
SELECT * FROM table_name \ WHERE (column1 = 'value1' OR column2 = 'value2') \ AND datetime_column > 'target_datetime';
範例
( ERDAT EQ '20220722' OR ERNAM EQ 'LEE' ) AND VDATU GT '20210623'
包含格式日期的篩選器
在 SAP 中,日期和時間欄位一律會在資料庫層級儲存,但不會使用 -
或 :
。
語法
SELECT * FROM table_name \ WHERE datetime_column >= 'YYYY-MM-DD HH:MM:SS' \ AND datetime_column <= 'YYYY-M
不支援:包含函式和比較運算子的篩選器
在 SAP 中,系統不支援 QUERY 的 WHERE 子句中的函式。
不支援:含有間隔的篩選器
SAP 不支援 NOW()
函式。
語法
SELECT * FROM table_name \ WHERE datetime_column >= NOW() - INTERVAL X DAY;
不支援:篩除日期元件
SAP 不支援偏移篩選。
範例
WHERE YEAR+0(4) = 2023
資料類型對應關係
下表列出 SAP 資料類型及其對應的 Cloud Data Fusion 類型。
SAP 資料類型 | ABAP 類型 | SAP description | Cloud Data Fusion 資料類型 |
---|---|---|---|
INT1 (數字) |
b | 1 位元組整數 | 整數 |
INT2 (數字) |
秒 | 2 位元組整數 | 整數 |
INT4 (數字) |
i | 4 位元整數 | 整數 |
INT8 (數字) |
8 | 8 位元整數 | long |
DEC (數字) |
p | BCD 格式的已壓縮數字 (DEC) | decimal |
DF16_DEC 、DF16_RAW (數字) |
a | 十進位浮點 8 個位元組 IEEE 754r | 雙精度值 |
DF34_DEC 、DF34_RAW (數字) |
e | 十進位浮點 16 位元組 IEEE 754r | 雙精度值 |
FLTP (數字) |
f | 二進位浮點數 | 雙精度值 |
CHAR 、LCHR (字元) |
c | 字元字串 | 字串 |
SSTRING 、GEOM_EWKB (字元) |
字串 | 字元字串 | 字串 |
STRING (字元) |
字串 | 字元字串 CLOB | 位元組 |
NUMC 、ACCP (字元) |
n | 數字文字 | 字串 |
RAW 、LRAW (位元組) |
x | 二進位資料 | 位元組 |
RAWSTRING (位元組) |
xstring | 位元組字串 BLOB | 位元組 |
DATS (日期/時間) |
d | 日期 | 日期 |
TIMS (日期/時間) |
t | 時間 | 時��� |
TIMS (日期/時間) |
utcl | (Utclong)、時間戳記 | 時間戳記 |
用途
系統支援������擷取內容:
- SAP 資料庫資料表和檢視畫面
- SAP ABAP CDS
在每個情境中,SAP 資料表外掛程式都支援標準和自訂資料庫資料表和檢視畫面。
限制
SAP 資料表外掛程式有下列限制:
- 不支援資料表彙整。
- 不支援含有參數的 CDS 檢視畫面。
- 不支援未設定主要欄位的資料。
- 如果啟用快照功能,使用超過 30,000 的套件大小可能會導致管道失敗。這個套件大小可能會有所不同,具體取決於 SAP 資料表中的欄數。您可以使用以下公式計算資料表的最佳套件大小:列大小 (以字元數計) * 5。
- 透過連線管理工具,最多可瀏覽 1,000 個 SAP 表格名稱。
- 發生管道錯誤 (例如匯入端的錯誤) 時,SAP 資料表外掛程式會嘗試呼叫用於清理的自訂 RFM (
/GOOG/RFC_READ_TABLE_CLEANUP
),藉此清理與擷取作業相關的任何有效 SAP 端程序。
後續步驟
- 進一步瞭解 Google Cloud上的 SAP。