Amazon Web Services ブログ

AWS SDK for SAP ABAP で請求書処理を自動化

はじめに:なぜお客様は 高度な文書処理(IDP)を導入するのでしょうか?

企業は日々、大量の構造化・非構造化データを扱っています。請求書処理、契約書管理、財務報告などは、企業が大量の文書を効率的に処理する必要があるほんの一例にすぎません。このような文書を手作業で処理するのは、単調でミスが起こりやすいものです。そのため、企業は文書処理のワークフローを自動化する方法を模索しています。より良い文書処理は、より正確な収集、キャプチャ・コストの削減、電子的な情報の保持と呼び出しにつながります。

当社のお客様の多くは、ビジネスクリティカルな SAP ワークロードを AWS 上で実行しており、SAP アプリケーションのカスタマイズを減らしながら、IDP ワークフローを構築する方法を常に模索しています。SAP アプリケーションを AI/ML を搭載した AWS サービスと統合し、ビジネス・ワークフローを近代化・刷新してコストを大幅に削減し、俊敏性を高め、生産性を向上させる、よりシンプルな方法を模索しています。AWS サービスはオープンなアプリケーション・プログラミング・インターフェース(API)による統合をサポートしていますが、お客様はこれらの API を利用するために複雑な ABAP プログラムを開発することを望んでいません。顧客は、SAP モジュール内でこれらの API を利用するために、よりシンプルな抽象化とアクセスパターンを求めています。

お客様からのフィードバックに基づき、私たちは最近、AWS SDK for SAP ABAP の一般提供を発表しました。これにより、顧客はわずか数行のコードで SAP アプリケーションを 200 を超える AWS サービスに接続できるようになります。これにより、顧客は複雑なカスタマイズやポイント・ツー・ポイントの統合、関連するメンテナンス・コストの必要性がなくなります。

このブログでは、AWS SDK for SAP ABAP を使用して、Amazon TextractAmazon TranslateAmazon ComprehendAmazon SNS などの AI/ML を搭載した AWS サービスと SAP を組み合わせ、ベンダーから受け取った請求書を自動的に処理して SAP に転記する方法を説明します。このソリューションは、PDF、文書、画像などのフォーマットをサポートしています。

高度な文書処理(IDP)ワークフローの作成

AWS SDK for SAP ABAP を使用するのは簡単です。AWS SDK for SAP ABAP をインストールするには、SDK をここからダウンロードし、SAP 移送管理システムを使用して SAP アプリケーションスタックにインストールします。その他の詳細については、Getting Started with the AWS SDK for SAP ABAP Blog をご参照ください。

AWS SDK for SAP ABAP は、認証、データフォーマット、パフォーマンス、暗号化などの複雑な機能を抽象化し、ABAP 開発者に使いやすい機能を提供します。SDK の API リファレンスガイドでは、AWS SDK for SAP ABAP を使用して各サービスにアクセスする方法を説明しています。

前提条件

実装の詳細に入る前に、まずこのソリューションの前提条件を見てみましょう:

  1. S3 バケット、SNS トピックを作成・管理し、Amazon Textract、Amazon Translate、Amazon Comprehend サービスにアクセスするための適切な IAM 権限を持つ AWS アカウント
  2. SAP NetWeaver バージョン 7.40 以上の SAP ERP / S/4HANA システム
  3. AWS SDK for SAP ABAP が SAP ERP または S/4HANA システムにインストールされている。AWS SDK for SAP ABAP を使用した SAP システムのインストールと設定方法については、こちらのガイドを参照してください。
  4. SAP ABAP プログラミングの知識

請求書処理ワークフロー概要

多くの企業はサプライヤーから大量の請求書を受け取りますが、手作業で処理するには時間がかかり、エラーが発生しやすいプロセスです。AWS SDK for SAP ABAP と Amazon Textract を使用することで、企業は請求書処理ワークフローを SAP S/4HANA や SAP ECC などの既存の SAP ERP ソリューションとシームレスに統合することができます。これにより、企業は買掛/売掛プロセスを合理化し、財務業務の全体的な効率を向上させることができます。

請求書文書処理ワークフローを実装するには、以下のアーキテクチャを活用します。

  • サプライヤーから PDF 形式で受け取った請求書類は、まず AWS SDK for SAP ABAP を活用して AWS サービスとネイティブにやり取りするカスタム ABAP アプリケーションを使用して、Amazon S3 バケットにアップロードされます。その後、カスタム ABAP アプリケーションがドキュメントの処理をトリガーします。
  • カスタム ABAP アプリケーションは、AWS SDK for SAP ABAP を使用して Amazon Textract API を呼び出し、ドキュメントからデータを抽出します。
  • その後、抽出されたデータは Amazon Translate に送られ、ドキュメントの説明をターゲット言語に翻訳します。言語検出には、Amazon Translate がターゲット言語に翻訳する前に、ソース言語を検出するために Amazon Comprehend が使用されています。
  • 抽出された情報を使用して、カスタム ABAP アプリケーションは SAP ERP の標準関数を使用して請求書の検証を実行し、SAP に請求書ドキュメントをポストします。
  • プロセス中にエラーが見つかった場合、アプリケーションは Amazon SNS API を呼び出して自動通知メールをトリガーします。
  • また、オプションで AWS Step functions を使用して承認ワークフローを開始し、レビュープロセスや分散アプリケーションを含むオーケストレーションをトリガーできます。

以下は、IDP のための AWS SDK for SAP ABAP と Amazon Textract の使い方を説明するコードスニペットです。ソリューション全体のサンプルコードを取得するには、こちらの git repo を参照してください。

まず、AWS SDK For SAP ABAP を使用して S3 にファイルをアップロードする方法を見てみましょう。

