Il peut arriver que l’on ait besoin de lire le contenu d’une zone d’un dynpro alors même qu’aucun évènement n’ait encore transféré ledit contenu au backend.
Par exemple : les valeurs possibles d’une première zone dépendent d’une seconde zone.
Il est aisé de restreindre les valeurs de la première zone si l’utilisateur a renseigné la première puis a validé sa saisie (par exemple par la touche Entrée
).
Un tel enchainement aura en effet transféré le contenu de la seconde zone au backend et l’on pourra restreindre les valeurs possibles de la première zone, en ABAP, dans les évènements de l’écran de sélection.
Cependant, lorsque l’utilisateur n’a rien fait d’autre que saisir sa valeur dans le seconde zone puis cliqué directement dans la première, alors le backend ne reprend pas la main et il n’est pas possible d’intervenir sur les valeurs possibles de cette seconde zone.
Dans ces cas-là, il est nécessaire de lire directement les données de l’écran. Pour cela, le module fonction DYNP_VALUES_READ est utilisable.
On en avait déjà parlé ici.
Et voici un exemple de code, où l’on cherche à récupérer le contenu de la zone CCAT.
data lt_dynp_value type standard table of dynpread with empty key.
insert value #( fieldname = 'CCAT' ) into table lt_dynp_value.
call function 'DYNP_VALUES_READ'
exporting
dyname = sy-repid
dynumb = sy-dynnr
tables
dynpfields = lt_dynp_value.
ccat = value #( lt_dynp_value[ fieldname = 'CCAT' ]-fieldvalue optional ).