インスタンス・リストに11個以上の英数字列または11個以上の数値列を追加する
フレームワークのインスタンス・リストは、英数字列または数値列をそれぞれ10個まで追加して表示できます。これ以上の列を追加する場合、独自のスナップイン・インスタンス・リストを作成する必要があります。 スナップイン・インスタンス・リスト・ブラウザーでは表示可能な追加列数に制限はありません。
インスタンス・リストを作成するには、コード ウィザードを使用して最も必要とされるコードを作成します。実施例はコンポーネントDF_INST1に含まれています。
インスタンス・リスト・ブラウザーは、ビジネス・オブジェクト・プロパティタブのインスタンスリストリレーションシップ概要 にスナップインされています。
無限の数の列をインスタンス・リストに効果的に追加できる最も簡単なテクニックは、インスタンス・リスト・マネージャーのAColumn<シンボリック名>(値)プロパティとNColumn<シンボリック名>(値)プロパティを使用することです。
(注:実際、これは、AddtoListメソッドの新しいAColumnN()パラメータとNColumnN()パラメータがよく使用されるようになったため、時間と共に使用されなくなった古いテクニックです。これは、追加の列を使用できるただ1つの方法でした)。
以下はサンプル・フィルターの該当箇所を抜き出したRDMLXコードです。
* Make 16 alphanumeric columns with a variety of symbolic names such as BILL, MARY .. A16
set #avListManager AColumn<BILL>(#Char07 + BILL)
set #avListManager AColumn<MARY>(#Char07 + MARY)
set #avListManager AColumn<TOTAL>(#Char07 + TOTAL)
set #avListManager AColumn<CUSTNO>(#Char07 + CUSTNO)
set #avListManager AColumn<A5>(#Char07 + A5)
set #avListManager AColumn<A6>(#Char07 + A6)
set #avListManager AColumn<A7>(#Char07 + A7)
set #avListManager AColumn<A8>(#Char07 + A8)
set #avListManager AColumn<A9>(#Char07 + A9)
set #avListManager AColumn<A10>(#Char07 + A10)
set #avListManager AColumn<A11>(#Char07 + A11)
set #avListManager AColumn<A12>(#Char07 + A12)
set #avListManager AColumn<A13>(#Char07 + A13)
set #avListManager AColumn<A14>(#Char07 + A14)
set #avListManager AColumn<A15>(#Char07 + A15)
set #avListManager AColumn<A16>(#Char07 + A16)
* Make 16 numeric columns with a variety of symbolic names such as BILL, MARY ... N16
set #avListManager nColumn<BILL>(#Zone07 + 1)
set #avListManager nColumn<MARY>(#Zone07 + 2)
set #avListManager nColumn<TOTAL>(#Zone07 + 3)
set #avListManager nColumn<CUSTNUM>(#Zone07 + 4)
set #avListManager nColumn<n5>(#Zone07 + 5)
set #avListManager nColumn<n6>(#Zone07 + 6)
set #avListManager nColumn<n7>(#Zone07 + 7)
set #avListManager nColumn<n8>(#Zone07 + 8)
set #avListManager nColumn<n9>(#Zone07 + 9)
set #avListManager nColumn<n10>(#Zone07 + 10)
set #avListManager nColumn<n11>(#Zone07 + 11)
set #avListManager nColumn<n12>(#Zone07 + 12)
set #avListManager nColumn<n13>(#Zone07 + 13)
set #avListManager nColumn<n14>(#Zone07 + 14)
set #avListManager nColumn<n15>(#Zone07 + 15)
set #avListManager nColumn<n16>(#Zone07 + 16)
* Add this and all 32 additional columns to the instance list
Invoke Method(#avListManager.AddtoList) Visualid1(#Char07) Visualid2(#char07) Akey1(#char07)
たとえば、set #avListManager AColumn<CUSTNO>(#Char07 + CUSTNO)の行では、CUSTNOというシンボリック名の英数字列が作成され、その列にフィールド#CHAR07の現在の値と文字列'CUSTNO'を連結した値を含めるよう設定されます。
関連するスナップイン・インスタント・リスト・マネージャーの中で、これはマッチングRDMLXコードです。
* Set the visual identifiers into the grid columns
#STD_TEXTS := #VisualID1
#STD_TEXT := #VisualID2
* Get the additional alphanumeric columns into the grid columns.
* Only 3 are visualized in this example, but all 16 could be display if required
#VF_ELXA01 := #AvListManager.Acolumn<BILL>
#VF_ELXA02 := #AvListManager.Acolumn<CUSTNO>
#VF_ELXA03 := #AvListManager.Acolumn<A16>
* Get the additional numeric columns into the grid columns.
* Only 3 are visualized in this example, but all 16 could be visualized if required
#VF_ELXNK1 := #AvListManager.Ncolumn<BILL>
#VF_ELXNK2 := #AvListManager.Ncolumn<CUSTNUM>
#VF_ELXNK3 := #AvListManager.Ncolumn<N16>
* Add the information to the grid
Add_Entry #GRID
#VF_ELXA02 := #AvListManager.Acolumn<CUSTNO>の行では、CUSTNOという名前の追加の英数字列が表示され、グリッド列フィールド#VF_ELXA02にコピーされます。
コマンド・ハンドラーでも同じ手法を使用して追加列にアクセスできます。
大量の追加列を使用して大量のデータ交換を行う場合、より「固定された」(つまり汎用性がないため高速な)手法が考えられます。これを使用して、追加列の情報をフィルターとインスタンス・リスト・ブラウザー間で受け渡すことができます。
たとえば、1つの追加列のみを使用して、フィルターと、インスタンス・リスト内のスナップイン・インスタンス・リスト・ブラウザーとの間で「行キー」を受け渡すことができます。固有のScope(*Application)を共有する再利用可能なVLコンポーネントを作成すれば、情報のストレージの管理と、情報の論理行へのアクセスを行うことができます。また、効率を高めるためにSPACEオブジェクトを使用することもできます。フィルターとインスタンス・リスト・ブラウザーはこれとやり取りを行い、論理行の詳細を交換できます。
34個の列(16個の英数字、16個の数値+ビジュアルID)を使用するサンプル・フィルター