Comment déclencher la DATA_CHANGE cas de CL_GUI_ALV_GRID, ou pourquoi n'est-il pas déclencher automatiquement?
J'ai une instance de CL_GUI_ALV_GRID
référencé par la variable mo_alv_grid
.
J'ai un bouton de la colonne dans cette grille, qui, après une certaine logique, les mises à jour de la table mt_alv_grid
(sauvegarde mo_alv_grid
).
J'ai besoin d'être en mesure de déclencher l'événement DATA_CHANGED
à ce point.
J'ai essayé de nombreuses méthodes de CL_GUI_ALV_GRID
, comme CHECK_DATA_CHANGED
et REFRESH_TABLE_DISPLAY
et même CL_GUI_CFW=>FLUSH
et CL_GUI_CFW=>SET_NEW_OK_CODE( 'ENTER' ).
mais rien de tout cela a fonctionné.
Est-il un moyen de déclencher la DATA_CHANGED
événement, ou devrais-je faire les choses complètement différemment ?
- Juste pour clarifier - vous avez un bouton dans la ALV grid qui déclenche code ABAP qui modifie les données dans le moteur interne de la table, l'écran est mis à jour?
- de tout cela, mais l'affichage EST mis à jour, et j'ai besoin de déclencher DATA_CHANGED événement automatiquement (même pas frapper
ENTER
après le fait) - DATA_CHANGED n'est pas censé être appelée que si la mise à jour des données par programmation, uniquement lorsque l'UTILISATEUR modifie les données.
- Finalement, j'ai repensé l'ensemble de la chose 😐 merci quand même
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas si cela résout votre problème, mais dans le but de mettre à jour les ALV table interne dans le PAI, vous pouvez utiliser la méthode suivante:
bien, c'est possible.
1) ne pas changer les valeurs dans la table interne par le programme
2) créer un changement de protocole de type LVC_T_MODI avec de nouvelles valeurs pour les lignes nécessaires
alors appel
où lo_grid est instance de cl_gui_alv_grid et lt_cells type de table LVC_T_MODI. veuillez noter que vous devrez régler le terrain VAL_DATA de la structure de mise en (LVC_S_LAYO) pour " X " lors de l'appel d'ALV grid pour la première fois pour faire ce travail.
après cela, la classe va changer automatiquement table interne pour vous et appelez DATA_CHANGE événement