需要帮助,将数据从excel输入到SAP,然后从那里输出到excel

2020-09-19 01:32发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好!

我是SAP和VBA的新手,但我确实需要一些帮助!

我正在尝试从Excel工作表中获取通知编号,将其输入QM03,然后转到"项目"以将"缺陷类型"输出到excel,然后转到"项目任务" 使用任务代码P020,然后将"任务文本"输出到excel。

如果找不到通知号,我想跳过它,转到下一个。

我正在使用Windows的SAP GUI。

我将非常感谢您的帮助! 谢谢!

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好!

我是SAP和VBA的新手,但我确实需要一些帮助!

我正在尝试从Excel工作表中获取通知编号,将其输入QM03,然后转到"项目"以将"缺陷类型"输出到excel,然后转到"项目任务" 使用任务代码P020,然后将"任务文本"输出到excel。

如果找不到通知号,我想跳过它,转到下一个。

我正在使用Windows的SAP GUI。

我将非常感谢您的帮助! 谢谢!

付费偷看设置
发送
3条回答
能不能别闹
1楼-- · 2020-09-19 02:07

你好辛西娅,

欢迎使用SAP社区。

您可以尝试以下方法来满足您的要求:

昏暗NotificationNumbers(3)
   NotificationNumbers(0)=" 4711"
   NotificationNumbers(1)=" 4712"
   NotificationNumbers(2)=" 4713"


   对于i = 0到UBound(NotificationNumbers)-1
     Session.FindById(" wnd [0]/usr/ctxtRIWO00-QMNUM")。Text = NotificationNumbers(i)
     Session.FindById(" wnd [0]")。SendVKey 0
     StatusBarText = Session.FindById(" wnd [0]/sbar/pane [0]")。Text
     如果InStr(StatusBarText,"不存在"),则
       转到NextIteration
     万一
     '这是正常过程
 NextIteration:
   下一个
 

我使用字符串数组模拟不同的通知编号。 我遍历数组并将通知号设置为该字段。 然后执行QM03 TAC并阅读状态栏。 如果状态栏包含"不存在",我知道我必须跳到下一个通知号,因此我使用GoTo NextIteration。 否则我可以处理我的正常活动。

让我们知道您的结果。

干杯
Stefan

木偶小白
2楼-- · 2020-09-19 02:13

您好 Stefan Schnell

谢谢您的帮助!

我稍微修改了代码以包含我的范围,但由于SAP未返回数据,因此出现错误619。

您知道如何解决吗?

子QM03()
   Set SapGuiAuto = GetObject(" SAPGUI")'获取SAP GUI脚本对象
   设置SAPApp = SapGuiAuto.GetScriptingEngine'获取当前正在运行的SAP GUI
   Set SAPCon = SAPApp.Children(0)'获取当前已连接的第一个系统
   设置会话= SAPCon.Children(0)'获取该连接上的第一个会话(窗口)
   '开始交易以查看表格
   session.StartTransaction" QM03"
   Dim rngNotificationNumbers作为范围
   设置rngNotificationNumbers = Range(" A4:A704")
   Dim arrNotificationNumbers(700)作为字符串
   暗单元格范围
   昏暗的我只要
   我= 0
   对于i = 0到UBound(arrNotificationNumbers)-1
     session.FindById(" wnd [0]/usr/ctxtRIWO00-QM03")。Text = arrNotificationNumbers(i)
     session.FindById(" wnd [0]")。SendVKey 0
     StatusBarText = session.FindById(" wnd [0]/sbar/pane [0]")。Text
     如果InStr(StatusBarText,"不存在"),则
       转到NextIteration
     万一
 NextIteration:
   下一个
 结束

SAP砖家
3楼-- · 2020-09-19 02:14

你好辛西娅,

请尝试以下代码:

子QM03()
  
   昏暗的SapGuiAuto作为对象
   将SAPApp变暗为SAPFEWSELib.GuiApplication
   将SAPCon昏暗为SAPFEWSELib.GuiConnection
   昏暗的会话作为SAPFEWSELib.GuiSession
   Dim rngNotificationNumbers作为范围
   昏暗的我只要
   昏暗的StatusBarText作为字符串
  
   Set SapGuiAuto = GetObject(" SAPGUI")'获取SAP GUI脚本对象
   设置SAPApp = SapGuiAuto.GetScriptingEngine'获取当前正在运行的SAP GUI
   Set SAPCon = SAPApp.Children(0)'获取当前已连接的第一个系统
   设置会话= SAPCon.Children(0)'获取该连接上的第一个会话(窗口)
  
   '开始交易以查看表格
   session.StartTransaction" QM03"
  
   设置rngNotificationNumbers = Range(" A1:A3")
  
   对于i = 1到rngNotificationNumbers.Rows.Count
     session.FindById(" wnd [0]/usr/ctxtRIWO00-QMNUM")。Text = CStr(rngNotificationNumbers.Cells(i,1))
     session.FindById(" wnd [0]")。SendVKey 0
     StatusBarText = session.FindById(" wnd [0]/sbar/pane [0]")。Text
     如果InStr(StatusBarText,"不存在"),则
       转到NextIteration
     万一
     '如果通知号存在,请按这里的正常流程
 NextIteration:
   下一个

 结束子
 

在A1到A3单元格中是我的通知编号。

如上所述,我遍历该范围,并将每个通知号放在QM03字段中。

让我们知道您的结果。

干杯
Stefan

一周热门 更多>