Table dynamisches Binding

ABAP Web Dynpro, BusinessServerPages; Erstellung von Webapplikationen.
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Table dynamisches Binding

Beitrag von fba9901 (ForumUser / 38 / 6 / 0 ) »
Hallo Leute,

ich habe eine normale Table Komponente, die zur DesignZeit ja ein Binding für einen Knoten (Attribut "dataSource") benötigt.

Ich würde gerne zur Laufzeit dieses Binding umsetzen auf einen anderen Knoten, also eine neue Tabellenstruktur anzeigen. Oder falls möglich
den Knoten, den ich zur Designzeit erstellt habe um weitere Attribute erweitern, was dann zu zusätzlichen Spalten führen würde in der
Anzeige.

Habe schon einige Sachen versucht- z.B. Erzeugen von neuem Kontextknoten mit entsprechenden Attributen, aber ich weiß nicht,
wie ich das Binding von dataSource meiner Table zur Laufzeit ändern kann... hat da jemand eine Idee?

PS.: Ich weiß, dass die Funktion mit einem ALV anscheinend geht... aber geht es auch für eine Table-Komponente?

Viele Grüße,
B.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Table dynamisches Binding

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hi B.,

hast du dir schon die Methode BIND_TABLE des Interface IF_WD_CONTEXT_NODE angeschaut? Dort gibt es auch BIND_STRUCTURE, womit du deine geänderte Struktur des Kontextknotens zur Laufzeit an das TC binden kannst. Anschließend noch die Tabelle mit BIND_TABLE einfügen und du solltest deine Tabelle mit den hinzugefügten Spalten angezeigt bekommen.

Du könntest natürlich auch einzelne Elemente mit BIND_ELEMENT hinzufügen und dann mit BIND_TABLE.

Egal wie, ich denke, dies ist der Weg den du suchst.
Gruß,
der Matze

Re: Table dynamisches Binding

Beitrag von fba9901 (ForumUser / 38 / 6 / 0 ) »
Hallo Matze,

danke für Deine Antwort! Ich habe es mit BIND_STRUCTURE versucht, aber es passt noch nicht ganz, was ich mache. So sieht mein Code aus:

Code: Alles auswählen.

DATA: tab TYPE REF TO if_wd_context_node,
           tab_info TYPE REF TO if_wd_context_node_info,
           new_attr_info TYPE wdr_context_attribute_info,

" Tabellenknoten holen
tab = wd_context->get_child_node( wd_this->wdctx_tab_dat ).

" Node Info zu diesem Knoten holen
tab_info = tab->get_node_info( ).

" Neues Attribut braucht einen Namen nach bestimmter Konvention
new_attr_info-name = 'NEWCOL'.

" Neues Attribut erzeugen
CALL METHOD tab_info->add_attribute
    EXPORTING
      attribute_info = new_attr_info.

TYPES: BEGIN OF ntab_struc,
           COL1 TYPE String,
           COL2 TYPE String,
           NEWCOL TYPE String,
         END OF ntab_struc.

 DATA: ntab TYPE TABLE OF ntab_struc,
           ntab_line TYPE ntab_struc.

  ntab_line-COL1 = 'ad'.
  ntab_line-COL2 = 'adasd'.
  ntab_line-NEWCOL = 'daswq'.
  APPEND ntab_line TO ntab.

  tab->bind_table( ntab ).


Sieht jemand das Problem?

Viele Grüße,
B.
Zuletzt geändert von fba9901 am 27.11.2014 13:47, insgesamt 4-mal geändert.

Re: Table dynamisches Binding

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hi,

ist zwar ne Weile her, das ich ne WD geschrieben habe, aber ich denke, wenn du ADD_ATTRIBUTE nutzt, brauchst du das BIND_STRUCTURE nicht. das wird (glaube ich) nur genutzt wenn du eine komplette Struktur übergeben möchtest. Versuch doch mal nach dem ADD_ATTRIBUTE ein BIND_TABLE . und als Übergabetabelle deine geänderte Tabelle mit dem zusätzlichen Feld.

EDIT: wär auch gut zu wissen bei welcher Anweisung die Fehlermeldung kommt. ;)

