点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我有一个名为 food_...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我有一个名为 food_...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我有一个名为 food_collection 的DocStore集合,我正在从其中通过AMDP将数据获取到ABAP世界中。
AMDP的代码如下:
公共部分。 接口if_amdp_marker_hdb。 类型: 开始ty_food_json, food_collection TYPE字符串, ty offood_json的结尾, 带有默认键的ty_food_json的tt_food_json类型标准表。 类方法: read_by_group导入值(组)TYPE字符串 导出值(结果)类型tt_food_json。 类别zfetch_food_collection IMPLEMENTATION。 方法read_by_group按数据库过程 对于组屋 语言SQLSCRIPT 选项为只读。 结果= 选择*来自" MYSCHEMA"。" FOOD_COLLECTION" 其中" group" =:group; 终结法。 ENDCLASS。
现在,当我尝试通过以下方式调用此AMDP时:
zfetch_food_collection => read_by_group( 出口组='蔬菜' 导入et_result = data(food))。 cl_demo_output =>显示(食物)。
我收到以下错误:
不支持的功能:...第9行第5列(在pos 302):where子句的表达式不能被收集表支持
因此由于某种原因,我无法从AMDP查询JSON属性。 此查询在SQL控制台中完美运行:
SELECT * FROM" MYSCHEMA"。" FOOD_COLLECTION",其中" group" ='Vegetables'; 语句" SELECT * FROM" MYSCHEMA"。" FOOD_COLLECTION",其中" group" ='Vegetables' 在44 ms 26 µs中成功执行(服务器处理时间:5 ms 994 µs) 在0 ms 44 µs中提取了3行(服务器处理时间:0 ms 0 µs)
我尝试将参数名称更改为 |'Vegetables'| ,但是没有用。 我还尝试将AMDP正文中的单引号(而不是调用方)串联起来,也没有用。
有人经历过吗?
设法以一种非常奇怪的方式解决了它。 使我意识到,通过AMDP与ABAP层集成使用时,文档存储所提供的灵活性就丧失了。
我必须在AMDP类的类型定义中指定要获取的确切字段:
然后在实现中,我使用了CTE。 但这是棘手的部分,必须将集合中的字段名称重命名为大写!!! 我的猜测是,ABAP在内部从上面将类型定义大写,因此名称将不匹配(也被重命名为GROUP字段,因为它是SQL中的保留字)。 有了CTE,我就可以使用传统的SQLScript查询(不需要单引号或双引号):
然后致电:
最后是来自控制台的结果:
在营养列中还有另一个JSON,因此要提取这些值,我需要一个嵌套结构。
一周热门 更多>