こちらのブログではABAP RFC Streaming Read 機能を利用し、SAP Data Warehouse CloudにS/4HANA、ECC、BWなどのABAPテーブルを連携する方法についてご案内します。

設定の流れ

1. ABAPシステム側での設定
  1-a RFC宛先の作成
  1-b SAP Gatewayのセキュリティ設定

2. DWC側での設定

概要

  • SAP ABAPシステムのABAPテーブルから大量データをSAP Data Warehouse Cloudにロードする際、メモリ課題を回避するための設定
  • 接続タイプ:ABAP、SAP ECC、SAP S/4HANA、SAP BWで利用可能
  • 多くのシナリオで利用可能(少量データの取得、大量データの取得、長時間実行クエリの実行、複数同時実行、など)

注意点

  • 小さなクエリではパフォーマンスが劣化する可能性あり
  • ABAPシステム側での設定が必要

参考情報

事前準備

各SAPシステムのユーザーには、権限が必要です。権限オブジェクトをトランザクションコード “PFCG”で設定する必要があります。管理しやすいように新規にロールを作成するのをお勧めします。

権限オブジェクトの一覧が、ヘルプに記載されてます。各権限オブジェクトのリンクに飛ぶと、どのように設定するかが記載されているので、それに沿って記載します。できあがったロールをデータ連携で使うユーザーに割り当てます。

それでは始めましょう!

1. ABAPシステム側での設定

1-a. RFC宛先の作成

下記の手順でABAPソースシステム側でRFC宛先を作成します。このRFC宛先で、DP Agentをソースシステムのサーバープログラムとして登録します。

①トランザクションコード “SM59″でTCP/IP接続を作成

②”RFC Destination”で任意の名前、Descriptionで説明を記入

③“Activation Type”で”Registered Server Program”を選択

④“Program ID”に”IM_HANA_ABAPADAPTER_*”を入力

⑤保存

1-b. SAP Gateway のセキュリティ設定 ~SAP_BASIS=Release:740、SPレベル:0016以上の場合~

SAP Gatewayにセキュリティ設定を行います。

設定例

  • Gatewayにアクセスするためのネットワーク設定をする(名前解決、ポート開放、など)
  • Gatewayにアクセス可能なホストをAccess Control List(ACL)に登録する
  • reginfoファイルで外部プログラムを登録するための権限を管理する

※「Maintain ACL Files」を使えるバージョンは、SAP_BASIS=Release:740、SPレベル:0016以上になります。こちらに該当しない場合、後述の ”1-b. SAP Gateway のセキュリティ設定 ~SAP_BASIS=Release:740、SPレベル:0016未満の場合~“を参照ください。

手順(Gatewayにアクセス可能なホストをACLに登録する場合)

参考ノート:SAP Note 18066941850230

①トランザクションコード “SMGW”より、Goto→Expert Functions→External Security→Maintain ACL Filesを選択

