2016-12-21 9 views
-2

いくつかのxlsファイルをSAPから自動的にエクスポートして、特定のレポートを作成する必要があります。これまでは、SAP GUI Scriptingを使用してトランザクションコードとDIR番号(各文書に固有のもの)を入力していました。これは、xlsファイルを1つだけダウンロードすると完全に動作します。私は複数のxlsをダウンロードする必要があります。xls-file in SAP

xls-fileは2番目の位置にあります。つまり、スクリプトでは、2番目の位置にあるすべてのファイルをエクスポートするだけです。たとえば、2番目の位置にPDFがある場合、PDFを自動的にエクスポートし、レポートを作成できません。

SAP GUI to show the position

Set xmlDoc = CreateObject("MSXML.DomDocument") 
xmlDoc.Load "C:\Users\famichalsk\AppData\Roaming\KPI Report\DIS.xml" 


For Each testNode In xmlDoc.selectNodes("/Reports/Report") 

Number_PDP = testNode.SelectSingleNode("DIS_PDP").Text 

If Not IsObject(application) Then 
Set SapGuiAuto = GetObject("SAPGUI") 
Set application = SapGuiAuto.GetScriptingEngine 
End If 
If Not IsObject(connection) Then 
Set connection = application.Children(0) 
End If 
If Not IsObject(session) Then 
Set session = connection.Children(0) 
End If 
If IsObject(WScript) Then 
WScript.ConnectObject session,  "on" 
WScript.ConnectObject application, "on" 
End If 

session.findById("wnd[0]").iconify 
session.findById("wnd[0]").resizeWorkingPane 132,31,false 
session.findById("wnd[0]/tbar[0]/okcd").text = "/n cv04n" 
session.findById("wnd[0]").sendVKey 0 
     session.findById("wnd[0]/usr/tabsMAINSTRIP/tabpTAB1/ssubSUBSCRN:SAPLCV100:0401/s subSCR_MAIN:SAPLCV100:0402/ctxtSTDOKNR-LOW").text = Number_PDP 
session.findById("wnd[0]/usr/tabsMAINSTRIP/tabpTAB1/ssubSUBSCRN:SAPLCV100:0401/ssubSCR_MAIN:SAPLCV100:0402/ctxtSTDOKNR-LOW").caretPosition = 12 
session.findById("wnd[0]/tbar[1]/btn[8]").press 
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").doubleClickCurrentCell 



session.findById("wnd[0]/usr/tabsTAB_MAIN/tabpTSMAIN/ssubSCR_MAIN:SAPLCV110:0102/cntlCTL_FILES1/shellcont/shell/shellcont[1]/shell").selectNode "   2" 
session.findById("wnd[0]/usr/tabsTAB_MAIN/tabpTSMAIN/ssubSCR_MAIN:SAPLCV110:0102/btnPB_DISPLAY").press 


Next 

ここにあなたが輸出の2番目の「ノード」を選択しますので、最後の2行は、重要なものです。ここで私はxlsファイルかどうかをチェックする必要があります。

答えて

-1

次の回避策を試すことができます。たとえば :

session.findById("wnd[0]/usr/tabsTAB_MAIN/tabpTSMAIN/ssubSCR_MAIN:SAPLCV110:0102/cntlCTL_FILES1/shellcont/shell/shellcont[1]/shell").selectNode "   2" 
session.findById("wnd[0]/usr/tabsTAB_MAIN/tabpTSMAIN/ssubSCR_MAIN:SAPLCV110:0102/cntlCTL_FILES1/shellcont/shell/shellcont[1]/shell").itemContextMenu "   2" 
session.findById("wnd[0]/usr/tabsTAB_MAIN/tabpTSMAIN/ssubSCR_MAIN:SAPLCV110:0102/cntlCTL_FILES1/shellcont/shell/shellcont[1]/shell").selectContextMenuItem "&FIND" 
myText = session.findById("wnd[1]/usr/txtLVC_S_SEA-STRING").text 
session.findById("wnd[1]/tbar[0]/btn[12]").press 
if myText = "xyz" then 
session.findById("wnd[0]/usr/tabsTAB_MAIN/tabpTSMAIN/ssubSCR_MAIN:SAPLCV110:0102/btnPB_DISPLAY").press 
end if 

これは、スクリプト内の対応する通路が再録音をしなければならないことである可能性があります。

よろしく、私はそれを試してみました

+0

ScriptMan。引数はオプションです: "session.findById(...)。itemContextMenu" –

+0

全く違うトランザクションの例で記録した後は、次のことが当てはまります:... itemContextMenu "2"、 "&Hierarchy"パラメータが同義語と同義語であるかどうかにかかわらず、1つのレコードでしか出力できません。 – ScriptMan

+0

contextMenuを持っていないし、ドキュメントの階層もありません。たぶんそれはタブのオリジナルにあるという事実のためです。どうにかして "XLS"ノードに焦点を当てるために列ワークステーションアプリケーションにアクセスする必要があります。 –