0
votes

Comment itérer string_table et modifier des lignes

Pour construire un dynamique, sélectionnez code> Je suis itération sur une liste de champs et ajout d'un alias.

Toutefois, cela efface la liste. P>

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']


0 commentaires

3 Réponses :


1
votes

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


0 commentaires

4
votes

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

Ainsi, au lieu de: xxx

Utilisation: xxx


0 commentaires

0
votes

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): xxx


0 commentaires