首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何基于SAP系统对脚本进行条件化?

如何基于SAP系统对脚本进行条件化?
EN

Stack Overflow用户
提问于 2017-07-04 08:17:05
回答 1查看 494关注 0票数 0

我正在做一个通过SAP GUI连接excel与SAP系统的任务。

我想使用SUIM transaction,但问题是不同系统的视图不同。

例如:

system A中,有以下代码:

代码语言:javascript
复制
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "suim"
session.findById("wnd[0]").sendVKey 0 
session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").expandNode "02  1      2"
session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").topNode = "01  1      1"
session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").expandNode "03  2      7"
session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").selectItem "04  2      8", "1"
session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").ensureVisibleHorizontalItem "04  2      8", "1"
session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").topNode = "01  1      1"
session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").clickLink "04  2      8", "1"
' ** START OF DIFFERENCE **
session.findById("wnd[0]/usr/tabsTABSTRIP_TAB/tabpTAB3").Select
session.findById("wnd[0]/usr/tabsTABSTRIP_TAB/tabpTAB3/ssub%_SUBSCREEN_TAB:RSUSR002:1003/btn%_ACTGRPS_%_APP_%-VALU_PUSH").press
' ** END OF DIFFERENCE **
session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1,0]").Text = "*********"

对于系统B,

代码语言:javascript
复制
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "suim"
session.findById("wnd[0]").sendVKey 0  
session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").expandNode "02  1      2"
session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").topNode = "01  1      1"
session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").expandNode "03  2      7"
session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").selectItem "04  2      8", "1"
session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").ensureVisibleHorizontalItem "04  2      8", "1"
session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").topNode = "01  1      1"
session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").clickLink "04  2      8", "1"
' ** START OF DIFFERENCE **
session.findById("wnd[0]/usr/btn%_ACTGRPS_%_APP_%-VALU_PUSH").press
' ** END OF DIFFERENCE **
session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1,0]").Text = "*******"

所以,正如你所看到的,只有标记的线条才有区别。

我应该怎么做才能得到一个通用的代码,这样我就可以只用一个代码在这两个系统中运行?

EN

回答 1

Stack Overflow用户

发布于 2017-07-04 08:28:05

尝尝这个

代码语言:javascript
复制
Private Sub MySAPSub(SystemType As String)
    session.findById("wnd[0]").maximize
    session.findById("wnd[0]/tbar[0]/okcd").Text = "suim"
    session.findById("wnd[0]").sendVKey 0
    session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").expandNode "02 1 2"
    session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").topNode = "01 1 1"
    session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").expandNode "03 2 7"
    session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").selectItem "04 2 8", "1"
    session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").ensureVisibleHorizontalItem "04 2 8", "1"
    session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").topNode = "01 1 1"
    session.findById("wnd[0]/usr/cntlTREE_CONTROL_CONTAINER/shellcont/shell").clickLink "04 2 8", "1"

    If (SystemType = "ABC 100") Then
        session.findById("wnd[0]/usr/tabsTABSTRIP_TAB/tabpTAB3").Select
        session.findById("wnd[0]/usr/tabsTABSTRIP_TAB/tabpTAB3/ssub%_SUBSCREEN_TAB:RSUSR002:1003/btn%ACTGRPS%APP%-VALU_PUSH").press
    ElseIf (SystemType = "ABC 200") Then
        session.findById("wnd[0]/usr/btn%ACTGRPS%APP%-VALU_PUSH").press
    End If

    session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1,0]").Text = "*******"
End Sub

Private Sub CallMySAPSub()

    ' Call System ABC 100
    MySAPSub ("ABC 100")

    ' Call System ABC 200
    MySAPSub ("ABC 200")
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44900554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档