SAP VBA 自动化 FBL5N

问题描述

我正在尝试使用来自此 Excel 工作表的数据自动执行交易 FBL5N 中的催款块:

enter image description here

要做的是输入客户代码,然后访问客户并按分配进行过滤。

然后我复制并粘贴串联以及与串联相关的发票。

问题是发票是动态的,每个客户的发票编号都不相同,所以我需要为此列进行动态选择,这样它就会复制,直到它面对一个黑色的列,偏移这个黑色并继续工作表的其余部分。

到目前为止的代码

    Sub Main()


'setting the connection with sap


Dim App,Connection,session As Object

Set SapGuiAuto = Getobject("SAPGUI")

Set App = SapGuiAuto.GetScriptingEngine

Set Connection = App.Children(0)

Set session = Connection.Children(0)



'launch a transaction

session.findById("wnd[0]").maximize

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

session.findById("wnd[0]").sendVKey 0

Dim lastrow As Integer
Dim Z As Long

lastrow = Sheets("Main").Cells(Sheets("Main").Rows.Count,"A").End(xlUp).Row

For Z = 1 To lastrow


'fbl5n dunning block


session.findById("wnd[0]/usr/ctxtDD_KUNNR-LOW").Text = Cells(Z + 1,3).Value
session.findById("wnd[0]/usr/ctxtDD_BUKRS-LOW").Text = "2025"
session.findById("wnd[0]/usr/ctxtDD_KUNNR-LOW").caretPosition = 7
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[0]/usr/lbl[9,5]").SetFocus
session.findById("wnd[0]/usr/lbl[9,5]").caretPosition = 6
session.findById("wnd[0]").sendVKey 2
session.findById("wnd[0]/tbar[1]/btn[38]").press
session.findById("wnd[1]/usr/ssub%_SUBSCREEN_FREESEL:SAPLSSEL:1105/btn%_%%DYN001_%_APP_%-VALU_PUSH").press
session.findById("wnd[2]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1,0]").Text = Cells(Z + 1,13).Value
session.findById("wnd[2]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1,1]").SetFocus
session.findById("wnd[2]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1,1]").caretPosition = rng
session.findById("wnd[2]/tbar[0]/btn[24]").press
session.findById("wnd[2]/tbar[0]/btn[8]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]").sendVKey 5
session.findById("wnd[0]/tbar[1]/btn[45]").press
session.findById("wnd[1]/usr/ctxt*BSEG-MANSP").Text = "z"
session.findById("wnd[1]/usr/txt*BSEG-SGTXT").Text = Cells(Z + 1,11).Value
session.findById("wnd[1]/usr/txt*BSEG-SGTXT").SetFocus
session.findById("wnd[1]/usr/txt*BSEG-SGTXT").caretPosition = 6
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/tbar[0]/btn[3]").press

Next

End Sub



Public Function rng()

Dim i As Long

Range("K2").Select

Do Until IsEmpty(ActiveCell)

    Selection.copy

ActiveCell.Offset(1,0).Select

    Loop
End Function

    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)