get_selected_rows

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
11 Beiträge • Seite 1 von 1
11 Beiträge Seite 1 von 1

get_selected_rows

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »
Hallo Forum,

ich arbeite an folgender Aufgabe:
ich habe eine Interne Tabelle die in einem ALV ausgegeben wird.
Dort habe ich einen editier button angelegt damit einzelne Einträge anwählbar sind.
Damit hat der Nutzer die Möglichkeit z.b. einen Namen zu ändern.

Ich arbeite hier mit dem Baustein get_selected_rows.
Es funktioniert soweit auch super.

Jedoch wenn ich in der Eingabe Maske des Funktionsbausteins Get_Values, ABBRECHEN wähle.
Und den Vorgang wiederhole arbeitet mein get_selected_rows nicht mehr.

Kann mir jemand da eine Antwort geben wie das get_selected_rows beim wiederholten male arbeitet und wieso er keinen Index liefert.

Vielen Dank

Code: Alles auswählen.

FORM edit_student.

  DATA: lt_fields TYPE STANDARD TABLE OF sval,
        ls_fields TYPE sval,
        lv_returncode(1) TYPE c.

*&---------------------------------------------------------------------*
* lokale Variablen für Studentendaten
*&---------------------------------------------------------------------*

  DATA lv_zmatrnr TYPE zadc_t_student-zmatrnr.
  DATA lv_zsname TYPE zadc_t_student-zsname.
  DATA lv_zsvorname TYPE zadc_t_student-zsvorname.
  DATA lv_zsstudiengang TYPE zadc_t_student-zsstudiengang.

*    lokale variablen
  DATA  lt_rows TYPE lvc_t_row.
  DATA  ls_row  TYPE lvc_s_row.


clear lt_rows.
free ls_row.

*&---------------------------------------------------------------------*
* Methode zur Zeilenselektion
*&---------------------------------------------------------------------*

  CALL METHOD grid_r->get_selected_rows
    IMPORTING
      et_index_rows = lt_rows.
*      et_row_no     =



*  SORT lt_rows BY index DESCENDING.

CLEAR wa_studenten.

  LOOP AT lt_rows INTO ls_row.
    READ TABLE it_studenten INTO wa_studenten INDEX ls_row-index .
  ENDLOOP.

  lv_zmatrnr = wa_studenten-zmatrnr.
  lv_zsname = wa_studenten-zsname.
  lv_zsstudiengang = wa_studenten-zsstudiengang.
  lv_zsvorname = wa_studenten-zsvorname.

  ls_fields-tabname = 'ZADC_T_STUDENT'.
  ls_fields-fieldname = 'ZSVORNAME'.
  ls_fields-fieldtext = 'Vorname'.
  ls_fields-field_obl = 'X'.
  ls_fields-value = lv_zsvorname.
  APPEND ls_fields TO lt_fields.

  CLEAR ls_fields.
  ls_fields-tabname = 'ZADC_T_STUDENT'.
  ls_fields-fieldname = 'ZSNAME'.
  ls_fields-fieldtext = 'Nachname'.
  ls_fields-field_obl = 'X' .
  ls_fields-value = lv_zsname.
  APPEND ls_fields TO lt_fields.

  CLEAR ls_fields.
  ls_fields-tabname = 'ZADC_T_STUDENT'.
  ls_fields-fieldname = 'ZSSTUDIENGANG'.
  ls_fields-fieldtext = 'Studiengang'.
  ls_fields-field_obl = 'X' .
  ls_fields-value = lv_zsstudiengang.
  APPEND ls_fields TO lt_fields.


  CALL FUNCTION 'POPUP_GET_VALUES'
    EXPORTING
      no_value_check  = ' '
      popup_title     = 'Bitte geben Sie Ihre Veränderungen ein: '
*     START_COLUMN    = '5'
*     START_ROW       = '5'
    IMPORTING
      returncode      = lv_returncode
    TABLES
      fields          = lt_fields
    EXCEPTIONS
      error_in_fields = 1
      OTHERS          = 2.
  IF lv_returncode = 'A'.
    free grid_r.
    CLEAR ok_code.
* Implement suitable error handling here
    RETURN.
  ENDIF.

* wa_studenten. CLEAR

  LOOP AT lt_fields INTO ls_fields.

    CASE ls_fields-fieldname.
      WHEN 'ZSVORNAME' .
        wa_studenten-zsvorname = ls_fields-value.
        UPDATE zadc_t_student SET zsvorname = ls_fields-value
        WHERE zmatrnr = lv_zmatrnr.
      WHEN 'ZSNAME' .
        wa_studenten-zmatrnr = ls_fields-value.
        UPDATE zadc_t_student SET zsname = ls_fields-value
        WHERE zmatrnr = lv_zmatrnr.
      WHEN 'ZSSTUDIENGANG' .
        wa_studenten-zsstudiengang = ls_fields-value.
        UPDATE zadc_t_student SET zsstudiengang = ls_fields-value
        WHERE zmatrnr = lv_zmatrnr.
      WHEN OTHERS.
    ENDCASE.
  ENDLOOP.

*  CLEAR it_studenten.

  SELECT * FROM zadc_t_student INTO CORRESPONDING FIELDS OF TABLE it_studenten.

  grid_r->refresh_table_display( ).


ENDFORM.                    "edit_student

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


Re: get_selected_rows

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

