odata - 如何在 SET_GET_ENTITY 方法中为“数量”类型的字段编写 SELECT?
问题描述
我想从我的表中选择包含所有列的单行zbookings
。zbookings
表具有基于zbooking
数据结构的结构 - 请参见下表。
我的BOOKINGSET_GET_ENTITY
方法:
method BOOKINGSET_GET_ENTITY.
DATA: ls_keytab TYPE LINE OF /IWBEP/T_MGW_NAME_VALUE_PAIR,
i_carrid TYPE string,
i_connid TYPE string,
i_fldate TYPE string,
i_bookid TYPE string.
LOOP AT it_key_tab INTO ls_keytab.
CASE ls_keytab-name.
WHEN 'Carrid'.
i_carrid = ls_keytab-value.
WHEN 'Connid'.
i_connid = ls_keytab-value.
WHEN 'Fldate'.
i_fldate = ls_keytab-value.
WHEN 'Bookid'.
i_bookid = ls_keytab-value.
ENDCASE.
ENDLOOP.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF er_entity
FROM ybookings AS a
WHERE
a~carrid = i_carrid AND
a~connid = i_connid AND
a~fldate = i_fldate AND
a~bookid = i_bookid.
endmethod.
我通过 SAP Gateway Client 对其进行了测试。luggweight
当我从我的SELECT SINGLE *
声明中删除列时没关系。但是,当我通过 选择所有列时SELECT SINGLE *
,它会输出错误
运行时错误:'SAPSQL_PARSER_TODO_WARNING'`
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>SAPSQL_PARSER_TODO_WARNING</code>
<message>Runtime Error: 'SAPSQL_PARSER_TODO_WARNING'.
The OData request processing has been abnormal terminated. If "Runtime Error"
is not initial, launch transaction ST22 for details and analysis. Otherwise,
launch transaction SM21 for system log analysis.</message>
<timestamp>20190905144432</timestamp>
</error>
如您所见,问题出在类型为luggweight
字段quantity
且其键入方法为Type ref to
. BOOKINGSET_GET_ENTITY
当我通过 ctr+F2检查我的方法时,它会输出警告:
聚合函数 LUGGWEIGHT 的数据库字段或结果类型与“ER_ENTITY”的组件“LUGGWEIGHT”不兼容。
我应该如何修改我的SELECT
查询/BOOKINGSET_GET_ENTITY
方法以使其正常工作?
解决方案
Luggweight
创建/修改数据结构时,字段的输入方法应设置为Types
(not )。Type ref to
zbooking
推荐阅读
- jquery - 用 vue 变量填充物化自动完成组件
- android - LocationManager 的 requestLocationUpdates() 创建通知
- prisma - 如何在 prisma 迁移工具中使用 DECIMAL(10,2)?
- android - Android Studio 不工作而且速度太慢
- python - 过滤行时DataFrame不明确
- reactjs - useState 正在使用 react-three-fiber 冻结 useFrame 中的渲染流
- c++ - C++ 绕道钩子
- axios - 如何使用 NestJS 从 3rd-party API 获取数据
- laravel-nova - 如何对 Nova Metrics 结果进行排序?
- html - 如何在我的 ruby on rails 应用程序上创建一个向您发送电子邮件的 HTML 表单