2017-06-22 2 views
2

J'ai l'instruction SQL suivante et je me demandais si je pouvais le réécrire en utilisant l'opérateur VALUE pour éviter l'instruction DATA au début.ABAP Valeur initiale avec l'opérateur VALUE dans l'instruction SQL

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). 

à savoir, je voudrais avoir quelque chose comme ce qui suit, ce qui donne l'erreur: « « Valeur » inconnu [...]. », Malheureusement.

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

Est-ce possible? Je veux me débarrasser de l'instruction DATA car cela peut conduire à des bogues facilement si la variable est réutilisée. J'ai cherché sur Google et dans la documentation de mot-clé ABAP, spécifiquement pour "SELECT", "VALUE, Opérateur" et "DATA, Opérateur", mais en vain.

Toutes les suggestions sont appréciées.

Cordialement, Stefan

Répondre

1

Pour autant que je peux voir, cela dépend de la version cible. Pour release 7.40, le côté droit de la comparaison doit être (entre autres alternatives)

a host variable or a literal

Alors que dans release 7.50, qui a été remplacé pour permettre

a literal, a host variable, or a host expression

Cette extension host expressions devrait permettre vous de faire ce que vous voulez faire, comme indiqué in this example.

+0

Très intéressant, merci pour votre explication. Malheureusement, je travaille actuellement avec la version 7.40, mais au moins je peux arrêter de chercher maintenant. –