我們日常在對SAP GUI進行自動化的時候,經常需要操作ComboBox對象(下拉框)。如下圖所示:
我們今天就來好好認識下它。我們想要操縱一個SAP對象,首先得知道對象名,然後才能去查詢對應的SAP scripting API手冊,再進一步瞭解它的屬性和方法。利用SAP原生的錄屏功能,我們對下拉列表進行展開和選擇特定值,結束錄製後,就可以得到VBS腳本,腳本代碼可能是這樣的:
session.findById("wnd[0]/usr/tabsTABSTRIP_0100/tabpTABSTRIP_0100_FC4/ssubTABSTRIP_0100_SCA:SAPLEPIC_PROC:5000/cmbEPIC_BACO_QC_QUERY_SELECT-ZBUKR").key = "CNAA"
眼尖的童鞋,根據ID的最後一部分開頭“cmbEPIC_BACO_QC_QUERY_SELECT-ZBUKR”其實就能猜到它是一個comboBox對象,如果我們對此不夠確定,可以直接打印元素的type,如:
myTypeName = session.findById("wnd[0]/usr/tabsTABSTRIP_0100/tabpTABSTRIP_0100_FC4/ssubTABSTRIP_0100_SCA:SAPLEPIC_PROC:5000/cmbEPIC_BACO_QC_QUERY_SELECT-ZBUKR").Type print(myTypeName)
最後也能知道,該元素的type是GuiComboBox。當然,利用我前期博文中提到的Tracker工具,也能輕鬆知道元素的type,如下圖所示:
接着我們可以查看SAP GUI Scripting API手冊,瞭解其特性:1.2.12 GuiComboBox Object、1.2.14 GuiComboBoxEntry Object
從上圖可以看到,comboBox的下拉列表中每一個都是一個comboBoxEntry對象,它可以通過comboBox的Entries屬性拿到所有comboBoxEntry集合,然後基於索引來遍歷它,每個comboBoxEntry又分別有key和value屬性,支持讀寫。有了這些,結合元素的count屬性,我們就可以輕鬆遍歷到元素的每一個item的key和value,既可以讀取當前Key和Value,又可以直接對當前combobox的Key進行設置。見如下代碼示例:
companyEntryCollection = session.findById("wnd[0]/usr/tabsTABSTRIP_0100/tabpTABSTRIP_0100_FC4/ssubTABSTRIP_0100_SCA:SAPLEPIC_PROC:5000/cmbEPIC_BACO_QC_QUERY_SELECT-ZBUKR").Entries companyEntryNum = companyEntryCollection.Count # combobox下拉列表最後一行爲空,索引從0開始 For i in range(0,companyEntryNum - 1): print(companyEntryCollection(i).Key,companyEntryCollection(i).Value)
session.findById("wnd[0]/usr/tabsTABSTRIP_0100/tabpTABSTRIP_0100_FC4/ssubTABSTRIP_0100_SCA:SAPLEPIC_PROC:5000/cmbEPIC_BACO_QC_QUERY_SELECT-ZBUKR").Key = companyEntryCollection(i).Key '設置key
各位小夥伴,每天掌握一個小技巧,從此用python輕鬆玩轉SAP GUI自動化!