wenn du auf Abbrechen gehst erhält dein Returncode wohl den Wert 'A'. Damit kommst du in deine IF-Kondition nach dem Funktionsbaustein. In diesem führst du ein FREE grid_r aus. Du zerstörst dein Objekt damit. Siehe F1-Hilfe zu FREE auf Objekten.
Dadurch kann dein get_selected_rows nicht mehr arbeiten weil es das Objekt grid_r nach dem FREE nicht mehr gibt.
Gruß,
der Matze

Re: get_selected_rows

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »
vielen dank schon mal für die Antwort.

Habe den Befehl auskommentiert und es funktioniert leider immer noch nicht..

Re: get_selected_rows

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hast du mal gedebuggt?

Schau dir mal an was genau mit den notwendigen Variablen und Objekten passiert und ob sie überhaupt gefüllt sind.
Ohne tiefer ins Detail zu gehen sieht es sonst erstmal nämlich nicht so falsch aus. Hast du eventuell irgendwo anders noch ein FREE grid_r ?
Gruß,
der Matze

Re: get_selected_rows

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »
ne das war mein einziger free grid..

wenn ich es debugge läuft er beim erstenmal komplett alles durch.. sobald ich einmal abbreche und nochmal editieren möchte

geht er erst gar nicht in meine loop schleife rein..sondern überspringt diese..
CALL METHOD grid_r->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
* et_row_no =


* SORT lt_rows BY index DESCENDING.

CLEAR wa_studenten.

LOOP AT lt_rows INTO ls_row.
READ TABLE it_studenten INTO wa_studenten INDEX ls_row-index .
ENDLOOP.

Re: get_selected_rows

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Ist grid_r vor dem Aufruf get_selected_row denn auch besetzt oder initial?
Wenn das Programm über deinen Loop hinweg geht heißt das ja, dass keine selektierte Zeile gefunden wurde.
Ggf. ist das nur ein Handhabungsfehler?! Hast du nach dem Abbrechen die Zeilen mal neu markiert oder einfach mal andere markiert?

Nochmal für mein Verständnis:
1. du rufst das alles auf
2. anstatt Werte einzutragen gehst du auf "Abbrechen"
3. Wenn du es erneut auffrufst gibt es die Fehler
Gruß,
der Matze

Re: get_selected_rows

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »
sobald ich es erneut aufrufe liefert mein get_selected_rows keinen index mehr...

Zum Verständnis:

1. Ich wähle einen Eintrag aus und wähle editieren.
2. es erscheint ein Pop Up mit den Werten die er aus dem ALV sich zieht
3. ich breche diese Maske ab.. (Pop Up get Values)
4. wähle wieder editieren im ALV den fange ich mit einem ok_code ab. Im debugger zeigt er nun keinen ermittelten Index mehr aus dem get_selected_rows
5. geht daher nicht in meinen Loop rein


ich habe im internet von diesem fehler bei get_selected_rows öfters gelesen... wie z.B. hier

https://archive.sap.com/discussions/thread/1515626
Zuletzt geändert von Andrzej am 15.02.2017 15:09, insgesamt 1-mal geändert.

Re: get_selected_rows

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »
es scheint mir das die Methode get_selected_rows beim zweiten Nutzen nicht wirklich den Index liefert

Re: get_selected_rows

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Hallo,

wenn ich das "FREE GRID" sehe gehe ich mal davon aus, dass du den Grid mehrfach aufbaust ( Breakpoint im Debugger da wo du den Constructor aufrufst ), sonst wäre das ja gar nicht nötig gewesen. Wenn das der Fall sein sollte sorge dafür, dass das Grid nur 1x erzeugt wird - dann wird es wohl auch mit dem get_selected_rows funktionieren.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: get_selected_rows

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »
black_adept hat geschrieben:Hallo,

wenn ich das "FREE GRID" sehe gehe ich mal davon aus, dass du den Grid mehrfach aufbaust ( Breakpoint im Debugger da wo du den Constructor aufrufst ), sonst wäre das ja gar nicht nötig gewesen. Wenn das der Fall sein sollte sorge dafür, dass das Grid nur 1x erzeugt wird - dann wird es wohl auch mit dem get_selected_rows funktionieren.
habe das Free Grid rausgenommen...das Objekte erzeuge ich in einem Modul create_control welches ich im PBO des ALV ausführe

Re: get_selected_rows

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »
Problem ist gelöst..

es lag am Objekt.. ich habe das ganze Programm zuvor aus einer Kopie übernommen daher gab es wohl Probleme mit dem Objekt.. vom Coding her war alles okay..
im Ursprungsprogramm funktioniert ist..

Seite 1 von 1

Vergleichbare Themen

2
Antw.
3063
Views
ALV - Selected Rows funktioniert nur ein Mal
von SaskuAc » 27.11.2018 07:04 • Verfasst in Dialogprogrammierung
1
Antw.
1351
Views
get selected Rows mit delete Anweisung
von JohnLocklay » 27.10.2016 09:08 • Verfasst in ABAP® Core
2
Antw.
3270
Views
ALV Grid - Selected Rows by Ausgabe mit Filtern
von ernst » 01.12.2004 16:02 • Verfasst in ABAP Objects®
2
Antw.
1115
Views
Join 2er Tabellen ohne doppelter Rows in der Ergebnistabelle
von Bitfummler » 08.06.2006 15:09 • Verfasst in ABAP® Core
0
Antw.
1252
Views
TRACE: Erseter FETCH bei UP TO N Rows extrem hoch
von c0lt.seavers » 27.10.2008 11:38 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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.

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140