*Create session object
Data(lo_session) = /aws1/cl_rt_session_aws=>create( Iv_profile_id = co_profile ).
*Create S3 client
Data(lo_s3) = /aws1/cl_s3_factory=>create( lo_session ).
*Perform action – upload to bucket
TRY.
lo_s3->putobject( iv_bucket = p_bucket
                  iv_key    = p_key
                  iv_body   = lv_xstring ). 
CATCH /aws1/cx_s3_nosuchbucket.
* Handle exceptions
ENDTRY

次に、AWS SDK for SAP ABAP を使用して Amazon Textract API を呼び出す方法を見てみましょう。IDP ワークフローで Amazon Textract を使用する方法を説明する前に、サービスがどのように文書を処理するかを理解することが重要です。Textract は、高度な ML アルゴリズムを使用して、文書内のテキストブロック、テーブル、フォームを検出し、分析します。

*Create Textract client
  Data(lo_textract) = /aws1/cl_tex_factory=>create(lo_session ).
*S3 object 
  DATA(lo_s3object) = NEW /aws1/cl_texs3object( iv_bucket = p_bucket 
                                                iv_name   = p_key  ).                                                        
*Document location 
DATA(lo_documentlocation) = NEW /aws1/cl_texdocumentlocation( io_s3object = lo_s3object ).
TRY.
Data(lv_jobid) = lo_textract->startdocumentanalysis(
         EXPORTING io_documentlocation  =  lo_documentlocation
                   it_featuretypes      =  lt_featuretypes ).
CATCH  /aws1/cx_rt_technical_generic.
* Handle exceptions
ENDTRY.

Textract は文書をブロック単位で処理し、各ブロックはテキストを含む文書のセクションを表します。例えば、ブロックはテキストの段落、見出し、テーブルのセルを表します。各ブロックはテキスト、位置、サイズ、その他の属性について分析される。Textract はまた、各ブロックの信頼スコアを提供し、ブロックが有効なテキストを含む可能性を示します。

*Process Document blocks
Data(lt_blocks) = lo_textract->getdocumentanalysis( iv_jobid = pv_jobid )->get_blocks( ).

ドキュメントからデータを抽出したら、次のコードを使って Amazon Translate に翻訳を依頼します:

*Create Translate client 
DATA(lo_xl8)     = /aws1/cl_xl8_factory=>create( lo_session ).
*Translate text
  CALL METHOD lo_xl8->translatetext
    EXPORTING
      iv_text               = pv_desc
      iv_sourcelanguagecode = 'auto'    " will use comprehend to do lang detection
      iv_targetlanguagecode = 'de'
    RECEIVING
      oo_output             = DATA(lo_output).

DATA(lv_trans_desc) = lo_output->get_translatedtext( ).

請求書投稿が成功したことを通知したり、途中で例外が発生したことを通知したりするために、SNS に公開することができます。

* Create SNS client
DATA(lo_sns) = /aws1/cl_sns_factory=>create( lo_session ).
* Publish messaage
lo_sns->publish(
            iv_topicarn               =  lv_arn
            iv_message                = lv_msg
            iv_subject                 = lv_sub
        ).

最後に、BAPI_ACC_DOCUMENT_POST などの標準的な SAP API を使用して、以下のように請求書ドキュメントから抽出した情報を処理し、SAP にベンダー請求書トランザクションをポストします。以下の例では、抽出された請求書番号が、会計文書のヘッダーセクションの参照文書番号にどのようにマッピングされるか、また請求書の他のすべての詳細が、翻訳されたテキストを含め、SAP のベンダー請求書トランザクションの関連フィールドにどのようにマッピングされるかがわかります。

AWS SDK for ABAP と Amazon Textract for IDP を使用する利点を見てみましょう:

  1. 統合: AWS ABAP SDKは、SAP システムと AWS サービスとのシームレスなネイティブ統合を提供し、既存の SAP ランドスケープに大きな変更を加えることなく、ビジネス変革に特化した AWS サービスを活用できます。
  2. 高速処理: Amazon Textract は、大量のドキュメントを迅速かつ正確に処理し、手作業と処理時間を削減します。大規模なドキュメントを非同期で処理できるため、スケーラビリティとパフォーマンスが向上します。
  3. 精度向上: Amazon Textract は、機械学習アルゴリズムを使用して文書からデータを抽出するため、精度が向上し、エラーが減少します。
  4. 効率性向上: 自動化された文書処理ワークフローはリソースを解放し、全体的なコストと運用効率を改善します。
  5. セキュリティ: AWS クラウドは、機密データの保存と処理にセキュアな環境を提供し、データのプライバシーと業界規制へのコンプライアンスを保証します。

全体として、SAP のビジネス変革に AWS ABAP SDK を使用することで、コストを削減しながら効率性、正確性、セキュリティを向上させることができます。

概要

AWS SDK for SAP ABAP は、ABAP 開発者が SAP ABAP 言語を使用してネイティブに AWS サービスのパワーを活用することで、ビジネスプロセスを拡張し、変換することを容易にします。SDK は、SAPとAWS サービス間の複雑な統合を手作業で作成する必要性を排除することで、接続性、セキュリティ、相互運用性のためのデータフォーマット、ポイントツーポイント統合の必要性など、すべてのアーキテクチャ上の複雑性を簡素化します。この機能により、200 を超える AWS サービスと SAP を統合する道が開かれます。AWS SDK for SAP ABAP は、ABAP ビルダーコミュニティと AWS サービス間の長年のギャップを埋めるものです。

SDK を ABAP 環境にインストールする方法については、Getting Started Blog をご覧ください。

翻訳は Partner SA 松本が担当しました。原文はこちらです。