Dynamysche Select

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

Dynamysche Select

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
Hi Experten,
ich selcet mit join von 3 Tabellen.
mein Kunde will noch paar Felder zu selektion hinzufügen.
Ich möchte es nicht in meine standard Programm ändern, sondern in kunden exit.
Ich habe so realesiert, obwohl ich glaube reinfolge von felder ist wichtig ist.
Hat jemand andere Lösung
Danke:
concatenate
*'Felder aus der AFVC:
'afvc~aufpl' 'afvc~aplzl'
*Felder aus der AFVV:
'afvv~meinh' 'afvv~umren'
* Felder aus der AFVU:
'afvu~slwid' 'afvu~usr00' 'afvu~usr01'
into lf_felder separated by space.

perform exit_afvc_select.

if lf_felder_kunden is not initial.
concatenate lf_felder lf_felder_kunden into lf_felder_all separated by space.
else.
move lf_felder to lf_felder_all.
endif.
append lf_felder_all to gt_felder.
try.
select (gt_felder)

FROM ( afvc...

-----
FORM exit_afvc_select.
move 'AFVC~ANLZU' to lf_felder_kunden.
ENDFORM. " exit_afvc_select

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


Re: Dynamysche Select

Beitrag von deejey (Specialist / 429 / 133 / 46 ) »
Ich würde das nicht ohne expliziten Auftrag dynamisch machen, denn auf jeden Fall muss die Empfangsstruktur / Tabelle um neue Felder erweitert werden, dann muss das Programm eben auch angepasst werden. Dynamisch hat auch Nachteile.

Die Feldreihenfolge ist egal wenn mit into corresponding fields gearbeitet wird

Re: Dynamysche Select

Beitrag von DeathAndPain (Top Expert / 2022 / 273 / 425 ) »
Ich würde das nicht ohne expliziten Auftrag dynamisch machen, denn auf jeden Fall muss die Empfangsstruktur / Tabelle um neue Felder erweitert werden, dann muss das Programm eben auch angepasst werden.
Darauf läuft sein Ansatz ja letztlich hinaus, denn auch ein "Kunden-Exit" ist ein Stück Programmcode.

Für mich ist das weder Fisch noch Fleisch, sondern das Schlechteste von beidem. Er macht es dynamisch und coded die Felder trotzdem hart.

@autohandel: Wenn, dann solltest Du das ordentlich mit einer dafür vorgesehenen Customizingtabelle machen, in die man die gewünschten Felder dann eintragen kann und die Du in Deinem Code ausliest. Dann hast Du das Ziel erreicht, dass eine Anpassung ohne Codeänderung möglich ist.
Wenn wir einer Partei die Regierungsbeteiligung verweigern, die von einer Mehrheit gewählt worden ist, weil wir diese Partei für schlecht halten, da wir einer anderen Partei angehören, wie ist dann unsere eigene demokratische Gesinnung zu bewerten?

Re: Dynamysche Select

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
Danke für Antwort,
hard kodiere ich in Kunden include, das heisst mein Standard programm bleibt nicht geändert.
Meine Frage war, selkt felder soll in Reinfolge von Tabelle sein oder egal welche reinfolge von Feldern beim Select, besondere bei Join.

nachfühlung von Tabelle mit coresponding ist für mich klar, aber selection ohne Reinfolge ist mit geschwindigkeit verbunden oder nein?

Re: Dynamysche Select

Beitrag von deejey (Specialist / 429 / 133 / 46 ) »
DeathAndPain hat geschrieben:
24.09.2019 11:16
Ich würde das nicht ohne expliziten Auftrag dynamisch machen, denn auf jeden Fall muss die Empfangsstruktur / Tabelle um neue Felder erweitert werden, dann muss das Programm eben auch angepasst werden.
Darauf läuft sein Ansatz ja letztlich hinaus, denn auch ein "Kunden-Exit" ist ein Stück Programmcode.

Für mich ist das weder Fisch noch Fleisch, sondern das Schlechteste von beidem. Er macht es dynamisch und coded die Felder trotzdem hart.

@autohandel: Wenn, dann solltest Du das ordentlich mit einer dafür vorgesehenen Customizingtabelle machen, in die man die gewünschten Felder dann eintragen kann und die Du in Deinem Code ausliest. Dann hast Du das Ziel erreicht, dass eine Anpassung ohne Codeänderung möglich ist.
Ja aber er muss die Empfangsstruktur anpassen, dann kann man auch ans Programm ran und braucht das Customizing nicht, in dass er den Feldvorrat aller JOIN-Tabellen aufnehmen müsste. Bei Freitextangaben kann man was Falsches eingeben was zum Abbruch führt. Und man hat den Verwendungsnachweis auf Feldebene nicht.

mMn hat es mehr Nachteile als Vorteile

Re: Dynamysche Select

Beitrag von deejey (Specialist / 429 / 133 / 46 ) »
autohandel7 hat geschrieben:
24.09.2019 11:22
Danke für Antwort,
hard kodiere ich in Kunden include, das heisst mein Standard programm bleibt nicht geändert.
Meine Frage war, selkt felder soll in Reinfolge von Tabelle sein oder egal welche reinfolge von Feldern beim Select, besondere bei Join.

nachfühlung von Tabelle mit coresponding ist für mich klar, aber selection ohne Reinfolge ist mit geschwindigkeit verbunden oder nein?
Die Reihenfolge der Felder hat nichts mit Geschwindigkeit zu tun.

Folgende Benutzer bedankten sich beim Autor deejey für den Beitrag:
autohandel7


Re: Dynamysche Select

Beitrag von DeathAndPain (Top Expert / 2022 / 273 / 425 ) »
Genau, der Datenbankoptimierer sucht sich das zusammen, wie er es braucht.
hard kodiere ich in Kunden include, das heisst mein Standard programm bleibt nicht geändert.
Richtig, aber auch eine Programmänderung im Kunden-Include ist eine Programmänderung. Customizingtabellen sind die bessere Lösung, wann immer möglich.
Ja aber er muss die Empfangsstruktur anpassen, dann kann man auch ans Programm ran und braucht das Customizing nicht, in dass er den Feldvorrat aller JOIN-Tabellen aufnehmen müsste.
Nur wenn ganze Tabellen der Suche hinzugefügt werden müssen. Ich habe ihn so verstanden, dass die Tabellen feststehen und es nur sein kann, dass er später noch das eine oder andere zusätzliche Feld daraus benötigt. Das aber würde sich gut mit einer Customizingtabelle machen lassen.

Die empfangende Struktur in ABAP kann man dynamisch programmieren, so dass sie sich anhand der Customizingtabelle aufbaut.

Wir haben hier ein Programm, da geht das sogar noch weiter. Da hast Du eine Customizingtabelle aller Zielfelder, die zu jedem Zielfeld auch die Info enthält, wo der Inhalt herkommt. Bei jedem Zielfeld kann man entweder ein Feld einer Standardtabelle angeben (wobei man dabei nur aus bestimmten Standardtabellen lesen kann, deren Zugriffsweise im Programmzusammenhang klar ist), oder man gibt eine Programmroutine (in dem Fall ein FB; man könnte auch eine Methode verwenden) an, die das betreffende Feld liest. Das Programm baut sich die Empfangsstruktur daraus auf und schaut für jedes Feld, wo sein Inhalt herkommt.

Natürlich sind die FBs dann für sich betrachtet auch Programmänderungen (außerhalb des Kernprogramms), aber man hat im Customizing dennoch eine wunderbare Übersicht, welche Felder in welcher Reihenfolge es gibt und wo ihr Inhalt herkommt. Das finde ich bedeutend besser, als das alles direkt in einem Stück includierten Code zu verschwurbeln.
Wenn wir einer Partei die Regierungsbeteiligung verweigern, die von einer Mehrheit gewählt worden ist, weil wir diese Partei für schlecht halten, da wir einer anderen Partei angehören, wie ist dann unsere eigene demokratische Gesinnung zu bewerten?

Re: Dynamysche Select

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
Haben Sie ein klein Biespiel dazu?
Danke

Re: Dynamysche Select

Beitrag von deejey (Specialist / 429 / 133 / 46 ) »
DeathAndPain hat geschrieben:
24.09.2019 14:49
Nur wenn ganze Tabellen der Suche hinzugefügt werden müssen. Ich habe ihn so verstanden, dass die Tabellen feststehen und es nur sein kann, dass er später noch das eine oder andere zusätzliche Feld daraus benötigt. Das aber würde sich gut mit einer Customizingtabelle machen lassen.

Die empfangende Struktur in ABAP kann man dynamisch programmieren, so dass sie sich anhand der Customizingtabelle aufbaut.

Wir haben hier ein Programm, da geht das sogar noch weiter. Da hast Du eine Customizingtabelle aller Zielfelder, die zu jedem Zielfeld auch die Info enthält, wo der Inhalt herkommt. Bei jedem Zielfeld kann man entweder ein Feld einer Standardtabelle angeben (wobei man dabei nur aus bestimmten Standardtabellen lesen kann, deren Zugriffsweise im Programmzusammenhang klar ist), oder man gibt eine Programmroutine (in dem Fall ein FB; man könnte auch eine Methode verwenden) an, die das betreffende Feld liest. Das Programm baut sich die Empfangsstruktur daraus auf und schaut für jedes Feld, wo sein Inhalt herkommt.

Natürlich sind die FBs dann für sich betrachtet auch Programmänderungen (außerhalb des Kernprogramms), aber man hat im Customizing dennoch eine wunderbare Übersicht, welche Felder in welcher Reihenfolge es gibt und wo ihr Inhalt herkommt. Das finde ich bedeutend besser, als das alles direkt in einem Stück includierten Code zu verschwurbeln.
Ich weiß was du meinst, aber nicht jede Lösung braucht diese Flexibilität, bis das alles steht hat man 35 neue Felder nach und nach eingefügt und transportiert, es ist halt eine Aufwandsfrage.

Was wird denn im Code verschwurbelt? Man fügt einfach das neue Feld im Select ein, erweitert die Struktur um dieses Feld und transportiert es.

Re: Dynamysche Select

Beitrag von DeathAndPain (Top Expert / 2022 / 273 / 425 ) »
Einstellungswerte, die im Tagesgeschäft gleich bleiben, sich aber strategisch auch mal ändern können, sind halt klassisches Customizing. Mit Deiner Begründung könnte man das ganze Customizing abschaffen und durch Exit-Routinen mit einfachen SELECTs oder Wertzuweisungen ersetzen.

Nur muss man dann halt jedesmal eine Quellcodeänderung machen, wenn doch mal was geändert werden muss. Customizing ist nicht nur übersichtlicher, sondern auch von Nichtentwicklern anpassbar (vielleicht nicht gerade von einem DAU, aber durchaus von einem pfiffigen Key User).
Wenn wir einer Partei die Regierungsbeteiligung verweigern, die von einer Mehrheit gewählt worden ist, weil wir diese Partei für schlecht halten, da wir einer anderen Partei angehören, wie ist dann unsere eigene demokratische Gesinnung zu bewerten?

Re: Dynamysche Select

Beitrag von deejey (Specialist / 429 / 133 / 46 ) »
na meinetwegen

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1683
Views
Job hängt an select, wie herausfinden welches select
von dpz » 01.08.2019 10:23 • Verfasst in ABAP® Core
8
Antw.
8132
Views
SELECT SINGLE oder SELECT UP TO 1 ROWS?
von nickname8 » 12.04.2021 10:38 • Verfasst in ABAP® für Anfänger
2
Antw.
3609
Views
Select * und Select von einzelnen Werten zugleich
von StefanJue » 04.10.2006 18:10 • Verfasst in ABAP® für Anfänger
4
Antw.
11028
Views
Performance: SELECT UP TO 1 ROWS vs. SELECT SINGLE
von roman1983 » 04.09.2008 14:29 • Verfasst in ABAP® für Anfänger
4
Antw.
21692
Views
Select nach Parameter & Select-Options
von doeme » 10.07.2012 16:37 • 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

BAPI zur ABSO?
vor 2 Stunden von DeathAndPain 2 / 367
Materialstammerweiterung: Neuer Reiter
vor einer Woche von DeathAndPain gelöst 4 / 1005
Ermittlung der Arbeitstage (Mosid)
vor einer Woche von Radinator 11 / 46668
LSMW-Problem
vor 3 Wochen von DeathAndPain gelöst 6 / 4555

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

BAPI zur ABSO?
vor 2 Stunden von DeathAndPain 2 / 367
Materialstammerweiterung: Neuer Reiter
vor einer Woche von DeathAndPain gelöst 4 / 1005
Ermittlung der Arbeitstage (Mosid)
vor einer Woche von Radinator 11 / 46668
LSMW-Problem
vor 3 Wochen von DeathAndPain gelöst 6 / 4555