Skip to Content
Technical Articles

SAP HANA SDI ABAPアダプタを使用した、SAP HANAからSAP ERPデータへのアクセス方法

このブログでは、SAP ERPのデータを対象に、さまざまな分析や機械学習のソースに利用する方法をご紹介します。

SAPは、ABAPベースのシステムに格納されているデータを抽出するためのいくつかの機能を提供しています。 このブログでは、これらのオプションの1つであるSAP HANA Smart Data Integration(SDI)を使用した方法について説明します。 SDIは、ソースデータにアクセスし、そのデータをSAP HANAオンプレミス、またはクラウドに対して配信、レプリケーション、変換するための機能を提供します。 多くのソースに効率的に接続し、SAP HANAに格納するデータを配信したり、クレンジングする事ができます。 サポートされているシステムであれば、HANAから元のソースに書き戻すこともできます。

このブログでは、SAP ERPからSAP HANA as a Serviceへのデータのリアルタイム・レプリケーション用にABAPアダプタを設定します。

出典 : SAP SQL Data Warehousing with HANA
Extraction from SAP S/4HANA and other ABAP sources into HANA SQL DW with SDI

注意:SAP ERP ECCからS/4HANAにデータをリアルタイムでレプリケーションする場合には、SDIは最適なソリューションではありません。 SAP Landscape Transformation Replication Server(SLT)の利用を検討してください

このブログでは、SAP HANAは SAP Cloud Platform のCloud Foundry環境で提供されるサービスを使用します。 SAP Cloud Platformでは、ワンクリックでData Provisioning サーバ(DPサーバ)をアクティブ化でき、HANAシステムにDP delivery unitをインポートする手順が不要です。 設定にはSAP Cloud Platformのサービスとして提供されているSAP Web IDEフルスタックを使用します。オンプレミスのHANA データベースを使用する場合は以下の手順とは異なりますのでご注意下さい。

 

SAP ERP/SAP BWからデータを抽出する場合に使用するSDIアダプタ

SAP ERPまたはSAP BWにあるデータにアクセスする場合、2種類のSDIアダプタが提供されます。

ABAPアダプタによるアプリケーションサーバへのアクセス :  このアダプタを利用する場合はデータベースにはアクセスしません。 ABAPテーブルとODPエクストラクタのRFCを介して仮想テーブルからデータを取得します。
データベースに対する完全なアクセスのためのライセンスは必要ありません。
ABAPアダプタは、ODPエクストラクタについてのみチェンジデータキャプチャ(CDC)をサポートします。

IBM DB2 ログリーダ、Microsoft SQL Serverログリーダ、Oracleログリーダ、SAP ASEアダプタによるデータベースへのアクセス : データベースベンダから完全なアクセスのためのライセンスが必要です。管理ユーザとしてデータベースにアクセスする必要があります。もちろん、データベースにあるすべての情報(非SAPテーブルを含む)にアクセスできる必要があります。 SAP ERP ECCアダプタは、同じデータベースのデータプロビジョニング・ログリーダアダプタの上に構築された、SAP ECCのデータおよびメタデータへのアクセスを提供するデータプロビジョニングアダプタのセットです。

こちらのブログでは、Oracleアダプターを使用したOracleデータベースにあるデータにアクセスする方法を紹介しています。 他のデータベースアダプタも同様の方法で設定することができます。

 

SDI Standard adapters as of SAP HANA 2.0SPS04
Database SAP HANA
SAP ASE
IBM Db2
IBM Informix
Oracle
Microsoft SQL Server
Microsoft Office Access
Teradata
PostgreSQL
JDBC
Application SAP ABAP (tables / BAPI / ODP)
SAP ECC (based on SAP ASE / IBM DB2 / Microsoft SQL Server / Oracle)
SAP BW (BEx query)
API Facebook
Google
Twitter
OData
SOAP
Big data Cassandra (NoSQL)
Impala
Hive
File Microsoft Excel File (Sharepoint, HDFS)
Outlook (PST file)

 

