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 • Seite 1 von 3 (current) Nächste
44 Beiträge Seite 1 von 3 (current) Nächste

FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von Pinguincommander (ForumUser / 88 / 62 / 2 ) »
Hallo alle miteinander,
ich bin neu hier und ich habe mich angemeldet weil ich dringend hilfe benötige.
Ich bin momentan im ersten Lehrjahr als Anwendungsentwickler und programmiere in der Arbeit nur im SAP System.
Da wir hier bei uns in der IT dauernd anfragen für irgendwelche "miniprogramme" bekommen die nur kurz ein paar Daten abfragen von der Datenbank, habe ich nun die Aufgabe mithilfe der Fubas FREE_SELECTIONS_DIALOG UND FREE_SELECTIONS_INIT, eine dynamische Datenbankabfrage zu generieren.
nun habe ich jedoch ein Problem, mein Ausbilder möchte das ganze als subscreen im Programm implementiert, also das was der Fuba generiert.
Wir wollen jetzt für den Anfang ein Fenster mit 2 Reitern, einen für Material- und den anderen für Auftragsdaten, es soll also in jedem Reiter der Fuba aufgerufen werden, im ersten Reiter mit den Datenbanktabellen MARA und MARC im zweiten Reiter mit den Tabellen AFPO und AFKO.
Leider kriege ich es nicht hin, dass der Fuba als subscreen benutzt wird, es steht zwar in der Doku, dass dies nicht möglich ist, aber wozu ist dann der Parameter AS_SUBSCREEN ?
Ich hoffe ihr könnt mir helfen, weil sonst ist dass Programm soo nicht realisierbar, da im Vollbildmodus keine Reiter möglich sind und wenn der Fuba als Pop-up aufgerufen wird, ist es mir unmöglich die reiter anzuklicken, also währenddessen zu wechseln.
Ich hoffe ihr könnt mir helfen, um meine Frage nochmal genau zu stellen:
Wie muss ich den FuBa FREE_SELECTIONS_DIALOG einstellen und wie muss mein Fenster aussehen, damit ich diesen als Subscreen implementieren kann.
Bitte erklärt es aber so, dass ich es verstehe, wie gesagt befinde ich mich im erste lehrjahr und habe bisher nur einen BC-400 absolviert.
Danke schonmal im voraus

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


Re: FREE_SELECTIONS_DIALOG als Subscreen

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

Bin mir jetzt nicht sicher, aber so wie ich das sehe musst du...
- Einen Selektionsschirm mit Tabstrip anlegen
- Wobei du den Subscreen 2001 des Programms SAPLSSEL (Funktionsgruppe von FREE_SELECTIONS_*) einbindest (Evtl. einen der anderen 2000er-Subscreens)
- Im PBO (AT SELECTION-SCREEN OUTPUT) deines Programms musst du dann je nachdem welche deiner beiden Selektionen du anzeigen willst FREE_SELECTIONS_INIT und FREE_SELECTIONS_DIALOG aufrufen (Wobei AS_SUBSCREEN gesetzt sein muss)

Wie gesagt, hab mit den FREE_SELECTIONS_* bis jetzt noch nicht soviel gemacht.
Aber ich hab mir einige der Beispiele aus dem Verwendungsnachweis angesehen und aus meinen bisherigen Erfahrungen mit Dynpros, kann ich sagen, dass das der Ansatz ist, um "fremde" Dynpros im eigenen Programm anzuzeigen. Man muss nur eine Möglichkeit haben das angezeigte zu modifizieren, wo eben FREE_SELECTIONS_INIT und FREE_SELECTIONS_DIALOG ins Spiel kommen. Die Modifikation muss wenn notwendig, immer BEVOR das Dynpro ausgegeben wird erfolgen.

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 Pinguincommander (ForumUser / 88 / 62 / 2 ) »
hi ADT, ersteinmal danke,
aber ein paar fragen habe ich jetzt noch,
das selektionsbild 2000 oder 2001 oder welches auch immer binde ich im PAI ein oder ??? mithilfe einer subscreen area

