6. テーブルの追加

  1. テーブルの追加

インプットアシスタントを使用すると、独自のテーブルコントロールを作成し、任意のSAP画面に統合することができます。 追加データを表示したり、独自のデータ入力用テーブルを実装することができます。

例題として、プラント固有の購買データを品目照会トランザクションMM03に表示します。

MM03品目照会:
新規プッシュボタン「プラント固有の購買データを表示」により、プラント固有の追加データを表示することができる。

テーブルに在庫数と追加購入情報が表示された。

GuiXTテーブルコントロールに、任意の数の入出力カラム、チェックボックス、プッシュボタンを作成することができます。

テーブルは、コマンドTableColumnで定義されています。 “tabx”がテーブルの名前で、 “plant”がカラム名の場合、変数V [tabx.cell.plant.5]は、カラム”plant”の行5のセルを表します 。 同様に、行の総数、最初に表示される行、カラム幅など、様々なテーブル属性に対する標準の変数があります。

// トランザクションMM03にプラント情報を表示

if Q[Transaction=MM03]

Set V[matnr] “&F[RMMG1-MATNR]” -uppercase

 

// 表示するプラントテーブルは?

if V[matnr] and V[display_plants=X]

// 最後にプラントテーブルが表示されてから品目番号は変更された?→その場合はデータを再読み込み

if not V[matnr=&V[plants_matnr]]

Enter process=“mm03plants\plants_read.txt”

Stop Script

endif

 

Table (3,1) (12,100) name=“plants”   title=“品目&V[matnr]          &V[mattext]       プラント別購買データ”                 rows=“&V[plants_count]” fixedcolumns=1

Column “プラント”                                  name=“werks” size=6 -pushbutton process=“mm03plants\plants_select.txt”

Column “在庫数”                                  name=“avamount” size=8 -readonly -alignright

Column “最小在庫数”               name=“minbe” size=8 -readonly -alignright

Column “最大在庫数”               name=“mabst” size=8 -readonly -alignright

Column “基本数量単位”                         name=“meins” size=8 -readonly

Column “自動購買発注”                         name=“kautb” size=10 -readonly -checkbox

Column “納入予定日数”                         name=“plifz” size=10 -readonly

Column “購買グループ”               name=“ekgrp” size=10 -readonly

Column “原産国”                                  name=“herkl” size=8 -readonly

Column “利益センタ”                 name=“prctr” size=16 -readonly

 

Pushbutton (3,101) “X” process=“mm03plants\plants_off.txt” size=(1,2)

 

// Enter押下でデータを再読み込み

On Enter process=“mm03plants\plants_read.txt”

 

// 品目番号は変更された?

 

else

Pushbutton (3,0) “プラント別の購買データを表示” process=“mm03plants\plants_read.txt”

endif

endif

 

テーブルに示す追加データは、次の汎用モジュールを使用して読み込まれます。

  • BAPI_MATERIAL_GET_DETAIL
  • BAPI_MATERIAL_GET_ALL
  • BAPI_MATERIAL_AVAILABILITY
  • /GUIXT/EXT2INT
  • /GUIXT/DBSELECT

上記1~3番目は標準SAPモジュールです。/GUIXT/DBSELECTに関しては別資料(汎用モジュール/guixt/dbselect)を参照してください。/GUIXT/EXT2INTは外部書式から内部書式に変換するときに使用します。 /GUIXT/EXT2INTは、/GUIXT/DBSELECTと同じパッケージ内に含まれています。(本ソースコードが必要な場合は、ysano@ibrdg.co.jpまでご連絡ください。)

//Input Script “plants_read.txt”

// 品目番号

Set V[matnr] “&F[RMMG1-MATNR]” -uppercase

 

// 内部書式に変換する

Call “/GUIXT/ext2int”  in.extvalue=“&V[matnr]” in.domname=“MATNR” out.intvalue=“matnr_int”

 

// 追加フィールドに品目番号を保存する

Set V[plants_matnr] “&F[RMMG1-MATNR]” -uppercase

 

// 品目データを読む

Call “BAPI_MATERIAL_GET_DETAIL”   in.MATERIAL=“&V[matnr_int]” out.MATERIAL_GENERAL_DATA=”matdata”

 

// テキスト及び単位

Set V[mattext] “&V[matdata](BAPIMATDOA-MATL_DESC)”

Set V[matunit] “&V[matdata](BAPIMATDOA-BASE_UOM)”

 

