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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.