Free selection dynamisch???

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

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

Free selection dynamisch???

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
Hallo zusammen,

ich schreibe einen Report mit einem Sel-Screen, bei dem man nach Geschäftspartner von --- bis und Vertrag von --- bis selektieren kann. Zusätzlich soll man über Free selections zusätzliche Selections-Felder wie Name, Adresse, etc. eingrenzen können, sind bis zu 100 Felder, die der User noch zusätzlich eingrenzen könnte. Aus mehreren Datenbanktabellen.

Frage: Gibt es eine dynamischere, Entwicklerfreundlichere Weise, um nach diesen Feldern aus der freien Abgrenzung zu selektieren?
Oder komme ich nicht drumherum, alle Felder in Ranges zu füllen, und dann z.b. select from DB where feld1 in gr_1 ...gr_100 zu machen?
Das erscheint mir doch recht gruselig :-).

Viele Grüße
coco

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


Re: Free selection dynamisch???

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
c oco hat geschrieben:Frage: Gibt es eine dynamischere, Entwicklerfreundlichere Weise, um nach diesen Feldern aus der freien Abgrenzung zu selektieren?
Oder komme ich nicht drumherum, alle Felder in Ranges zu füllen, und dann z.b. select from DB where feld1 in gr_1 ...gr_100 zu machen?
Das erscheint mir doch recht gruselig :-).
Der Fuba: FREE_SELECTIONS_DIALOG gibt doch über den IMPORTING-Paramter where_clause das zurück, was du haben willst. Mit der WHERE_CLAUSE kannst du dann einen Select mit dynamischer WEHER-Bedingung ausführen.

Wenn du mehrere Tabellen hast, ist es evtl. sinnvoll sich im DDICT einen DB-View für die Tabelle/Felder anzulegen und über diesen dann den Select auszuführen. Das macht das Coding einfacher, da der FuBa die WHERE_CLAUSE je DB-Tab zurückgibt.

Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
c oco

Gruß Hendrik

Re: Free selection dynamisch???

Beitrag von ibo (ForumUser / 67 / 35 / 9 ) »
JHM hat geschrieben:
c oco hat geschrieben:Frage: Gibt es eine dynamischere, Entwicklerfreundlichere Weise, um nach diesen Feldern aus der freien Abgrenzung zu selektieren?
Oder komme ich nicht drumherum, alle Felder in Ranges zu füllen, und dann z.b. select from DB where feld1 in gr_1 ...gr_100 zu machen?
Das erscheint mir doch recht gruselig :-).
Der Fuba: FREE_SELECTIONS_DIALOG gibt doch über den IMPORTING-Paramter where_clause das zurück, was du haben willst. Mit der WHERE_CLAUSE kannst du dann einen Select mit dynamischer WEHER-Bedingung ausführen.

Wenn du mehrere Tabellen hast, ist es evtl. sinnvoll sich im DDICT einen DB-View für die Tabelle/Felder anzulegen und über diesen dann den Select auszuführen. Das macht das Coding einfacher, da der FuBa die WHERE_CLAUSE je DB-Tab zurückgibt.
diese Antwort gefällt mir, wenn man mehrere Tabellen hat,.ist es evtl. sinnvoll sich im DDICT einen DB-View für die Tabelle/Felder anzulegen
Respekt !

Re: Free selection dynamisch???

Beitrag von ibo (ForumUser / 67 / 35 / 9 ) »
das ist ein Beispiel



REPORT z_pg_test_1.

TYPE-POOLS:
rsds.
DATA:
ok_code TYPE sy-ucomm.
DATA:
BEGIN OF gs_sel
, selid TYPE rsdynsel-selid
, END OF gs_sel.

DATA lt_sel LIKE TABLE OF rsparams.
DATA: lv_main, lv_chld.
DATA: lv_subrc TYPE sysubrc
, lv_title TYPE sytitle
, ls_pfstatus TYPE rsdspfkey.
DATA dynpr TYPE sy-dynnr.
ls_pfstatus-pfkey = '%_CSP'.

ls_pfstatus-program = 'RSSYSTDB'.


START-OF-SELECTION.
*
PERFORM free_selection_screen.

FORM free_selection_screen.
DATA:
ls_pfkey TYPE rsdspfkey
, lt_fld TYPE rsdsfields_t WITH HEADER LINE
, lt_fldt TYPE wcb_rsdstexts_tab WITH HEADER LINE
, lt_rng TYPE rsds_trange WITH HEADER LINE.

