この記事を読むメリット
- テーブル/ビュー更新の前提知識を理解することができます
- T-CODE:SM30を使用したテーブル/ビューの更新方法が習得できます
カスタムテーブルや更新ビューを作成したあと、実際に業務ユーザや開発者がデータを登録・修正するときによく使うのが、T-CODE:SM30です。
T-CODE:SE54でテーブルメンテナンスジェネレータを生成しておけば、個別に専用画面を開発しなくても、SAP標準のメンテナンス画面から一覧表示・新規登録・変更・削除を行うことができます。
本記事では、SM30とはどのようなトランザクションなのか、どのような前提で利用できるのかを整理したうえで、基本的な操作方法と実務上の注意点をわかりやすく解説します。SE54の記事とあわせて読むことで、更新ビューの作成から実際の運用まで一連の流れが理解できるはずです。
この記事のポイント
概要
T-CODE:SM30 は、テーブルまたはビューのメンテナンスを行うための標準トランザクションです。
単に「テーブルの中身を直接触る画面」という理解でも大きくは外れていませんが、正確には、テーブルメンテナンスジェネレータ(TMG)によって生成されたメンテナンス画面を呼び出して操作するための入口です。
そのため、SM30 が使える前提としては、対象のテーブルまたはビューに対して、あらかじめ T-CODE:SE54 などで テーブルメンテナンスジェネレータが生成されていること が必要です。生成されていない場合、SM30 でオブジェクト名を入力しても、すぐに更新画面が開くわけではありません。
T-CODE:SM30 でできることは、主に次の4つです。
- 既存データの一覧表示
- 新規レコードの追加
- 既存レコードの変更
- 不要レコードの削除
もっと詳しく💡
SE16N との違い
よくある質問として「SE16Nで編集モードを使えばいいのでは?」というものがあります。しかし、SE16N等のデータブラウザはあくまで「参照」が主目的です。編集機能は開発者や緊急対応用であり、以下のリスクがあります。
- 権限管理が粗い(テーブル単位の細かい制御が難しい)
- 入力チェックが効かない場合がある
- ログが不十分(誰が何を変更したか追いづらい)
対してテーブル更新ダイアログは、エンドユーザに開放することを前提とした「公式な業務機能」です。
関連トランザクションコード
| T-CODE | 内容 |
|---|
| SE54 | テーブル更新ジェネレータが起動し、テーブル更新ダイアログを作成することができます。 |
| SM30 | テーブル更新ダイアログを実際に更新する時に使用します。この画面でテーブル参照・更新・移送の操作が可能です。 |
| SE11 | ABAPディクショナリが起動し、テーブル更新ダイアログの元となる透過テーブルやビューを作成できます。 |
| SE93 | 作成したSM30画面を、ユーザ専用のT-CODEとして割り当てる際に使用。 |
操作方法(登録・変更・削除)
今回は事前に作成したテーブル更新ジェネレータ(TMG)を使っていくぞい!
TMGの作成方法から知りたい方は以下の記事を参考にするのじゃ!
あわせて読みたい
【SAP基礎】テーブル更新ダイアログの作成方法(T-CODE:SE54 or SE11)
この記事を読むメリット SAPのテーブル更新ダイアログの概要が理解できます T-CODE:SE54を使用したテーブル更新ダイアログの作成方法が習得できます 博士!T-CODE:SM30…
1. SM30の起動
手順
- T-CODE:SM30 を起動
- 初期画面の「テーブル/ビュー」欄に、対象オブジェクト名を入力
- 照会・編集ボタンを押下
ここで更新可能なオブジェクトであれば、一覧メンテナンス画面や単票メンテナンス画面が開きます。
もし、テーブル名は分かっていても更新用に用意されているビュー名が分からなければ、下記画像の様に、テーブル名を選択して「更新ダイアログ検索」ボタンを押すと、そのテーブルに関連する更新ダイアログが表示されます。テーブルのTMGは作成しておらず、そのテーブルを使用したビューのTMGがある場合に、この検索から探すことが有効です。
もっと詳しく💡
なお、この初期画面には 「データ範囲の制限」 を指定するエリアもあります。ここでは、更新・表示の対象とするデータを、キー項目や条件値によって事前に絞り込むことができます。対象テーブルの件数が多い場合や、特定の会社コード・組織・区分のデータだけを安全に保守したい場合に使われることが多い機能です。今回は基本操作の説明を中心とするため詳しくは扱いませんが、実務では「必要な範囲だけ開く」ための便利な補助機能として使われます。
また、初期画面には「照会」「編集」以外に、「移送」 や 「カスタマイジング」 のボタンが表示される場合があります。
「移送」は、保守対象データを移送依頼と結び付けて管理したい場面で利用される機能です。
「カスタマイジング」は、設定データの保守を前提としたモードであり、業務設定の変更を行うケースで使われます。今回はこれらを使った操作までは扱わず、基本的な更新手順に絞って説明します。
2.新規レコードの追加
新しいレコードを登録したい場合は、通常次のように操作します。
手順
- 「新規エントリ」ボタンを押下
- 入力画面または追加行に対して値を入力
- 保存ボタンを押下
もっと詳しく💡
既存レコードコピーして新規レコードを追加したい場合は、コピーしたいレコードを選択し(複数選択も可能)、コピーボタンを押下します。
既存レコードが初期値として入った状態で、入力値を編集できますので入力ミスを防ぎ、登録作業の手間を省くことができます。もちろん、キー重複はできませんので、ご注意ください!
登録日付や時刻などの項目はテーブル更新ジェネレータのイベント機能で、保存時にデータを上書きするロジックが実装されることが多いです。今回の場合は、イベント機能が実装されていない為、上画像のように登録日付や時刻などもそのままコピー保存されています。
3.既存レコードの更新
既存データの値を変更する場合は、対象行を選択して内容を修正し、保存します。
ここで注意したいのは、主キー項目は変更できないことが多いという点です。
主キーを変えたい場合は、実質的には
という扱いになるケースが一般的です。
ビューの場合は、項目によっては更新できない設定になっているケースもあります。
4.既存レコードの削除
対象のレコードを物理削除したい場合は、以下の手順で行います。
手順
- 対象のレコードを選択する(複数選択も可能)
- 「削除」ボタンを押下
- 保存ボタンを押下
この手順はあくまで物理削除であり、DBからレコードが物理的に削除されますので、削除フラグが用意されており論理削除をしたい場合は、既存レコードの更新(削除フラグをたてる)を行いましょう。
5.注意点
SM30 の操作で見落とされがちなのが、「画面に入力しただけでは DB 更新されていない」という点です。追加・変更・削除を行った後は、必ず 保存 を行う必要があります。
また、保存時には次のようなエラーが出ることがあります。
- キー重複
- 外部キー不整合
- 必須項目未入力
- 権限不足
- 更新禁止設定
このため、SM30 を使うときは「画面が開いた=自由に更新できる」ではなく、
権限・整合性・イベントロジックを通過して初めて保存できるということを意識しておきましょう。
関連テーブル
| テーブルID | テーブル内容 |
|---|
| TVDIR | テーブルメンテナンスジェネレータの設定情報 |
| TDDAT | テーブルメンテナンスの許可・分類情報 ここを通じて SM30 / 権限制御とつながっていきます。 |
関連テーブル
まとめ
T-CODE:SM30 は、SE54 などで事前に生成されたテーブルメンテナンスジェネレータを利用して、テーブルやビューのデータを標準画面から保守するためのトランザクションです。
単なる表示ツールではなく、新規追加・変更・削除まで行えるため、マスタメンテナンスや簡易設定テーブルの運用で非常に重要な役割を果たします。
一方で、SM30 が使えるということは、対象データを直接更新できるということでもあります。
そのため、キー設計、外部キー整合性、権限制御、削除可否などを十分に意識したうえで利用することが大切です。
SE54 で更新ダイアログを作成し、SM30 で実際に運用する。
この流れを理解しておくことで、カスタムテーブルの設計から運用までを一気通貫で捉えられるようになります。
次の関連記事では、作成した更新ビューをメニューに追加する方法や、SE93 で専用トランザクションコードを作成する方法も整理していく予定です。