Felder im Selection-Screen leeren

Getting started ... Alles für einen gelungenen Start.
16 Beiträge • Seite 1 von 2 (current) Nächste
16 Beiträge Seite 1 von 2 (current) Nächste

Felder im Selection-Screen leeren

Beitrag von supermario73 (ForumUser / 62 / 0 / 0 ) »
Hallo zusammen,

ich möchte die Funktionalität 'Slektion leeren' einbauen:

Code: Alles auswählen.

************************************************************************
* L O A D - O F - P R O G R A M M
************************************************************************
load-of-program.
*******************
* Namen für Drucktasten
  functxt_01-text =      'Selektion leeren'(sll).
  functxt_01-icon_id =   ''.
  functxt_01-icon_text = ''.
  functxt_01-quickinfo = ''.
  functxt_01-path =      'S'.

  sscrfields-functxt_01 = functxt_01.
***********************************************************************



***********************************************************************
*
* Selektionsdynpro
*------------------------------------------Beginn Dynpro 1000 (Standard)
  selection-screen begin of block deb with frame title text-s02.
  selection-screen function key 1.
  selection-screen skip.
  select-options sp$00001 for kna1-kunnr memory id kun.
  select-options sp$00002 for kna1-name1.
  select-options sp$00003 for kna1-ort01.
  select-options sp$00004 for kna1-pstlz.
  selection-screen end of block deb.

Code: Alles auswählen.

initialization.

  get parameter id 'WRK' field gv_werks.
  sp_werks = gv_werks.
end-of-selection.
**************************************************************************
** A T - S E L E C T I O N - S C R E E N
*************************************************************************
at selection-screen.
**************************************************************************
* OK-Code Behandlung Drucktastenleiste
**************************************************************************

  if sscrfields-ucomm = 'FC01'.

    loop at screen.
    clear sp$00001.
    modify screen.
    endloop.
    exit.
  endif.
Leider wird die SELECT-OPTION nicht geleert?!
Was mache ich falsch?

Vielen Dank im Voraus.

MfG

Mario

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


Re: Felder im Selection-Screen leeren

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
supermario73 hat geschrieben:Leider wird die SELECT-OPTION nicht geleert?!
Was mache ich falsch?
Der LOOP AT SCREEN ist quatsch (die Tabelle SCREEN bestimmt die EIGENSCHAFTEN der Felder, nicht die Inhalte), wenn du gezielt die SelOpt namensscharf löschen willst, mach

clear: (selopt).
refresh: (selopt).

Natürlich nicht mit (selopt) sondern mit dem namen deiner SelOpt.

Allerdings kriegt man das auch dynamischer hin, wenn man will.... Dann bräuchtest du die Löschfunktion nicht anzupassen, wenn sich das Selektionsbild ändert. Das wäre dann aber schon ne kleine Abhandlung, das schriftlich zu erklären. Dazu fehlt mir heute (ehrlich gesagt) die Lust.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
ralf.wenzel hat geschrieben:clear: (selopt).
refresh: (selopt).
Also Ralf, man bringt doch keine veralteten Sachen mehr bei!

Wenn schon dann so:

Code: Alles auswählen.

clear: (selopt). "clear Kopfzeile (jo, Selopts haben die noch)
clear: (selopt)[]. "die Eckigen Klammern sagen mach clear auf den Inhalt

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
DeathGuardian hat geschrieben:
ralf.wenzel hat geschrieben:clear: (selopt).
refresh: (selopt).
Also Ralf, man bringt doch keine veralteten Sachen mehr bei!

Wenn schon dann so:

Code: Alles auswählen.

clear: (selopt). "clear Kopfzeile (jo, Selopts haben die noch)
clear: (selopt)[]. "die Eckigen Klammern sagen mach clear auf den Inhalt
Der refresh ist veraltet, der clear[] nicht???? Wo steht das? In der Online-Doku habe ich sowas nicht gefunden. Das Hauptproblem ist, dass eine selopt eine Tabelle mit Kopfzeile ist, da sind wir uns sicher einig. DAS ist das veraltete ;) Aber da kann man nicht wirklich was dran machen, wenn man nicht SAP heißt.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Also laut was weiss ich wievielen Dozenten (in Walldorf) ist der REFRESH veraltet und man sollte lieber den CLEAR mit [] machen.
(OK, eigentlich sollte man überhaupt keine Kopfzeilen mehr haben[dann reicht auch ein normaler Clear], aber in dem Fall muss man mit dennen leben)
Laut einiger Leuten ist der REFRESH ein Relikt aus R2.