* Field list
CLEAR lt_fld.

lt_fld-tablename = 'SFLIGHT'.
lt_fld-fieldname = 'CARRID'.
APPEND lt_fld TO lt_fld.
lt_fld-tablename = 'SFLIGHT'.
lt_fld-fieldname = 'CONNID'.
APPEND lt_fld TO lt_fld.
lt_fld-tablename = 'SFLIGHT'.
lt_fld-fieldname = 'FLDATE'.
APPEND lt_fld TO lt_fld.

* Custom field names for select-options
CLEAR lt_fldt.
lt_fldt-tablename = 'BKPF'.
lt_fldt-fieldname = 'BLDAT'.
lt_fldt-text = 'Validity Period'.
APPEND lt_fldt TO lt_fldt.

ls_pfkey-program = sy-repid.


CALL FUNCTION 'FREE_SELECTIONS_INIT'
EXPORTING
kind = 'F'
IMPORTING
selection_id = gs_sel-selid
TABLES
fields_tab = lt_fld[].

CHECK gs_sel-selid IS NOT INITIAL.

CALL FUNCTION 'FREE_SELECTIONS_DIALOG'
EXPORTING
selection_id = gs_sel-selid
Title = 'ABAPFORUM_IBO'
Frame_text = 'ABAPFORUM_IBO'
pfkey = ls_pfstatus
tree_visible = space
AS_WINDOW = 'X'
IMPORTING
* WHERE_CLAUSES =
* EXPRESSIONS =
field_ranges = lt_rng[]
* NUMBER_OF_ACTIVE_FIELDS =
TABLES
fields_tab = lt_fld[]
* FCODE_TAB =
* FIELDS_NOT_SELECTED =
EXCEPTIONS
internal_error = 1
no_action = 2
selid_not_found = 3
illegal_status = 4
OTHERS = 5.
ENDFORM. "free_selection_screen

Folgende Benutzer bedankten sich beim Autor ibo für den Beitrag:
c oco


Re: Free selection dynamisch???

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
Hallo zusammen,

erstmal danke für den Tipp.
So habe ich es nun gemacht. Jedoch stehe ich jetzt vor einem anderen Problem.

Ist es möglich, Felder aus den Freien Abgrenzungen nicht in die Where Bedingung aufzunehmen?
Es gibt nämlich Felder, die in der Tabelle nicht gefüllt sind, die der Anwender aber in den freien Abgrenzungen trotzdem eingrenzen kann.
Sonst ist die Selektion falsch, weil mit der Abgrenzung in der entspr. DB Tab kein Datensatz existiert.

Diese muss ich dann seperat behandeln. Also z.B. die Eingrenzung von Feld Kunnr nicht in die Where Bedingung aufnehmen.

Könnt ihr mir dazu was sagen?

Viele Grüße
coco

Re: Free selection dynamisch???

Beitrag von erp-bt (Specialist / 163 / 4 / 21 ) »
Hallo,

Du kannst mal hier nachschauen, da gibt es ein paar Beispiele.

http://www.tricktresor.de/blog/dynamisc ... tionsbild/

Ausserdem solltest Du Dir mal die Funktionsgruppe SSEL (Package SLDBV) anschauen. Da gibt es noch einige nützliche Bausteine.

Viele Grüße,

Folgende Benutzer bedankten sich beim Autor erp-bt für den Beitrag:
c oco

...entwickelnder Berater...beratender Entwickler

Re: Free selection dynamisch???

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
Hi,

danke für den Hinweis.

Mit dem Fuba FREE_SELECTIONS_RANGE_2_WHERE kann ich die Where Bedingung anpassen.

Jetzt ist die letzte Hürde dran.
Übernehmen der Sel-Options in die Freien Abgrenzungen und zurück.

