複数メインテーブルセッション

概説

複数メインテーブル (MMT) セッションは複数セッションの組合せで、それぞれのセッションに独自のメインテーブルがあります。

MMT セッションは、次のような典型的な親子構造のデータを表すために特に設計されたものです。

  • 販売オーダとそれに関連する販売オーダライン
  • 財務取引先グループとそれに関連する元帳勘定および統制勘定
  • 作業オーダとそれに関連する作業オーダ活動ライン、作業オーダ資材リソース、作業オーダのその他リソース、作業オーダ計測、作業オーダ時間会計

このデータはシステムでは複数のメインテーブルに分散していますが、すべて 1 つの親子セッションで表示および編集できます。

これによって、ユーザはデータを迅速に入力でき、作業を概観しやすくなります。

通常の親子セッションには次の 2 つの領域があります。上部には親に関する情報と機能があります。下部は、様々なタイプの子に関するデータを表す、1 つまたは複数のリストを含みます。親子両方のデータをこのセッションで編集できるので、このセッションは非常に強力なデータ入力の方法です。その他にもユーザは、親子セッションによって、オブジェクトに関するすべての重要データの概要を知ることができます。下図は親子セッションの例です。

[...]
親子セッションの例

親子 MMT セッションは、次のように、様々な LN パッケージで使用できます。

パッケージセッション
製造製造オーダ
製造一般品目 – 構造
オーダ管理販売オーダ – ライン
オーダ管理販売オーダライン – 納入
サービスサービスオーダ – ライン
サービスサービスオーダ活動 – ライン
サービスメンテナンス販売オーダ
サービス作業オーダ – ライン
財務マッピング体系
財務元帳マッピング
財務ディメンションマッピング
財務財務取引先グループ (売掛金)
財務財務取引先グループ (買掛金)
財務請求書 - ソース関係
品質管理検査オーダ – 簡易入力
品質管理品目 – 保管検査
オブジェクトデータ管理文書の改訂 – 簡易入力
オブジェクトデータ管理変更の提案 – 簡易入力
ツールテーブル定義
ツールビジネスオブジェクト

 

ヘッダと従属セッション

親子 MMT セッションは、実際は、複数のセッションを単一セッションに統合したものです。次で構成されます。

  • ヘッダセッション: MMT セッションウィンドウの上部です。親 (サービスオーダなど。上図参照) についての情報および機能が含まれます。ヘッダは単一レコード表示セッションです。
  • (タブとして表示される) 1 つまたは複数の従属セッション。様々なタイプの子 (活動、見積資材、見積労働など) のデータおよび機能が含まれます。各従属セッションは、MMT ヘッダセッションにリンクされた個別のセッションです。従属セッションはすべて、複数レコード表示セッションです。

ヘッダと従属セッションはスタンドアロンでも実行できます。

ヘッダと従属セッション
ヘッダと従属セッション

MMT セッションにおいて、ヘッダとラインは自動的に同期されます。ヘッダ領域で特定のレコードを選択すると、該当するラインが自動的に従属セッションに表示されます。従属セッション間は同期されません。

従属セッションタブはグリッドのみ含みます。グリッド外部の追加フィールド (「表示フィールド」) は、従属セッションをスタンドアロンで実行した場合のみ表示されます。

「オーダライン」 セッションをスタンドアロンで実行すると、グリッドの上の表示フィールドとして 「オーダ番号」 が表示されます。しかし、このセッションを 「オーダ」 MMT セッションの従属セッションとして実行すると、従属セッションタブにはグリッドのみ表示されます。

開発ガイドライン

このセクションでは、MMT ヘッダ - ラインセッションの初期状態作成についての必要条件、考えられる問題、および手順について説明します。

前提条件

次の場合のみ MMT ヘッダ - ラインセッションを作成できます。

  • 明白なヘッダ - ライン関係がある。Infor Enterprise Server は、各従属セッションがヘッダに直接関係する場合にのみ同期をサポートします。例: 販売オーダラインは、[オーダ番号] フィールドを介して販売オーダヘッダに直接関連します。
  • 従属セッション間の同期が必要ない
  • ヘッダが単一レコード表示を含む。ない場合は、最初に作成します。
  • 定義したい従属セッションがすべて複数表示を含む。ない場合は、最初に作成します。
考えられる問題

MMT ヘッダ - ラインセッションの作成を開始する前に、考えられる問題と、その解決に必要な開発上の試みについて説明します。

