SAPのデータベースは、テーブルごとに変更履歴の有効化フラグを持ち、このフラグが有効化されていないとテーブル単体での変更履歴を追うことができない。
一般的によく使うカスタマイズのテーブルは概ね、初期状態でチェックが入っているので、意識しなくとも最初から変更履歴を追うことができる。
しかし、一部のカスタマイズに関わる標準テーブルは変更履歴が有効でなく、アドオンテーブルなどは変更履歴フラグを付けるべきか否かを検討せずに実装してしまう場合もありうる。
今回はデータベーステーブルの変更履歴を有効化する方法について解説する。
このフラグの有効化は、データが既に存在するテーブルに対して行うこともできるが、当然ログは途中から取られることとなる。
SAPのDBテーブル変更履歴を有効化する方法
有効化手順
テーブル設定(Tr:SE11)
まず開発機上で、Tr:SE11で有効化対象のDBテーブルを入力する。
【変更 >技術設定 >フラグ「データの変更履歴作成」をチェック】
この変更を行った状態で本番機に移送で反映するだけで、テーブル設定は完了する。
SAPパラメータ設定(Tr:RZ11)
SAPパラメータ「rec/client」の設定でテーブルロギングを有効にする。
Tr:RZ11から「rec/client」を照会し、パラメータがALLまたはクライアント番号が指定されているか確認する。
値変更は【画面メニュー >編集】から実行する。
なお、SAPパラメータ変更は、システムの再起動を要する場合があるので、必ずベーシス担当と相談して実施する必要がある。
変更履歴が存在せず問題となるケース
例えばCOの許容会計期間を保持するテーブルである「KAPS」の変更履歴フラグは初期状態では空白となっている。
この状態で、仮に運用中に「締め忘れ」による会計期間外と思われる転記が起きたとする。発生当時の状態を確認したい時、もし誰かが既にCO会計期間を変更していたら、どうなっていたか分からなくなる。
こうしたケースは、特に会計期間の開け閉めを自動化しておらずユーザオペレーションとしている場合はよく発生する。発生当時の状況が確定できず、憂き目に遭うことになる。
ありうるケースとしては、PPモジュールにおける指図確認で自動入出庫を設定している場合、FI会計期間(在庫移動)とCO会計期間(作業確認)の双方が関わるので、「なぜか会計期間外なのに確認実績が入っている……」といったものが考えられる。
こうした時のためにも変更履歴は取れるようにしておいた方が良い。
変更履歴有効化の注意点
変更履歴を残すようになるということは、当然ながらデータ量が増える。
データの増分に耐えられる容量があるかどうかは、事前に検討する必要がある。
とはいえ、例えばテーブルKAPSであれば月次で一度更新される程度と考えられるので、さほど大したことはない。
テーブルの種類によって向いている/向いていないがあるので、以下に解説する。
変更履歴の有効化に向いているテーブル
固定値、定数を管理しているテーブル、定期更新しか行わないテーブル、カスタマイズやそれに準じるテーブルなど、変化が少ないものであればログの増加量も緩く、変更履歴を有効化してもさほど問題は起きないと考えられる。
一方、トランザクション(伝票等)に関わるテーブルは、あっというまに変更履歴がたまっていくので、これは有効化しない方が良い。
EKKOやBKPFなどの標準テーブルをTr:SE11で見て頂ければわかるが、これらテーブルは初期状態で変更履歴のフラグは空白だ。(履歴を取る仕組みが別途存在するので)
この判断基準は、アドオンテーブルの変更履歴を取るか否かに関しても適用できる。
ただ、繰り返しになるが、変更履歴フラグを有効化するかは知見あるSAPコンサルと慎重に検討すること。