手机版 欢迎访问魄力云云市场资讯网站

当前位置:主页 > 云数据库 >

云存储_数据备份服务器_三重好礼

时间:2021-06-12 00:20:47|来源:魄力云|编辑:魄力云|点击:

简介:

导入参数"I\ U S\ U RKB1D"(查询属性)未在FM"EXIT\ U SAPRRS0\ U 001"中为授权变量(I\ U STEP=0)填充(FM为客户出口变量)。最近,我在我们的系统中遇到了这个问题,提出了一个解决方法,并考虑将其共享,以便对有相同问题的人有所帮助。

问题陈述:

在customer exit/BAdI for BEx Variable中,我们经常需要获得查询相关的属性(例如,查询的ID),以便我们可以对代码进行建模相应地。对于customer exit/BAdI的FM/Class中的查询属性,我们已经有了一个导入参数(在customer exit的情况下是I\u RKB1D)。对于I_STEP=1和2的客户出口变量,importing参数可以正常工作(从某种意义上讲,查询id填充在传递参数中)。但是,对于授权变量(即当I\u STEP的值为0时),查询属性中不填充这些值,并且保留为空。

下面的屏幕截图供参考。我们可以看到变量"I\u VNAM"的值为授权变量名,"I\u STEP"的值为"0",用于授权检查。我们可以看到变量"I\u S\u RKB1D-COMPID"的值为空,它应该是正在运行的查询的值

(上面的屏幕截图来自功能模块"EXIT\u saplrs0\u 001",它属于客户出口"RSR00001"-BI:报告中全局变量的增强功能)。

我们可以在下面的屏幕截图中看到I\u STEP的值为"2"并且查询id已成功填充到变量"I\u S\u RKB1D-COMPID"中。

因此,总结一下,没有为授权变量(I\u STEP=0)填充查询id,但是为客户出口变量(I\u STEP=1或2)填充查询id。

建议的解决方案:

有一个标准类"CL\u RSBOLAP\u SELECTION\u OBJECT",它是负责调用客户出口/BAdI获取BEx的授权/客户出口变量。类有一个属性"IF\RSBOLAP\u MD\u SELECTOR~N\u S\u COMPKEY",它存储正在运行的查询的查询属性

因此,物联网公司排名,云服务器报价,我们可以借助面向对象编程的"static属性"。我们将创建一个自定义类,并在类中为查询id创建一个静态属性。我们使用方法中的"Pre-exit"设置这个类中query-attribute的值。然后在customer exit/BAdI中,我们可以使用我们的自定义类来获取查询Id.

对于那些不熟悉面向对象编程的人来说,静态属性是类的属性,它与类的对象没有直接关联,并且是基于每个类存在的。也就是说,一个类只有一个属性实例,可以访问这些属性,而无需创建类的对象。更多信息请参考以下链接

https://help.sap.com/doc/abapdocu\u 751\u index\u htm/7.51/en-us/abapclass-data.htm

如前所述,我们将在方法的类中创建一个预出口。Pre-exit只不过是一种增强技术,在这种技术中,我们可以将代码与类相关联,只要在任何地方调用特定方法,云服务器试用,系统就会自动调用该类。由于这是预退出,因此将调用我们的代码,然后是标准方法的代码。更多信息请参考以下链接

https://wiki.scn.sap.com/wiki/display/ABAP/Enhancement+Framework+-+Class+Enhancements+-+Pre-exit、+Post exit+和+Overwrite exit+methods+-+Concept+和+Simple+场景

那么,让我们开始

步骤1:创建自定义类

让我们创建一个自定义类"ZCL\u BW\u QUERY\u NAME"。此类将用于获取查询Id。此类将具有以下内容组件:属性:

MV_QUERY_ID–存储查询ID

方法:

SET_QUERY_ID–设置查询ID–这将在类"CL_RSBOLAP_SELECTION_OBJECT"的方法的预退出中用于设置值获取查询ID–获取查询ID–这将在客户退出/BAdI中用于获取查询ID

方法:设置查询ID

方法:获取查询ID

步骤2:创建预退出用于设置自定义类中查询的值

要创建预退出,人工智能龙头企业,请转到类生成器(t代码:SE24)中的类"CL\u RSBOLAP\u SELECTION\u OBJECT",然后单击菜单栏中的"Class–>Enhance"。

如果您已经有一个增强实现,那么创建的增强实现将显示在弹出窗口中。选择要继续的实现。在我的例子中,没有现有的实现,所以我将继续创建一个。

创建增强实现后,将光标放在"create\u OLAP\u OBJECT"方法上。然后创建一个预退出方法。

如果弹出窗口显示,请在弹出窗口中单击"是"。

现在单击"创建OLAP对象"方法的"预退出"列中显示的按钮。

请在方法的预退出内添加以下代码

因此,我们创建了自定义类并设置了查询Id。我们都完成了。不是开玩笑。现在我们可以在customer exit中使用我们类"ZCL\u BW\u QUERY\u NAME"的方法"GET\u QUERY\u ID"来获取查询ID.

步骤3:在customer exit中获取查询ID

现在,让我们转到customer exit for BEx Variable来使用我们的类来获取查询ID.

我们可以调用类"ZCL\u BW\u QUERY\u NAME"的方法"GET\u QUERY\u ID"。我们可以看到我们得到了正在运行的查询的名称。请注意"I\u STEP"的值为"0",这确认了我们正在处理授权变量。

结论:

云主机服务商 Ucloud云计算 移动云数据 云存储服务器 Ucloud云主机 云计算提供商 阿里数据库 服务器租用 云储存服务器 Web云服务器 ucloud云数据库 独享云主机 云服务器服务商 海外云存储 云服务器主机 云计算解决方案 国内云存储 数据库云平台

Copyright © 2002-2020 魄力云 版权所有

备案号:豫ICP备56298345号