FREE_SELECTIONS_DIALOG als Subscreen

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

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
44 Beiträge • Vorherige Seite 2 von 3 (current) Nächste
44 Beiträge Vorherige Seite 2 von 3 (current) Nächste

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von Pinguincommander (ForumUser / 88 / 62 / 2 ) »
Hi erstmal und entschuldigung, dass ich mich erst jetzt wieder melde, ich hatte donnerstag und freitag berufsschule und da ich auch keinen VPN zugang habe hatte es für miche rsteinmal keinen sinn das forum noch einmal zu überprüfen, also bisher habe ich alles soweit am funktionieren, also ich kann tabs wechseln und dank dem code von dir aktualisiert sich auch der tree-view, dass mit dem nur aktualisieren, wenn ein tabwechsel vorliegt hab ich selbst hinbekommen :-).
So also das ganze ist soweit brauchbar nur die sache mit den intervallen statts einzel selektionen anzeigen habe ich noch nicht verstanden und das ganze mit dem hinterher abfragen ist mir auch noch unklar, ich hoffe du hast noch ein paar nerven für mich über und würdest mir das ganze nochmal erläutern, damit ich auch verstehe woran es liegt, es darf auch ruhig ein wenig grundlagen unterricht dabei sein, wie gesagt habe ich nur einen BC 400 absolviert und den hätte man sich wirklich sparen können, da ich Programmiergrundlagen auch schon vorher hatte und leider die Dynpro Programmierung viel zu kurz kam.

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


Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von Pinguincommander (ForumUser / 88 / 62 / 2 ) »
achso im übrigen hat sich meine aufgabe nocheinmal verändert,
ich soll ein eingabefeld bereitstellen indem der anwender die gewollte tabelle eingeben kann und sich seine selektion dann selbst zusammen bauen kann,
funktioniert auch schon soweit, wollte nur bescheid sagen, dass die reiter zu vernachlässigen sind.

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Pinguincommander hat geschrieben:achso im übrigen hat sich meine aufgabe nocheinmal verändert,
ich soll ein eingabefeld bereitstellen indem der anwender die gewollte tabelle eingeben kann und sich seine selektion dann selbst zusammen bauen kann,
funktioniert auch schon soweit, wollte nur bescheid sagen, dass die reiter zu vernachlässigen sind.
hmm...
Dann ist auch mein ganzes anderes Coding hinfällig, da du dann ja direkt den Baustein FREE_SELECTIONS_DIALOG ohne AS_SUBSCREEN verwenden kannst.
Damit sollten übrigens auch die Intervalle funktionieren.
Pinguincommander hat geschrieben:So also das ganze ist soweit brauchbar nur die sache mit den intervallen statts einzel selektionen anzeigen habe ich noch nicht verstanden und das ganze mit dem hinterher abfragen ist mir auch noch unklar, ich hoffe du hast noch ein paar nerven für mich über und würdest mir das ganze nochmal erläutern, damit ich auch verstehe woran es liegt, es darf auch ruhig ein wenig grundlagen unterricht dabei sein, wie gesagt habe ich nur einen BC 400 absolviert und den hätte man sich wirklich sparen können, da ich Programmiergrundlagen auch schon vorher hatte und leider die Dynpro Programmierung viel zu kurz kam.
Erklärung zu Intervalle:
a-dead-trousers hat geschrieben:Wenn man sich das PBO-Modul CREATE_CONTROLS anschaut, dass im Dynpro 2000 aufgerufen wird, sieht man das als Dynpro-Nummer IMMER 1106 übergeben wird (Konstante SUB_NOINT = 1106).
Also: Leider keine Möglichkeit bei AS_SUBSCREEN die Intervalle direkt im Dynpro angezeigt zu bekommen.
Aber es gibt ja trotzdem noch die Buttons für die Mehrfachauswahl.lg ADT
Auf dem Dynpro 1106, das bei AS_SUBSCREEN verwendeet wird, gibt es schlicht und ergreifend keine Möglichkeit für Intervalle.

