通过VBA使用EPM功能时出现问题

2020-08-23 16:31发布

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

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


您好,专家!

我正在尝试使用Application.Run方法在VBA中调用EPM函数EPMSaveComment。 当用户尝试更改文本框中的文本时,此代码将在事件时启动。 它的工作不稳定,通常会返回值" #RFR",但有时它会正常工作并返回正确的注释。 我需要阅读此注释,而不是保存,但是函数EPMCommentPartialContext或EPMCommentFullContext根本无法正常工作,返回错误" #Error-意外错误。检查参数",因此我被迫尝试EPMSavecomment。 上面的代码示例。

我的软件版本:

BPC 10.0净重

EPM SP22 NET3.5 9188

还在EPM SP34补丁2上尝试过。NET 4.7.2 x86 10361-面临相同的问题。

(28.4 kB)

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

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


您好,专家!

我正在尝试使用Application.Run方法在VBA中调用EPM函数EPMSaveComment。 当用户尝试更改文本框中的文本时,此代码将在事件时启动。 它的工作不稳定,通常会返回值" #RFR",但有时它会正常工作并返回正确的注释。 我需要阅读此注释,而不是保存,但是函数EPMCommentPartialContext或EPMCommentFullContext根本无法正常工作,返回错误" #Error-意外错误。检查参数",因此我被迫尝试EPMSavecomment。 上面的代码示例。

我的软件版本:

BPC 10.0净重

EPM SP22 NET3.5 9188

还在EPM SP34补丁2上尝试过。NET 4.7.2 x86 10361-面临相同的问题。

(28.4 kB)
付费偷看设置
发送
6条回答
N-Moskvin
1楼-- · 2020-08-23 17:16

我使用屏幕截图只是为了展示所有已定义的手表。 寻求建议,代码为:

 tech_com_text = Application.Run(" EPMSaveComment",单元格(cl_collection(1).Row,1).Value," ZZZZZ"," STATUS_CUR_USER1"," U_NONE"," WFR_NONE",cl_collection(1).CFR_ID,  Range(" TIME_CONTEXT")。Value,Range(" CAT_CONTEXT")。Value,cl_collection(1).ID," PERIODIC")
 com_text = Application.Run(" EPMCommentFullContext"," ZZZZZ"," STATUS_CUR_STATUS"," U_NONE"," WFR_NONE",cl_collection(1).CFR_ID,Range(" TIME_CONTEXT")。Value,Range(" CAT_CONTEXT")。Value  ,cl_collection(1).ID," PERIODIC")

该想法是根据您的角色和登录名来限制评论的编辑。 评论应该仅能为评论作者或具有更高角色级别的人员进行编辑。 因此,当用户发表评论时,我们同时发布具有他的登录名和角色的技术评论。 当某人尝试编辑此注释时,我们需要检查当前用户的登录名并登录Tech com,如果不相同,我们检查他是否比技术注释中的角色要高。

# p#

对不起,但是,如果您要发布代码-有一个特殊的" CODE"按钮...

顺便说一句,在VBA中阅读注释背后的想法是什么?

派大星 ヾ
2楼-- · 2020-08-23 17:32

这个想法通常很糟糕:

1。 注释未编辑-每次保存后,新版本的注释都会添加到表格中,

2。 您可以尝试实施badi BADI_UJC_COMMENT_PREPROCESS

https://launchpad.support.sap.com/#/notes/0002002431

https://launchpad.support.sap.com/#/notes/0002424484

您将看到用户正在保存注释...

打个大熊猫
3楼-- · 2020-08-23 17:23

通常,即使在工作表上使用EPM注释相关功能也不可靠-不在vba中。

# p#

Ivanov,

目前还不清楚您在做什么,但是#RFR是与EPM检索/发送公式一起使用的一个相当普遍的问题。 我不确定这是否有逻辑,但基本上,似乎是在计算Excel工作表而没有刷新EPM报告时发生的。

对我来说,解决方法是用您的EPM公式添加针对特定范围的代码" RefreshSelectedCells",以确保在适当的时候刷新它们。

在使用刷新之后的一个基本示例中,该示例用于刷新一些具有EPMretrieve公式的列:

函数AFTER_REFRESH()
 EPM作为对象

 昏暗的RngReport作为范围
 昏暗的工作表
 昏暗的EndReport作为字符串

 '定义EPM报告范围
 工作表(" INPUT")。激活
     设置ws = ActiveSheet
     EndReport = EPM.GetDataBottomRightCell(ws," 000")
 设置RngReport = Range(Range(" Start_Pos")。Offset(1,0),EndReport)

 '刷新第5至10列
 范围(RngReport.Columns(5),RngReport.Columns(10))。选择
 EPM.RefreshSelectedCells

 Range(" Start_Pos")。选择

 结束功能





 
spaceman01
4楼-- · 2020-08-23 17:23

Alexey Ivanov

即使在单元格中使用了EPMSaveComment有时,您也会 有#RFR! 不幸的是,没有使用VBA来阅读评论的可靠方法。

在这种情况下-如果您想要一个可靠的解决方案-请使用ABAP。

wang628962
5楼-- · 2020-08-23 17:25

经过简单测试后,我 看到只有在以下情况下Application.Run(" EPMSaveComment" ...

会提供正确的结果:

1。工作簿上的单元格带有EPMSaveComment,用于所需的交集

2。工作表已刷新。

SAP砖家
6楼-- · 2020-08-23 17:28

仍然无法完全理解其逻辑...

EPMSaveComment在以下情况下将显示#RFR:

1。EPMSaveComment参数中的维成员列表已更改

2。包含EPMSaveComment的单元格未刷新(使用Refresh Worksheet/Workbook或RefreshSelectedCells或如果EPMSaveComment在本地成员中-Refresh报告)

EPMSaveComment的结果也在单个会话期间被缓存。

一周热门 更多>