// SAPデータベースのプラントテーブルMARCを読む

Call “/GUIXT/dbselect” in.table=”MARC” _

in.condition=“MATNR = @MATNR” _

in.fields=“WERKS” _

in.domname1=“MATNR” _

in.domvalue1=“&V[matnr]” _

table.values=“data”

 

//テーブルのリセット

Set V[plants.*] “”

 

// 読み込まれたプラントの数

Set V[plants_count] 0

 

// カラム幅の初期値をセットする

Set V[plants.stat.columnwidth.werks]  6

 

Set V[i] 1

label next_plant

CopyText fromText=“data” toString=“datarow” line=&V[i]

if Q[ok]

 

Set V[plant] “&V[datarow]”

Set V[plants.cell.werks.&V[i]]  “&V[plant]”

 

// 追加のプラントデータを読み込む

Call “BAPI_MATERIAL_GET_ALL” in.MATERIAL=“&V[matnr_int]” in.PLANT=“&V[plant]” out.PLANTDATA=“plantdata”

 

Set V[plants.cell.ekgrp.&V[i]]  “&V[plantdata](BAPI_MARC_GA-PUR_GROUP)”

Set V[plants.cell.prctr.&V[i]]  “&V[plantdata](BAPI_MARC_GA-PROFIT_CTR)”

Set V[plants.cell.kautb.&V[i]]  “&V[plantdata](BAPI_MARC_GA-AUTO_P_ORD)”

Set V[plants.cell.meins.&V[i]]  “&V[matunit]”

 

Set V[plants.cell.plifz.&V[i]]   “&V[plantdata](BAPI_MARC_GA-PLND_DELRY)”  -unpack

 

// 最小在庫

Set V[minbe] “&V[plantdata](BAPI_MARC_GA-REORDER_PT)”  -unpack

Set V[minbe] &V[minbe] / 1000

if V[minbe=0]

Set V[minbe] “”

endif

Set V[plants.cell.minbe.&V[i]]    &V[minbe]

 

// 最大在庫

Set V[mabst] “&V[plantdata](BAPI_MARC_GA-MAX_STOCK)”  -unpack

Set V[mabst] &V[mabst] / 1000

if V[mabst=0]

Set V[mabst] “”

endif

Set V[plants.cell.mabst.&V[i]]    &V[mabst]

 

//  原産国

Set V[plants.cell.herkl.&V[i]]   “&V[plantdata](BAPI_MARC_GA-COUNTRYORI)”

 

// プラントで入手できる数

Call “BAPI_MATERIAL_AVAILABILITY”   in.MATERIAL=“&V[matnr_int]” in.PLANT=“&V[plant]” in.UNIT=“&V[matunit]” out.AV_QTY_PLT=“avamount”

 

Set V[plants.cell.avamount.&V[i]]   &V[avamount] / 1000

 

// 品目に対するプラント総数

Set V[plants_count] &V[i]

 

// 次の行

Set V[i] &V[i] + 1

goto next_plant

endif

 

if V[plants_count>0]

Set V[display_plants] “X”

else

Message “E: プラントデータがありません” -statusline

endif

 

Return

 

テーブルを非表示にするには、以下のInputScriptを使用します。

// InputScript “plants_off.txt”

Set V[display_plants] “”
Set V[plant_matnr] “”
Return

ここで、選択されたプラントのMM03の購買情報を表示するために、「プラント」のボタンのうちの1つをクリックします。例えばをクリックすると、以下のようなMM03画面が表示されます。

トランザクションMM03、選択されたプラントの購買管理タブの照会画面

 

これはプッシュボタンを押して呼び出されるInputscript “plants_select.txt”に実装されています。

Column “プラント”                           name=“werks” size=6 -pushbutton process=“mm03plants\plants_select.txt”

 

選択されたプラントを取得するには、システム変数V [_tabrowabs]を使用します。

// InputScript “plants_select.txt”
// MM03で選択されたプラントデータを表示する
Enter “/5”

// カレントビュー選択を削除
Screen SAPLMGMM.0070
Enter “/19”

// ビュー選択で1つ目を選択
Screen SAPLMGMM.0070
Set cell[Table,0,1] “X”
Enter

// 購買管理タブへ
Screen SAPLMGMM.4004
Enter “=SP09”

// 組織レベルのポップアップにプラントをセットする
Screen SAPLMGMM.0081
Set F[RMMG1-WERKS] “&V[plants.cell.werks.&V[_tabrowabs]]”
Enter