Erklärung zu "hinterher" abfragen:
Der Baustein FREE_SELECTIONS_DIALOG liefert im Falle von AS_SUBSCREEN keine Daten, sondern bereitet nur das Dynpro für eine spätere Ausgabe vor. Wenn der Benutzer nun den Report ausführen möchte, hat man keine Information darüber welche Selektion im Moment zusammengebaut wurde. Dazu muss man sich die irgendwie aus den globalen Daten der Funktionsgruppe rausholen und dazu gibt es leider keinen Funktionsbaustein.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von Pinguincommander (ForumUser / 88 / 62 / 2 ) »
Hallo ADT und ersteinmal danke,
und mach dir mal keine sorgen :-) dein coding ist nicht hinfällig, die aktuelle free_selection wird trotzdem immer dynamisch generiert, nur dass das ganze programm jetzt nicht auf einen Tabreiterwechsel reagiert, sondern auf den druck von enter und nach einer änderung des eingabefelds,
d.h. ich brauch trotzdem genau das was du geschrieben hast, wie gesagt funktioniert es jetzt auch soweit, es fehlt nur noch die abfrage der aktuellen felder und das auslesen der werte, also implementiere ich das ganze jetzt mal und dann wird das getestet.

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von Pinguincommander (ForumUser / 88 / 62 / 2 ) »
Also, das ganze Thema funktioniert jetzt, danke dir ADT ohne deine Hilfe hätte ich es nie hinbekommen das so zusammenzubauen.
Damit ist dieses Thema erst einmal beendet, oder sollte ich noch eine endgültige Lösung posten ?
so quasi als zusammenfassung wenn noch wer das Problem mal nachlesen will.

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
hi!

Ja, wäre sicherlich nicht schlecht, alles nochmal zusammengefasst zu haben.
Evtl. könnte man es auch in die Tipps & Tricks aufnehmen. Ich weiß jetzt aber nicht ob du die Berechtigungen dazu hättest.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Pinguincommander

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von ibo (ForumUser / 67 / 35 / 9 ) »
Hi, it is an old post, but maybe it is helpful for others,

1. so in PBO

PROCESS BEFORE OUTPUT.


call SUBSCREEN sub1 INCLUDING 'SAPLSSEL' '1105'.

module create_dyn_sel.


PROCESS AFTER INPUT.
call SUBSCREEN sub1.

Note: if you will wirte in PBO this following, you will get problem, when you enter, the data will be lost.

module create dyn_sel
call subscreen... ...

so,. first, call and then your module.

2. in PAI.
call SUBSCREEN sub1


3.. your module now ( module create_dyn_sel. ) any name as you wish

perform free_selection_screen.


4. in your program, create a form ,


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

START-OF-SELECTION.

CALL SCREEN 0100.

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 = 'T001W'.
lt_fld-fieldname = 'WERKS'.
APPEND lt_fld TO lt_fld.
lt_fld-tablename = 'MARA'.
lt_fld-fieldname = 'MATNR'.
APPEND lt_fld TO lt_fld.
lt_fld-tablename = 'BKPF'.
lt_fld-fieldname = 'BLDAT'.
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.

IF gs_sel-selid IS INITIAL.
CALL FUNCTION 'FREE_SELECTIONS_INIT'
EXPORTING
kind = 'F'
* EXPRESSIONS =
* FIELD_RANGES_INT =
* FIELD_GROUPS_KEY =
* RESTRICTION =
* ALV =
* CURR_QUAN_PROG = SY-CPROG
* CURR_QUAN_RELATION =
IMPORTING
selection_id = gs_sel-selid
* WHERE_CLAUSES =
* EXPRESSIONS =
* FIELD_RANGES =
* NUMBER_OF_ACTIVE_FIELDS =
TABLES
* TABLES_TAB =
* TABFIELDS_NOT_DISPLAY =
fields_tab = lt_fld[]
* FIELD_DESC =
FIELD_TEXTS = lt_fldt[]
* EVENTS =
* EVENT_FIELDS =
* FIELDS_NOT_SELECTED =
* NO_INT_CHECK =
* ALV_QINFO =
EXCEPTIONS
fields_incomplete = 01
fields_no_join = 02
field_not_found = 03
no_tables = 04
table_not_found = 05
expression_not_supported = 06
incorrect_expression = 07
illegal_kind = 08
area_not_found = 09
inconsistent_area = 10
kind_f_no_fields_left = 11
kind_f_no_fields = 12
too_many_fields = 13
dup_field = 14
field_no_type = 15
field_ill_type = 16
dup_event_field = 17
node_not_in_ldb = 18
area_no_field = 19
OTHERS = 20.
ENDIF.

