Submitbutton Auswahl in Datenkbank speichern

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

Submitbutton Auswahl in Datenkbank speichern

Beitrag von vcelik (ForumUser / 22 / 7 / 0 ) »
Hey Comm,

Ich habe eine Tabelle mit Festwerten, aus denen der User 1 Wert aussucht. Ich habe auch schon eine Datenbanktabelle mit den benötigten Feldern erstellt (siehe Scrrenshot). Wie bekomme ich es nun hin, dass der Benutzer seine Auswahl per Druck auf die Taste "Weiter" (siehe SC Table) in der angelegten Datenbanktabelle speichert? Sprich value aus Table in der Spalte "Abteilung" der Datenbanktabelle über submit speichern...

Ich habe schon ausgiebig recherchiert, bin aber auf keinen für meinen Kontext verständlichen Guide gestoßen...

Ich hoffe ihr könnt einem ABAP Newbie helfen :)

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


Re: Submitbutton Auswahl in Datenkbank speichern

Beitrag von jocoder (Specialist / 338 / 3 / 101 ) »
Hallo,
hierzu brauchst du Objektorientierte Programmierung.
Soweit ich das richtig verstanden habe, geht es um ein Web-Dynpro

Code: Alles auswählen.

data: context_node type ref to if_wd_context_node,
element type ref to if_wd_context_element,
attribut type ..." Struktur des Kontext-Knoten

context_node = wd_context->get_context_node( name = 'Name des Kontext-Knoten').
element = context_node->get_element( ).
element->get_static_attributes()
attribut enthält jetzt die ausgewählte Tabellenzeile

Re: Submitbutton Auswahl in Datenkbank speichern

Beitrag von vcelik (ForumUser / 22 / 7 / 0 ) »
jocoder hat geschrieben:Hallo,
hierzu brauchst du Objektorientierte Programmierung.
Soweit ich das richtig verstanden habe, geht es um ein Web-Dynpro

Code: Alles auswählen.

data: context_node type ref to if_wd_context_node,
element type ref to if_wd_context_element,
attribut type ..." Struktur des Kontext-Knoten

context_node = wd_context->get_context_node( name = 'Name des Kontext-Knoten').
element = context_node->get_element( ).
element->get_static_attributes()
attribut enthält jetzt die ausgewählte Tabellenzeile
Danke für den Code, könntest du mir den evtl. kurz erklären?
Ich weiß jetzt nämlich nicht, wie ich mit dem Node umgehe. Ich habe ja schon einen Contextknoten (FACHBEREICHENODE) der eine Attribut "FACHBEREICH" enthält (Dort lege ich die auswählbaren FB's in der Tabelle fest). Lege ich für die Datenübertragung ein weiteres Attribut fest? Und an welcher Stelle sage ich, dass die ausgewählte value im Feld "Fachbereiche" in die Datenbank eingetragen wird?
Und wo genau trage ich den Code ein, etwa in die WDDOINIT meiner View? Fragen über Fragen.. :D

Re: Submitbutton Auswahl in Datenkbank speichern

Beitrag von jocoder (Specialist / 338 / 3 / 101 ) »
Hier solltest du für den Knopf eine Aktion definieren.

Hier wird dann der Code implementiert.

Code: Alles auswählen.

method onaction_weiter.
data: context_node type ref to if_wd_context_node,
element type ref to if_wd_context_element,
attribut type ..." Struktur des Kontext-Knoten fachbereichnode

context_node = wd_context->get_context_node( name = wd_this->wdctx_fachbereichnode  ).
element = context_node->get_element( ).
attribut = element->get_static_attributes().
  
In der Struktur attribut steht dann die Tabellenzeilen, die der Benutzer ausgewählt hat.
Jetzt kannst du ganz normal mit der Struktur attribut weiterarbeiten.
Die Struktur attribut hat den gleichen Typ wie der Context-Knoten fachbereichnode.
z.B. (wenn dein Context-Knoten ein Attribut fachbereich enthält):

Code: Alles auswählen.

 wd_assist->update_fachbereich( fachbereich = attribut-fachbereich ).

endmethod " onaction_weiter
...
method update_fachbereich.
  update my_table set abteilung = fachbereich where my_sql_clause.
  if sy-subrc = 0.
    commit work.
  else.
    rollback work.
  endif.
endmethod.
Wichtig bei Fortschreibung auf der Datenbank:
my_table wäre dann die Tabelle aus deinem Screenshoot.
my_sql_clause ist die where-Bedingung.
Beim Web-Dynpro sollte man immer ein explizites commit work aufrufen.

Re: Submitbutton Auswahl in Datenkbank speichern

Beitrag von vcelik (ForumUser / 22 / 7 / 0 ) »
jocoder hat geschrieben:Hier solltest du für den Knopf eine Aktion definieren.

Hier wird dann der Code implementiert.

Code: Alles auswählen.

method onaction_weiter.
data: context_node type ref to if_wd_context_node,
element type ref to if_wd_context_element,
attribut type ..." Struktur des Kontext-Knoten fachbereichnode

context_node = wd_context->get_context_node( name = wd_this->wdctx_fachbereichnode  ).
element = context_node->get_element( ).
attribut = element->get_static_attributes().
  
In der Struktur attribut steht dann die Tabellenzeilen, die der Benutzer ausgewählt hat.
Jetzt kannst du ganz normal mit der Struktur attribut weiterarbeiten.
Die Struktur attribut hat den gleichen Typ wie der Context-Knoten fachbereichnode.
z.B. (wenn dein Context-Knoten ein Attribut fachbereich enthält):

Code: Alles auswählen.

 wd_assist->update_fachbereich( fachbereich = attribut-fachbereich ).

endmethod " onaction_weiter
...
method update_fachbereich.
  update my_table set abteilung = fachbereich where my_sql_clause.
  if sy-subrc = 0.
    commit work.
  else.
    rollback work.
  endif.
endmethod.
Wichtig bei Fortschreibung auf der Datenbank:
my_table wäre dann die Tabelle aus deinem Screenshoot.
my_sql_clause ist die where-Bedingung.
Beim Web-Dynpro sollte man immer ein explizites commit work aufrufen.
Zunächst einmal Danke für deine Mühen :)