次の問題が考えられます。

  • コピー/削除が深い
    ヘッダ - ラインセッションのヘッダには、複製削除の標準コマンドがあります。初期状態の MMT セッションにおいて、これらの処理はヘッダ上でのみ実行します。ヘッダがコピーまたは削除されたときに該当するラインを自動的にコピーまたは削除する機能は、個別にプログラムする必要があります。既存のコードを再使用してこれを行うことができます。
  • 自動保存
    自動保存は、ユーザ処理なしにセッションとその内容が保存されることを意味します。明示的保存は、ツールバーの保存をクリックしたり保存メニュー項目を選択したりすることによって、ユーザが (マニュアルで) 「保存」 処理を実行することを意味します。MMT ヘッダ - ラインセッションでは、ある従属セッションから別の従属セッション、ヘッダから従属セッション、あるいは従属セッションからヘッダにフォーカスが移るたびに、各個別セッションのすべてのデータが自動保存されます。たとえば、販売オーダが挿入され、ヘッダから従属セッションの 1 つにフォーカスを切り替えると、ヘッダは自動的に保存されます。保存が行われていることを示すため、セッションウィンドウの右下に保存アイコンが表示されます。最後に自動保存または明示的保存が行われた後にデータを変更してセッションを閉じようとすると、変更を保存するよう指示されます。No を選択すると、最後に自動保存または明示的保存された後の変更を元に戻します。プログラミング時にはこの動作に注意してください。ラインのないオーダヘッダなど、参照されないデータがデータベース内に存在する原因となる場合があります。このようなデータが生成された場合は直接そのデータを削除するか、このような参照されないエントリをデータベースから削除するセッションを構築するようにプログラミングを考慮してください。
初めて MMT セッションを作成するには
ステップ 1. MMT ヘッダセッションを作成する

セッション (ttadv2500m000) セッションを開始し、MMT ヘッダセッションを作成します。

次の点に注意します。

  • ウィンドウタイプは複数メインテーブルを選択します。
  • 詳細セッションを、MMT ヘッダセッションの同期ダイアログとして指定します。たとえば、「オーダヘッダ」 詳細セッションを、「オーダ」 MMT ヘッダセッションに対して同期ダイアログとして指定します。ユーザは、MMT ヘッダセッションの詳細コマンドを使用して子のセッションを開始できます。
  • オブジェクトのラベルフィールドでは、ヘッダセッションのメニュー項目で使用する必要のあるラベルを選択します。詳細については、オブジェクトのラベルを参照してください。
ステップ 2. MMT ヘッダセッションをカスタマイズする
  • MMT ヘッダセッションのフォームを編集します。新規レコードの入力に必要と思われるフィールドのみ含めます。関連するその他のプロパティはすべて、同期ダイアログで指定します。同期ダイアログは別のウィンドウに表示されます。
  • MMT セッションが LN UI に合うようにしてください。LN UI は 1024x768 ビットをサポートしますが、セッションは LN UI 内でホストされるので、やや小さくします。LN UI にセッションを表示してみて、合うかどうか確認してください。Infor LN セッションを LN UI 内で最大化するには、ALT + F11 キーを押します。これによって、全画面表示にできます。
  • MMT ヘッダセッションのダイナミックフォームで指定されるフィールドは、MMT セッションの上部、従属セッションタブの上に表示されます。デフォルトではこれらのフィールドは読取専用です。これらは、ヘッダセッションに新規レコードが挿入された場合のみアクセス可能にすべきです。そのようにするには、プログラムスクリプトで 「add.set」 を使用します。

フォーム編集についての詳細は、ダイナミックセッションとダイナミックフォームを参照してください。プログラムスクリプトの詳細については、プログラムスクリプト概要および Infor ES Programmer's Guide を参照してください。

ステップ 3. 各従属セッションについてオブジェクトのラベルを定義する

セッション (ttadv2100s000) 詳細セッションで、各従属セッションのプロパティを編集します。オブジェクトのラベルフィールドでは、従属のタブ記述とメニュー項目で使用する必要のあるラベルを選択します。詳細については、オブジェクトのラベルを参照してください。

ステップ 4. MMT ヘッダセッションに従属セッションをリンクする

必要な従属セッションを新規 MMT ヘッダセッションにリンクします。

  • セッション (ttadv2500m000) セッションで MMT ヘッダセッションを選択し、次に適切なメニューの MMT 従属セッションをクリックします。
  • 従属セッション (ttadv3110m000) セッションが開始します。リンクする従属セッションを指定します。従属セッションごとに、MMT ヘッダセッションと従属セッションとの同期に使用するフィールド関係を入力する必要があります。 
    • 同期する各変数に対して、ヘッダのメインテーブル内にある関連フィールド名、続いて従属セッションのメインテーブル内にある該当フィールド名を指定します。例: オーダヘッダテーブルの 「オーダ番号」 フィールドおよびオーダラインテーブルの 「オーダ番号」 フィールドを指定します。
    • フィールドマッピングの作成コマンドを使用して、フィールド名およびドメインに基づいて、デフォルトのフィールドマッピングを定義できます。これによって生成されるフィールドマッピングは、常に正確で完全だとは限りません。