CALL SUBSCREEN subscreen1 INCLUDING 'SAPLSSEL' '2000'.

mit diesem befehl hab ich es im PBO deklariert, nun müsste ich vorher, das ganze noch aufrufen in pbo... richtig ?

weiterhin ist der Fuba aufruf im moment so "konfiguriert" ist dass dann richtig, wie gesagt blick ich im moment überhaupt nciht mehr durch, außerdem bringt mir der fuba immer wieder einen kurzdump, wenn ich den Parameter "as subscreen" auf X setze.

CALL FUNCTION 'FREE_SELECTIONS_DIALOG'
EXPORTING
SELECTION_ID = W_SELECTION_ID
TITLE = 'Free Selection'
FRAME_TEXT = 'Free Selection'
STATUS = 0
* AS_WINDOW = 'X'
* START_ROW = 5
* START_COL = 5
* NO_INTERVALS = ' '
* JUST_DISPLAY = ' '
* PFKEY =
* ALV = ' '
* TREE_VISIBLE = 'X'
* DIAG_TEXT_1 =
* DIAG_TEXT_2 =
* WARNING_TITLE =
AS_SUBSCREEN = 'X'

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Pinguincommander hat geschrieben:das selektionsbild 2000 oder 2001 oder welches auch immer binde ich im PAI ein oder ??? mithilfe einer subscreen area

CALL SUBSCREEN subscreen1 INCLUDING 'SAPLSSEL' '2000'.
Davor musst du noch das PBO-Modul einfügen, in dem du die FREE_SELECTION festlegst.

Wenn das nicht klappt, kannst du versuchen die Einbindung über einen SELECTION-SCREEN mit Tabstrip zu machen.

Code: Alles auswählen.

SELECTION-SCREEN BEGIN OF TABBED BLOCK...
Je nachdem welche Selektion angezeigt wird (USER-COMMAND) musst du dann im AT SELECTION-SCREEN OUTPUT die richtigen Parameter an die FREE_SELECTION-Bausteine übergeben.
Sollte es zu einen Dynpro-Fehler kommen (von wegen bei Selektions-Schirmen sind nur bestimmte Dynpros erlaubt) könntest du noch die anderen Dynpros (Beschreibung: SEL_SCREEN) in der FUnktionsgruppe SSEL ausprobieren.

Viel mehr kann ich dir auch nicht mehr weiterhelfen, da ich das selber noch nie gemacht hab. Aber so in der Art müsste es funktionieren. Sofern hier niemand anderes dir genauer sagen kann, was Sache ist, wirst du dich wohl selber reinfuchsen müssen. :(
Eventuell hilft dir auch der Verwendungsnachweis weiter. Schau dir mal an wie andere Programme den Parameter AS_SUBSCREEN verwenden und wie die Dynpros dann aus der SSEL eingebunden werden. Gibt ja doch so an die 200.
Aber denk positiv: Dann lernst du auch was dabei :P
Pinguincommander hat geschrieben:... außerdem bringt mir der fuba immer wieder einen kurzdump, wenn ich den Parameter "as subscreen" auf X setze.
Im Coding hab ich jetzt keine spezielle Abfrage auf den Parameter gefunden.
Was kommt denn für ein Kurzdump?

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 Pinguincommander (ForumUser / 88 / 62 / 2 ) »
also ich habe jetzt ein modul erstellt in dem der fuba aufgerufen wird und danach wird der subscreen via call subscreen innerhalb des PBO-Moduls aufgerufen,
jetzt bekomme ich immer den fehler " Message-Typ " " ist nicht bekannt ".
ich habe ihm nur den parameter as subscreen und natürlich die selections-id mitgegeben.
heist dass er will mir einen fehler anzeigen, kann das aber nicht ?
evtl wegen dem hier:

IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

danke nochmals :-)
Gruß Pinguincommander

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von Pinguincommander (ForumUser / 88 / 62 / 2 ) »
o0hh halt nein,
es hat geklappt, ich hab das abfangen der fehler einfach auskommentiert, jetzt funktioniert es so wie es aussieht :-)
dankeschön :-)

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von Pinguincommander (ForumUser / 88 / 62 / 2 ) »
na ok, ein problem habe ich noch, wenn ich ein feld hinzufüge oder abwähle wird mir das nicht angezeigt, muss ich da jedes mal das dynpro aktualisieren ?

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Hab selber gerade ein wenig herum experimentiert und bin auf mehrere Probleme gestoßen:

