Pour construire un Toutefois, cela efface la liste. P> dynamique, sélectionnez code> Je suis itération sur une liste de champs et ajout d'un alias.
REPORT ZITER_TEST.
CONSTANTS lc_alias TYPE string VALUE 'ref'.
DATA lt_field TYPE string_table.
lt_field = VALUE string_table(
( CONV string( 'PERNR' ) )
( CONV string( 'SUBTY' ) )
).
" lt_field: ['PERNR','SUBTY']
lt_field = VALUE string_table( FOR <lv_tmp> IN lt_field
( lc_alias && `~` && <lv_tmp> )
).
" lt_field: [] instead of: ['ref~PERNR','ref~SUBTY']
3 Réponses :
Il vous suffit d'utiliser une table temporaire. Cela fonctionne dans mon cas:
REPORT ZITER_TEST. CONSTANTS lc_alias TYPE string VALUE 'ref'. DATA: lt_field_temp TYPE string_table, lt_field TYPE string_table. lt_field_temp = VALUE string_table( ( CONV string( 'PERNR' ) ) ( CONV string( 'SUBTY' ) ) ). lt_field = VALUE string_table( FOR <lv_tmp> IN lt_field_temp ( lc_alias && '~' && <lv_tmp> ) ).
the ABAP Documentation de valeur dit:
En affectation à un objet de données, la variable cible est utilisée directement et aucun objet de données temporaire n'est créé. Cette variable est
initialisée ou écrasée en totalité avant forte> l'affectation des valeurs spécifiées dans les parenthèses. Sa valeur d'origine, cependant, est toujours disponible dans une expression facultative laissée forte>. P> blockQuote> Ainsi, au lieu de: p>
xxx pré> Utilisation: p>
xxx pré> p>
La table de boucle avec le symbole de champ sera nettement plus rapide que d'utiliser une table temporaire sous forme (let ou direct assign):