手順

1) SAP ERPシステムの準備
2) HANA システムの準備
3) SAP Service Marketplace から DPエージェントのダウンロード
4) DP エージェントの設定
5) リモートソースの作成
6) replication taskの作成
7) replication taskの実行
8) 結果の確認

 

SAP ERPシステムの準備

ABAPアダプタを使用するためには、SAPシステムのPI_BASISコンポーネントがバージョン701以降である必要があります。 ノート2166986を参照してください。

RFCストリーミングを使用して、ABAPアダプタによってデータを抽出します。

RFCストリーミングを使用しない場合、データセット全体がABAPアプリケーションサーバを通じて1度のバッチで抽出されます。 そのプロセスは、RFCストリーミングを使用するよりも若干高速になります。
このため、RFCを使用しないストリーミングの場合は小さなクエリで高速ですが、レコードセット全体を一度に抽出する場合は、レコードセット全体を処理するために十分なメモリを確保する必要があるという要件が求められます。
平均的なサイジング(レコード長によって異なります)は、100万レコードあたり1GBのRAMが必要です。
本環境では対象となるデータセットに数百万のレコードを含んでいたため、ソースのSAP ERPシステムのRAMに収まらないため、RFCストリーミングを使用することにしました。 RFCストリーミングは、御利用環境や、クエリの大小、使用する際に複数の同時セッションが必要である事などの要素を考慮して使用を検討してください。 小さなクエリではパフォーマンスが低下し、ECC側で追加の構成が必要になります。