②ACLファイルにエントリを追加して保存
<permit> <ip-address[/mask]> [tracelevel] [# comment]

1-b. SAP Gateway のセキュリティ設定 ~SAP_BASISRelease740SPレベル:0016未満の場合

SAP_BASISRelease740SPレベル:0016未満の場合、Maintain ACL Filesの機能をサポートしておりません。そのため、直接secinfoファイルを編集する必要があります。 (詳細)

表記内容: P TP=*, USER=*, HOST=<DPAgent hostname>

ファイル名は、以下になります。(詳細)

■Linuxの場合

gw/sec_info = $(DIR_DATA)/secinfo

■Windowsの場合

gw/sec_info = $(DIR_DATA)/secinfo.DAT

*DIR_DATAは、インストールされたディレクトリです。

編集後、SAP GUIから以下のオペレーションを実行します。

ジャンプ > エキスパート機能 > 外部セキュリティ > 再読込

2. DWC側での設定

DWCへログインして以下のように設定を行います。

①DWCの左のナビゲーションから接続を選択します。

②対象スペースを選択し、DPAgentで作成したABAPシステムとの接続をチェックし、編集ボタンを押します。

③機能で”ストリーミング読み込み”を”オン”にし、以下の情報を登録します

  • Gateway Host:通常はABAPサーバーと同じ
  • Gateway Port:デフォルトは33<SID>
  • RFC Destination:1-aで作成したRFC宛先の名前

以上で手順は終了です。

確認方法&調査方法

・トランザクションコード “SM37″で、ジョブ「IM_HANA_ABAPADAPTER_*」の実行履歴を確認します。

  • プログラム「/SAPDS/RPT_STREAM_READ_TABLE」が実行されていればStreaming Readが実行されていると判断できます

・スナップショット作成などの連携中にT-CD:SMGWでGatewayの確認を行うと、DP AgentからABAPシステムにアクセスがあることが確認できます

  • プロトコル:登録済通信
  • リモートTP名:IM_HANA_ABAPADAPTER_*

・想定通り動作しない場合、下記手順でDP Agentでトレースを取得し、トレースファイルのメッセージより調査を行います。

①DP Agentの「dpagentconfig.ini」に「framework.log.level=ALL」をセットする(フレームワークとレースレベルをALLとする)
②リモートソースにて、RFCトレースをONとする(ABAPアダプターのみ)
③DP Agentを再起動する
④DWCで処理を実行する
⑤数分間処理を実行後、DP Agentのrootディレクトリにあるdpagent framework traceと
dev_jco.rfcファイルを確認する
⑥上記#1,2の設定を元に戻し、DP Agentを再起動する

・トランザクションコード “SMGW”での確認例

スナップショット作成などの連携中にSMGWでGatewayの確認を行うとDP AgentからABAPシステムにアクセスがあることが確認できます。

・トランザクションコード “SM37″での確認例

SM37で、ジョブ「IM_HANA_ABAPADAPTER_*」の実行履歴を見て、ここでプログラムが実行されていることを確認できます。

補足: CDCバッチサイズの調整

スペースからの接続の設定情報により、CDCバッチサイズはデフォルトの1MBになってます。値を変更することで時間短縮になりますが、ECCやネットワークの負荷によるため、バランスを取る必要があります。
パラメータの意味は、こちらのページに記載があります。DWCの場合、パラメータが制限されているので必要な箇所だけご参照ください。

設定エラー時のトレース取得方法

トレースの取得は下記手順で行います。

①DP Agentのiniファイルでトレースパラメータのレベルを変更
より詳細に取得するために、DP Agentをインストールしたサーバにdpagentconfig.iniがあります。この中で設定されているパラメータでframework.log.level=ALLを設定します。デフォルトはINFOです。

②DWC 側でRFCトレースをOn
”DWC 側の設定定義作成“のところで一番下にいくと”拡張プロパティを表示“があります。これをクリックすると以下の画面が表示されます。ここでRFCトレースをOnにします。

③処理実行後の情報
処理実行後DP Agentのサーバで以下のファイルにトレース情報が書き込まれます。

  • dataprovagent/log/framwork.trc
  • dataprovagent/dev_jco_rfc.trc

エラー時のTips

①RfcException: Connect to SAP gateway failed のエラー

RFCトレースをONにして、dev_jco_rfc.trcを確認時に以下メッセージがあった場合の対処方法

SAP Gatewayサーバでないホストにログインしようとして失敗しています。XXXXXXXを確認してDWC側設定のGateway Hostで正しいホスト名に修正してください。通常、アプリケーションサーバと同一です。他に間違ったケースとしては、SAP routerのサーバにしている可能性があります。

②RfcIoException: CPIC-CALL: SAP_CMACCPTP3 on convId のエラー

・RFCトレースをONにして、dev_jco_rfc.trcを確認し、以下メッセージがあった場合の対処方法

DPAgentのサーバとGatewayのサーバでホスト名前解決(/etc/hostsにお互いのホスト名を追加)する必要があります。また、FWの設定がある場合は、ポートを開ける必要があります。また、/etc/servicesに以下が設定されているか確認ください。

  • sapgw00   3300/tcp

・RFCトレースをONにして、dev_jco_rfc.trcを確認し、以下メッセージがあった場合の対処方法

SAP Note #1806694, #1850230を参照してください。

構文

P TP=* HOST=<プログラム ID マッピングに基づくサーバ> CANCEL=* ACCESS=*

※<プログラム ID マッピングに基づくサーバ> は、DP Agentのサーバを指定します。

方法

  • SAP Gatewayがあるサーバ (AAAAAAA)のreginfoに、下記内容を追加します。
    『P TP=* HOST=BBBBBBB CANCEL=* ACCESS=*』なお、host:AAAAAAAに「reginfo」ファイルがなかった場合、新規で作成します。

③internal error: Cannot get remote source table definitions: Invalid session id, Code: 403, SQL State: HY000 のエラー

設定作業終了後、データビルダーでソースからダイアグラムにドラッグ&ドロップをした際に以下のメッセージが表示された場合の対処方法

ソースシステムのサービスを再起動することで解消されます。

参考情報

■SAP Note #1408081 – reg_info および sec_info の基本設定

■SAP Gateway Security Files secinfo and reginfo

https://help.sap.com/doc/saphelp_snc70/7.0/en-US/e2/16d0427a2440fc8bfc25e786b8e11c/content.htm?no_cache=true

■Gateway Security Files secinfo and reginfo

https://help.sap.com/viewer/62b4de4187cb43668d15dac48fc00732/7.4.15/en-US/e216d0427a2440fc8bfc25e786b8e11c.html

■Configuring Connections between Gateway and External Programs Securely

https://help.sap.com/viewer/62b4de4187cb43668d15dac48fc00732/7.4.15/en-US/48b2096b7895307be10000000a42189b.html

 

以上です。最後までお読みいただきありがとうございました!

Sara Sampaio

Sara Sampaio

Author Since: March 10, 2022

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x