从带有注释的CDS视图中生成的BOPF的BOPF查询

2020-08-30 09:32发布

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

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


专家您好,

我们有一个从CDS视图生成的BOPF。 我们想使用BOPF-> ABAP用户出口中的查询从CDS视图中读取数据,但是在生成的BOPF中看不到查询。 我们尝试手动创建"选择查询",但是我们仍然无法在BOPF节点中看到它。 您能否让我知道继续进行。

谢谢

维杰

imgo.jpg (33.3 kB)

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

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


专家您好,

我们有一个从CDS视图生成的BOPF。 我们想使用BOPF-> ABAP用户出口中的查询从CDS视图中读取数据,但是在生成的BOPF中看不到查询。 我们尝试手动创建"选择查询",但是我们仍然无法在BOPF节点中看到它。 您能否让我知道继续进行。

谢谢

维杰

imgo.jpg (33.3 kB)
付费偷看设置
发送
7条回答
太Q了
1楼 · 2020-08-30 10:30.采纳回答

Vijay,

,如果您有从CDS视图生成的BOPF对象,该对象使用适当的注释,例如

 @ ObjectModel.modelCategory:#BUSINESS_OBJECT
 @ ObjectModel.compositionRoot:正确
 @ ObjectModel.transactionalProcessingEnabled:正确
 @ ObjectModel.writeActivePersistence:'ZTAB_SO _ ###'

该查询由SADL框架自动处理,您可以通过OData从基础CDS视图读取数据。

BOPF不在此处。

仅用于创建,更新和删除请求。

关于此,

安德烈

空代码
2楼-- · 2020-08-30 10:23

我删除了SAP Cloud Platform ABAP环境标签,因为我们此处不支持BOPF

3楼-- · 2020-08-30 10:19

您好,尼古拉,

让我解决您面临的两个问题:

  1. 正如我在上面所写,查询是由SADL运行时处理的,对数据的读取访问是通过查询基础CDS视图完成的。 因此,使用它是完全正确的。
  2. BOPF对象并不是R/3事务调用的对象。 它们只能由OData服务使用。

使用新的ABAP RESTful编程模型,还可以从其他编码中重用您的业务对象。 但这仅自SAP S/4HANA 1909起可用,并且此处尚不支持托管用例(与您现在对BOPF所做的相比)。 该计划于2009年完成。

安德烈

安德烈

小c菟菟
4楼-- · 2020-08-30 10:18

Hallo Andre Fischer

我想在用户出口中使用CDS视图,最好的方法是什么? 打开SQL或AMDP方法还是BOPF查询?

为什么生成的BOPF没有查询,而手动创建的BOPF有查询?

Mfg,

Vijay

歪着头看世界
5楼-- · 2020-08-30 10:29

我不确定您要在这里实现什么。

但是也许可以选择使用引用的数据源方法基于CDS视图发布OData服务,因为 您正在使用S/4本地系统。

在这里您将能够重新定义DPC_EXT类的方法。

关于

Andre

小c菟菟
6楼-- · 2020-08-30 10:31

如果我能找到注释,让我检查带有自定义业务对象的生成的CDS视图。

我正在尝试使用自定义业务对象应用程序进行应用内扩展

感谢

Vijay

浮生未央
7楼-- · 2020-08-30 10:20

大家好,

我的要求与Vijay类似。 我使用Andre所述的注释从CDS视图生成了BOPF业务对象。 在保存(用于创建和更新)期间,我还在业务对象中实现了一些确定。 如果我将OData用于CRUD操作,那么一切都很好。

但是,我苦恼的是通过ABAP使用R/3事务中的同一业务对象。

问题1:使用BOPF的Consumer-API读取数据:

 lo_serv_mgr-> query(...)。

在生成的业务对象的接口中没有属性 SC_QUERY ,该属性确定执行哪种选择类型(select_all,select_by_attributes等)。 当然,我可以从CDS View中进行选择,但这似乎不合适。


问题2:使用Consumer-API修改数据:

我想更新现有条目,并且希望在保存期间执行我的确定。 我有一个R/3事务,我想使用服务管理器的修改方法。 但是,此方法需要业务对象的密钥(/BOBF/S_FRW_KEY)。

KEY , PARENT_KEY 和 ROOT_KEY 在我的数据库表中不是键的一部分,因为我希望UI5应用使用语义而不是OData来消耗OData。 比技术关键。

如果我使用OData更新db中的条目,则将以某种方式执行我的确定。 大概我可以调试并找出方法。 如果您可以在开始之前给我一个提示,将不胜感激。 安德烈·费舍尔(Andre Fischer) Vijaya Simha Chintarlapalli Reddy

致谢

尼古拉

一周热门 更多>