EDIT 2: Wenn du das BIND_TABLE mit der neuen Tabelle im WDDOMODIFYVIEW durchführst, wird die Tabelle mit den geänderten Daten neu geladen und dargestellt.
Zuletzt geändert von Thanatos82 am 27.11.2014 13:24, insgesamt 1-mal geändert.
Gruß,
der Matze

Re: Table dynamisches Binding

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »

Code: Alles auswählen.

DATA: table TYPE REF TO if_wd_context_node,
           tab_info TYPE REF TO if_wd_context_node_info,
           new_attr_info TYPE wdr_context_attribute_info,

" Tabellenknoten holen
table = wd_context->get_child_node( wd_this->wdctx_tab_dat ).

" Node Info zu diesem Knoten holen
tab_info = tab->get_node_info( ).
Also eine Referenz mit TABLE zu benennen finde ich nich gerade hiflreich, sondern eher verwirrend.

Wo kommt ploetzlich diese Reference 'tab' her bei " tab->get_node_info( )"

Setze einen Breakpoint ganz oben in diese Coding und hopel dann mit <F6> (oder <F5>, wenn Du es 'ganz' genau wissen willst) durch den Code. Du wirst dann genau sehen, in welcher Codingzeile es zum Abbruch kommt.

Re: Table dynamisches Binding

Beitrag von fba9901 (ForumUser / 38 / 6 / 0 ) »
Hey,

danke für eure Antoworten.
@Unit605 - Ich gebe Dir Recht. Hatte die Tabelle anfangs tab genannt daher kommt der Unterschied. Habe es im Code angepasst.


@Thanatos82:

Ja das stimmt :) . Das Bind_Structure warr hier überflüssig, das neue Attribut wird auch richtig eingefügt in die Tabellenstruktur.
Ich kann auch eine Tabelle mit der neuen Struktur jetzt übergeben über bind_table. Es kommen keine Fehler mehr (siehe Code oben), aber die Tabelle wird auch nicht
aktualisiert aufgebaut, sondern einfach garnicht verändert. Ich mache die Änderung jetzt allerdings auch wenn ein Button_Event ausgelöst wird und nicht im WDMODIFYVIEW.
Habe versucht das WDMODIFYVIEW aufzurufen wo im Code oben das bind_table ganz unten steht. Aber ich habs nicht hinbekommen.. Was gebe ich denn als View mit ? "me" und "WD_THIS" und "IF_WD_MAIN" gehen nicht.

EDIT: Auch wenn ich den gesamten Code oben in WDDOMODIFYVIEW einfüge, wird nichts an der Tabellenanzeige verändert... Evtl ist das Hinzufügen von Spalten mit der Table Component
tatsächlich nicht möglich sondern nur mit einem ALV.?

Viele Grüße,
B.

Re: Table dynamisches Binding

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Moin B.,

ich glaube du musst deine Initialisierung der Tabelle (wird im Compcontroller implementiert) erneut durchlaufen lassen. also sowas wie wd_compcontroller->initialize_table( ).
Gruß,
der Matze

Re: Table dynamisches Binding

Beitrag von fba9901 (ForumUser / 38 / 6 / 0 ) »
Hi,

hm okay .. Ich wüsste aber nicht, welche Methode da in Frage käme für eine normale Table ...? Die wird ja normalerweise nicht im code initialisiert.

Viele Grüße,
B.

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1661
Views
Model-Binding
von Gast » 07.02.2006 13:35 • Verfasst in Web-Dynpro, BSP + BHTML
1
Antw.
2522
Views
Context Binding Error
von Rantanplan78 » 21.02.2017 11:47 • Verfasst in Web-Dynpro, BSP + BHTML
0
Antw.
2335
Views
BSP-MVC-Model Binding: USER Eingaben speichern
von Hornung » 24.06.2008 13:13 • Verfasst in Web-Dynpro, BSP + BHTML
1
Antw.
4716
Views
sorted table, hashed table: Übergabe Workarea -> Performa
von Jürgen Fischer » 30.01.2006 08:09 • Verfasst in ABAP® Core
1
Antw.
1266
Views
Dynamisches Zuweisung
von Handeglo » 30.11.2009 14:15 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

ABAP unter GUI und FIORI
vor 23 Stunden von wreichelt 3 / 49
MaLo-Checker in ABAP
vor einer Woche von ewx 5 / 128

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.