TableView-Inhalte auslesen

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

TableView-Inhalte auslesen

Beitrag von Kona (ForumUser / 7 / 0 / 0 ) »
Hallöchen,
ich bins mal wieder mit ner tollen Frage.

Ich hab jetzt hier schon etliche Threads durchgeschaut und hab auch die Tips daraus so gut wie möglich umgesetzt, aber ich stehe im Grunde immer noch da, wo ich am Anfang stand: ich möchte den Zelleninhalt aus einem Tableview auslesen.

Klar, ganz easy, mag man sagen, machst einfach

Code: Alles auswählen.

DATA: tv TYPE REF TO cl_htmlb_tableview.
DATA: tv_data TYPE REF TO cl_htmlb_event_tableview.
DATA: string1 TYPE string.

tv ?= CL_HTMLB_MANAGER=>GET_DATA( request = runtime->server->request

name    = 'tableView'
                                               id      = tv_event->id
                                              ).

tv_data = tv->data.
tv_data TYPE REF TO cl_htmlb_tableview.
string1 = tv_data->get_cell_value ( row_index = row column_index = col ).
Geht aber nicht. Warum? Die Methode get_cell_value liefert einen leeren String aus der gefüllten Tabelle zurück.

Dann gibts da noch über den CL_HTMLB_MANAGER eine schöne Methode namens get_table_cell_value, die aber leider "deprecated", sprich veraltet und damit deaktiviert ist.

Überhaupt ist so ziemlich alles, was die Zellen einer TableView angeht entweder deprecated oder nur mit Rückgabewerten versehen, die mich nicht interessieren (z.B. die ID einer Zelle, wenn ich doch den Value suche).

Die Klasse CL_HTMLB_TABLEVIEW würde noch eine Methode namens Rendercell anbieten, die, so entnehme ich den Kommentaren, auch die Funktion von get_cell_value über ein Makro nachbildet, aber ich komme an die Methode nicht ran, da sie - ihr dürft dreimal raten, aber ich sags euch gleich - genau, protected ist.

Wie also um alles in der Welt komme ich jetzt an meine Daten ran, die in der TableView dargestellt werden? Please help!
H5N1-Kernel jetzt für Linux erhältlich!

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


Beitrag von Kaiwalker (Specialist / 165 / 0 / 0 ) »
1. Frage: Wo hast du "row" und "col" gefüllt ?
2. Frage: In welchem Event Receiver ?

Bei mir funktioniert das im OnInputProcesing, allerdings steht bei mir:

Code: Alles auswählen.

loop at tv_data->allcolumnnames into feld.
value = tv_data->get_cell_value(
                        row_index = tv_data->prevselectedrowindex
                     column_index = sy-tabix ).
endloop.

Beitrag von Kona (ForumUser / 7 / 0 / 0 ) »
row und col in meinem geposteten Beispiel sind nur Platzhalter. Normalerweise steht das in meinem Code so da. Der EventReceiver ist onInputProcessing.

Code: Alles auswählen.

FIELD-SYMBOLS: <row> TYPE ANY,
               <col> TYPE ANY.

...

ASSIGN tv_data->row_index TO <row>.
ASSIGN tv_data->column_index TO <col>.
string1 = tv_data->get_cell_value( row_index = <row> column_index = <col> ).
Die Variable string1 bleibt aber leer, obwohl die Zelle im Tableview an der angegebenen Stelle gefüllt ist. :shock: :?

Wird denn bei dir mit der Methode get_cell_value ein Wert zurückgegeben?

