是否可以将AMDP类的IMPORT参数作为SQL APPLY_FILTER的第二个参数传递。

2020-09-13 12:27发布

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

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


大家好,

我有一个AMDP类方法的Import参数,例如String类型的" iv_sel_opt"。

确实会有" CL_SHDB_SELTAB => combine_seltabs"中的值,因此它将转换报告屏幕的"选择选项"并将其转换为" SQL Where子句"。

现在无法在AMDP方法实现中将此" iv_sel_opt"用作" APPLY_FILTER"的第二个参数。

上面写着" SQLSCRIPT消息:参数不受支持的类型:APPLY_FILTER:第二个参数必须是标量变量&A0&A1&A2&A3&A4&A5&A6&A7&A8&A9"。

除了使用CDS表函数之外,还有其他方法可以实现吗?

非常有用的评论。

谢谢

四进

请找到我的代码:

 CLASS zcl_demo_consume_amdp_abap定义
   上市
   最后
   创建公众。


 公共部分。
   接口:if_amdp_marker_hdb。


   类型:
     ty_mara的开始,
         matnr TYPE C LENGTH 40,
         ernam TYPE C LENGTH 12,
     ty_mara的结尾,


     tt_mara ty_mara的类型标准表。
    
   类方法get_mara
     输入
         VALUE(iv_client)TYPE要求
         VALUE(iv_sel_opt)TYPE字符串
     出口
         VALUE(et_mara)类型tt_mara。
        
 受保护的部分。
 专用部分。
 ENDCLASS。


 类别zcl_demo_consume_amdp_abap实施。
   方法get_mara通过数据库过程
                   对于组屋
                   语言SQLSCRIPT
                   选项只读
                   使用玛拉。
     et_mara = apply_filter(mara,iv_sel_opt);  " <==这是错误
   终结法。
 ENDCLASS。
 

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

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


大家好,

我有一个AMDP类方法的Import参数,例如String类型的" iv_sel_opt"。

确实会有" CL_SHDB_SELTAB => combine_seltabs"中的值,因此它将转换报告屏幕的"选择选项"并将其转换为" SQL Where子句"。

现在无法在AMDP方法实现中将此" iv_sel_opt"用作" APPLY_FILTER"的第二个参数。

上面写着" SQLSCRIPT消息:参数不受支持的类型:APPLY_FILTER:第二个参数必须是标量变量&A0&A1&A2&A3&A4&A5&A6&A7&A8&A9"。

除了使用CDS表函数之外,还有其他方法可以实现吗?

非常有用的评论。

谢谢

四进

请找到我的代码:

 CLASS zcl_demo_consume_amdp_abap定义
   上市
   最后
   创建公众。


 公共部分。
   接口:if_amdp_marker_hdb。


   类型:
     ty_mara的开始,
         matnr TYPE C LENGTH 40,
         ernam TYPE C LENGTH 12,
     ty_mara的结尾,


     tt_mara ty_mara的类型标准表。
    
   类方法get_mara
     输入
         VALUE(iv_client)TYPE要求
         VALUE(iv_sel_opt)TYPE字符串
     出口
         VALUE(et_mara)类型tt_mara。
        
 受保护的部分。
 专用部分。
 ENDCLASS。


 类别zcl_demo_consume_amdp_abap实施。
   方法get_mara通过数据库过程
                   对于组屋
                   语言SQLSCRIPT
                   选项只读
                   使用玛拉。
     et_mara = apply_filter(mara,iv_sel_opt);  " <==这是错误
   终结法。
 ENDCLASS。
 

付费偷看设置
发送
10条回答
Alawn_Xu
1楼 · 2020-09-13 12:43.采纳回答

确保您得到此错误(在注释中提到),因为MARA表的字段比输出表ET_MARA中定义的字段多。 您可以使用以下示例进行解析:

 ...
 lt_mara = apply_filter(mara,:iv_sel_opt);
 et_mara = select matnr,ernam from:lt_mara; 
四川大学会员
2楼-- · 2020-09-13 13:00

对不起,我没有提到,

实际上我也尝试过此操作,并且收到以下消息,

此行有多个标记:
     -(
     -)
     -SQLSCRIPT消息:返回类型不匹配:过程ZCL_DEMO_CONSUME_AMDP_ABAP => GET_MARA:ET_MARA [MANDT:NVARCHAR(3)MATNR:NVARCHAR(40)ERSDA:NVARCHAR(8)ERNAM:NVARCHAR(12)LAEDA:NVARCHAR(8)AENAM:NCHAR  12)VPSTA:NVARCHAR(15)PSTAT:NVARCH 
nice_wp
3楼-- · 2020-09-13 12:47

我认为已经弄清楚了,或者您想对这个答案说些什么??

风早神人
4楼-- · 2020-09-13 12:55
# p #

APPLY_FILTER不是CE功能,因此不会过时。 它是SQLScript动态SQL区域的功能部分。

您建议将IV_SEL_OPT的值与特定列进行比较的方法将不起作用,因为此参数不仅包含对单个列的限制,而且包含整个条件集(例如,对于具有不同运算符/值的不同列) /...)。

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答