"..." Struktur des Kontext-Knoten fachbereichnode" -> ist damit die hinterlegte Datenbank gemeint ?

Ist das mit dem Coding so getan, oder was muss ich noch definieren ?

Wie ist das commit work zu verstehen?

Des weiteren bekomme ich die Meldungen "Der formale Parameter "NAME" existiert nicht" und "Die Methode get_context_node existiert nicht, es gibt aber eine ähnliche Methode get_context...

Hier mal mein Code...(PS: ich habe eine Datenbank und neue Nodes weil ich meine Anwednung neu angelegt habe)

Code: Alles auswählen.

method ONACTIONONCLICK_EDIT .
  DATA: context_node type ref to if_wd_context_node,
        element type ref to if_wd_context_element,
        attribut type zdb_bcm.

  context_node = wd_context->get_context_node( NAME = wd_this->wdctx_main_node ).
  element = context_node->get_element( ).
  attribut = element->get_static_attributes( ).

  wd_assist->update_fachbereich (fachbereich = attribut-fachbereich).


endmethod. "onactionclick_edit

Method update_fachbereich.

  Update zdb_bcm set FACHBEREICH = fachbereich WHERE my_sql_clause.
  IF sy-subrc = 0.
    COMMIT WORK.
  ELSE.
    ROLLBACK WORK.
  ENDIF.
ENDMETHOD.

Re: Submitbutton Auswahl in Datenkbank speichern

Beitrag von jocoder (Specialist / 338 / 3 / 101 ) »
Sorry,
die Methode heißt

Code: Alles auswählen.

get_child_node]
statt

Code: Alles auswählen.

get_context_node
.

Zur Auswahl der Struktur. Diese legst bei Anlage des Context-Knoten fest. Dafür gibt es 2 Möglichkeiten:
1. Mit Dictionary-Struktur (siehe Screenshoot).
Meine Dictionary-Struktur heißt zbemu_mcha_sel_s. Die musst du natürlich durch deine Struktur ersetzen.
Dann sieht der Code wie folgt aus:

Code: Alles auswählen.

data: context_node type ref to if_wd_context_node,
element type ref to if_wd_context_element,
attribut type z_bemu_mcha_s. " Struktur des Kontext-Knoten fachbereichnode
2. Anlage mit einzelnen Attributen ohne Dictionary-Struktur:
Dann sieht der Code wie folgt aus:

Code: Alles auswählen.

data: context_node type ref to if_wd_context_node,
element type ref to if_wd_context_element,
attribut type wd_this->element_fachbereichnode." Struktur des Kontext-Knoten fachbereichnode
Und das

Code: Alles auswählen.

commit work
dient dazu die Daten auf der Datenbank zu speichern. Ohne commit work sind diese nur temporär vorhanden und gehen nach Beendigung des Programmes verloren.
Dies ist nicht unbedingt notwendig, da diese Anweisung automatisch erzeugt wird.

Beim Web-Dynpro wird diese Anweisung erzeugt, wenn der Benutzer eine Aktion ausführt.

Re: Submitbutton Auswahl in Datenkbank speichern

Beitrag von vcelik (ForumUser / 22 / 7 / 0 ) »
Ja das mit dem get_child_node habe ich dann rausbekommen :D

Wenn ich jetzt da ganze prüfe bekomme ich die Meldung, dass mein get_static_attributes keinen Returning-Parameter besitzt..wie ist hier vorzugehen?

Sorry für das stupide Fragen, aber so komme ich dem ganzen ein wenig näher :)

Re: Submitbutton Auswahl in Datenkbank speichern

Beitrag von jocoder (Specialist / 338 / 3 / 101 ) »
müsste auch so aussehen:

Code: Alles auswählen.

element->get_static_attributes( exporting static_attributes = attribut ).
Um ähnliche Fragen gleich zu klären:
1. die Methode update_fachbereich gehört in die Assistent-Klasse.
2. Mit my_sql_clause habe ich gemeint, dass du diese selber ersetzt.

Folgende Benutzer bedankten sich beim Autor jocoder für den Beitrag:
vcelik


Seite 1 von 1

Vergleichbare Themen

2
Antw.
1281
Views
f4 auswahl
von Gast » 12.08.2005 12:17 • Verfasst in ABAP® Core
8
Antw.
2432
Views
Layout Auswahl
von Vittel » 25.07.2013 15:09 • Verfasst in ABAP® Core
5
Antw.
2067
Views
Konstanten als F4 Auswahl
von nickname8 » 07.02.2019 06:33 • Verfasst in ABAP Objects®
5
Antw.
1194
Views
Hierarchische Auswahl bei N:N
von Bernd60 » 04.12.2020 16:00 • Verfasst in ABAP® für Anfänger
0
Antw.
3057
Views
Auswähl-ALV in Webdynpro
von resource_sik » 21.04.2008 17:03 • Verfasst in Web Application Server

Über diesen Beitrag


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