移送のトラブルを防ぐための基礎知識
INDEX LINK
はじめに
SAP ERPの開発・運用全般に関わるタスクとして「移送」があります。
移送はSAP ERPをしっかり動かし、メンテナンスするために欠かせない作業ですが、非常にミスが発生しやすい領域でもあります。
そもそも移送システムは、本番機の停止状態を可能な限り短くしつつ、最新の改良部分をリアルタイムに反映させられることから、かなり優れた仕組みです。
また、SAP関連のプロジェクトに携わったことがあるならば、移送に触れたことがない方のほうが少ないほどポピュラーな機能です。
では、なぜ移送関連作業でミスが多発するのでしょうか。今回は移送関連作業の基礎と、よくあるトラブルを紹介します。
1.移送依頼の基礎をおさらい
まず、SAP ERPにおける移送依頼取得からリリース(上位環境へ移送)までの流れを簡単におさらいしておきましょう。
なお、ここで示す手順はアプリ側からの視点であり、インフラ(ベーシス)の視点ではないことをご了承ください。
1-1.新規移送依頼の作成(移送依頼番号の取得)
移送依頼番号の取得は、SAPシステムに変更を加えた場合に、半自動的に行われます。
SAPERPの実機を触った方ならばご存じかと思いますが、ほとんどの変更に対して移送依頼番号の取得が行われます。
これは、既存の情報資源のどの部分にどういった変更があったかかを特定するためであり、基幹システムとしてのSAP ERPの厳格さ・精密さを表していると思います。
さて、具体的にどういった変更に対して移送依頼が取得されるかですが、概ね以下のとおりです。
・既存のプログラムに何らかの変更を加えた場合
・アドオンテーブルに関する変更(構造、ドメイン、データエレメントの変更など)および検索ヘルプの変更
・プログラム本体、汎用モジュール、Includeプログラム、Exitなどの作成や変更
基本的にこれらの変更は、SAP ERP側から自動的に移送依頼番号の発行画面が表示され、それに従って作業を進めます。
ですから、移送依頼を取得し忘れることはないでしょう。
一方、気を付けなければいけないのが「バリアント」に関する移送依頼です。
バリアントは、ただ作成しただけでは移送依頼番号が発行されません。
SE38から作成したバリアントを照会し、「ユーティリティ→移送依頼」の順で任意の移送依頼番号に紐づける必要があります。
1-2.依存関係の整理
移送依頼番号が増えてくると、依存関係の管理や適用順序の順番などを管理する必要がでてきます。
まず依存関係についてですが、SAP ERPでは移送対象オブジェクトの間に依存関係が発生するため、これらの紐づけと整理を行ってエラーが起こらないようにします。
例えば、アドオンプログラム/テーブルを新規作成し、プログラムがテーブルを参照しながら処理を進めるような作りになっている場合は、それぞれの移送依頼に依存関係が発生します。
同じようにアドオンテーブルの構造やエレメントにも依存関係が発生しているので、これらも併せて整理する必要があるでしょう。
大規模な開発や修正になるほど依存関係は増えていきますので、移送前にしっかりと取りまとめておくことが大切です。
1-3.移送適用の順序を管理する
アドオンで新しい機能を実装する場合には、プログラム本体だけではなく、テーブルや汎用モジュール、バリアント、トランザクションコードなどさまざまなオブジェクトを移送しますよね。
この時重要になるのが、移送順序の管理です。SAP ERPでは、移送オブジェクトによって適用順序が決められているため、移送管理票にしっかりと順番がわかるように記述をしておかなくてはなりません。
ちなみに一般的なSAP ERPシステムの場合、次のような移送順序になります。
・パッケージ
・テーブルのドメインやデータエレメント、検索ヘルプといったベースオブジェクト
・アドオンテーブル本体及び構造
・データ型、ビュー、ロックオブジェクトなど
・メッセージ本体とメッセージクラス
・プログラム本体、汎用モジュール、Includeプログラム、Exitなど
・バリアント
・トランザクションコード
1-4.移送依頼のリリース
ここまでくれば後はリリースするだけです。移送元の環境から移送依頼番号ごとに「SE01」でリリース作業を行いましょう。
リリースした移送依頼番号は「STMS」で個別に適用(インポート)していけば、アプリ側の移送作業は完了します。移送ステータスが緑になって正常終了していれば問題ありません。
2.移送関連作業でよくあるトラブル
冒頭でも述べたように、SAP ERPにおける移送は小さなトラブルが頻出する領域です。
オブジェクトの作り方やプログラム本体に問題がなければクリティカルなエラーが発生することはないのですが、移送で足踏みが発生すると顧客側の心象が悪化します。
また、原因調査や報告といった無駄なタスクが増えてしまいます。
そこで、トラブルが起こる原因を絞り込んで、対策しておくことが大切です。
SAP ERPにおける移送関連のトラブルが起こる原因としては、
・「移送依頼の取得忘れ」
・「移送順番や依存関係の間違い」
・「クライアント依存/非依存に関する情報の不足」
が大半を占めます。
例えば、以下のような事例です。
2-1.手動で移送依頼を作成し忘れている
代表的な例がバリアントですね。
前述のようにバリアントは、自動で移送依頼番号が発行されませんので、手動で明示的に作成する必要があります。
バリアントを新規で作成したにも関わらず手動での移送依頼作成を忘れていると、後日、本番環境にバリアントが存在していないことが発覚し、指定した条件でのプログラム実行ができないなどのトラブルに発展します。
2-2.順番違い、依存関係によるエラー
アドオンプログラム改修と関連テーブルの項目追加を行うような場合、テーブルよりも先にプログラムを移送してしまうと、インポート時にエラーが出ることがあります。
テーブル関連は移送対象オブジェクトがかなり多くなるため、エラーやワーニングが山のように出て混乱を招く可能性も否定できません。
上で述べたように、移送順をしっかり整理しておきたいところです。
また、この種のトラブルを防ぐために、順序や依存関係を気にせずに移送作業を行える「マージ移送」も活用していきましょう。
マージ移送は、トランザクションコード「SE01」や「SE03」から使える移送依頼の結合を活用した方法です。
SE01では2つの移送依頼を、SE03ではそれ以上の移送依頼をひとつにまとめることができます。
複数の移送依頼をひとつにまとめると、オブジェクトごとの移送順や依存関係を意識せずとも、正常に移送依頼が適用されます。(ただし、必要なオブジェクトを含め忘れてしまうとエラーが発生します。)
また、マージ移送は後述する「クライアント依存/非依存」のオブジェクトを混在させることができません。依存と非依存でしっかり分けつつ、マージ移送を活用していきましょう。
2-3.紙ベースの管理が原因の承認忘れ
最近はほとんど耳にしませんが、未だに移送管理を紙ベースの管理表で行っている場合に発生しやすいトラブルです。
移送すべきオブジェクトの数が多く、紙ベースでの管理が追い付いていないために、本来承認すべき移送依頼が漏れていた(リリース自体されていなかった)という事態が起こりえます。
2-4.クライアント依存・非依存の混同による反映漏れ
移送対象オブジェクトがクライアント依存・非依存のどちらかに属するかを理解しておらず、移送依頼が正確に反映(インポート)されていなかったというケースです。
クライアント依存の移送依頼は、該当する環境に属する全てのクライアントでインポート作業を行う必要があります。
例えば、開発機のクライアント330で取得したクライアント依存の移送依頼は、テスト機の330・340・350全てで個別にインポートしなければ変更が反映されません。
一方、非依存の移送依頼は、テスト機の330のみにインポートすれば340および350にも反映されます。
この違いをオブジェクトごとに理解しておかないと、移送適用で問題が発生することになります。オブジェクトごとの依存/非依存については、以下のように覚えておくと良いでしょう。
・プログラムは非依存
・カスタマイズは依存(非依存もあり)
・テーブルは依存、非依存の両方あり
プログラムについてはそれほど心配する必要はないですが、カスタマイズやテーブルについては要確認です。
まず、カスタマイズについてはトランザクションコード「SPRO」から追加情報→テクニカルデータ→クライアント依存で設定を行っていれば、依存/非依存の見分けがつきます。
カスタマイズで移送依頼を取得する際は、この設定を忘れずに行うようにしましょう。
また、テーブルについては項目の一行目「MANDT」を挿入するとクライアント依存になります。もし迷った場合には、一行目にMANDTがあるかどうかで判断すると良いでしょう。
3.移送作業が自動化されていないプロジェクトでは注意を
ここまで紹介したようなお話は、近年のプロジェクトでは徐々に減ってきていると思います。
なぜなら、ベンダー各社が移送管理のワークフローツールを提供したり、プロジェクト独自で移送の自動化を進めたりしているからです。
こうしたツールでは、ABAPで移送依頼のマージやインポート順序の指定、移送クライアントの選択などを組み込むことができます。
しかし、コストの関係上、移送関連作業が手動のままであるプロジェクトも少なくありません。
手動での移送管理では「移送依頼の取得忘れ」「移送順番や依存関係の間違い」「クライアント依存/非依存に関する情報の不足」に注意して、作業を進めるようにしましょう。