TableView Datensatz identifizieren

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

TableView Datensatz identifizieren

Beitrag von Riceman (ForumUser / 6 / 0 / 0 ) »
Hallo@all,

bin ein ziemlicher Newbie in der BSP-Programmierung, komme eigentlich aus dem VIM/Console/HTML/PHP/MySQL-Frickel-Umfeld (und bin auch sehr stolz drauf :wink: ). Jetzt muß ich mich allerdings @work mit BSPs beschäftigen und mich in Konzepte einarbeiten, bei denen zum Teil das sprichwörtliche Rad neu erfunden wurde...

Nunja, was hilfts, hier zu meinem Problem:

Ich habe einen TableView, in dem mehrere, zum Teil identische Datensätze stehen. Habe eine Spalte mit Buttons hinzugefügt und möchte, daß beim Anklicken so eines Buttons der Datensatz im Eventhandler OnInputProcessing eindeutig identifiziert werden kann. Meine Fragen: Wie finde ich heraus, welcher Button angeklickt wurde? Und kann ich gleichzeitig den ganzen Datensatz übergeben? Muß ich der Tabelle zu diesem Zweck unbedingt einen eindeutigen Bezeichner hinzufügen, oder läßt sich das auch anders hinbekommen?

Mal sehen, was ihr so drauf habt ;)

Greez
Mario

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


Beitrag von Aggressor (ForumUser / 66 / 0 / 0 ) »
Hi, das geht auch ohne einen eindeutigen Bezeichner und zwar mit einer Methode des TableViews. Wir haben es so gelöst:

Code: Alles auswählen.

IF sy-tabix EQ tvdata->row_index. " WENN ZEILE STIMMT

*#### EINGEGEBENE WERTE SPEICHERN ###################################
############################################
* WENN INHALT VON TV != INHALT VON ITAB SCHREIBE NEUEN INHALT IN ITAB
            IF <wa>-Feld NE tvdata->get_cell_value(
                                                 row_index = sy-tabix
                                              column_index = 6 ).
             <wa>-Feld = tvdata->get_cell_value(
                                                row_index = sy-tabix
                                             column_index = 6 ).
              MODIFY /ald/wksbseg FROM <wa>.
            ENDIF.




Des Weiteren musst du diese Definitionen hinzfügen

Code: Alles auswählen.

  DATA :    tvdata   TYPE REF TO cl_htmlb_event_tableview,
            event    TYPE REF TO cl_htmlb_event,
            iterator TYPE REF TO if_htmlb_tableview_iterator,
            tv       TYPE REF TO cl_htmlb_tableview.

* FELDSYMBOL WIE ZEILE VON ITAB_POS
  FIELD-SYMBOLS <wa>   LIKE LINE OF alditab_positionsdaten.
[/code]
"Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht." Albert Einstein

Beitrag von Gast ( / / 0 / 3 ) »
hmm.. bei dieser zeile

Code: Alles auswählen.

IF sy-tabix EQ tvdata->row_index. " WENN ZEILE STIMMT 
knallt's bei mir. mitm debugger komme ich nicht weiter, und der browser sagt, er kann die seite nicht anzeigen. muß tvdata nicht irgendwo gefüllt werden?

Beitrag von Aggressor (ForumUser / 66 / 0 / 0 ) »
sorry hab ich vergessen. musst das noch hinzufügen

Code: Alles auswählen.

*#######################################################################
*################ BUTTON IN SPALTE GEDRÜCKT ############################
*#######################################################################

*## #2# EVENTTYPE = TV-ZELLE
  IF  event             IS NOT INITIAL
  AND event->name       = 'tableView'
  AND event->event_type = 'cellClick'.
***   REFERENZ AUF DIE TV DATEN
    tvdata ?= event.
    tv ?= cl_htmlb_manager=>get_data( request = request
                                      name    = 'tableView'
                                      id      = 'id' ).
    tvdata = tv->data.
"Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht." Albert Einstein

Beitrag von Aggressor (ForumUser / 66 / 0 / 0 ) »
Sorry hab gerade deinen Beitrag nochmal gelesen und gemerkt das du eigentlich was anderes willst. Wenn ich dich jetzt richtig verstanden habe willst du nur eine genaue Zeilenangabe ?

Dann musst du es so machen:

Code: Alles auswählen.

  CLASS CL_HTMLB_MANAGER DEFINITION LOAD.

  DATA: tv          type ref to CL_HTMLB_TABLEVIEW,
        table_event type ref to CL_HTMLB_EVENT_TABLEVIEW.

  DATA event TYPE REF TO IF_HTMLB_DATA.
  event = CL_HTMLB_MANAGER=>get_event_ex( request ).

  IF event IS NOT INITIAL AND
      event->event_name = 'button' AND
       event->event_server_name = 'clear'.
    selectedRowIndex = 0.
  ELSE.
    tv ?= CL_HTMLB_MANAGER=>GET_DATA( request = request
                                      name    = 'tableView'
                                      id      = 'tvX' ).
    IF tv IS NOT INITIAL.
      table_event = tv->data.
      selectedRowIndex = table_event->SELECTEDROWINDEX.
    ENDIF.
  ENDIF.
"Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht." Albert Einstein

Beitrag von Riceman (ForumUser / 6 / 0 / 0 ) »
ahja genau, vielen Dank!

Haben es jetzt doch mit einer RowSelection gemacht, und die Zeilennummer wird auch korrekt zurückgeliefert. Jetzt soll mit betreffendem Datensatz natürlich auch etwas angestellt werden, und schon hakt es wieder...

Code: Alles auswählen.

row_selected = tv_inbox_data->selectedrowindex.

DATA val1 TYPE STRING.


val1 = tv_inbox_data->GET_CELL_VALUE(   row_index   = row_selected
                                            column_index = 2
                                            ).
Beim Debuggen steht in row_selected der richtige Wert der selektierten Zeile. Aber egal, wie ich mich drehe und winde, GET_CELL_VALUE spuckt partout einen leeren String aus. Egal, welchen Spaltenindex ich verwende (aber natürlich sind alle Felder gefüllt). Ich verwende die Methode doch genauso, wie es in der Doku steht... Wenn mir da auch noch jemand auf die Sprünge helfen könnte, wäre ich wunschlos glücklich :)

Seite 1 von 1

Vergleichbare Themen

4
Antw.
1995
Views
Jobs identifizieren SAP CRM (sm 37)
von Asyouwish » 06.08.2021 19:09 • Verfasst in CRM (Customer Relationship Management)
4
Antw.
3434
Views
Reise als Kettenreise identifizieren
von Dyrdek » 22.11.2016 09:02 • Verfasst in Financials
4
Antw.
5203
Views
IDOC ORDERS - Kunde über ILN identifizieren
von Otscho » 03.07.2008 13:13 • Verfasst in ABAP® Core
6
Antw.
9600
Views
SQL letzter Datensatz
von kostonstyle » 05.09.2008 14:17 • Verfasst in ABAP® für Anfänger
5
Antw.
3882
Views
Aktuellster Datensatz aus Infotyp
von ostpower » 19.08.2011 16: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

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.