为什么句子ABAP 7.4在WHERE中可以在LOOP中使用,而不能在同一LOOP中动态地使用?

2020-08-31 10:37发布

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

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


你好

这句话很好用:

在lt_t005处分配循环符号()所在的sp_在gt_rangestack [rangename ='SPRAS']-r_range中。
 ENDLOOP。

但是另一方面,以下动态语句会生成转储('CX_SY_ITAB_DYN_LOOP'除外):

 lv_where ='spras in gt_rangestack [rangename =``SPRAS''] -r_range'。
 在lt_t005分配字段符号()在(lv_where)处循环播放。
 结局。
 

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

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


你好

这句话很好用:

在lt_t005处分配循环符号()所在的sp_在gt_rangestack [rangename ='SPRAS']-r_range中。
 ENDLOOP。

但是另一方面,以下动态语句会生成转储('CX_SY_ITAB_DYN_LOOP'除外):

 lv_where ='spras in gt_rangestack [rangename =``SPRAS''] -r_range'。
 在lt_t005分配字段符号()在(lv_where)处循环播放。
 结局。
 
付费偷看设置
发送
3条回答
当学会了学习
1楼-- · 2020-08-31 11:21

动态子句始终比静态子句更具限制性,这就是生命。

LOOP AT的ABAP文档。 在哪里( cond_syntax)

  • 在动态WHERE条件下不支持以下内容:
  • 字符串表达式和位表达式
  • 字符串函数和位函数
  • 构造函数表达式
  • 表表达式
< p>它在7.52 SP01中进行了短暂转储:

 DYN_WHERE_PARSE_ERROR
 解析动态WHERE条件时出错。
 解析逻辑表达式时,系统无法解释
 第0行第11列中的令牌" RANGES ["。

可复制的最小代码:

 FIELD-SYMBOLS  TYPE Scarr。

 SELECT * FROM Scarr INTO TABLE @DATA(scarr_s)。
 DATA(范围)= VALUE rsds_frange_t((字段名='CARRID'selopt_t = VALUE#((符号='I'选项='EQ'低='LH')))))。

 DATA(count_static)= 0。
 环回scarr_s分配
     哪里有carrid IN范围[fieldname ='CARRID'] -selopt_t。
   向count_static加1。
 结局。

 DATA(lv_where)= |在范围[字段名='CARRID']-selopt_t |中括起来。
 DATA(count_dynamic)= 0。
 环回scarr_s分配
     在(lv_where)。  " <===简短的转储DYN_WHERE_PARSE_ERROR
   向count_dynamic加1。
 结局。

 ASSERT count_dynamic = count_static。
亦是此间程序员
2楼-- · 2020-08-31 11:28

嗨,路易斯,

动态where子句在空格和整体格式方面非常严格。 这应该对您有帮助:

https: //answers.sap.com/questions/10083506/unable-to-loop-across-a-dynamic-table.html

问候

GK

粗暴的香蕉
3楼-- · 2020-08-31 11:12

路易斯,

尝试以下代码。 可能有效。

 lv_where = | GT_RANGESTACK [RANGENAME ='SPRAS']-R_RANGE |中的SPRAS。
 在lt_t005分配字段符号()在(lv_where)处循环播放。
 结局
 

谢谢

古拉布

一周热门 更多>