Und in der Hilfe zu Refresh steht das:
Hinweis
Die Anweisung REFRESH itab wirkt bei allen internen Tabellen wie CLEAR itab[]. Falls die interne Tabelle itab eine Kopfzeile hat, wird der Tabellenkörper, nicht die Kopfzeile, initialisiert. Falls die interne Tabelle itab keine Kopfzeile hat, wirkt REFRESH itab wie CLEAR itab. Statt REFRESH sollte deshalb nur noch CLEAR verwendet werden
OK, ist vielleicht auch nur ne Geschmacksfrage!

Aber ich bezeifle mal stark, das SAP jemals die SelOpts ohne Kopfzeile machen wird, da dadurch woll zuviele Änderungen gemacht werden müssten.
Wie heisst so schön immer: Historisch Gewachsen.
Zuletzt geändert von DeathGuardian am 25.04.2008 09:47, insgesamt 1-mal geändert.

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
DeathGuardian hat geschrieben:Und in der Hilfe zu Refresh steht das:
Hinweis
Die Anweisung REFRESH itab wirkt bei allen internen Tabellen wie CLEAR itab[]. Falls die interne Tabelle itab eine Kopfzeile hat, wird der Tabellenkörper, nicht die Kopfzeile, initialisiert. Falls die interne Tabelle itab keine Kopfzeile hat, wirkt REFRESH itab wie CLEAR itab. Statt REFRESH sollte deshalb nur noch CLEAR verwendet werden
Der logische Schluss erschließt sich mir nicht. Ich mein, ich nehm in solchen Fällen auch clear[], aber eher aus Geschmacksgründen. Ich sehe derzeit keinen Grund, jemandem vom refresh abzuraten.



Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Felder im Selection-Screen leeren

Beitrag von Arno Simon (ForumUser / 84 / 0 / 1 ) »
supermario73 hat geschrieben:

Code: Alles auswählen.

**************************************************************************
** A T - S E L E C T I O N - S C R E E N
*************************************************************************
at selection-screen.
**************************************************************************
* OK-Code Behandlung Drucktastenleiste
**************************************************************************

  if sscrfields-ucomm = 'FC01'.

    loop at screen.
    clear sp$00001.
    modify screen.
    endloop.
    exit.
  endif.
um die SO zu leeren musst du den Tabellenkorpus behandeln und nicht nur die Kopfzeile. Also

Code: Alles auswählen.

clear sp$00001[].
und nicht nur

Code: Alles auswählen.

clear sp$00001.
Dafür benötigst Du jedoch IMHO keinen Modify auf den Screen.

vG

Arno

PS und wenn man den Beitrag zu ende liest (oder wenigstens mal den Cache refresht) sieht man das andere schneller waren ;)

Beitrag von supermario73 (ForumUser / 62 / 0 / 0 ) »
Hi,

hat geklappt, danke für die dienlichen Hinweise!

Grüße,
Mario

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
:shock:
da bin ich aber baff. Hab ich doch gerade einem Kollegen erzählt, er solle gerade nicht den CLEAR itab[] benutzen... *grmbl* :evil:

Eigentlich fand ich die Trennung zwischen CLEAR und REFRESH gut, gerade weil dadurch das unterschiedliche Verhalten bei Tabellen mit und ohne Kopfzeile beim CLEAR nicht zu Fehlern kann und der REFRESH eben nur auf Tabellenkörper, unabhängig der Tabellenart, wirkt.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
ereglam hat geschrieben:Eigentlich fand ich die Trennung zwischen CLEAR und REFRESH gut, gerade weil dadurch das unterschiedliche Verhalten bei Tabellen mit und ohne Kopfzeile beim CLEAR nicht zu Fehlern kann und der REFRESH eben nur auf Tabellenkörper, unabhängig der Tabellenart, wirkt.
Ich nicht. Ein Feld ist ein Feld. Wenn ich das lösche, ist es leer. Das gilt auch für Tabellen. Die Logik finde ich nachvollziehbarer.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
ralf.wenzel hat geschrieben:
ereglam hat geschrieben:Eigentlich fand ich die Trennung zwischen CLEAR und REFRESH gut, gerade weil dadurch das unterschiedliche Verhalten bei Tabellen mit und ohne Kopfzeile beim CLEAR nicht zu Fehlern kann und der REFRESH eben nur auf Tabellenkörper, unabhängig der Tabellenart, wirkt.
Ich nicht. Ein Feld ist ein Feld. Wenn ich das lösche, ist es leer. Das gilt auch für Tabellen. Die Logik finde ich nachvollziehbarer.


