Мой код не может установить новый сеанс, когда появляется окно - PullRequest
0 голосов
/ 04 сентября 2018

Я только начал программировать и знаю о своих плохих навыках программирования. Пожалуйста, предоставьте некоторую критику относительно того, какие части моего кода мне следовало бы сделать лучше.

Прошу прощения за неясное объяснение в моем первом посте. Я добавил некоторые правки, чтобы прояснить этот вопрос.

Мои вопросы:

  1. Если ошибка возобновится после: я поставил ее в нужное место?

  2. Иногда при запуске SAP у меня появляются дополнительные окна. Мне просто нужно нажать ОК, когда они всплывают. В некоторых случаях мне также нужно начинать цикл заново, если появляется конкретное всплывающее окно. Я предполагаю, что это то, что программисты называют событиями.

В моем коде у меня есть две ситуации:

  1. когда появляется окно и пользователь просто должен нажать OK и следовать действующему коду. для этого я написал следующее:

If Session.findById("wnd[2]/tbar[0]/btn[0]") Then
Session.findById("wnd[2]/tbar[0]/btn[0]").press
End If

  1. когда появляется окно и цикл должен быть возобновлен при следующем i. Я не уверен, как справиться с этой ситуацией. Кодовая строка для такого окна следующая: Session.findById("wnd[1]/tbar[0]/btn[0]")

Моя проблема в том, что я не могу установить новый сеанс в SAP, потому что у меня есть всплывающие окна с одинаковыми заголовками / строками. Например: «wnd [2] / tbar [0] / btn [0]» или «wnd [1] / tbar [0] / btn [0]» В некоторых случаях я хочу, чтобы скрипт запускал новый сеанс и в В некоторых случаях я просто хочу продолжить после нажатия ОК.

Я высоко ценю ваши отзывы и рекомендации. Спасибо.

 Sub Data_Satan()
...
    Session.findById("wnd[0]").maximize
    Session.findById("wnd[0]/tbar[0]/okcd").Text = "/nCT04"
    Session.findById("wnd[0]/tbar[0]/btn[0]").press

    Set objExcel = GetObject(, "Excel.Application")
    Set objSheet = objExcel.ActiveWorkbook.ActiveSheet

    COL3 = Trim(CStr(objSheet.Range("C2").Value)) 'Column3
    COL4 = Trim(CStr(objSheet.Range("D2").Value)) 'Column4

    Session.findById("wnd[0]/usr/subCHARACT:SAPLCTMV:2000/subHEADER:SAPLCTMV:1100/ctxtRCTAV-ATNAM").Text = COL3
    Session.findById("wnd[0]/usr/subCHARACT:SAPLCTMV:2000/subHEADER:SAPLCTMV:1100/ctxtRCTAV-ATNAM").caretPosition = 13
    Session.findById("wnd[0]/usr/subCHARACT:SAPLCTMV:2000/subHEADER:SAPLCTMV:1100/btnDISPLAY").press
    Session.findById("wnd[0]/mbar/menu[4]/menu[0]").Select
    Session.findById("wnd[0]/usr/chkGF_DEP").Selected = True
    Session.findById("wnd[0]/usr/ctxtCAWN-ATWRT").Text = COL4
    Session.findById("wnd[0]/usr/chkGF_DEP").SetFocus
    Session.findById("wnd[0]/tbar[1]/btn[8]").press

    Dim myTree As Object
    Dim RowCount, rows, i, j As Integer

    Set myTree = Session.findById("wnd[0]/usr/cntlUSAGE_TREE_CONTAINER/shellcont/shell/shellcont[1]/shell[1]")
    RowCount = myTree.GetColumnCol(myTree.GetColumnNames.Item(0)).Length
    rows = RowCount - 1

    For i = 5 To rows

j = i - 3

     myTree.selectedNode Right("          " + CStr(i), 11)
     myTree.doubleClickNode Right("          " + CStr(i), 11)

    Session.findById("wnd[0]/mbar/menu[4]/menu[0]").Select

On Error Resume Next

    'If Session.findById("wnd[1]/tbar[0]/btn[0]") Then
    'Session.findById("wnd[1]/tbar[0]/btn[0]").press
    'Session.findById("wnd[0]/tbar[0]/btn[3]").press
    'End If

    'WE REACHED THE TABLE

    Session.findById("wnd[0]/usr/lbl[6,8]").SetFocus
    Session.findById("wnd[0]/usr/lbl[6,8]").caretPosition = 1

    Session.findById("wnd[0]").sendVKey 2
    Session.findById("wnd[0]/usr/tabsTS_ITEM/tabpPHPT/ssubSUBPAGE:SAPLCSDI:0830/ctxtRC29P-IDNRK").SetFocus
    Session.findById("wnd[0]/usr/tabsTS_ITEM/tabpPHPT/ssubSUBPAGE:SAPLCSDI:0830/ctxtRC29P-IDNRK").caretPosition = 5
    Session.findById("wnd[0]").sendVKey 2
    Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27").Select
    Session.findById("wnd[1]/usr/ctxtRMMG1-WERKS").Text = "0600"
    Session.findById("wnd[1]/usr/ctxtRMMG1-WERKS").caretPosition = 4
    Session.findById("wnd[1]/tbar[0]/btn[0]").press


    If Session.findById("wnd[2]/tbar[0]/btn[0]") Then
    Session.findById("wnd[2]/tbar[0]/btn[0]").press
    End If

    Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2953/txtMBEW-STPRS").SetFocus
    Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2953/txtMBEW-STPRS").caretPosition = 0

    cost = Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2953/txtMBEW-STPRS").Text
    Range("G" & j) = cost 'Returns the most recent cost of a production part

    Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB1:SAPLMGD1:1009/ctxtRMMG1-MATNR").SetFocus
    Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB1:SAPLMGD1:1009/ctxtRMMG1-MATNR").caretPosition = 7

    material = Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB1:SAPLMGD1:1009/ctxtRMMG1-MATNR").Text
    Range("E" & j) = material 'Returns a production part number

    Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB1:SAPLMGD1:1009/txtMAKT-MAKTX").SetFocus
    Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB1:SAPLMGD1:1009/txtMAKT-MAKTX").caretPosition = 8

    description = Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB1:SAPLMGD1:1009/txtMAKT-MAKTX").Text
    Range("F" & j) = description 'Returns production part description

    Next i

    End Sub

