はじめに
SAPを触ったことがないのにSAPの案件に配属された。なかなか、自分のやりたいことが出来ず辛い状況ではあるがSAPの知識は今後役に立つと思っているので頑張って勉強していこうと思っている。SAPには標準で移送と呼ばれる機能があるらしく、それについて調べてこちらでまとめようと思っています。
SAPシステム移送とは?
移送とは、SAPシステムにおけるプログラム開発やカスタマイズ設定などの変更を、ある環境から別の環境へ安全かつ確実に反映させるための非常に重要な仕組みです。そのまんまですね~
標準の移送を使用する利点は下記ですかね。
- 品質の担保とシステムの一貫性維持
- 変更履歴の厳密な管理と追跡
- 業務の効率化と自動化
品質の担保とシステムの一貫性維持
SAPの移送では移送依頼という箱みたいなところに開発/検証環境で作成や変更したオブジェクトを紐づけて移送することで移送するものを間違えることなく移送することが出来ます。
変更履歴の厳密な管理と追跡
誰が/いつ/何を?変更したのかを管理することができる。後から変更内容を確認したり、原因を調査することができる。
業務の効率化と自動化
SAPのTMS(移送管理システム)を使用して移送することができる。TMSでは明日の21時に移送依頼〇〇番を移送して!と予約しておくと勝手にやってくれるらしいです。非常に便利ですね。
クライアント依存と非依存
移送するにあたってクライアント依存/非依存という概念が大事になってくるのでその辺を説明していきます。
各環境にクライアントが複数あります。
そこでClient100で開発作業をしていて、Client100での変更が他のクライアント(Client110,Client120)にも変更が適用されるオブジェクトをクライアント非依存オブジェクトと呼びます。
一方、Client100で開発作業をしていて、Client100での変更が他のクライアント(Client110,Client120)に変更が適用されないオブジェクトをクライアント依存オブジェクトと呼びます。
クライアント依存オブジェクト(Client-Dependent Objects)
カテゴリ | 主要オブジェクト |
---|---|
マスタデータ | 得意先・仕入先・品目・G/L勘定マスタ(KNA1, LFA1, MARA, SKA1) |
組織単位 | 会社コード・販売組織・購買組織・プラント(T001, TVKO, T024E, T001W) |
トランザクションデータ | 販売伝票・購買伝票・会計伝票・在庫データ(VBAK, EKKO, BKPF, MARD) |
ユーザ・権限 | ユーザマスタ・ロール・権限オブジェクト(USR02, AGR_1251, UST04) |
業務設定 | 番号範囲・通貨レート・価格設定(TNRO, TCURR, KONP) |
**クライアント非依存オブジェクト(Client-Independent Objects)
**
カテゴリ | 主要オブジェクト |
---|---|
開発オブジェクト | プログラム・Function・クラス・インクルード(TRDIR, TFDIR, SEOCLASS, REPOSRC) |
データ構造定義 | テーブル・ビュー・ドメイン・データエレメント(DD02L, DD25L, DD01L, DD04L) |
システム設定 | システムパラメータ・RFCコネクション・プリンタ(TPFYPROPTY, RFCDES, TSP03D) |
基準データ | 国コード・通貨コード・言語コード(T005, TCURC, T002) |
カスタマイジング | IMG設定(システム共通部分)(DD07L, TTREE, TSTC) |
オブジェクトがクライアント依存か非依存かを見分ける方法です。
技術的な見分け方(最も確実な方法)
トランザクションコード SE11(ABAPディクショナリ) でテーブル定義を確認する方法です。
クライアント依存の場合:
テーブルの項目一覧に、クライアントを識別するための MANDT という項目が存在します。この項目があるテーブルに保存されるデータは、すべてクライアント依存です。
クライアント非依存の場合:
テーブルの項目一覧に MANDT が存在しません。
具体例
- KNA1テーブル(顧客マスタ):顧客マスタの一般データが格納される「KNA1」にはMANDT項目があるため、クライアント依存です
- REPOSRCテーブル(ABAPプログラム):ABAPプログラムのソースコードが格納される「REPOSRC」にはMANDT項目がないため、クライアント非依存です
確認手順
- SE11を実行
- 調べたいテーブル名を入力
- 表示をクリック
- 項目一覧でMANDTの有無を確認
具体的な手順
クライアント依存・非依存オブジェクトの移送方法
クライアント依存オブジェクト
- 特徴: 各クライアントで設定された内容に依存します(例:環境設定、マスタデータなど)。
- 移送の要否: クライアント間の移送が必要です。
- 移送方法: トランザクションコード SCC1 を使用します。
- 注意点: 反映したいクライアント以外に影響を及ぼさないよう注意が必要です。
クライアント非依存オブジェクト
- 特徴: 全クライアントで共通する設定です(例:テーブル定義、プログラムなど)。
- 移送の要否: クライアント間の移送は不要です。
- 自動反映: 同一インスタンス内の全クライアントに自動的に反映されます。
- 注意点: 開発時に他のクライアントへの影響を考慮する必要があります。
移送手順の詳細
1. 移送依頼の作成
基本的な流れ
- 開発環境でオブジェクトを保存します。
- 「移送依頼」のプロンプトが自動で表示されます。
- オブジェクトタイプに応じて依頼種別を選択します。
- 「依頼登録」ボタンで詳細設定画面を開き、移送対象などを設定します。
- 移送依頼番号が自動採番され、作成ユーザーが紐づけられます。
依頼種別の選択
- カスタマイジング依頼: クライアント依存オブジェクト用です。
- ワークベンチ依頼: クライアント非依存オブジェクト用です。
2. リリース
- 使用するトランザクションコード: SE01(移送オーガナイザ)
手順
- SE01で移送依頼一覧を確認します。
- 移送対象の移送依頼番号を選択します。
- 下位のタスク(オブジェクト)から順番にリリースします。
- リリース操作は、「リリース」ボタンをクリックするか、右クリックから「選択」→「リリース」を選択して行います。
重要事項
- リリース後は変更不可となります。
- 最終保存された状態で移送されます。
- リリース後は自動的にエクスポートが実行されます。
3. インポート
- 使用するトランザクションコード: STMS(移送管理システム)
手順
- 移送先環境で移送ファイルを適切なフォルダ(例:
\usr\sap\trans\cofiles\
)に配置します。 - STMSを使用して移送管理画面を開き、インポートキューを照会します。
- 該当の移送依頼番号を選択し、「追加」でインポートキューに追加します。
- インポートを実行します。
- 緑のチェックマークが表示されたら完了です。
最後に
クライアント依存とかクライアント非依存という概念は今回初めて知りました。慣れない概念で最初は戸惑うかもしれませんが、日々の業務で数をこなせば難しいことではないので脳に定着していくと思います。本記事が皆様のお役に立てるようになれば嬉しく思います。