通过DI API的时间表

2020-09-18 13:29发布

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

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


大家好,

我们正在使用SAP B1 9.2 PL08,我们在vba(excel)中完成了一个宏,以使用DI API(sapbobscom)与sap进行交互。 效果很好。 现在,我想使用TimeSheet对象注册用户的时间。 我在网上找到了一个示例( https://blogs.sap.com/2017/08/01/time-sheet-in-sap-business-one-sdk /),并尝试将其翻译成vba,但没有成功。

以下是我的代码:

将oCompanyService设置为SAPbobsCOM.CompanyService
     将oTimeSheetService设置为SAPbobsCOM.ProjectManagementTimeSheetService
     将oTimeSheet设置为SAPbobsCOM.PM_TimeSheetData
     将oTimeSheetLine设置为SAPbobsCOM.PM_TimeSheetLineData
     将oTimeSheetParam设置为SAPbobsCOM.PM_TimeSheetParams
     昏暗的开始时间作为日期
     结束时间为日期
     昏暗的休息时间作为日期
     Dim NonBillableTime作为日期
    
     连接SQLSAPOpen
    
     设置oCompanyService = oCompanySAP.GetCompanyService
     设置oTimeSheetService = oCompanyService.GetBusinessService(ProjectManagementTimeSheetService)
     设置oTimeSheet = oTimeSheetService.GetDataInterface(pmtssPM_TimeSheetData)
     设置oTimeSheetLine = oTimeSheetService.GetDataInterface(pmtssPM_TimeSheetLineData)
     设置oTimeSheetParam = oTimeSheetService.GetDataInterface(pmtssPM_TimeSheetParams)
    
     oTimeSheet.TimeSheetType = SAPbobsCOM.TimeSheetTypeEnum.tsh_Employee
     oTimeSheet.UserId = 2
    
    
     StartTime = VBA.DateAdd(" h",7,VBA.Int(Now))'开始7.00
     EndTime = VBA.DateAdd(" n",90,StartTime)'相加90分钟
     breakTime = VBA.DateAdd(" n",45,VBA.Int(Now))'暂停45分钟


     NonBillableTime = VBA.DateAdd(" n",15,VBA.Int(Now))
     oTimeSheetLine.Date =现在
     oTimeSheetLine.StartTime =开始时间
     oTimeSheetLine.EndTime =结束时间
     oTimeSheetLine.Break = breakTime
     oTimeSheetLine.NonBillableTime = NonBillableTime
     oTimeSheetLine.ActivityType = 1
     oTimeSheetLine.CostCenter =""
     oTimeSheetLine.FinancialProject =" 090"
    
     oTimeSheetLine = oTimeSheet.PM_TimeSheetLineDataCollection.Add()
    
     oTimeSheetParam = oTimeSheetService.AddTimeSheet(oTimeSheet)
    
     连接SQLSAP关闭
 

我们的程序在'oTimeSheetLine = oTimeSheet.PM_TimeSheetLineDataCollection.Add()'处停止。


能帮我吗?


亲切的问候

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

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


大家好,

我们正在使用SAP B1 9.2 PL08,我们在vba(excel)中完成了一个宏,以使用DI API(sapbobscom)与sap进行交互。 效果很好。 现在,我想使用TimeSheet对象注册用户的时间。 我在网上找到了一个示例( https://blogs.sap.com/2017/08/01/time-sheet-in-sap-business-one-sdk /),并尝试将其翻译成vba,但没有成功。

以下是我的代码:

将oCompanyService设置为SAPbobsCOM.CompanyService
     将oTimeSheetService设置为SAPbobsCOM.ProjectManagementTimeSheetService
     将oTimeSheet设置为SAPbobsCOM.PM_TimeSheetData
     将oTimeSheetLine设置为SAPbobsCOM.PM_TimeSheetLineData
     将oTimeSheetParam设置为SAPbobsCOM.PM_TimeSheetParams
     昏暗的开始时间作为日期
     结束时间为日期
     昏暗的休息时间作为日期
     Dim NonBillableTime作为日期
    
     连接SQLSAPOpen
    
     设置oCompanyService = oCompanySAP.GetCompanyService
     设置oTimeSheetService = oCompanyService.GetBusinessService(ProjectManagementTimeSheetService)
     设置oTimeSheet = oTimeSheetService.GetDataInterface(pmtssPM_TimeSheetData)
     设置oTimeSheetLine = oTimeSheetService.GetDataInterface(pmtssPM_TimeSheetLineData)
     设置oTimeSheetParam = oTimeSheetService.GetDataInterface(pmtssPM_TimeSheetParams)
    
     oTimeSheet.TimeSheetType = SAPbobsCOM.TimeSheetTypeEnum.tsh_Employee
     oTimeSheet.UserId = 2
    
    
     StartTime = VBA.DateAdd(" h",7,VBA.Int(Now))'开始7.00
     EndTime = VBA.DateAdd(" n",90,StartTime)'相加90分钟
     breakTime = VBA.DateAdd(" n",45,VBA.Int(Now))'暂停45分钟


     NonBillableTime = VBA.DateAdd(" n",15,VBA.Int(Now))
     oTimeSheetLine.Date =现在
     oTimeSheetLine.StartTime =开始时间
     oTimeSheetLine.EndTime =结束时间
     oTimeSheetLine.Break = breakTime
     oTimeSheetLine.NonBillableTime = NonBillableTime
     oTimeSheetLine.ActivityType = 1
     oTimeSheetLine.CostCenter =""
     oTimeSheetLine.FinancialProject =" 090"
    
     oTimeSheetLine = oTimeSheet.PM_TimeSheetLineDataCollection.Add()
    
     oTimeSheetParam = oTimeSheetService.AddTimeSheet(oTimeSheet)
    
     连接SQLSAP关闭
 

我们的程序在'oTimeSheetLine = oTimeSheet.PM_TimeSheetLineDataCollection.Add()'处停止。


能帮我吗?


亲切的问候

付费偷看设置
发送
2条回答
天桥码农
1楼 · 2020-09-18 13:45.采纳回答

代替第一个Set oTimesheetLine语句,将您的内容放在最后,除了使用" Set"关键字之外:

设置oTimeSheetLine = oTimeSheet.PM_TimeSheetLineDataCollection.Add()

还要确保在调用AddTimeSheet时使用" Set"关键字:

设置oTimeSheetParam = oTimeSheetService.AddTimeSheet(oTimeSheet)
shere_lin
2楼-- · 2020-09-18 13:42

谢谢Dan,它起到了魅力;-)

一周热门 更多>