1 Ответ

0 голосов
/ 05 сентября 2018

Я думаю, что нашел решение. Вот мой код:

Session.findById("wnd[0]").maximize
Session.findById("wnd[0]/tbar[0]/okcd").Text = "/nCT04"
Session.findById("wnd[0]/tbar[0]/btn[0]").press

Set objExcel = GetObject(, "Excel.Application")
Set objSheet = objExcel.ActiveWorkbook.ActiveSheet

COL3 = Trim(CStr(objSheet.Range("C2").Value)) 'Column3
COL4 = Trim(CStr(objSheet.Range("D2").Value)) 'Column4

Session.findById("wnd[0]/usr/subCHARACT:SAPLCTMV:2000/subHEADER:SAPLCTMV:1100/ctxtRCTAV-ATNAM").Text = COL3
Session.findById("wnd[0]/usr/subCHARACT:SAPLCTMV:2000/subHEADER:SAPLCTMV:1100/ctxtRCTAV-ATNAM").caretPosition = 13
Session.findById("wnd[0]/usr/subCHARACT:SAPLCTMV:2000/subHEADER:SAPLCTMV:1100/btnDISPLAY").press
Session.findById("wnd[0]/mbar/menu[4]/menu[0]").Select
Session.findById("wnd[0]/usr/chkGF_DEP").Selected = True
Session.findById("wnd[0]/usr/ctxtCAWN-ATWRT").Text = COL4
Session.findById("wnd[0]/usr/chkGF_DEP").SetFocus
Session.findById("wnd[0]/tbar[1]/btn[8]").press

Dim myTree As Object
Dim RowCount, rows, i, j As Integer

Set myTree = Session.findById("wnd[0]/usr/cntlUSAGE_TREE_CONTAINER/shellcont/shell/shellcont[1]/shell[1]")
RowCount = myTree.GetColumnCol(myTree.GetColumnNames.Item(0)).Length
rows = RowCount - 1

For i = 5 To rows

 j = i - 3
 
 myTree.selectedNode Right("          " + CStr(i), 11)
 myTree.doubleClickNode Right("          " + CStr(i), 11)
 
Session.findById("wnd[0]/mbar/menu[4]/menu[0]").Select

If Session.ActiveWindow.Name = "wnd[1]" Then
'Session.findById("wnd[1]/tbar[0]/btn[0]").press
Session.findById("wnd[1]").sendVKey 0
Session.findById("wnd[0]/tbar[0]/btn[3]").press
GoTo NextIteration
End If

'WE REACHED THE TABLE

Session.findById("wnd[0]/usr/lbl[6,8]").SetFocus
Session.findById("wnd[0]/usr/lbl[6,8]").caretPosition = 1

Session.findById("wnd[0]").sendVKey 2
Session.findById("wnd[0]/usr/tabsTS_ITEM/tabpPHPT/ssubSUBPAGE:SAPLCSDI:0830/ctxtRC29P-IDNRK").SetFocus
Session.findById("wnd[0]/usr/tabsTS_ITEM/tabpPHPT/ssubSUBPAGE:SAPLCSDI:0830/ctxtRC29P-IDNRK").caretPosition = 5
Session.findById("wnd[0]").sendVKey 2
Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27").Select
Session.findById("wnd[1]/usr/ctxtRMMG1-WERKS").Text = "0600"
Session.findById("wnd[1]/usr/ctxtRMMG1-WERKS").caretPosition = 4
Session.findById("wnd[1]/tbar[0]/btn[0]").press


If Session.ActiveWindow.Name = "wnd[2]" Then
'Session.findById("wnd[2]/tbar[0]/btn[0]").press
Session.findById("wnd[2]").sendVKey 0
End If


Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2953/txtMBEW-STPRS").SetFocus
Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2953/txtMBEW-STPRS").caretPosition = 0

cost = Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2953/txtMBEW-STPRS").Text
Range("G" & j) = cost 'Returns the most recent cost of a production part

Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB1:SAPLMGD1:1009/ctxtRMMG1-MATNR").SetFocus
Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB1:SAPLMGD1:1009/ctxtRMMG1-MATNR").caretPosition = 7

material = Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB1:SAPLMGD1:1009/ctxtRMMG1-MATNR").Text
Range("E" & j) = material 'Returns a production part number

Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB1:SAPLMGD1:1009/txtMAKT-MAKTX").SetFocus
Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB1:SAPLMGD1:1009/txtMAKT-MAKTX").caretPosition = 8

description = Session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP27/ssubTABFRA1:SAPLMGMM:2000/subSUB1:SAPLMGD1:1009/txtMAKT-MAKTX").Text
Range("F" & j) = description 'Returns production part description

Session.findById("wnd[0]/tbar[0]/btn[3]").press
Session.findById("wnd[0]/tbar[0]/btn[3]").press
Session.findById("wnd[0]/tbar[0]/btn[3]").press
Session.findById("wnd[0]/tbar[0]/btn[3]").press
    
NextIteration:
Next i

    
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...