2017-08-30 1 views
2

Je souhaite modifier un élément dans une vue de CD afin de changer la façon dont il est affiché. J'ai essayé d'utiliser des éléments virtuels et ça marche bien si je prends les données d'un élément séparé (en stockant les données d'origine) et que je les place dans un nouvel élément virtuel.Modifier un élément dans une vue de CD

Cependant, je n'arrive pas à comprendre comment modifier l'élément lui-même sans en afficher un redondant dans ma table. Si j'essaie de cacher l'original, les données ne sont pas chargées correctement. Si j'essaie de rendre l'élément original virtuel, il perd ses propres données.

Quelle est la bonne façon d'obtenir ce que je veux?

+0

Quelle est votre cas d'utilisation? pouvez-vous simplement construire une autre vue CDS au-dessus de cette vue avec une logique d'affichage supplémentaire pour cet élément? – Allen

+0

@Allen Non, malheureusement pas. La modification des éléments nécessite un code ABAP, les fonctions de modification de cds ne suffisent pas –

+0

Une façon de fournir UI.hidden: une véritable annotation pour votre élément d'origine. – Allen

Répondre

0

Je viens de faire mes propres tests sur la façon d'exclure votre colonne d'origine sur SmartTable. Ci-dessous travaille sur ma démo de test.

Pour exclure votre colonne d'origine de l'onglet Colonne de la boîte de dialogue de définition de la table, il existe un annotationsap:visible = false.

Redéfinir la méthode Define de votre mpc_ext:

data: 
lo_entity_type type ref to /iwbep/if_mgw_odata_entity_typ, 
lo_property type ref to /iwbep/if_mgw_odata_property, 
lo_annotation type ref to /iwbep/if_mgw_odata_annotation. 

super->define(). 

lo_entity_type = model->get_entity_type('YOUR_ENTITY_TYPE'). 

lo_property = lo_entity_type->get_property('YOUR_ORIGINAL_COLUMN') . 

lo_annotation = lo_property->/iwbep/if_mgw_odata_annotatabl~create_annotation(/iwbep/if_mgw_med_odata_types=>gc_sap_namespace). 
lo_annotation->add(
    iv_key = 'visible' 
    iv_value = 'false' 
). 
+0

J'ai déjà essayé ceci mais mes éléments virtuels ne reçoivent plus de données quand j'utilise cette approche pour cacher les éléments d'origine –

+0

Bonjour, je viens de vérifier . J'ai à la fois la sève: l'annotation visible et les données. Il y a quelque chose que tu as manqué? – Allen