Interessanterweise hatte nämlich schonmal jemand mit der Methode get_cell_value dasselbe Problem wie ich, doch leider hat ihm dann keiner mehr geantwortet ... :(
H5N1-Kernel jetzt für Linux erhältlich!

Beitrag von Kona (ForumUser / 7 / 0 / 0 ) »
So, hab jetzt herausgefunden, warum die Variable string1 im oben genannten Beispiel leer bleibt. Es lag an folgendem:

Code: Alles auswählen.

<htmlb:tableViewColumn columnName = "<%= gs_felder-feldwert %>"
                       width      = "<%= gs_felder-feld_breite %>"        
                       type       = "TEXT" <-- !!!
                       edit       = "<%= <editable> %" >                                </htmlb:tableViewColumn>
Wenn ich es folgendermaßen löse, komme ich auch an die Daten ran:

Code: Alles auswählen.

<htmlb:tableViewColumn columnName = "<%= gs_felder-feldwert %>"
                       width      = "<%= gs_felder-feld_breite %>"
                       type       = "INPUT"
                       edit       = "<%= <editable>  %>">
</htmlb:tableViewColumn>
Allerdings - und das bereitet mir jetzt wieder Kopfzerbrechen - ist damit das edit-Flag nutzlos. Egal was ich als Wert übergebe, es bleibt editierbar. Aber das ist nicht Sinn und Zweck der Sache, wenn bestimmte Werte nur angezeigt, aber nicht geändert werden dürfen.

Hat in dem Zusammenhang jemand von euch bereits eine Lösung gefunden? Ich probier schon die ganze Zeit, wie gesagt, doch leider ohne nennenswerten Erfolg.
H5N1-Kernel jetzt für Linux erhältlich!

_edit_

Beitrag von citoki (ForumUser / 5 / 0 / 0 ) »
wollte nur noch ma hinzufügen das ich die komplette Tabelle einlesen möchte und nicht nur bestimmte Felder...

zur Zeit hab ich mein OnInputProcessing folgendermaßen nach ein paar Gedankenstützen aus diesem Thread http://www.apentia-forum.de/viewtopic.php?t=7182
gestaltet:

Code: Alles auswählen.

DATA: tv TYPE REF TO cl_htmlb_tableview. 
DATA: tv_data TYPE REF TO cl_htmlb_event_tableview. 
DATA: string1 TYPE string. 
 
FIELD-SYMBOLS: <row> TYPE ANY, 
               <col> TYPE ANY. 
 
tv ?= CL_HTMLB_MANAGER=>GET_DATA( 
request = runtime->server->request 
name    = &#146;tableView&#146; 
id      = tv_event->id ). 
 
tv_data = tv->data. 
tv_data TYPE REF TO cl_htmlb_tableview. 
 
ASSIGN tv_data->row_index TO <row>. 
ASSIGN tv_data->column_index TO <col>. 
 
string1 = tv_data->get_cell_value( 
   row_index = <row> column_index = <col> ) 
 
Für die Definition der Variablen ...

Und für den ButtonEvent hab ich den Button ausgewählt und dann die LOOP Schleife genommen. Aber ich will das ja in eine

Code: Alles auswählen.

IF event IS NOT INITIAL 
AND event->event_name = &#146;button&#146; 
AND event->event_id = &#146;bt_accept&#146;. 
 
  LOOP AT tv_data->allcolumnnames INTO LAB_STRUK-felder. 
    value = tv_data->get_cell_value( 
        row_index    = tv_data->prevselectedrowindex 
        column_index = sy-tabix ). 
  ENDLOOP. 
 
ENDIF. 
Aber mit den LOOPs hab ich noch so meine Problemchen. Jedes Feld zeilenweise zu lesen und in eine Struktur schreiben

Seite 1 von 1

Vergleichbare Themen

2
Antw.
4359
Views
Inhalte der Anzeigevarianten auslesen
von Alexander D. » 16.04.2008 08:40 • Verfasst in ABAP® Core
8
Antw.
3718
Views
TableView auslesen?
von Andy » 12.09.2005 09:41 • Verfasst in Web-Dynpro, BSP + BHTML
1
Antw.
1627
Views
SAP Inhalte ins web?
von Chrisu » 23.05.2005 11:55 • Verfasst in Web Application Server
2
Antw.
1549
Views
Container Inhalte austauschen?
von justMe » 26.09.2006 16:02 • Verfasst in ABAP Objects®
4
Antw.
2295
Views
RSUSR100: Zugriff auf Inhalte
von KlausB » 12.03.2008 16:15 • Verfasst in ABAP® Core

Über diesen Beitrag


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

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 14 Stunden von Bright4.5 1 / 303
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1943
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8546