CHECK NOT gs_sel-selid IS INITIAL.

CALL FUNCTION 'FREE_SELECTIONS_DIALOG'
EXPORTING
selection_id = gs_sel-selid
* title =
* frame_text =
* status = 1
* AS_WINDOW = ' '
* START_ROW = 2
* START_COL = 2
* NO_INTERVALS = ' '
* JUST_DISPLAY = ' '
* pfkey =
* ALV = ' '
tree_visible = space
* DIAG_TEXT_1 =
* DIAG_TEXT_2 =
* WARNING_TITLE =
AS_SUBSCREEN = 'X'
NO_FRAME = '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.

*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS '0100'.

PERFORM free_selection_screen.
ENDMODULE. " STATUS_0100 OUTPUT


good luck

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
ibo hat geschrieben:Hi, it is an old post, but maybe it is helpful for others,
DATA:
BEGIN OF gs_sel
,selid TYPE rsdynsel-selid
,END OF gs_sel.

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.

good luck
What a weird posting :?

Warum antwortest Du auf Englisch? Dein erstes Posting war doch auch auf Deutsch?!?!?

Aber wo um Gotteswillen lernt man so zu coden und schreibt das Komma von der letzten Zeile an den Anfang der nächsten Zeile?

Codierst Du auch so:


.IF number ..... etc etc.

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von ibo (ForumUser / 67 / 35 / 9 ) »
Hallo Unit605 ,
nein, aber wie du weißt, copy paste ( Notpad) hat das nicht ordentlich gemacht.
aber naja, es geht jetzt um das Konzept, egal wie der Code aussieht, ich meine hier bei ABAPforum.

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von shapoc (ForumUser / 52 / 3 / 0 ) »
Hi, ich hänge mich mal in diesen Thread, weil es eigentlich genau um mein Thema geht: Anzeige mit FREE_SELECTIONS_DIALOG in meinem Subscreen. Grundsätzlich funktioniert es so wie hier in der Diskussion beschrieben, dafür schon mal danke ;-)

Mein Problem ist folgendes: Der Subscreen (z.b. 2000, 2001) mit dem Tree-Control hat laut Definition eine Höhe von 9 Zeilen, was recht schnell limitierend wirkt und einen Scrollbalken innerhalb meines Subscreens anzeigt, wenn man mehr Felder auswählt. Wenn man sich "nur" den Screen 1105 oder 1106 einbindet, geht dieser zwar etwas größer, aber dafür habe ich dann keine Möglichkeit, Felder hinzuzufügen oder zu entfernen.

Wie bekommt man es hin, dass man die Free Selection in meinem eigenen Subscreen an die Subscreen-Größe anpasst?

Hoffe ihr könnt mir weiterhelfen...

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Kopiere dir den Screen 2000 aus der Funktionsgruppe in dein Programm inkl. dem Coding. Was ja zum Glück nicht viel ist ;)
Dann kannst du den Screen nach deinen Bedürfnissen anpassen:
Vorschlag auf 200 Zeilen alles vergrößern und Resizing auf z.B. 5 einstellen.
In deinem Programm rufst du dann den modifizierten Subscreen statt dem Screen 2000 auf.
Wichtig ist, dass der CustomControl-Bereich gleich lautet wie im Original, damit die Instanzierung des Tree-View funktioniert.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
shapoc

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von shapoc (ForumUser / 52 / 3 / 0 ) »
Hi ADT,

vielen Dank für den Tipp, das funktioniert super!!! Hatte mich irgendwie verrannt und wollte schon meinen eigenen Subscreen umbenennen... Egal, Screen 2000 kopiert, Modules kopiert, Variablen und damit läuft's ;-) !

