Eingabe von Daten in ALV

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

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

Eingabe von Daten in ALV

Beitrag von Radinator (ForumUser / 46 / 10 / 6 ) »
Servus,

wenn ich mit dem FuBa REUSE_ALV_GRID_DISPLAY ein ALV anzeige und in der EXIT Routine den User-Command behandle und hier für den Fall von Strg+S (&DATA_SAVE) die Daten speichere und wieder eine Zeile einfügen will, wie mache ich das am besten ohne "Zeile anhängen und ALV wieder mit REUSE anzeigen"?

Aktuell ist mein Programmfluss folgender:
1.) FieldCatalog aufbauen
2.) Daten in iTab lesen
3.) Aufruf der Form zur Anzeige des ALVs mit dem oben genannten FuBa mit Angabe der Exit-Routine fürs Handhaben der User-Commands
4.) In der user_command Form auf das Command reagieren und im Fall von Strg+S Daten speichern, Zeile in die (anzuzeigende) iTab schreiben und ab 2.) wieder anfangen
Wenn ich das jedoch mache, dann muss ich mit F12 und/oder F3 (wenn man mehrmals Strg+S drückt) zurück springen um das Programm zu beenden. Ich hab schon mit einem Breakpoint geschaut ob das Command bzw der Handler reagiert wenn ich F12/F3 drücke - tut er nicht.

Hier ein Beispielcoding, vielleicht findet wer meinen Fehler (muss man eventuell was beim Aufruf des FuBas anders machen?

Code: Alles auswählen.

" Als Mockup für die Datenbank
types:
  begin of data_to_show,
    id type int8,
    text type string,
  end of data_to_show.

data:
  alv_fieldcat     type slis_t_fieldcat_alv,
  alv_fieldcat_row type slis_fieldcat_alv,
  alv_layout       type slis_layout_alv,
  alv_repid        like sy-repid.

data:
  data_to_show_db type table of data_to_show,
  data_to_show_row like line of data_to_show_db.

perform build_fieldcatalog.
perform get_data.
perform show_alv.

form build_fieldcatalog.
  clear alv_fieldcat.
  alv_fieldcat = value #(
    ( fieldname = 'ID'   seltext_m = 'ID'   col_pos = 0 edit = abap_true outputlen = 10 )
    ( fieldname = 'TEXT' seltext_m = 'Text' col_pos = 0 edit = abap_true outputlen = 10 )
  ).
endform.

form get_data.
  " SELECT * FROM db into table @data_to_show
  perform append_empty_rows using 1.
endform.

form append_empty_rows
  using row_count type int8.

  do row_count times.
    clear data_to_show_row.
    append data_to_show_row to data_to_show_db.
  enddo.
endform.

form show_alv.
  alv_repid = sy-repid.
  alv_layout-zebra = abap_true.
  call function 'REUSE_ALV_GRID_DISPLAY'
    exporting
      i_callback_program      = alv_repid           "Name des aufrufenden Programms
      i_callback_user_command = 'USER_COMMAND_0100' "EXIT-Routine zur Befehlsbehandlung
      is_layout               = alv_layout
      it_fieldcat             = alv_fieldcat
    tables
      t_outtab                = data_to_show_db
    exceptions
      program_error           = 1
      others                  = 2.
endform.

form user_command_0100
  using p_ucommand type sy-ucomm
        p_selfield type slis_selfield.

  case p_ucommand.
    when '&DATA_SAVE'.
      perform save_alv_data_to_db.
      perform append_empty_rows using 1.
      perform show_alv.
    when others.
      leave to screen 0.
  endcase.
endform.

form save_alv_data_to_db.
  " Daten persistieren
endform.

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


Re: Eingabe von Daten in ALV

Beitrag von JHM (Top Expert / 1202 / 1 / 199 ) »
Radinator hat geschrieben:
12.02.2025 15:05
Wenn ich das jedoch mache, dann muss ich mit F12 und/oder F3 (wenn man mehrmals Strg+S drückt) zurück springen um das Programm zu beenden. Ich hab schon mit einem Breakpoint geschaut ob das Command bzw der Handler reagiert wenn ich F12/F3 drücke - tut er nicht.
Du legst ja auch ALV über ALV über ALV ,-)

Schau dir mal die Doku im FuBa zum I_CALLBACK_USERCOMAND an:

Im Parameter p_selfield kannst du diese Felder mit abap_true setzten/zurückgeben:
refresh : (Exporting) Liste soll neu aufgebaut werden
col_stable:(Exporting) Beim Neuaufbau Spaltenpositionierung beibehalten
row_stable:(Exporting) Beim Neuaufbau Zeilenpositionierung beibehalten

anstatt den ALV erneut aufzurufen.
Gruß Hendrik

Re: Eingabe von Daten in ALV

Beitrag von Radinator (ForumUser / 46 / 10 / 6 ) »
Hi JHM,

vielen Dank für deine Hilfe! Funktioniert :D

Eine Frage hätte ich jedoch noch an dich: Da das p_selfield als USING übergeben wird sollte es ja eigentlich keinen Einfluss darauf haben welchem Wert ich p_selfield-refresh zuweise da diese Information beim Verlassen der FORM (aufgrund der Übergabe als ByValue) verlorengehen sollte. Wohingegen bei einer Übergabe als CHANGING ein ByRef Übergabe stattfindet welche es ermöglicht den Wert zu ändern und diese Änderung "nach außen" (aus dem Kontext der FORM) zu tragen.

Hab ich da irgendwie nen Denkfehler?

Lg radinator

Re: Eingabe von Daten in ALV

Beitrag von black_adept (Top Expert / 4117 / 130 / 953 ) »
USING bei FORMs bedeutet: "Es wäre nett, wenn dein Code den Wert nicht ändert, aber ich kann nix dagegen tun, wenn du es doch tust".
Es gibt de facto keinen Unterschied zwischen USING und CHANGING bei FORM-Routinen.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Radinator

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

4
Antw.
443
Views
3
Antw.
1638
Views
ALV Eingabe
von SAP_ENTWICKLER » 26.05.2014 07:44 • Verfasst in ABAP® Core
8
Antw.
3273
Views
Eingabe mit '*'
von andreas.l » 17.11.2016 09:14 • Verfasst in ABAP® für Anfänger
1
Antw.
1487
Views
ALV GRID als Eingabe
von ryd » 06.01.2006 15:58 • Verfasst in ABAP Objects®
7
Antw.
5257
Views
Dynpro - Textfeld * Eingabe
von SaskuAc » 12.10.2018 12:15 • Verfasst in ABAP® für Anfänger

Ü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

Workflow-Datenfluss mit Multi-Line-Container
vor 2 Tagen von ewx gelöst 2 / 289
Mahnung erstellen
vor 2 Tagen von Sebastian82 4 / 347

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

Workflow-Datenfluss mit Multi-Line-Container
vor 2 Tagen von ewx gelöst 2 / 289
Mahnung erstellen
vor 2 Tagen von Sebastian82 4 / 347

Unbeantwortete Forenbeiträge

OPD Druck im SPOOL
vor 4 Tagen von Manfred K. 1 / 303
Export von Spools in XLSX
vor einer Woche von abapamateur 1 / 1459
Feldberechnung ME32K
vor 2 Wochen von ZF_SAPler 1 / 1984