2016-10-18 11 views
0

SAP GUI画面で要素をリストに追加するスクリプトを作成しています。さて、実際に画面に表示されていない限り、SAP GUIを使用すると「存在しない」と思われるので、最初の手順ではリストの終わりを見つける必要があります。リストの終わりを検出するアルゴリズム(SAP GUI)

これは、各要素をスクロールして空白になっているかどうかを確認することで実現しました。

Do While Not blank 
If session.findById("wnd[1]/usr/tblSAPLCZDITCTRL_4010/ctxtMAPL-MATNR[2,0]").Text = "" Then blank = True 
session.findById("wnd[1]/usr/tblSAPLCZDITCTRL_4010").verticalScrollbar.Position = i 
i = i + 1 
Loop 

しかし、非常に大きな既存のリストの場合、これには長い時間がかかります。私はより早く終わりを見つける方法を見つけようとしています。私が知っているいくつかの真実/限界:

  1. 私はリストの長さを知らないと思います。
  2. verticalScrollbar.positionの末尾をあまりにも超えてコマンドを実行することはできません
    リストの末尾です。例えば、リストに62個の要素が含まれている場合、.verticalScrollbar.Position = 100は機能しません。
  3. 上記の例の場合、SAPはエラーをスローしません。まったく何も起こらず、次のコード行が実行されます。
  4. 要素に対するすべての参照は、画面上の位置に関するものです。私は5つの位置を下にスクロールする場合例は、全体的なリストの第六の要素は、実際に一方1.
  5. としてインデックスう、verticalScrollbar.Positionは、私は、次の(非常にやってと思ってい

絶対的です擬似コード):

i = 0 
do while scrolled = true 
    scrolled = false 
    a = GUIlist[0] 
    verticalScrollbar.Position = i + 1000 
    b = GUIlist[0] 
    'check to see the first element shown has changed 
    if a <> b then 
     scrolled = true 
     i = i + 1000 
    end if 
loop 

do while scrolled = true 
    scrolled = false 
    a = GUIlist[0] 
    verticalScrollbar.Position = i + 500 
    b = GUIlist[0] 
    if a <> b then 
     scrolled = true 
     i = i + 500 
    end if 
loop 

...というように、私は一つiを反復していますまで。

この種の「検索」の一般的に受け入れられているより良い方法はありますか? すべての入力を感謝します。 おかげ

答えて

1

私の提案:

session.findById("wnd[0]").sendVKey 83 
myPosition = session.findById("wnd[1]/usr/tblSAPLCZDITCTRL_4010").verticalScrollbar.Position 
do 
if session.findById("wnd[1]/usr/tblSAPLCZDITCTRL_4010/ctxtMAPL-MATNR[2,0]").Text = "" then exit do 
myPosition = myPosition + 1 
session.findById("wnd[1]/usr/tblSAPLCZDITCTRL_4010").verticalScrollbar.Position = myPosition 
loop 
msgbox myPosition 

よろしく、 ScriptMan

1

だけで終わり

max_scrollbar = session.findById("wnd[1]/usr/tblSAPLCZDITCTRL_4010").verticalScrollbar.Maximum ' Get the maximum scrollbar value 
session.findById("wnd[1]/usr/tblSAPLCZDITCTRL_4010").verticalScrollbar.Position = max_scrollbar ' Go to the end 
に移動します
関連する問題