1) Der Tree-View wird bei einem Tab-Reiter-Wechsel nicht aktualisiert.
Lösung:
Vor dem Aufruf des FREE_SELECTIONS_DIALOG muss der aktuelle Tree-View händisch zerstört werden.

Code: Alles auswählen.

FIELD-SYMBOLS:
  <lr_tree>      TYPE REF TO cl_gui_simple_tree.

ASSIGN ('(SAPLSSEL)TREE') TO <lr_tree>.
IF sy-subrc EQ 0 AND <lr_tree> IS BOUND.
  <lr_tree>->free( ).
  FREE <lr_tree>.
  CLEAR <lr_tree>.
ENDIF.
2) Die Free-Selektion wird "zu oft" aktualisiert
Lösung:
Nur wenn tatsächlich ein Tab-Reiter-Wechsel passiert, das PBO-Modul aufrufen.

Code: Alles auswählen.

DATA: gd_changed TYPE abap_bool.

* Bei der Initialisierung des Programms
gd_changed = abap_true.

* Bei PAI
CASE sy-ucomm.
  WHEN 'TAB01' OR 'TAB02'.
    gd_changed = abap_True.
ENDCASE.

* Bei PBO-Modul
IF gd_changed EQ abap_true.
* --> Hier die FREE_SELECTIONS-Aufrufe usw. rein.
  gd_changed = abap_false.
ENDIF.
3) Das mit der verlorenen Markierung muss ich mir noch anschauen.

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 Pinguincommander (ForumUser / 88 / 62 / 2 ) »
hey also nochmals danke für die antworten, mein problem ist jetzt vorerst gelöst, sollte ich nochmals nicht weiter kommen melde ich mich gerne wieder hier :-)
danke leute und ich hoffe irgendwann kann ich euch auch mal helfen

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von Pinguincommander (ForumUser / 88 / 62 / 2 ) »
soo... einen habe ich jetzt noch ^^ ich krieg es nicht hin, dass er mir das als intervall anzeigt, weil einzelne parameter wären ein wenig unnütz, ich hab dem baustein den Parameter No_intervall = ' ' mitgegeben, allerdings hilft dass nicht viel und ich krieg es nicht hin, dass er mir das so ausgibt eingebunden habe ich das SAPLSSEL dynpronr: 2000 das wäre jetzt noch interessant hinzubekommen.

Re: FREE_SELECTIONS_DIALOG als Subscreen

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

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

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 a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
a-dead-trousers hat geschrieben:3) Das mit der verlorenen Markierung muss ich mir noch anschauen.
Hier "husten" die Funktionsbuttons des Tree-Views sowie der Tabreiterwechsel etwas hinein.
Lösung:

Code: Alles auswählen.

FIELD-SYMBOLS: <ld_ucomm>     TYPE syucomm.

ASSIGN ('(SAPLSSEL)SSCRFIELDS-UCOMM') TO <ld_ucomm>.
IF sy-subrc EQ 0.
  CLEAR <ld_ucomm>.
ENDIF.

ASSIGN ('(SAPLSSEL)EVT_RECEIVER->SELECTED_UCOMM') TO <ld_ucomm>.
IF sy-subrc EQ 0.
  CLEAR <ld_ucomm>.
