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.
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, machsupermario73 hat geschrieben:Leider wird die SELECT-OPTION nicht geleert?!
Was mache ich falsch?
Also Ralf, man bringt doch keine veralteten Sachen mehr bei!ralf.wenzel hat geschrieben:clear: (selopt).
refresh: (selopt).
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 veralteteDeathGuardian hat geschrieben:Also Ralf, man bringt doch keine veralteten Sachen mehr bei!ralf.wenzel hat geschrieben:clear: (selopt).
refresh: (selopt).
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
OK, ist vielleicht auch nur ne Geschmacksfrage!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.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
um die SO zu leeren musst du den Tabellenkorpus behandeln und nicht nur die Kopfzeile. Alsosupermario73 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.
Code: Alles auswählen.
clear sp$00001[].
Code: Alles auswählen.
clear sp$00001.
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.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.
Nachvollziehbar ist es durchaus.ralf.wenzel hat geschrieben: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.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.
Ralf
Das liegt aber an den Tabellen mit Kopfzeilen, nicht an der CLEAR-Anweisungereglam 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.
Doch, sehr wohl!ralf.wenzel hat geschrieben:Das liegt aber an den Tabellen mit Kopfzeilen, nicht an der CLEAR-Anweisungereglam 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.
Ralf
Ich hatte noch kein System auf dem das nicht ging. Zumindest nicht dass ich wüsste.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 sag ja es liegt an den Tabellen mit Kopfzeilen.ereglam hat geschrieben:die Einführung der kopfzeilenlosen Tabellen war ein sehr wichtiger Schritt, um gewisse Unschärfen zu reduzieren.
Soweit ich mich erinnere, kannte 3.x keine Tabellen ohne Kopfzeilen und auch keine eckigen Klammern...ralf.wenzel hat geschrieben:Ich hatte noch kein System auf dem das nicht ging. Zumindest nicht dass ich wüsste.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.
...