SAP ABAP SE38開発とOData開発の違いを徹底解説

はじめに

SAPシステムの開発には様々なアプローチがあります。その中でも特に重要なのが、従来型のSE38(ABAPプログラム)開発と、モダンなAPI指向のOData開発です。本記事では、両者の概念・構造・ユースケースの違いを整理し、どの場面でどちらを選ぶべきかを解説します。

アーキテクチャ比較図

以下の図は SE38 と OData それぞれの開発スタックを示しています。

SE38 / ABAP プログラム ABAP ロジック SELECT / LOOP / WRITE SAP GUI / Spool 社内ユーザー向け出力 DB テーブル直接アクセス 透過テーブル / ビュー 実行トランザクション SE38 / SA38 / SM37 OData サービス (SEGW) DPC / MPC クラス Entity / Association 定義 REST / JSON / XML 外部アプリ・Fiori 向け BOR / BAPI 経由アクセス 抽象化レイヤー HTTP エンドポイント /sap/opu/odata/... vs

SE38開発とは

SE38はSAPのABAPワークベンチにおけるプログラム開発トランザクションです。バックエンドロジックを直接ABAPコードで記述し、SAP GUIや帳票出力、バッチ処理などに使用されます。

SE38の主な特徴

  • 実行環境:SAP GUI(SAPログオンクライアント)上で動作
  • 出力方式:WRITE 文、ALV(ABAP List Viewer)、スプール出力
  • データアクセス:透過テーブルやビューへのOPEN SQL直接アクセス
  • 実行形式:トランザクション(SA38)、バックグラウンドジョブ(SM37)経由
  • 対象ユーザー:社内の業務担当者・ABAPエンジニア
REPORT zmy_report.

DATA: lt_mara TYPE TABLE OF mara,
      ls_mara TYPE mara.

SELECT matnr mtart mbrsh
  FROM mara
  INTO TABLE lt_mara
  WHERE mtart = 'FERT'.

LOOP AT lt_mara INTO ls_mara.
  WRITE: / ls_mara-matnr, ls_mara-mtart.
ENDLOOP.

SE38プログラムはSAPシステム内で完結しており、外部システムとの連携を前提としていません。業務ロジックが直接コードに埋め込まれるため、シンプルな帳票・バッチ処理には非常に適しています。

OData開発とは

OData(Open Data Protocol)は、RESTfulなAPIを定義するためのプロトコルです。SAPでは主にSEGW(SAP Gateway Service Builder)を使ってODataサービスを構築し、SAP FioriアプリやサードパーティのWebアプリケーションとのデータ連携を実現します。

OData開発の主な特徴

  • 実行環境:HTTP経由でブラウザ・モバイル・外部アプリからアクセス可能
  • 出力方式:JSON / XML 形式でデータを返却
  • データアクセス:DPC(Data Provider Class)を通じた抽象化レイヤー経由
  • 実行形式:HTTPエンドポイント(/sap/opu/odata/sap/サービス名/)
  • 対象ユーザー:Fioriアプリ・外部システム・API連携
METHOD zmy_service_dpc_ext=>materialset_get_entity.
  DATA: ls_mara TYPE mara,
        ls_entity TYPE zcl_zmy_service_mpc=>ts_material.

  READ TABLE it_key_tab
    WITH KEY name = 'Matnr'
    INTO DATA(ls_key).

  SELECT SINGLE matnr mtart
    FROM mara
    INTO CORRESPONDING FIELDS OF ls_mara
    WHERE matnr = ls_key-value.

  ls_entity-matnr = ls_mara-matnr.
  ls_entity-mtart = ls_mara-mtart.
  er_entity = ls_entity.
ENDMETHOD.

SE38とODataの比較

項目 SE38開発 OData開発
開発トランザクション SE38 / SE80 SEGW
実行環境 SAP GUI ブラウザ / 外部アプリ
通信プロトコル DIAG(SAPプロプライエタリ) HTTP / HTTPS
データ形式 内部テーブル / ALV JSON / XML / Atom
主な用途 帳票・バッチ・マスタ管理 Fiori・API連携・モバイル
テスト方法 F8(直接実行) /iwfnd/gw_client
認証方式 SAPログオン認証 Basic認証 / OAuth

どちらを選ぶべきか

SE38が適しているケース

  • 帳票出力:月次締め処理、在庫一覧など印刷・スプール出力が必要な場合
  • バッチ処理:夜間バッチ、データ移行、大量データ処理
  • マスタメンテナンス:社内ユーザーがSAP GUIから直接操作する場合
  • システム管理ツール:ログ確認、エラーモニタリングなどの運用ツール

ODataが適しているケース

  • SAP Fiori アプリ開発:モバイル対応のモダンなUIを提供する場合
  • 外部システム連携:ERP以外のシステムとのAPI連携
  • マイクロサービス化:機能を小さなAPIとして公開・再利用する場合
  • リアルタイムデータ取得:Webブラウザからリアルタイムにデータを表示する場合

まとめ

SE38はSAP内部の業務処理を効率よく実装するための手段であり、ODataはSAPをオープンなエコシステムの一部として機能させるための手段です。どちらが優れているというわけではなく、システムの要件・ユーザーの環境・連携先に応じて適切な方法を選択することが、良いSAP開発エンジニアの条件と言えるでしょう。

この記事はSAP NetWeaver 7.5 / S/4HANA 2022環境を前提としています。バージョンによって一部UIや手順が異なる場合があります。