Code: Alles auswählen.
REPORT z_test.
tables sflight.
data test type S_CARR_ID.
select-OPTIONS: s_test for test no INTERVALS.
*at SELECTION-SCREEN ON VALUE-REQUEST FOR s_test-low.
START-OF-SELECTION.
BREAK-POINT.
Ja aber doch nur, weil in at SELECTION-SCREEN ON VALUE-REQUEST FOR nix steht.
Das stimmt. Wenn jetzt aber im Datenelement / Domäne eine Suchhilfe / feste Werte angegeben wären, dann wäre die Zeile mM. sinnlos ( selbst wenn man den Block füllen würde. - außer natürlich man will eine andere Suchhilfe, was ich aber in diesem fall nicht glaube )msfox hat geschrieben: ↑18.09.2019 08:27Ja aber doch nur, weil in at SELECTION-SCREEN ON VALUE-REQUEST FOR nix steht.
Statt die Suchhilfe über die Domäne anzubinden, kann man auch über at SELECTION-SCREEN ON VALUE-REQUEST FOR gehen. Muss dann aber die Wertebeschaffung manuell machen bzw. kann dort eine Suchhilfe aufrufen.
Also wenn du meinst, dass dieses Event nur für den -low Part der SO zieht, dann ja. ( kann man mit meinem test-coding ja schnell prüfen ^^ ). Im -High bereich kommt die Suchhilfe, im low nicht. ABAP hat hier allerdings das problem, dass man -low oder -high angeben muss. heißt für mich, wenn man sowohl high & low braucht, beides in eine Form / Methode / FuBa auslagern und dann jeweils im Block aufrufen oder, wenn man nur -low braucht, den zusatz "no intervalls" ( s. mein test-coding ) anzugeben.Weiterhin sein zu prüfen, ob sich das at SELECTION-SCREEN ON VALUE-REQUEST FOR auf das -low der SELECT-OPTION bezieht oder auf den ganzen Parameter. Immerhin will man hight ja die gleiche Treffermenge haben.
Oder - und das dürfte in der Praxis sogar der häufigste Fall sein - eine in der Domäne oder als Fremdschlüsseltabelle des Tabellenfeldes festgelegte Wertetabelle, ggf. mit ergänzender Texttabelle.Um eine select-option mit werte-hilfe ( F4 ) zu nutzen, braucht der dahinterliegende Typ entweder Festwerte ( der in der domäne des types ist ) oder eine Suchhilfe.
Ja sicherlich ist es das. Mit SELECTION-SCREEN ON VALUE REQUEST FOR erklärt man, dass man die Default-Werthilfe für das betreffende Feld in diesem Fall außer Kraft setzen und durch eine manuell angegebene ersetzen möchte. Und wenn dann da nix kommt, dann ist da halt nix.EDIT 2: Sehe gerade erst, dass du im Coding das Event "SELECTION-SCREEN ON VALUE REQUEST FOR" abfängst. Das könnte auch der Grund sein.
Da kann man ja dieselbe Routine nehmen und zweimal aufrufen, da sehe ich jetzt nicht so das Problem.Also wenn du meinst, dass dieses Event nur für den -low Part der SO zieht, dann ja. ( kann man mit meinem test-coding ja schnell prüfen ^^ ). Im -High bereich kommt die Suchhilfe, im low nicht. ABAP hat hier allerdings das problem, dass man -low oder -high angeben muss. heißt für mich, wenn man sowohl high & low braucht, beides in eine Form / Methode / FuBa auslagern und dann jeweils im Block aufrufen
Das Problem bei Stefans Code ist noch ein ganz anderes. Es gibt einen Grund, weshalb man bei SELECT-OPTIONS anders als bei PARAMETERS hinter "FOR" ein Datenfeld (anstatt eines Datentypen) angeben muss (auch wenn ich das in ABAP nicht sonderlich schön gelöst finde). SELECT-OPTIONS beziehen sich nämlich auf die Werthilfe dieses Datenfeldes, und die hängen meistens an einer Fremdschlüsseltabelle. Dazu muss das Datenfeld aber über eine Tabelle definiert sein, denn nur Tabellenfelder können einen Fremdschlüssel haben, Domänen nicht.Um aber die Frage richtig zu beantworten, da Stefan144 nichts in diesen Block geschrieben hat, würde es mich nicht wundern, wenn er eine Suchhilfe des Datenelements / der Domäne erwarten würde und nicht eigens implementieren wollte
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
SaskuAc
Da haben wir beides das gleiche gemeint. ^^DeathAndPain hat geschrieben: ↑18.09.2019 12:41Da kann man ja dieselbe Routine nehmen und zweimal aufrufen, da sehe ich jetzt nicht so das Problem.Also wenn du meinst, dass dieses Event nur für den -low Part der SO zieht, dann ja. ( kann man mit meinem test-coding ja schnell prüfen ^^ ). Im -High bereich kommt die Suchhilfe, im low nicht. ABAP hat hier allerdings das problem, dass man -low oder -high angeben muss. heißt für mich, wenn man sowohl high & low braucht, beides in eine Form / Methode / FuBa auslagern und dann jeweils im Block aufrufen
Da merkt man mal wieder was Erfahrung ausmacht. Entwickle jetzt seit 4 Jahren ABAP und hätte das so nicht gewusst ^^ ( liegt aber eventuell auch daran, dass ich mich nie so stark mit den Select-Options auseinander gesetzt habe ... ) Jetzt verstehe ich auch wieso in so manchen Reports das so angegeben wurde. also die Schreibweise DATA test type sflight-carrid.DeathAndPain hat geschrieben: ↑18.09.2019 12:41Oder - und das dürfte in der Praxis sogar der häufigste Fall sein - eine in der Domäne oder als Fremdschlüsseltabelle des Tabellenfeldes festgelegte Wertetabelle, ggf. mit ergänzender Texttabelle.Um eine select-option mit werte-hilfe ( F4 ) zu nutzen, braucht der dahinterliegende Typ entweder Festwerte ( der in der domäne des types ist ) oder eine Suchhilfe.
Das Problem bei Stefans Code ist noch ein ganz anderes. Es gibt einen Grund, weshalb man bei SELECT-OPTIONS anders als bei PARAMETERS hinter "FOR" ein Datenfeld (anstatt eines Datentypen) angeben muss (auch wenn ich das in ABAP nicht sonderlich schön gelöst finde). SELECT-OPTIONS beziehen sich nämlich auf die Werthilfe dieses Datenfeldes, und die hängen meistens an einer Fremdschlüsseltabelle. Dazu muss das Datenfeld aber über eine Tabelle definiert sein, denn nur Tabellenfelder können einen Fremdschlüssel haben, Domänen nicht.Um aber die Frage richtig zu beantworten, da Stefan144 nichts in diesen Block geschrieben hat, würde es mich nicht wundern, wenn er eine Suchhilfe des Datenelements / der Domäne erwarten würde und nicht eigens implementieren wollte
Bedeutet im Klartext: Er müsste sein Feld test anders definieren. Anstelle von data test type S_CARR_ID müsste er schreiben: data test type SFLIGHT-CARRID (oder wahlweise bzw. bei älteren Releases data test like SFLIGHT-CARRID). Dann bezieht sich das Feld test auf die Datenbanktablle SFLIGHT statt nur auf das Datenelement und erbt damit auch die für die Suchhilfe verwendete Fremschlüsselprüfung. Über sein select-OPTIONS: s_test for test holt er sich das dann in sein Selektionsfeld rein. (Und natürlich muss das SELECTION-SCREEN ON VALUE REQUEST FOR weg.)
Ich finde die Schreibweise auch so günstiger, denn so sieht man, auf welches Datenbanktabellenfeld die Definition eines internen Feldes abzielt. Wenn es nicht offensichtlich ist, muss man sich sonst erst das Datenelement anschauen und im Extremfall einen Verwendungsnachweis machen, um zu sehen, wo das denn so überall gebraucht wird.Jetzt verstehe ich auch wieso in so manchen Reports das so angegeben wurde. also die Schreibweise DATA test type sflight-carrid.
SaskuAc hat geschrieben: ↑18.09.2019 07:40Prüfe doch bitte mal den Typ "zdbm_contract_id_set".
du beziehst dich hier auf "go_sel", welcher eben diesen Typ hat.
Um eine select-option mit werte-hilfe ( F4 ) zu nutzen, braucht der dahinterliegende Typ entweder Festwerte ( der in der domäne des types ist ) oder eine Suchhilfe. ( welche über die SE11 angelegt werden kann - Tab "Zusatzeigenschaften" )
Heißt also, schaue mal ob der Typ zdbm_contract_id_set eine Suchhilfe hinterlegt hat. Wenn nein, dann schau dir mal die Domäne an und dort dann unter "Wertebereich".
EDIT 2: Sehe gerade erst, dass du im Coding das Event "SELECTION-SCREEN ON VALUE REQUEST FOR" abfängst. Das könnte auch der Grund sein. in meinem kleinen testprogramm ( s. unten ) hat diese Zeile dazu geführt, dass automatisch die suchhilfe deaktiviert wurde
Grüße
EDIT: Nimm bitte nächstes Mal ( im Forum ) beim Coding den Coding-Tag her. Dann ists leichter den Quelltext zu lesen. Danke :)
EDIT 2 Quelltext:Code: Alles auswählen.
REPORT z_test. tables sflight. data test type S_CARR_ID. select-OPTIONS: s_test for test no INTERVALS. *at SELECTION-SCREEN ON VALUE-REQUEST FOR s_test-low. START-OF-SELECTION. BREAK-POINT.
wenn ich die "on value-request" zeile auskommentiere, kommt die Suchhilfe, wenn ich sie drinnen lasse nicht.