2017-08-30 5 views
2

Ich möchte ein Element in einer cds-Ansicht ändern, um die Art der Anzeige zu ändern. Ich habe versucht, virtuelle Elemente zu verwenden, und es funktioniert gut, wenn ich die Daten von einem separaten Element (Speichern der Originaldaten) nehmen und es in ein neues virtuelles Element einfügen.Ändern eines Elements in einer cds-Ansicht

Allerdings kann ich nicht herausfinden, wie man das Element selbst ändert, ohne ein redundantes in meiner Tabelle anzuzeigen. Wenn ich versuche, das Original zu verbergen, werden die Daten nicht korrekt geladen. Wenn ich versuche, das ursprüngliche Element virtuell zu machen, verliert es seine eigenen Daten.

Was ist der richtige Weg, um zu erreichen, was ich will?

+0

Was ist Ihr Anwendungsfall? können Sie einfach eine weitere CDS-Ansicht über diese Ansicht mit zusätzlicher Anzeigelogik für dieses Element erstellen? – Allen

+0

@Allen Nein, leider nicht. Die Änderung der Elemente erfordert ABAP-Code, die cds-Modifikationsfunktionen reichen nicht aus –

+0

Eine Möglichkeit, wie Sie UI.hidden: true Annotation für Ihr Originalelement bereitstellen können. – Allen

Antwort

0

Ich habe gerade meine eigenen Tests gemacht, wie Sie Ihre ursprüngliche Spalte auf SmartTable ausschließen können. Unten arbeitet an meiner Testdemo.

Um auszuschließen, dass Ihre ursprüngliche Spalte in der Registerkarte Spalte des Dialogfelds Tabelleneinstellung angezeigt wird, gibt es eine annotationsap:visible = false.

neu definieren die Define Methode Ihrer 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

Ich habe das schon einmal versucht, aber meine virtuellen Elemente empfangen keine Daten mehr, wenn ich diese Methode verwende, um die ursprünglichen Elemente zu verstecken. –

+0

Hallo, ich habe es einfach überprüft . Ich habe sowohl die SAP: sichtbare Annotation und Daten. Es gibt etwas, was du verpasst hast? – Allen

Verwandte Themen