配方更新-特定阶段的行选择

问题描述

我的脚本正在从Excel数据中将数据加载到SAP GUI配方屏幕(事务代码C202)中。

在“配方”屏幕之一中,将根据Excel中的“相”值列输入值。我需要为Excel工作表中的每个特定“阶段”更新第二个“标准值”和第三个“标准值”。

SAP C202

Excel

您能帮我吗?我需要在行之间切换以修改每个阶段

For i = 1 To LastRow

session.findById("wnd[0]/tbar[0]/okcd").Text = "/nC202"
session.findById("wnd[0]").sendVKey 0

Plant = shControlPanel.Range("A" & CurrentRow).Value
RecipeGroup = shControlPanel.Range("B" & CurrentRow).Value
Recipe = shControlPanel.Range("C" & CurrentRow).Value
ECR = shControlPanel.Range("D" & CurrentRow).Value
Phase = shControlPanel.Range("E" & CurrentRow).Value
Value2 = shControlPanel.Range("F" & CurrentRow).Value
Value3 = shControlPanel.Range("G" & CurrentRow).Value


session.findById("wnd[0]/usr/ctxtRC271-PLNNR").Text = RecipeGroup
session.findById("wnd[0]/usr/txtRC271-PLNAL").Text = Recipe
session.findById("wnd[0]/usr/ctxtRC27M-WERKS").Text = Plant
session.findById("wnd[0]/usr/ctxtRC271-AENNR").Text = ECR
session.findById("wnd[0]/usr/ctxtRC271-STTAG").Text = "04.09.2020"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0

    j = 1
    Phasetochange = session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/txtPLPOD-VORNR[0," & j & "]").Text
    Resorce = session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/ctxtPLPOD-ARBPL[4," & j & "]").Text
    do while Resorce <> ""
    
    Phasetochange = session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/txtPLPOD-VORNR[0," & j & "]").Text
    
        If Phase = Phasetochange Then

            session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/txtPLPOD-VGW02[18," & j & "]").Text = Value2
            session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/txtPLPOD-VGW03[21," & j & "]").Text = Value3
            session.findById("wnd[0]").sendVKey 0
            j = j + 1
        Else
            j = j + 1
        End If

CurrentRow = CurrentRow + 1
Phase = shControlPanel.Range("E" & CurrentRow).Value
Value2 = shControlPanel.Range("F" & CurrentRow).Value
Value3 = shControlPanel.Range("G" & CurrentRow).Value

Loop

session.findById("wnd[0]/tbar[0]/btn[11]").press

On Error Resume Next
session.findById("wnd[1]/usr/btnSPOP-VAROPTION1").press

shControlPanel.Range("H" & CurrentRow).Value = "Recipe " & Recipe & " has been changed"

CurrentRow = CurrentRow + 1

解决方法

我无权访问事务C202。但是从我的角度来看,我试图使事情顺利进行。

LastRow = ActiveCell.SpecialCells(xlLastCell).Row

For i = 1 To LastRow

session.findById("wnd[0]/tbar[0]/okcd").Text = "/nC202"
session.findById("wnd[0]").sendVKey 0

Plant = shControlPanel.Range("A" & i).Value
RecipeGroup = shControlPanel.Range("B" & i).Value
Recipe = shControlPanel.Range("C" & i).Value
ECR = shControlPanel.Range("D" & i).Value
Phase = shControlPanel.Range("E" & i).Value
Value2 = shControlPanel.Range("F" & i).Value
Value3 = shControlPanel.Range("G" & i).Value


session.findById("wnd[0]/usr/ctxtRC271-PLNNR").Text = RecipeGroup
session.findById("wnd[0]/usr/txtRC271-PLNAL").Text = Recipe
session.findById("wnd[0]/usr/ctxtRC27M-WERKS").Text = Plant
session.findById("wnd[0]/usr/ctxtRC271-AENNR").Text = ECR
session.findById("wnd[0]/usr/ctxtRC271-STTAG").Text = "04.09.2020"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0

j = 1

Do  

PhaseToChange = session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/txtPLPOD-VORNR[0," & j & "]").Text
Resorce = session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/ctxtPLPOD-ARBPL[4," & j & "]").Text
    If Resorce = "" then exit do
    If Phase = PhaseToChange Then

        session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/txtPLPOD-VGW02[18," & j & "]").Text = Value2
        session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/txtPLPOD-VGW03[21," & j & "]").Text = Value3
        session.findById("wnd[0]").sendVKey 0
  
        shControlPanel.Range("H" & i).Value = "Recipe " & Recipe & " has been changed"
     End If
     j = j + 1
          
Loop

session.findById("wnd[0]/tbar[0]/btn[11]").press

On Error Resume Next
session.findById("wnd[1]/usr/btnSPOP-VAROPTION1").press
On error goto 0

next i

关于ScriptMan,