ENDIF.
Etwas ist meines Erachtens noch offen:
Wie liest man die gewählte FREE_SELECTION überhaupt aus?
Hast du da schon was?

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 Pinguincommander (ForumUser / 88 / 62 / 2 ) »
nunja ich werde einen button hinterlegen, der dem ding den code start befehl gibt, dann gibt mir der fuba ja entweder die ranges aus die ich so verwerten kann, je nachdem, welche tab dann gewählt war wird ein anderes PAI-modul (mit unterschiedlichem select)ausgeführt und ein ALV geöffnet.
Probiert hab ich das noch nicht, ich habe mir vorgenommen das Programm von vorneherein aufzuarbeiten und erst einmal den screen einzurichten.
du darfst mir aber gerne einen vorschlag unterbreiten, im ersten tab sollen die tabellen MARA und MARC mit einem inner join abgefragt werden während im 2 TAB im Moment AFKO und AFPO mit einem inner join verknüpft werden sollen.

achso ja was genau macht denn der code den du gepostet hast wegen der funktionen ?
und wo muss ich den einsetzen ?

Re: FREE_SELECTIONS_DIALOG als Subscreen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Bevor du den Fuba FREE_SELECTIONS_DIALOG aufrufst, musst du in der Funktionsgruppe mehrere Felder zurücksetzten.
Weil sonst bei einem Tab-Wechsel der Tree-View der Free-Selection nicht aktualisiert wird bzw. im Tree-View die aktuell ausgewählte Feld-Selektion nicht richtig (grün hinterlegt) dargestellt wird. Tritt wie gesagt nur dann auf wenn du zwischen den beiden Tabs hin- und herwechselst.

Jetzt zum eigentlich meines Erachtens viel kritischeren Problem:
Der Fuba FREE_SELECTIONS_DIALOG bricht ja bei Verwendung von AS_SUBSCREEN ab. Das hast du ja schon leidlich festgestell. Danach erfolgt erst die Ausgabe auf dem Dynpro mit dem Tabstrip. Wie kann man nun die AKTUELLE Free-Selection aus dem DYNPRO auslesen?
Ich hab mir die ganze Funktionsgruppe schon mal durchgeschaut und die aktuellen Laufzeitinformationen stehen im Feld CURRENT_INFO.
Alle anderen (nicht aktiven) Free-Selections stehen in der Tabelle SELID_INFO.
Um jetzt bei deinem Beispiel zu bleiben:
Wie bekommt man bei Ausführung der Selektion die für Datenbankabfrage nötige WHERE_CLAUSES, EXPRESSIONS oder FIELD_RANGES?

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 a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
hmmm... Okay... Ich hätte jetzt mal was gefunden, womit man zumindest die AKTUELLE Free-Selection auslesen kann:
Mithilfe der Form-Routine FILL_P_FIELDS kann man die aktuell ausgewählten Felder ermitteln

Code: Alles auswählen.

DATA: lt_fields TYPE rsdsfields_t.

PERFORM fill_p_fields IN PROGRAM saplssel TABLES lt_fields.
Mit diesen Informationen kann man dann die Formroutine BUILD_EXP_PARS aufrufen und die gewünschten Daten wie mit FREE_SELECTIONS_DIALOG auslesen.

Code: Alles auswählen.

types: 
  begin of exp_pars,
    twhere,
    texpr,
    trange,
  end of exp_pars.

DATA: 
  ls_export_x TYPE exp_pars,
  ls_export   TYPE rsds_type.

ls_export_x-twhere = abap_true.
ls_export_x-texpr = abap_true.
ls_export_x-trange = abap_true.

PERFORM build_exp_pars IN PROGRAM saplssel 
  TABLES lt_fields 
  CHANGING ls_export-clauses ls_export-texpr ls_export-trange ls_export_x.
EDIT: Getestet und für gut befunden 8)

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

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.
2324
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

Aktuelle Forenbeiträge

Zugriff auf Daten via Webdav
vor 53 Minuten von msfox 2 / 34
Interne Tabelle
vor 18 Stunden von sap_enthusiast 3 / 163
Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71

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

Zugriff auf Daten via Webdav
vor 53 Minuten von msfox 2 / 34
Interne Tabelle
vor 18 Stunden von sap_enthusiast 3 / 163
Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 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