今さら聞けないSAP移送の基本:手順・仕組み・エラー時の調べ方を完全網羅

SAPテック

はじめに|「移送」を制する者はプロジェクトを制す

SAPコンサルタントとして現場に入り、最初に突き当たる大きな壁。それが**「移送(Transport Management)」**です。

開発機(DEV)で作った設定やプログラムを、検証機(QAS)、そして本番機(PRD)へと届けるこの作業。一見すると「ボタン操作」に見えますが、その実態はプロジェクトの命運を握る「大動脈」です。

  • 「移送の順番を間違えて、本番環境の機能が動かなくなった」
  • 「リリースしたはずなのに、検証機に反映されていない」
  • 「リターンコード『8』が出たけれど、何を見ていいかさっぱり分からない」

こうしたトラブルは、SAPプロジェクトでは日常茶飯事です。しかし、移送の仕組みを根本から理解していれば、これらは未然に防げます。今回は、概念から実務の手順、エラーの調べ方まで、**「現場でマニュアルとして使える」**内容を凝縮してお届けします。


そもそも「移送」とは?(仕組みの理解)

SAPにおける移送とは、簡単に言えば**「異なるシステム間でのデータの同期」**です。

3システムランドスケープの原則

通常、SAPプロジェクトは以下の3つのシステムで構成されます。

  1. 開発機(DEV): 設定や開発を行う場所。
  2. 検証機(QAS): 業務シナリオに沿ったテストを行う場所。
  3. 本番機(PRD): 実際のビジネスが動く場所。

移送依頼(Transport Request)の正体

移送を行う際、変更内容は**「移送依頼」**という箱に詰め込まれます。依頼には大きく分けて2種類あります。

  • カスタマイズ依頼(Customizing Request): クライアント依存(特定のクライアントのみに影響)。例:会社コードの設定、販売組織の定義など。
  • ワークベンチ依頼(Workbench Request): クライアント非依存(全クライアントに影響)。例:ABAPプログラム、テーブル定義など。

移送依頼の取得方法:2つのパターン

移送依頼を手に入れるには、**「自分で先に作る」方法と、「保存時に自動で聞かれる」**方法の2つがあります。

ポップアップによる自動取得(実務で最も多いパターン)

カスタマイズ(SPRO)やアドオン開発(SE80/SE38等)で「保存(Save)」ボタンを押した際、システムが自動的に**「移送依頼のプロンプト」**を表示します。

  • 既存の依頼を選択: すでに自分が持っている未リリースの依頼を選択します。
  • 新規作成: その場で新しい依頼番号を発行することも可能です。

ここで重要!「パッケージ」と「$TMP」の概念

オブジェクト作成時に必ず聞かれるのが**「パッケージ(Package)」**です。

  • 移送対象パッケージ(Z…など): 移送を前提としたパッケージ。これを選択すると、必ず移送依頼が求められます。
  • ローカルオブジェクト($TMP): 自分の開発機内だけで完結するオブジェクト。これを選択すると移送依頼は聞かれませんが、他のシステム(検証・本番)へ運ぶことはできません。

失敗談あるある

「検証機にプログラムがない!」と騒いでいたら、実は**$TMP(ローカルオブジェクト)**で保存していて、移送の箱にすら入っていなかった……というのは新人が必ず通る道です。

手動による事前作成(SE10 / SE09 / SE01)

大規模な要件や、複数のメンバーで一つの箱を共有したい場合は、あらかじめトランザクションコード SE10 で依頼を作っておきます。

  • 階層構造: 移送依頼は「依頼(親)」と「タスク(子)」の2階層です。
    • 依頼(Request): コンテナそのもの。
    • タスク(Task): 誰がどの作業をしたかの記録。

移送の方法:リリース(開発環境での作業)

開発・設定が完了したら、箱に封をして搬出できる状態にする**「リリース」**を行います。

  1. タスク(子)のリリース: まず作業者レベルのタスクをリリースします。
  2. 依頼(親)のリリース: すべてのタスク完了後、親の依頼をリリースします。

リリースが完了すると、OSレベルに「データファイル」と「制御ファイル」が生成されます。一度リリースした依頼の中身は二度と変更できないため、修正が必要な場合は新しい依頼を作り直す必要があります。


移送の方法:インポート(検証・本番環境での作業)

リリースされた依頼を受け取り側のシステムに取り込むのが**「インポート」**です。

STMS(移送管理システム)の操作

通常は STMS から行います。

  1. インポートキューの確認: 受け取り側システムにリリース済みの依頼が並んでいるか確認。
  2. インポートの実行: トラックアイコン(単一インポート)をクリックして実行。

インポート順序の「鉄則」

移送で最も多い事故は、**「順序の追い越し」**です。

  • 正しい: テーブルA(依頼1)を先にインポート → プログラムB(依頼2)をインポート。
  • 間違い: プログラムBを先にインポート → テーブルがないためエラー(RC=8)に。

リターンコード(Return Code)の読み解き方

インポート後の「通信簿」であるリターンコードの意味を正しく理解しましょう。

コード意味状態アクション
0成功完璧です。特になし。
4警告反映はされたが軽微な不一致あり。ログを確認し、実害がなければ静観。
8エラー反映失敗。 オブジェクトが無効。原因調査と修正、再移送が必須。
12致命的システム障害や重大な不整合。Basis(基盤担当)に即連絡。

RC=8 の主な原因

  • 有効化漏れ: 開発機で「保存」だけで「有効化(Activate)」し忘れている。
  • 依存関係の欠落: 必要な他のオブジェクトが同じ依頼に入っていない。

移送でよくあるトラブル

「追い越し移送」によるデグレ(先祖返り)

古い依頼を後からインポートしてしまい、最新の設定を上書きしてしまう現象です。リリース順(番号順)にインポートするのが鉄則です。

有効化の「ドミノ倒し」

一つのテーブル変更が、それに関連する何十個ものプログラムをエラーにするケース。移送前に影響範囲を特定する癖をつけましょう。


移送を調べるときの調査術

  1. 移送ログの詳細確認(SE01): どのステップ(辞書有効化、メインインポート等)でコケたかを見極めます。
  2. テーブル E070 / E071 の活用:
    • E070: 依頼のヘッダ情報(誰がいつリリースしたか)。
    • E071: 依頼の明細情報。**「このオブジェクト、どの依頼に入っている?」**を逆引きする際に最強の武器になります。
  3. STMS インポート履歴: 過去のインポート順を追い、デグレの原因を特定します。

現場で使える「移送チェックリスト」

【リリース前:開発者用】

  • [ ] オブジェクトはすべて**「有効(Active)」**か?
  • [ ] パッケージは正しく設定されているか($TMPになっていないか)?
  • [ ] 必要なオブジェクトがすべて依頼に含まれているか?
  • [ ] 構文チェックでエラーが出ないか?

【インポート前:担当者用】

  • [ ] インポート順序は正しいか?
  • [ ] 先行する「前提移送」は漏れていないか?
  • [ ] インポート後の動作確認手順は準備できているか?
  • [ ] 万が一のエラー時の切り戻し方針は決まっているか?

おわりに|「確実な移送」がシステムの信頼を作る

移送は、単なる事務作業ではありません。あなたが苦労して作り上げた「ビジネスの仕組み」を、安全にユーザーへ届けるための**「ラストワンマイル」**です。

リターンコード「0」が並ぶ画面は、コンサルタントにとって最も安心できる景色です。この基本手順を徹底し、トラブルによる深夜残業をゼロにしていきましょう。

コメント

タイトルとURLをコピーしました