Ralf
Nachvollziehbar ist es durchaus.
Das unterschiedlicher Verhalten des CLEAR ohne Klammern bei den unterschiedlichen Tabellenformen (mit/ohne Kopfzeile) macht es für weniger Erfahrene aber eben nicht einfacher.

ABAP ist halt eine Sprache, die über lange Zeit sich weiterentwickelt hat. Da wäre es meines Erachtens ob der großen Menge an Entwicklern durchaus angebracht, Befehle so zu gestalten, dass man Fehler vermeiden kann, statt zusätzliche Fehlerquellen einzubauen.
Wenn man gehässig wäre, könnte man natürlich die Hoffnung der SAP in weiteren (kostenpflichtige) Beratung unterstellen...
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
ereglam hat geschrieben:Das unterschiedlicher Verhalten des CLEAR ohne Klammern bei den unterschiedlichen Tabellenformen (mit/ohne Kopfzeile) macht es für weniger Erfahrene aber eben nicht einfacher.
Das liegt aber an den Tabellen mit Kopfzeilen, nicht an der CLEAR-Anweisung ;)


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
ralf.wenzel hat geschrieben:
ereglam hat geschrieben:Das unterschiedlicher Verhalten des CLEAR ohne Klammern bei den unterschiedlichen Tabellenformen (mit/ohne Kopfzeile) macht es für weniger Erfahrene aber eben nicht einfacher.
Das liegt aber an den Tabellen mit Kopfzeilen, nicht an der CLEAR-Anweisung ;)


Ralf
Doch, sehr wohl!
Denn nur durch die Implementierung des CLEAR kommt es überhaupt zu dieser Unschärfe. Eigentlich ist es sogar die Einführung der eckigen Klammern zum (expliziten) Ansprechen des Tabellenkörpers bzw. von Tabellen ohne Kopfzeilen, der überhaupt zu diesem Dilemma führt. Vorher konnte man den Tabellenkörper nur mit dem REFRESH löschen.

PS:
die Einführung der kopfzeilenlosen Tabellen war ein sehr wichtiger Schritt, um gewisse Unschärfen zu reduzieren.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
ereglam hat geschrieben:Tabellen ohne Kopfzeilen, der überhaupt zu diesem Dilemma führt. Vorher konnte man den Tabellenkörper nur mit dem REFRESH löschen.
Ich hatte noch kein System auf dem das nicht ging. Zumindest nicht dass ich wüsste.
ereglam hat geschrieben:die Einführung der kopfzeilenlosen Tabellen war ein sehr wichtiger Schritt, um gewisse Unschärfen zu reduzieren.
Ich sag ja es liegt an den Tabellen mit Kopfzeilen.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
ralf.wenzel hat geschrieben:
ereglam hat geschrieben:Tabellen ohne Kopfzeilen, der überhaupt zu diesem Dilemma führt. Vorher konnte man den Tabellenkörper nur mit dem REFRESH löschen.
Ich hatte noch kein System auf dem das nicht ging. Zumindest nicht dass ich wüsste.
...
Soweit ich mich erinnere, kannte 3.x keine Tabellen ohne Kopfzeilen und auch keine eckigen Klammern...
Das ist alles erst mit 4.0 eingeführt worden... QED
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Vergleichbare Themen

4
Antw.
3432
Views
Selection-Screen Comment Felder ausblenden
von brunsdo » 19.02.2016 16:16 • Verfasst in ABAP® für Anfänger
9
Antw.
3717
Views
Dynpro I/O-Felder nach Eingabe nicht leeren
von Dyrdek » 11.05.2015 11:28 • Verfasst in ABAP® für Anfänger
7
Antw.
15751
Views
Selection Screen
von cschmoel » 20.08.2012 12:53 • Verfasst in ABAP® für Anfänger
1
Antw.
2405
Views
selection screen
von anki_86 » 13.06.2007 07:30 • Verfasst in ABAP® für Anfänger
1
Antw.
2408
Views
Selection Screen
von frany*89* » 06.08.2011 05:11 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1774
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2317

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

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1774
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2317

Unbeantwortete Forenbeiträge

Export von Spools in XLSX
vor 4 Tagen von abapamateur 1 / 346
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 944
MS-Word als Editor
letzen Monat von tekko 1 / 4455