2017-06-22 214 views
2

我有以下SQL语句,并且想知道是否可以使用VALUE运算符来重写它,以避免在开始时使用DATA语句。ABAP在SQL语句中使用VALUE运算符的初始值

DATA(lv_initial) = VALUE /scwm/guid_hu(). 
    SELECT * FROM /scwm/tu_dlv 
    WHERE lgnum  = @lv_lgnum 
     AND top_hu = @lv_initial 
    INTO TABLE @DATA(lt). 

即,我想有类似以下,其中给出了错误:“域‘VALUE’未知[...]。”,很遗憾。

SELECT * FROM /scwm/tu_dlv 
    WHERE lgnum  = @lv_lgnum 
     AND top_hu = @VALUE #() 
    INTO TABLE @DATA(lt). 

这可能吗?我想摆脱DATA声明,因为如果变量被重用,容易导致错误。

我在Google和ABAP关键词文档中进行了搜索,专门针对“SELECT”,“VALUE,Operator”和“DATA,Operator”,但无济于事。

任何建议表示赞赏。

亲切的问候, 斯特凡

回答

1

据我所看到的,这取决于目标释放。对于release 7.40,比较的右边需要是(除了其他的替代品)

a host variable or a literal

而在release 7.50,已被替换为允许

a literal, a host variable, or a host expression

该扩展,以便host expressions应该允许你做你想做的事,如in this example所示。

+0

非常有趣,谢谢你的解释。不幸的是,我目前正在使用7.40版本,但至少我现在可以停止搜索。 –