SD VOFMでルーチン作成時のショートダンプについて

  SD

概要

トランザクションコード:VOFMでルーチン(コピールーチン、データ転送ルーチン、計算式等)を作成し、移送した際に販売系トランザクションでショートダンプが発生する事がある。

原因

各ルーチンは標準プログラム内にインクルードとして挿入される。
開発機でルーチンを作成し有効化した場合は、新規作成されたプログラムが自動的に挿入されるが、移送には作成したルーチンのみ格納される。
要は、標準プログラムの変更は移送されておらず、新規ルーチンのみ移送されたという状態のため、ルーチン呼び出しに失敗しショートダンプとなる。

解決方法1 - 標準プログラムの移送

作成したルーチンの使用先一覧から、どのプログラムから呼び出されているかを確認。
該当の標準プログラムの移送を手動でとり、各環境へ移送する。
開発機、テスト機、本番機の定義が全て同じならこの方法でも問題ないと思われる。ただ、開発機だけまだ本番化されていないルーチンが存在したり、テスト用のルーチンが存在する場合は、この手段を取る事はできない。

解決方法2 - 各環境でRV80HGENを実行

移送実行後に各環境でSE38からプログラム:RV80HGENを実行する。
RV80HGENとはルーチンに関する標準プログラムを再生成する(インクルードに含める)プログラムの為、このプログラムの実行により新規作成したルーチンが標準プログラム内にインクルードとして挿入される。

うる覚えだが、このショートダンプは作成したルーチンに関連しないトランザクションでも発生した覚えがある。例えば、受注のルーチンを作成した場合でも、出荷や請求でショートダンプが発生。販売系全てに影響する可能性がある為、手動で実行する際は移送後即時に実行できる状況が必要かと考えられる。

解決方法3 - RV80HGENの実行を移送する

この方法がルーチン移送と同じタイミングで実行できる為、最もベストな方法だと思う。
新規移送又は作成したルーチンの移送に以下を含める。
親移送を編集モードで開き、プログラムIDに「R3TR」、オブジェクトタイプに「XPRA」、オブジェクト名に「RV80HGEN」を入力し保存する。
これでこの移送をインポートした際にRV80HGENが実行される事になる。

これらの方法はルーチンを新規作成した際にのみ必要であり、既存のルーチンのロジックを変更した場合は不要です。