点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨,大家 我们有数千个日记帐分...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨,大家 我们有数千个日记帐分...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,大家
我们有数千个日记帐分录要发布到SAP Business One中。 因此,我们决定编写一个小程序来完成这项工作。
我们不是使用Visual Studio开发完整的附件,而是决定使用Excel Visual Basic( VBA)处理DI API。
这是我们的策略:
我们的问题:
如果Excel工作表仅包含1行(1 JE),则将其发布而不会出现问题。
但是,如果Excel工作表包含几行(几个JE),则仅成功发布第一行。 无法发布第二行(第二JE)。 显示此消息:
我们不理解这个问题,因为我们没有尝试过将Dr和Cr张贴在一行中。
无论如何,如果我们删除Excel的第一行,则拒绝发布的第二行现已成功发布。
因此,似乎在执行循环时会出现错误。
希望有人可以提供帮助。
谢谢
利昂
--------------------------------------------------- ----------------------
以下是我们的Excel工作表的图片:
--------------------------------------------------- --------------------------
这是我们的VBA代码:
未显示连接详细信息,但它们可以正常工作。
Dim oCompany作为SAPbobsCOM.Company 公开子CreateOrder_Click() 尽可能长的Dim lRetCode Dim sErrMsg作为字符串 答案为整数 昏暗计数器为整数:计数器= 1 Dim RowNo作为整数:RowNo = 13 '连接到SBO 登录'//我们没有显示代码,但是可以正常工作 '声明销售订单DI API对象 作为SAPbobsCOM.JournalEntries的昏暗对象 设置oJE = oCompany.GetBusinessObject(oJournalEntries) 如果(Worksheets(" JEsalesINV")。Cells(RowNo,1)="")然后 MsgBox"没有更多条目可发布!",vbExclamation 退出子 万一 答案= MsgBox("发布日记条目?",vbYesNo + vbQuestion + vbDefaultButton2) 如果答案= vb否 退出子 万一 '================================================= =================== 'Journal Entry工作表= JEsalesINV '================================================= =================== 同时执行(Worksheets(" JEsalesINV")。Cells(RowNo,1)<>""和Counter <= 10) NoOfRows = Worksheets(" JEsalesINV")。Cells(RowNo,10).Text '//有些JE有2行,有些3 选择Case NoOfRows'//日记帐分录中的行数 情况2'//如果日记帐分录中有2行 '----------------------- 标题日记帐分录 '---------------------- oJE.ReferenceDate = Worksheets(" JEsalesINV")。Cells(RowNo,3).Text oJE.DueDate = Worksheets(" JEsalesINV")。Cells(RowNo,4).Text oJE.TaxDate = Worksheets(" JEsalesINV")。Cells(RowNo,5).Text oJE.Memo = Worksheets(" JEsalesINV")。Cells(RowNo,6).Text oJE.Reference = Worksheets(" JEsalesINV")。Cells(RowNo,7).Text oJE.Reference2 = Worksheets(" JEsalesINV")。Cells(RowNo,8).Text '--------------------------------------- '日记帐分录-第1和2行的详细信息 '--------------------------------------- oJE.Lines.AccountCode = Worksheets(" JEsalesINV")。Cells(RowNo,11).Text oJE.Lines.LineMemo = Worksheets(" JEsalesINV")。Cells(RowNo,12).Text oJE.Lines.Debit = Worksheets(" JEsalesINV")。Cells(RowNo,13).Text oJE.Lines.Reference1 = Worksheets(" JEsalesINV")。Cells(RowNo,14).Text oJE.Lines.Reference2 = Worksheets(" JEsalesINV")。Cells(RowNo,15).Text oJE.Lines.ReferenceDate1 = Worksheets(" JEsalesINV")。Cells(RowNo,3).Text oJE.Lines.TaxDate = Worksheets(" JEsalesINV")。Cells(RowNo,5).Text oJE.Lines.DueDate = Worksheets(" JEsalesINV")。Cells(RowNo,4).Text oJE.Lines.TaxGroup =" O1.1" oJE.Lines.Add oJE.Lines.AccountCode = Worksheets(" JEsalesINV")。Cells(RowNo,17).Text oJE.Lines.LineMemo = Worksheets(" JEsalesINV")。Cells(RowNo,18).Text oJE.Lines.Credit = Worksheets(" JEsalesINV")。Cells(RowNo,19).Text oJE.Lines.Reference1 = Worksheets(" JEsalesINV")。Cells(RowNo,20).Text oJE.Lines.Reference2 = Worksheets(" JEsalesINV")。Cells(RowNo,21).Text oJE.Lines.ReferenceDate1 = Worksheets(" JEsalesINV")。Cells(RowNo,3).Text oJE.Lines.TaxDate = Worksheets(" JEsalesINV")。Cells(RowNo,5).Text oJE.Lines.DueDate = Worksheets(" JEsalesINV")。Cells(RowNo,4).Text oJE.Lines.Add lRetCode = oJE.Add 如果lRetCode <> 0然后 sErrMsg = oCompany.GetLastErrorDescription MsgBox sErrMsg 退出子 否则,如果iRetCode = 0,则 '//在Excel中发布行后,我们将行涂成红色 行数(行数)。选择 Selection.Interior.Color = vbRed 计数器=计数器+ 1 行号=行号+ 1 万一 情况3'//如果日记帐分录中有3行 '----------------------- 标题日记帐分录 '---------------------- oJE.ReferenceDate = Worksheets(" JEsalesINV")。Cells(RowNo,3).Text oJE.DueDate = Worksheets(" JEsalesINV")。Cells(RowNo,4).Text oJE.TaxDate = Worksheets(" JEsalesINV")。Cells(RowNo,5).Text oJE.Memo = Worksheets(" JEsalesINV")。Cells(RowNo,6).Text oJE.Reference = Worksheets(" JEsalesINV")。Cells(RowNo,7).Text oJE.Reference2 = Worksheets(" JEsalesINV")。Cells(RowNo,8).Text '------------------------------------------- '日记帐分录-第1,2和3行的详细信息 '-------------------------------------------- oJE.Lines.AccountCode = Worksheets(" JEsalesINV")。Cells(RowNo,11).Text oJE.Lines.LineMemo = Worksheets(" JEsalesINV")。Cells(RowNo,12).Text oJE.Lines.Debit = Worksheets(" JEsalesINV")。Cells(RowNo,13).Text oJE.Lines.Reference1 = Worksheets(" JEsalesINV")。Cells(RowNo,14).Text oJE.Lines.Reference2 = Worksheets(" JEsalesINV")。Cells(RowNo,15).Text oJE.Lines.ReferenceDate1 = Worksheets(" JEsalesINV")。Cells(RowNo,3).Text oJE.Lines.TaxDate = Worksheets(" JEsalesINV")。Cells(RowNo,5).Text oJE.Lines.DueDate = Worksheets(" JEsalesINV")。Cells(RowNo,4).Text oJE.Lines.TaxGroup =" O1.1" oJE.Lines.Add oJE.Lines.AccountCode = Worksheets(" JEsalesINV")。Cells(RowNo,17).Text oJE.Lines.LineMemo = Worksheets(" JEsalesINV")。Cells(RowNo,18).Text oJE.Lines.Credit = Worksheets(" JEsalesINV")。Cells(RowNo,19).Text oJE.Lines.Reference1 = Worksheets(" JEsalesINV")。Cells(RowNo,20).Text oJE.Lines.Reference2 = Worksheets(" JEsalesINV")。Cells(RowNo,21).Text oJE.Lines.ReferenceDate1 = Worksheets(" JEsalesINV")。Cells(RowNo,3).Text oJE.Lines.TaxDate = Worksheets(" JEsalesINV")。Cells(RowNo,5).Text oJE.Lines.DueDate = Worksheets(" JEsalesINV")。Cells(RowNo,4).Text oJE.Lines.Add oJE.Lines.AccountCode = Worksheets(" JEsalesINV")。Cells(RowNo,23).Text oJE.Lines.LineMemo = Worksheets(" JEsalesINV")。Cells(RowNo,24).Text oJE.Lines.Credit = Worksheets(" JEsalesINV")。Cells(RowNo,25).Text oJE.Lines.Reference1 = Worksheets(" JEsalesINV")。Cells(RowNo,26).Text oJE.Lines.Reference2 = Worksheets(" JEsalesINV")。Cells(RowNo,27).Text oJE.Lines.ReferenceDate1 = Worksheets(" JEsalesINV")。Cells(RowNo,3).Text oJE.Lines.TaxDate = Worksheets(" JEsalesINV")。Cells(RowNo,5).Text oJE.Lines.DueDate = Worksheets(" JEsalesINV")。Cells(RowNo,4).Text oJE.Lines.Add lRetCode = oJE.Add 如果lRetCode <> 0然后 sErrMsg = oCompany.GetLastErrorDescription MsgBox sErrMsg 退出子 否则,如果iRetCode = 0,则 行数(行数)。选择 Selection.Interior.Color = vbRed 计数器=计数器+ 1 行号=行号+ 1 万一 结束选择 循环capture.jpg (22.9 kB)
嗨,首先,对您建议的智能解决方案表示了很多赞赏。
我有很大的差距要解决:如何将SBO库引用到VBA环境中?
预先感谢您
一周热门 更多>