グリッドコントロールのセルを読み込む
GuiXTコントロールを使用すると、VB.NETのGUIスクリプティングを用いて特殊なSAP GUIコントロール(”グリッドコントロール”や”ツリーコントロール”など)を変更することができます。SAP GUIスクリプティングでサポートされている値の読み書きや、レイアウトのカスタマイズが行えます。
注: サーバーおよびSAP GUIにてSAP GUIスクリプティングをアクティブにする必要があります。
ここでは、CallVBではなくCallVBAsyncというキーワードを使用します。VB.NET関数を非同期で呼び出すことを意味します。SAPの規格が定める方法とは異なる方法でスクリプトがレイアウトを変更する可能性があるため、GuiXTスクリプトが実行されている間は特殊なコントロールを含むSAP GUIウィンドウは構築されません。そのため、VB.NET関数を非同期で呼び出す必要があります。
また、Inputscriptの命令はSAP GUIが画面を構築する前に実行されるため、SAPコントロールにアクセスする際は、InputScriptにも非同期で関数を呼び出すCallVBAsyncが必要です。
例として、トランザクションMM60(品目リスト)に”display material”(品目の表示)プッシュボタンを追加します。ユーザーは、”グリッドコントロール”で品目を選択することができます。そして、新たに追加したプッシュボタンをクリックすると、選択した品目のトランザクションMM03(品目の表示)が表示されます。
ここでは、以下のGuiXTスクリプトを使用します。
if Q[Transaction=MM60]
Pushbutton (toolbar) “Display material”
process=“material_display.txt”
endif
InputScriptの”material_display.txt”により、VB.NET関数が呼び出されます。
CallVBAsync utilities.material.material_list_display_single
VB.NET関数”material_list_display_single”にて選択した品目コードを読み取り、新規モードにてトランザクションMM03を開始します。これにより、2番目のInputscriptが呼び出されます。
1 | Imports guinet |
2 | Imports SAPFEWSELib |
3 | |
4 | |
5 | Public Class material |
6 | |
7 | Private guixt As New guinet.guixt |
8 | |
9 | |
10 | Sub material_list_display_single() |
11 | |
12 | |
13 | Dim SapGrid As GuiGridView = guixt.GuiSession.GuiGridView |
14 | |
15 | ‘ Material selected? |
16 | If SapGrid.CurrentCellRow = -1 Then |
17 | Exit Sub |
18 | End If |
19 | |
20 | ‘ read material number from grid cell |
21 | Dim matnr |
22 | matnr = SapGrid.GetCellValue(SapGrid.CurrentCellRow, “MATNR”) |
23 | |
24 | ‘ start InputScript to display the material |
25 | guixt.input(“U[MATNR]:” + matnr) |
26 | guixt.input(“OK:/OMM03,process=MM03_display_single.txt”) |
27 | |
28 | |
29 | End Sub |
30 | |
31 | |
32 | End Class |
呼び出されたInputScriptの”MM03_display_single.txt”により、品目マスターレコードが表示されます。
Parameter MATNR
// initial screen of MM03
Screen saplmgmm.0060
Set F[RMMG1-MATNR] “&U[MATNR]”
Enter /5
// select a view
Screen saplmgmm.0070
Set cell[Table,0,1] “X”
Enter