ABAPテクノロジを基盤にしたSAPシステムは、ユーザーがレポート用にデータを抽出する事ができるOperational data Provisioning ExtractorsODPエクストラクタ)を提供しています。 これは、適切なデータをフェッチして前処理するための、ソースシステムに組み込まれた事前配信のビジネスロジックを含んでいます。 また、差分のみを取得するための組み込みデルタメカニズムも持っています。
このブログでは、ABAPテーブルからリアルタイムでデータを抽出する事を目的としたので、ODPエクストラクタをこれらの特定のテーブルの周りにラップする必要がありました。 ABAPテーブルからの直接抽出もSDI ABAPアダプターでサポートされていますが、ODPエクストラクタを利用しないため、リアルタイムのデータレプリケーションはできません。
ODPエクストラクタを使用するには、ソースシステムは、SAP Note 2232584 – Release of SAP extractors for operational data.で提示されている要件に準拠する必要があります。

  • 開発環境にODPエクストラクタを作成します (ノート2350464、ノート2232584、ノート1521883汎用データソースの作成方法)。
  • レプリケーションを実行する試験環境または本番環境にオブジェクトを転送します。
  • ゲートウェイサービスを設定します。 (ECC Client and Gateway Service Configuration)
  • ゲートウェイに接続できるホストを制御するアクセスコントロールリスト (ACL) を設定します。 そのファイルには、次のような構文を指定します。
    <permit> <ip-address [/ mask]> [tracelevel] [#comment]
  • reginfoファイルを設定して、外部プログラムを登録する権限を制御します。
  • DPエージェントが実行されているホストのサービスの設定には、リモートのSAPゲートウェイの名前が必要です。

    SAP ERPシステムからリアルタイムでデータのレプリケーションを開始するには、SAPゲートウェイにデータソースを登録し、ODPエクストラクタを指定する必要があります。また、real-time enabledがチェックされていることを確認してください。

     

    HANA システムの準備

     

    このブログでは、SAP Cloud Platform のサービスで提供されている SAP HANA を使用します。
    同じ手順を実行するためには、利用条件を備えた SAP Cloud Platformアカウントが必要です(2020年3月現在、これを試用アカウントでレプリケーション機能を利用することはできません)。 Set up the HANA service in SAP Cloud Platform Cloud Foundry

    セットアップが完了しましたら、SAP HANAサービスをデプロイしたスペースにアクセスします。 以下の様な画面になると思います。 Action の下にある SAP HANA Service Dashboard アイコンをクリックします。

     

     

    SAP HANA Service Dashboard画面から、SAP HANA Data Provisioning Serverを有効にします。 Edit and enable をクリックします。

     

    このSAP HANA Service Dashboard から、SAP HANA テナントデータベースに関するすべての情報を確認できます。また、SAP HANA Cockpitにアクセスして、すべてのデータベース管理者アクティビティを実行する事もできます。
    ここまでで、SAP HANA Cockpitにアクセスして、エージェントメッセージング用のHANAユーザを作成しています。これは、DPエージェントのセットアップ時に使用されます。

     

    SAP Service Marketplace から DPエージェントのダウンロード

    次のステップで、SAP ERPからSAP HANAデータベースにデータをレプリケーションするために使用されるサーバに、DPエージェントをインストールします。 ERPサーバ、クラウドサーバ、または単独のローカルコンピュータにインストールできます。 このブログでは、AWS上の仮想Windowsマシンを使用しています。

    SAP Software Download Center にアクセスして、 Support Packages & Patches > By Alphabetical Index (A-Z) > H > SAP HANA SDI > SAP HANA SDI <version_number> > Comprised Software Component Versions > HANA DP AGENT <version_number>  と進みます。

    SARファイルをダウンロードする場合は、次のコマンドを使用して、SAPCAR(SAPのアーカイブツール。SAP Software Download Center で入手可能です)SARファイルを解凍する必要があります。コマンド例を示します。

    SAPCAR -xvf IMDB_DPAGENT200_03P_20-70002517.SAR

    注意:DPエージェントのバージョンは、HANAのバージョンと一致させてください。 どのバージョンを使用するかは、HANA SDIのProduct Availability Matrix for Hana SDIで確認します。
    DPエージェントをインストールして設定する際は、管理者ユーザーを使用する必要があります。

    hdbsetup.exeを、右クリックして管理者として実行します。

     

    Install new SAP HANA Data Provisioning Agent を選択し、インストールパスを指定します。 ここではインストールはデフォルト設定のままにしています

    C:\ usr \ sap \ dataprovagent

     

    Agent Unique Nameでは、インストールするホストにおいてユニークとなるように任意のDPエージェントの名前を指定します。

    Domain\Username の指定は、インストールするホストOSで有効なドメイン(もしくはホスト名)\ ユーザ名を指定します。

     

     

    DP エージェントの設定

    DPエージェントの設定を行うGUIツール SAP HANA Data Provisioning Agent Configuration は現在ご利用が推奨されていません。従って、CUIモードの設定ツールによる手順をご紹介します。

    Configuring the Agent in Command-Line Interactive Mode

    コマンドライン エージェント構成ツールでは、DPA_INSTANCE環境変数に、DPエージェントのインストールルートの場所(<DPAgent_root>)を設定する必要があります。

    Windowsの場合はコマンドプロンプトを「管理者として実行」し、DPA_INSTANCE環境変数をセットします。

     

    set DPA_INSTANCE=C:\usr\sap\dataprovagent

    <DPAgent_root>\bin に移動し、–configAgent パラメータを指定して、設定ツールを起動します。

    agentcli.bat --configAgent

    Enter Optionに 1 を指定してDPエージェントが開始されていることを確認してください。必要に応じて、Option 2 でDPエージェントを開始することができます。

    Option に6を指定し、DPエージェントをSAP HANAに接続します。

    • Option に3 : Connect to SAP HANA via JDBCを選択します。
    • “true” を入力し、暗号化されたJDBC接続を選択します。
    • “true” を入力し、WebSocketを使用した接続を選択します。
    • / service / <サービスインスタンスID>を入力しWebsocketのURLを入力します。 <サービスインスタンスID> は、SAP HANA Service Dashboardで確認することができます。

     

    • Web Socketのホストも確認できます。

     

     

    • 設定ツールに戻り、SAP HANA Service Dashboardに記載されたWeb socketのホスト名をポートなしで入力します。
    • Web Socketのポートを入力します。
    • DPエージェントとDPサーバ間の通信に使用されるエージェント用のHANAユーザーが必要です。 エージェント用HANAユーザーには、システム権限 AGENT ADMIN と ADAPTER ADMIN が必要です。
    • また、JDBC接続を行う場合、同じロールを持つエージェントメッセージング用のHANAユーザーが必要になります。 このチュートリアルでは、エージェントメッセージングのHANAユーザーとして JDBCUSR というユーザを、HANA Cockpit を使って事前に作成しています。

     

    メインメニューに戻り、Option に7を指定して、SAP HANAのテナントDBの DPサーバ にエージェントを登録します。DPエージェントの名前とWindowsホストのIPアドレスを指定します。

     

    メインメニューに戻り、Optionに8 を指定してSAP HANAで使用するアダプターを登録します。次のOptionに 1 を指定すると利用可能なアダプターのリストが表示されるので、利用したいアダプターを確認し(ここではABAPAdapter)、Option に 2 を指定して登録します。

     

    これで ABAPAdapter をDPサーバに登録が完了しました。

    リモートソースの作成

    次のステップで、リモートソースを作成し、HANAデータベースをソースERPシステムに接続します。
    このタスクでは、SAP Cloud Platformで提供する SAP Web IDE Full-Stack を使用します。
    SAP Cloud Platform Cockpit に戻り、画面上部の SAP Web IDE Full-Stack をクリックします。

    最初に、下の手順に従って Web IDE Full-Stack で Enterprise Information Management プラグインと SAP HANA Database Explorer プラグインを利用できるように有効化します。 これにより、レプリケーションタスクを作成するためのツールが利用可能になります。

    画面の左端にある Database Explorerアイコンをクリックし、Database Explorerに切り替えます。HANAデータベースのアイコンを選択し、エージェントとアダプターがそれぞれ正しく登録されていることを確認してください。
    データベースのアイコンが表示されない場合は、Web IDEワークスペース設定でCloud Foundryの設定を確認してください。

    次に、Remote Sourceアイコンを右クリックして[Create]を選択します。

    参考 :  SAP Help to find more information about the ABAP Adapter remote source parameters.

     

     

    RFCストリーミングを使用する場合は、必ず streaming read を有効にしてください。

    RFCストリーミング機能を使用するには、ゲートウェイサーバー、ゲートウェイホスト、RFC宛先のパラメーターを設定する必要があります。

    リモートソースが起動して実行されると、Database Explorer にODPエクストラクターとリモートABAPテーブルが表示されます。

     

    replication taskの作成

    ここまででSAP ERPとSAP HANAデータベースの接続が完了します。これで仮想テーブルを介してSAP ERPに格納されるデータにアクセスが可能となり、replication taskを定義してSAP HANAにデータをレプリケートすることができるようになります。
    ここでは、ソースであるSAP ERP からリアルタイムでデータを複製する replication task を作成します。

    左端にあるアイコンから Web IDE developer パースペクティブに切り替えます。
    Workspaceフォルダ を右クリックし、[New]> [Project from Template]をクリックします。

     

     

    リストされるテンプレートのタイルから、SAP HANA database application を選択し、プロジェクトに名前を付けます(>Next)。任意のフィールドに記入し、 SAP HANAのバージョンを選択し、ウィザードを完了します。
    一連のウィザードで、新しいアプリケーション内にHANAデータベースモジュールを作成します。
    このデータベースモジュールは、後で build するときに HDIコンテナを作成するための設計時オブジェクトです。
    「コンテナ」は、それが他のデータベースから分離することを可能にします。前の手順で作成したリモートソースにアクセスするためには、リモートソースへのアクセスを許可する必要があります。
    SQLコマンド、SAP HANA Cockpit、または.hdbgrantsファイルを使用して、リモートソースへのアクセス権限を付与できます。
    ここでは、リモートソースへのアクセスを許可する役割 GEN_GRANTOR_ROLE と、ユーザー提供のサービス remote_system_grant_service を作成し、その役割をコンテナユーザに割り当てる hdbgrants ファイルを作成しました。
    この手順を利用して、他のHDIコンテナーを構築する際に、このhdbgrants をコピー&ペーストして利用することができます。

     

    ユーザー提供のサービスを.hdbgrantsファイルから呼び出すために、mta.yamlファイルに追加します。

     

    .hdbgrants ファイルを作成し、mta.yamlファイルの編集が完了したら、[db]モジュールアイコンを右クリックして build を選択します。 これにより、HDIコンテナが作成され、リモートソースにアクセスする権限が付与されます。

    [src]フォルダアイコンを右クリックして、「New」>「Replication Task」を選択します。

     

    replication taskを作成するために、最初にReplicationのためのリモートソースを選択します。
    前に作成したリモートソースを選択します。

     

    画面の右側にある「 + (Add Object)」をクリックして、複製するオブジェクトソースから選びます。
    ここでは、ODP エクストラクタ ZSDITEST004 を複製することにしています。 レプリケーションの動作、及びレプリケーション先のターゲットテーブルの名前を選択できます。Replication Behavior の種類と動作の内容は以下です。

     

    Option Description
    Initial load only リアルタイムレプリケーションなしで1回限りのデータロードを実行します。いつでも利用できます。
    Initial + Realtime 初期データロードを実行し、リアルタイムレプリケーションを有効にします。 テーブルおよび仮想テーブルで、CDCがサポートされている場合に使用できます。
    Realtime 初期データロードを実行せずにリアルタイムレプリケーションを有効にします。 テーブルおよび仮想テーブルで、CDCがサポートされている場合に使用できます。
    No data transfer データを転送せずにオブジェクト構造のみを複製します。 いつでも利用できます。
    Initial + realtime with structure 初期データロードを実行し、リアルタイムレプリケーションを有効にし、オブジェクトレベルの変更を追跡します。 CDCがサポートされている場合、およびテーブルに対して使用できます。
    Realtime only with structure 初期データロードを実行せずに、リアルタイムレプリケーションを有効にし、オブジェクトレベルの変更を追跡します。 CDCがサポートされている場合、およびテーブルに対して使用できます。

    このreplication taskは、SAP HANAに2つのテーブルを作成します。リモートオブジェクトの仮想テーブルと物理ターゲットテーブルです。 ERPシステムからデータをリアルタイムで複製する場合は、Replication Behavior に Initial + real time を設定します。

     

    ここまででreplication task を実行する準備ができました。タスクを実行する前に、オブジェクトを選択して画面の下部で変更を加えることにより、各レプリケーションオブジェクトの設定を編集できます。

    また、テーブルのパーティション設定、フィルタの指定、ターゲットテーブルのトランケートやドロップ、ロード処理の変更などのオプションの設定も可能です。 データのパーティショニングは、パフォーマンスを向上させ、メモリ使用量の管理に有効なため、最初に大きなデータセットをロードするときには設定を検討してください。

    Projectionのタブでは、列の追加、編集、または削除が可能です。

     

    Expression Editorを使用して式を作成し、複製中にデータを拡張したりフィルタリングすることができます。 式で使用するカラムを選択して、リストからカラム名をドラッグアンドドロップして、Filter Expressionのボックスに配置できます。 Functionsを選択してFilter Expressionの中の式を完成させます。

     

    最後に、replication task を実行する際に、最初にテーブルをドロップ/トランケートするかどうか、およびロード動作を選択できます。

    replication taskを保存し、そして再度 db module を buildします。

    これで、HDIコンテナ内に以下のオブジェクトが生成されます:

    • 仮想テーブル:指定された仮想テーブルスキーマで生成されます。 SAP HANA studioで仮想テーブルの内容を確認する事ができます。
    • Remote subscription:仮想テーブル用に選択されたスキーマで生成されます。 これは、リアルタイムレプリケーションを含むオプションが選択されたときに生成されます。
    • Task:ターゲットテーブルと同じスキーマで生成されます。
    • ターゲットテーブル:実行後にコンテンツが格納されるテーブル。
    • Procedure:ターゲットテーブルのスキーマで生成されるこのProcedureは、3つの機能を実行します。

    replication task の実行

    .reptask ファイルを右クリックして、「Run」>「Execute Reptask」を選択します。
    これにより、replication task の処理が実行され、初期データのロードが実行された後、リモートサブスクリプションが開始され、リアルタイムでデータがレプリケートされます。

     

     

    結果の確認

    左端のアイコンからデータベースエクスプローラーに切り替え、「+」 をクリックして新しいコンテナーを追加します。
    ここまでの手順で作成したコンテナを選択し、ディスプレイにリストさせる名前を選択します。
    表示するための名前を任意に設定できます。ここでは「replication」として、Name to Show in Displayに記入します。

    追加された「replication」コンテナを展開して作成されたテーブルと仮想テーブルを確認できます。仮想テーブル(アイコンに緑のAがついています)ではなく、作成されたテーブルをクリックし、右上にある「Open Data」ボタンをクリックして、データが正しく複製されていることを確認します。

     

     

    「Tasks」をクリックしてリモートサブスクリプションを開始するタスクを確認する事ができます。

     

    最後に、「Remote Subscription」を開くと、複製されたデータの件数と、最後のデータが転送されてからの時間を確認することができます。

     

    「Remote Subscription」を右クリックし、[Show Remote Subscription]を選択します。

     

    サブスクリプションの現在の状態を詳しく確認する事ができます。

     

    詳しくは monitoring data provisioning with SAP Web IDE. をご確認ください。

    以下のSQL文を実行する事で、傾向を測定できます。

     

    ALTER REMOTE SOURCE <remote_source_name> START LATENCY MONITORING <latency_ticket_name> [INTERVAL <interval_in_seconds>]

    上記のSQL文を実行する事でレイテンシの統計を1回または定期的に収集します。 収集結果を表示するモニタリングビューのためのラベルとなる latency ticket name を指定します。 次のSQL文でモニタリングビューの結果を確認できます。

     

    SELECT * From "SYS"."M_REMOTE_SOURCE_LATENCY_HISTORY"

     

    以上でデータのリアルタイムなレプリケーションが可能になったので、SAP HANAにあるデータでレポートや分析を実行することが可能になります。次のステップは、HANA Calculation viewを作成し、 SAP Analytics Cloud(SAC)に接続し、そしてSACのダッシュボードを作成することになります。

     


    Special thanks to Michio Tateishi (立石 道生)and Keerthi Arekapudi for their precious help.

    2 Comments
    You must be Logged on to comment or reply to a post.
    • ブログありがとうございます。

      二点質問させて頂きたいです。

      下記の記載がありましたが、リンク先の文を読むと、ゲートウェイサービスの設定=ACL設定+reginfoの設定と理解しましたが正しいでしょうか?

      また、reginfoは必須の設定でしょうか?「外部プログラム」とはDPエージェントのことでしょうか?

      よろしくお願いいたします。

      • ゲートウェイサービスを設定します。 (ECC Client and Gateway Service Configuration)
      • ゲートウェイに接続できるホストを制御するアクセスコントロールリスト (ACL) を設定します。 そのファイルには、次のような構文を指定します。
        <permit> <ip-address [/ mask]> [tracelevel] [#comment]
      • reginfoファイルを設定して、外部プログラムを登録する権限を制御します。
      • Liu様
        ご質問の件、回答いたします。
        >下記の記載がありましたが、リンク先の文を読むと、ゲートウェイサービスの設定=ACL設定+reginfoの設定と理解しましたが正しいでしょうか?
        はい、その御理解で正しいです。
        >また、reginfoは必須の設定でしょうか?「外部プログラム」とはDPエージェントのことでしょうか?
        Reginfoの設定は必要です。外部プログラムはDPエージェントの事になります。
        よろしくお願いいたします。