Ich bin am Rumprobieren. Wenn das eine funktioniert, dann funktioniert das andere nicht :-(.

Viele Grüße
coco

Re: Free selection dynamisch???

Beitrag von erp-bt (Specialist / 163 / 4 / 21 ) »
Hallo,

vielleicht hilft Dir ja noch das folgende Beispielprogramm weiter.

http://help.sap.com/abapdocu_702/de/abe ... _abexa.htm

Was meinst Du eigentlich mit "Übernehmen der Sel-Options in die Freien Abgrenzungen und zurück."?!? Die freien Abgrenzungen sind doch zusätzliche Abgrenzungen. Ich verstehe den Satz ehrlich gesagt nicht.

Viele Grüße,
...entwickelnder Berater...beratender Entwickler

Re: Free selection dynamisch???

Beitrag von edwin (Specialist / 302 / 10 / 68 ) »
Hi,
nur noch ein kleiner Hinweis : Maximale Anzahl der Select-options im Free_seletions_dialog ist 75, mehr geht nicht. Ist in LSSELTOP als max_fields = 75 definiert.
/Edwin

Re: Free selection dynamisch???

Beitrag von ibo (ForumUser / 67 / 35 / 9 ) »
edwin hat geschrieben:Hi,
nur noch ein kleiner Hinweis : Maximale Anzahl der Select-options im Free_seletions_dialog ist 75, mehr geht nicht. Ist in LSSELTOP als max_fields = 75 definiert.
/Edwin
das stimmt nur 75 Felder, aber da ist zu viel, und ich gehe davon aus, das reicht :)

Re: Free selection dynamisch???

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
@erp-bt
"Was meinst Du eigentlich mit "Übernehmen der Sel-Options in die Freien Abgrenzungen und zurück."?!? Die freien Abgrenzungen sind doch zusätzliche Abgrenzungen. Ich verstehe den Satz ehrlich gesagt nicht"

es gibt 2 Eingabemöglichkeiten.
1 Mal der normale Sel-Screen und dann noch die zusätzlichen Freien Abgrenzungen.
Dabei gibt es einige Eingabefelder, die im Sel-Screen und in den Freien Abgr. vorkommen.
z.b. GP kann über Sel-Screen und über die Freien Abgrenzungen eingegrenzt werden.
Egal wo der GP eingegrenzt wird, soll die Übergabe vom Sel-Screen in die Freien Abgrenzungen und zurück funktionieren.
Ich habe das jetzt so gelöst, dass ich eine Methode für den Sel-Screen geschrieben habe, der die Eingabefelder überprüft und eine Methode für die Freien Selektionen, der auch die Eingabefelder überprüft. Und diese dann jeweils in die Ranges umfüllt. War tricky aber geht jetzt.

@all: vielen herzlichen Dank für die konstruktiven Tipps. Habt mir sehr geholfen.

Viele Grüße
coco

Re: Free selection dynamisch???

Beitrag von erp-bt (Specialist / 163 / 4 / 21 ) »
Um ehrlich zu sein verstehe ich jetzt den Sinn nicht, warum GP (was auch immer das ist) sowohl im normalen Selektionsbildschirm als auch bei den freien Abgrenzungen enthalten ist?!? Egal, Du hast ja eine Lösung für Dich gefunden. :)
...entwickelnder Berater...beratender Entwickler

Re: Free selection dynamisch???

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
@erp-bt
das wollten die Anwender so haben. Das sie über zwei Wege den GP (Geschäftspartner) eingrenzen können.
Einmal über den normalen Selection-Screen oder über den Tree-Controll.

Ein Luxusproblem :-).

Gruß
coco

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2335
Views
Vorschlagswert im Selection-Screen dynamisch
von joy » 24.01.2005 15:14 • Verfasst in ABAP® für Anfänger
4
Antw.
5306
Views
Instanz-Methode FREE
von Frank Zet. » 15.06.2005 09:00 • Verfasst in ABAP Objects®
2
Antw.
2462
Views
FREE MEMORY ohne Parameter-ID
von Tellerchen58 » 14.08.2012 11:23 • Verfasst in ABAP® Core
0
Antw.
2594
Views
gibts noch weitere nützliche Free-SAP-CDs ?
von sapler » 24.02.2005 07:40 • Verfasst in Tips + Tricks & FAQs
6
Antw.
3273
Views
Zugriff auf die ABAP Workbench beim Free Trial
von RWMC » 10.11.2016 11:38 • 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

Zeilenumbrüche ersetzen
vor 4 Stunden von rob_abc 4 / 31
Dialog-Container mit Toolbar/Status
vor 23 Stunden von tar gelöst 19 / 2091
SAP Trial Version für SAP Fiori
Gestern von tar 2 / 1446

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

Zeilenumbrüche ersetzen
vor 4 Stunden von rob_abc 4 / 31
Dialog-Container mit Toolbar/Status
vor 23 Stunden von tar gelöst 19 / 2091
SAP Trial Version für SAP Fiori
Gestern von tar 2 / 1446

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 510
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2145
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8741