Ich frag mal weiter: Im Moment werden links über dem Tree die Buttons zum übernehmen und löschen der Felder angezeigt, allerdings mit zu viel Abstand, der Tree fängt erst relativ weit unten an. Er lässt sich zwar dann manuell verschieben, aber schöner wär's ja, wenn er direkt unterhalb der Buttons beginnen würde.

Kennst du vielleicht noch eine Möglichkeit, das zubewerkstelligen?

Grüße,
Shapoc

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
hmmm...
Mittels Splitter-Container nehmen ich an, oder?
Schau mal in der Funktionsgruppe wo der Baustein FREE_SELECTIONS_DIALOG definiert ist nach, ob die Controls als globale Variablen vorliegen.
Normalerweise kannst du dann mittels ASSIGN '(Programmname)Variablenname' TO <feldsymbol> darauf zugreifen.
Am Besten indem du beim kopierten Dynpro ein zusatzliches PBO-Modul NACH dem CALL SUBSCREEN einfügts und dort drinnen die Einstellungen des Splitter-Controls modifizierst.
(Dadurch sollte sichergestellt sein, dass das Control auch tatsächlich bereits instanziert wurde).
Ich gebe nur zu Bedenken, dass du dich langsam aber sicher immer weiter vom Standard entfernst. :evil:

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
shapoc

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Hab grad nachgeschaut:

Code: Alles auswählen.

field-symbols: <lr_splitter> type ref to cl_gui_easy_splitter_container.
assign ('(SAPLSSEL)SPLITTER_SUBSCR') to <lrs_splitter>.
if sy-subrc eq 0 and <lr_splitter> is bound.
  <lr_splitter>-set_sash_position( ... ).
endif.
Da gibts aber auch noch einen anderen: (SAPLSSEL)SPLITTER
Musst halt prüfen welcher von den beiden in deinem Fall aktiv ist.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
shapoc

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von shapoc (ForumUser / 52 / 3 / 0 ) »
"Standard" ??? *hust* :shock: Klar, bin mir natürlich dessen bewusst und die Entscheidung dahin war halt auch, ob man so eine Dynamik nachprogrammiert oder halt vorhandene Implementierungen "missbraucht". Schön ist auf jeden Fall anders...

Dein Code-Schnipsel war aber genau das, was ich gebraucht hab, danke schön. Ich mag ja diese "dirty assign"s nicht so, aber an dieser Stelle kommt man wohl nicht drum herum. Ich hatte es vorher über perform-Aufrufe von "create_tree" und "create_controls" etc. aus der Funktionsgruppe SAPLSSEL probiert, aber die haben die Objekte nicht korrekt initialisiert und mich auch nicht weitergebracht.
Also nochmal als Dokumentation: In meinem Fall, Einbindung als Subscreen, ist der Splitter "('(SAPLSSEL)SPLITTER_SUBSCR')":

Code: Alles auswählen.

  field-symbols: <LRS_SPLITTER> type ref to CL_GUI_EASY_SPLITTER_CONTAINER.

  assign ('(SAPLSSEL)SPLITTER_SUBSCR') to <LRS_SPLITTER>.

  if SY-SUBRC eq 0 and <LRS_SPLITTER> is assigned.
    <LRS_SPLITTER>->SET_SASH_POSITION( 0 ).
  endif.
Also vielen Dank für deine HIlfe!!!

LG, Shapoc

Vergleichbare Themen

1
Antw.
644
Views
Selections Screen
von luk4s » 16.11.2017 14:44 • Verfasst in ABAP® für Anfänger
0
Antw.
1848
Views
Probleme Beim Subscreen im Subscreen
von dimes » 07.03.2007 14:50 • Verfasst in Dialogprogrammierung
4
Antw.
5059
Views
Instanz-Methode FREE
von Frank Zet. » 15.06.2005 09:00 • Verfasst in ABAP Objects®
12
Antw.
4792
Views
Free selection dynamisch???
von c oco » 21.04.2015 08:48 • Verfasst in ABAP® für Anfänger
2
Antw.
2326
Views
FREE MEMORY ohne Parameter-ID
von Tellerchen58 » 14.08.2012 11:23 • Verfasst in ABAP® Core

Ü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

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141