如何通过VBA将日期间隔传递给SAP Business Objects?

2020-09-24 14:00发布

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

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


您好,亲爱的SAP社区

我正在尝试编写一些适用于MS Office的SAP BO Analysis(2.3.3.63237 MUI 1.2)的VBA代码。 我的主要目的是创建一个宏,单击该宏后,应首先刷新电子表格中的数据源,然后根据所述电子表格中某处表格中关键人物的某些实例来更新数据源(也在下面) )。 我现在遇到的问题是如何指示某个日期间隔。 以下代码不起作用,因为我在语法上犯了一个错误,或者在尝试传递日期间隔的那一行上我的方法是完全错误的。

例如,在这种情况下,如何将符号从" ="更改为" []"? 这是减少间隔的必要步骤,还是还有其他方法? 我如何在"提示"窗口中知道这些字段的"技术名称"?

您可以说,我在这方面不是专业人士。 我只是尝试了VBA和SAP BO,并编写了以下代码。 任何有关如何以更好的方式执行此操作的指导将不胜感激!

"提示"窗口的外观如下:(在这种情况下,我想将日期作为间隔传递,如下所示):

源表的外观:

公共Sub MyRefresh()
     结果暗淡
     lResult = Application.Run(" SAPExecuteCommand"," Refresh"," DS_32")
     调用Application.Run(" SAPSetRefreshBehaviour","关闭")
     调用Application.Run(" SAPExecuteCommand"," PauseVariableSubmit","开")
     myBegDate = Worksheets(" source")。Range(" AQ4")。Value
     myEndDate = Worksheets(" source")。Range(" AR4")。Value

     lResult = Application.Run(" SAPSetVariable","日历月/年",myBegDate-myEndDate," INPUT_STRING"," DS_32")
     lResult = Application.Run(" SAPSetVariable"," APO市场",Worksheets("源").Range(" AT4")。值," INPUT_STRING"," DS_32")

     调用Application.Run(" SAPExecuteCommand"," PauseVariableSubmit","关闭")
     调用Application.Run(" SAPSetRefreshBehaviour","开")
 结束
source.jpg (22.3 kB)

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

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


您好,亲爱的SAP社区

我正在尝试编写一些适用于MS Office的SAP BO Analysis(2.3.3.63237 MUI 1.2)的VBA代码。 我的主要目的是创建一个宏,单击该宏后,应首先刷新电子表格中的数据源,然后根据所述电子表格中某处表格中关键人物的某些实例来更新数据源(也在下面) )。 我现在遇到的问题是如何指示某个日期间隔。 以下代码不起作用,因为我在语法上犯了一个错误,或者在尝试传递日期间隔的那一行上我的方法是完全错误的。

例如,在这种情况下,如何将符号从" ="更改为" []"? 这是减少间隔的必要步骤,还是还有其他方法? 我如何在"提示"窗口中知道这些字段的"技术名称"?

您可以说,我在这方面不是专业人士。 我只是尝试了VBA和SAP BO,并编写了以下代码。 任何有关如何以更好的方式执行此操作的指导将不胜感激!

"提示"窗口的外观如下:(在这种情况下,我想将日期作为间隔传递,如下所示):

源表的外观:

公共Sub MyRefresh()
     结果暗淡
     lResult = Application.Run(" SAPExecuteCommand"," Refresh"," DS_32")
     调用Application.Run(" SAPSetRefreshBehaviour","关闭")
     调用Application.Run(" SAPExecuteCommand"," PauseVariableSubmit","开")
     myBegDate = Worksheets(" source")。Range(" AQ4")。Value
     myEndDate = Worksheets(" source")。Range(" AR4")。Value

     lResult = Application.Run(" SAPSetVariable","日历月/年",myBegDate-myEndDate," INPUT_STRING"," DS_32")
     lResult = Application.Run(" SAPSetVariable"," APO市场",Worksheets("源").Range(" AT4")。值," INPUT_STRING"," DS_32")

     调用Application.Run(" SAPExecuteCommand"," PauseVariableSubmit","关闭")
     调用Application.Run(" SAPSetRefreshBehaviour","开")
 结束
source.jpg (22.3 kB)
付费偷看设置
发送
2条回答
小灯塔
1楼 · 2020-09-24 14:40.采纳回答

嗨,默特,

要更新变量,您将需要为其使用技术名称,而不是外观名称。 即不是"日历月/年"

另外,对于日期范围,最好先将其构建到另一个字段中,然后在SAPSetVariable调用中使用该字段。

 MyDateRange = myBegDate&"-"&myEndDate

 Application.Run(" SAPSetVariable"," <可变技术名称>",MyDateRange," INPUT_STRING"," DS_32")

此页面在此提供了有关如何使用语法的更多信息: https://blogs.sap.com/2017/02/03/analysis-for-office-variables-and-filters-via-vba/

干杯

Regan

代楠1984
2楼-- · 2020-09-24 14:34

我为此线程的屏幕截图来自2.5 SP3。 特别是2.5.300.76689

一周热门 更多>