点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好。
我在ABAP CDS视图中发现了一件奇怪的事情。
我在QMEL表上映射了一个简单的CDS视图,没有联接和关联。
@ AbapCatalog.sqlViewName:'ZTI_NOT_LCL_V' @ AbapCatalog.compiler.CompareFilter:是 @ AbapCatalog.preserveKey:是 @ AccessControl.authorizationCheck:#NOT_REQUIRED @ EndUserText.label:"通知数据的CDS视图" 定义视图zti_not_lcl 从qmel中选择 {键qmel.qmnum, qmel.qmart, qmel.objnr, qmel.qmtxt, qmel.priok, qmel.qmdat, qmel.mzeit, qmel.ltrmn, qmel.ltrur, qmel.qmcod }
这是我的查询:
SELECT * FROM zti_not_lcl_v INTO TABLE @DATA(lt_table) 哪里 qmnum ='000200000046'。
上面编写的查询给出了此执行计划:
--------------------------------------------------- --------------------------------------- | ID |操作| 姓名| 行| 字节数| 费用(%CPU)| 时间| -------------------------------------------------- ------------------------------------ | 0 | SELECTSTATE | | 1 | 92 | 1(100)| 00:00:01 | | 1 | 按索引行访问表| QMEL | 1 | 92 | 0(0)| 00:00:01 | | * 2 | 索引唯一扫描| QMEL〜0 | 1 | | 0(0)| 00:00:01 | -------------------------------------------------- ------------------------------------
很好。
确定,然后在我的视图中添加一个参数P_LANGU:
@ AbapCatalog.sqlViewName:'ZTI_NOT_LCL_V' @ AbapCatalog.compiler.CompareFilter:是 @ AbapCatalog.preserveKey:是 @ AccessControl.authorizationCheck:#NOT_REQUIRED @ EndUserText.label:"通知数据的CDS视图" 定义视图zti_not_lcl 带有参数p_langu:abap.lang 从qmel中选择 {键qmel.qmnum, qmel.qmart, qmel.objnr, qmel.qmtxt, qmel.priok, qmel.qmdat, qmel.mzeit, qmel.ltrmn, qmel.ltrur, qmel.qmcod }
进行查询:
SELECT * FROM zti_not_lcl_v(p_langu ='E')插入表@DATA(lt_table) 哪里 qmnum ='000200000046'。
抢先执行ST05中的执行计划。 我看到将查询分为两部分的奇怪现象,并且看到两个执行步骤:
Step1
--------------------------------------------------- -------------------------------------------------- - | ID |操作|名称| 行| 字节数| 费用(%CPU)| 时间| -------------------------------------------------- ------------------------------------------------- | 0 | SELECTSTATE | | 1 | 2 | 17(6)| 00:00:01 | | * 1 | 收集隔离剂腌制剂| ZTI_NOT_LCL_V | 1 | 2 | 16(0)| 00:00:01 | -------------------------------------------------- -------------------------------------------------
点击"说明"后,我又有了一个计划
Step2
--------------------------------------------------- --------------------------- | ID |操作| 姓名| 行| 字节数| 费用(%CPU)| 时间| -------------------------------------------------- ------------------------ | 0 | SELECTSTATE | | 998 | 91816 | 8(13)| 00:00:01 | | 1 | 表访问已满| QMEL | 998 | 91816 | 7(0)| 00:00:01 | -------------------------------------------------- ------------------------
让我感到困惑的是-表访问已满,即使我确实通过主键查询也是如此。
您对这种行为有任何想法吗?
数据库服务器ORACLE 12.1.0.2.0
SAP_BASIS 740 0012SAPKB74012 SAP基础组件
SAP_ABA 740 0012 SAPKA74012跨应用程序组件
SAP_GWFND 740 0013 SAPK-74013INSAPGWFND SAP Gateway Foundation 7.40
sql.jpg (56.8 kB)
你好Nalluri。
我想建立这样的视图:
但是当我在视图中添加任何参数时,始终会执行QMEL的全扫描。
参数p_LANGU只是在CDS视图中没有条件的情况下挂出,可以尝试使用 下面的代码,看看(对不起,我没有系统进行尝试)
一周热门 更多>