ステップ 5. プログラムスクリプトおよび DAL スクリプトの作成と編集

MMT ヘッダセッションと従属セッションは別のセッションです。したがって、各セッションについてプログラムスクリプト (UI スクリプト) を定義する必要があり、また、オプションで該当するテーブルの DAL スクリプトを編集する必要があります。レポート、テキストフィールド、およびインデックスなど、その他のセッション構成要素もセッションごとに定義する必要があります。

従属セッションタブを最初に有効化すると、該当するセッションが開始され、その起動セクション (before.program、after.form.read、init.group.1) が通常どおり呼び出されます。

従属セッションのプログラムスクリプトは、2 つのモードで実行できます。

  • スタンドアロンモード
    これは 「通常」 モードです。セッションがスタンドアロンセッションとして実行される場合に使用されます。
  • 従属モード
    これは特別な MMT モードです。セッションが MMT 従属セッションとして実行しているかどうかチェックするには、is.mmt.satellite() ステートメントを使用します。必要に応じて、従属モード用に異なる動作をプログラムすることができます。

従属モードでは、次の処理を実行できます。

  • フィールドを隠す
    従属モードでは関係ないため、特定のフォームフィールドを隠します。ただし、両方のモードで 1 つのフォームしかないため、フォームでは、どちらかのモードで使用するフィールドもすべて定義する必要があります。
  • 従属セッションを有効/無効にする
    特定の場合に MMT セッション内の従属セッションを有効または無効にします。無効な従属セッションのタブは、MMT セッションで表示されますが、選択やアクセスはできません。従属セッションを無効にするには、disable.satellite() 関数を使用し、有効にするには enable.satellite() を使用します。これらの関数は、ヘッダセッションのプログラムスクリプトにおいて、グローバル after.form.read セクションから呼び出す必要があります。
  • 従属セッションを表示/非表示にする
    satellite.invisible() 関数を使用して、特定の従属セッションを非表示にします。この方法の利点は、実行時に従属セッションを表示/非表示にできることです (たとえば、権限をチェックしてから特定ユーザに対して従属セッションを表示/非表示にできます)。従属セッション内のデータの有効性に基づいて動的に従属セッションを表示/非表示にすることはできません。

プログラムスクリプトの詳細については、プログラムスクリプト概要DAL 1 概要 DAL 2 概要および Infor ES Programmer's Guide を参照してください。

オブジェクトのラベル

MMT ヘッダセッションと従属セッションの両方について、いわゆるオブジェクトのラベルを定義する必要があります。このラベルには、セッション内のオブジェクトの一般的な記述が含まれます。

セッションのオブジェクトのラベルを定義するには

  1. ラベル (ttadv1140m000) セッションでラベルを作成します。
  2. ラベルをセッションにリンクします。セッション (ttadv2100s000) 詳細セッションのオブジェクトのラベルフィールドでラベルを指定します。
ヘッダセッションのラベル

ヘッダセッションでは、ラベルを 1 つ定義する必要があります。次の点に注意します。

  • テキストは次のように単数形の名詞にします。「購買オーダ」 (購買オーダ MMT ヘッダセッションの場合)
  • ラベルの文脈セッション/テーブル/レポート記述とします。

オブジェクトのラベルはヘッダセッションのメニュー項目に使用され、メニュー項目コマンドがどのようなオブジェクトを実行するのかを明らかにするものです。例: 「購買オーダ」 MMT ヘッダセッションに新規レコードを挿入するメニュー項目は、ただの新規作成ではなく購買オーダの新規作成になるでしょう。

従属セッションのラベル

従属セッションには、同じラベルコードで 2 つのラベルを作成できます。1 つのラベルは従属セッションのメニューに使用され、もう 1 つは従属セッションのタブ記述として使用されます。

メニュー項目

従属セッションのメニュー項目に使用するラベルは、次の点に注意します。

  • テキストは次のように単数形の名詞にします。「オーダライン」 (購買オーダライン従属セッションの場合)
  • ラベルの文脈セッション/テーブル/レポート記述とします。

このラベルは、メニュー項目コマンドがどんなオブジェクトを実行するのかを明確にします。例: 「購買オーダライン」 従属セッションに新規レコードを挿入するメニュー項目は、新規のみではなく新規オーダラインとします。

タブ記述

デフォルトで、従属セッションのセッション記述がタブに表示されます。この記述が不適切な場合、次のプロパティを持つ新規ラベルを作成する必要があります。

  • ラベルコードはもう一方のオブジェクトのラベルと同じでなくてはなりません。
  • テキストは次のように複数形の名詞にします。「オーダライン」 (購買オーダライン従属セッションの場合)
  • ラベルの文脈一般使用でなくてはなりません。