Submitbutton Auswahl in Datenkbank speichern


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

Submitbutton Auswahl in Datenkbank speichern

Beitragvon vcelik » 15.05.2017, 09:01

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 :)
vcelik
ForumUser
 
Beiträge: 20
Registriert: 02.05.2017, 08:05
Dank erhalten: 0 mal
Ich bin: Student/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Submitbutton Auswahl in Datenkbank speichern

Beitragvon jocoder » 15.05.2017, 11:35

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
jocoder
ForumUser
 
Beiträge: 33
Registriert: 17.08.2015, 14:57
Dank erhalten: 8 mal
Ich bin: Entwickler/in

Re: Submitbutton Auswahl in Datenkbank speichern

Beitragvon vcelik » 15.05.2017, 12:10

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
vcelik
ForumUser
 
Beiträge: 20
Registriert: 02.05.2017, 08:05
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Submitbutton Auswahl in Datenkbank speichern

Beitragvon jocoder » 16.05.2017, 14:00

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.
jocoder
ForumUser
 
Beiträge: 33
Registriert: 17.08.2015, 14:57
Dank erhalten: 8 mal
Ich bin: Entwickler/in

Re: Submitbutton Auswahl in Datenkbank speichern

Beitragvon vcelik » 18.05.2017, 09:38

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.
 
vcelik
ForumUser
 
Beiträge: 20
Registriert: 02.05.2017, 08:05
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Submitbutton Auswahl in Datenkbank speichern

Beitragvon jocoder » 18.05.2017, 11:01

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.
jocoder
ForumUser
 
Beiträge: 33
Registriert: 17.08.2015, 14:57
Dank erhalten: 8 mal
Ich bin: Entwickler/in

Re: Submitbutton Auswahl in Datenkbank speichern

Beitragvon vcelik » 18.05.2017, 11:48

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 :)
vcelik
ForumUser
 
Beiträge: 20
Registriert: 02.05.2017, 08:05
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Submitbutton Auswahl in Datenkbank speichern

Beitragvon jocoder » 22.05.2017, 14:24

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.

Für diese Nachricht hat jocoder einen Dank bekommen :
vcelik
jocoder
ForumUser
 
Beiträge: 33
Registriert: 17.08.2015, 14:57
Dank erhalten: 8 mal
Ich bin: Entwickler/in


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Pop-up Fenster/Button auf dem selection screen
vor 7 Stunden von JHM 2 Antw.
Große Umsatzprobe Differenz SAPF190
vor 3 Tagen von wreichelt 1 Antw.
gelöst CL_ABAP_CLASSDESCR und Syntaxfehler
vor 3 Tagen von GastX 4 Antw.
gelöst Parameter-ID für Z-Programme einrichten
vor 3 Tagen von Roddy 2 Antw.
PDF-Datei nach Upgrade deutlich zu groß
vor 5 Tagen von ewx 1 Antw.

  Ähnliche Beiträge beta
Auswahl für Dateinamen im Selektionsbildschirm
10.09.2005, 01:19 von Gast 5 Antw.
SELELECT-OPTIONS Auswahl erstellen
20.08.2011, 11:39 von Bitfummler 8 Antw.
automatische Aktualisierung Dynprobild bei Dropdown-Auswahl
30.06.2005, 10:42 von Gast 6 Antw.
Auswahl in Radiobutton-Group an Objekt übergeben
24.04.2008, 11:03 von TWP 1 Antw.
Auswahl zweier Table Controls auslesen
23.06.2008, 23:22 von spooky 0 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]

Feedback ...?

Was können wir verbessern? Hinterlasse deine Kontaktdaten, wenn du eine direkte Antwort möchtest.

... Absenden!