Neu : Wenn Sie die neuen Tabellenvariablen verwenden, dann ist das löschen einer Zeile ein kinderleichtes Spiel.
Sie benötigen dazu nur noch einen einzigen Befehl: deleterow
Möchten Sie in die Geheimnisse der Tabellenvariablen eingeführt werden, dann besuchen Sie doch unseren neuen GuiXT Fortschrittskurs I: Zum Kursbeschrieb
Sie möchten für einen eigenen TableControl die Funktion des Löschens einer einzelnen Zeile anbieten
Sie haben mit den neuen Befehlen Table und Column einen eigenen TableControl kreiert und möchte nun Ihren Usern eine Möglichkeit anbieten einzelne Zeilen wieder aus dem TableControl zu löschen. Da es dazu noch kein genereller Befehl gibt, stelle ich hier ein Beispielscript zur Verfügung ( Transaktion VA01) mit welchem sie diese Funktion selber bauen können.
In dem Beispiel ist auch das Löschen des ganzen TableControl enthalten. Alle notwendigen Scripte sind in der Datei Loeschen_Zeile.zip enthalten.
SAPMV45A.0101.TXT
// Beispiel eines TableControls mit dem Löschen einzelner Zeilen // 20.12.2011 / Gérald Koehn / Koehn Consulting // Löschen sämtlicher Bildelemente del (0,0) (45,180) // Definition der Tabelle Table (0,0) (12,40) title="Positionen" name="VAXX_Pos" rows="100" -rowselection fixedcolumns="3" // Füllen der ZeilenNummerierung bis 100 set V[i] 1 Label ZeilenNummer_fuellen if V[i<101] set V[VAXX_Pos.cell.VAXX_Pos_Zeile.&[i]] "&[i]" set V[i] &[i] + 1 goto ZeilenNummer_fuellen endif // Definition der Spalten in Tabelle "VAXX_Pos" column "Zeile" size="5" name="VAXX_Pos_Zeile" -readonly column "Material" size="13" name="VAXX_Pos_Material" TechName="VBAP-MATNR" column "Menge" size="6" name="VAXX_Pos_Menge" -Numerical column "ME" size="3" name="VAXX_Pos_ME" TechName="VBAP-VRKME" // Drucktasten um Zeile oder ganzen TableControl zu löschen Pushbutton (13,1) "@18@" Process="LOESCHEN_ZEILE.TXT" Size="(1,1)" Pushbutton (13,4) "@11@ganze Tabelle" Process="LOESCHEN_TABLE.TXT" Size="(1,20)" On "Enter" Process="Return.txt"
LOESCHEN_ZEILE.TXT
// Beispiel eines TableControls mit dem Löschen einzelner Zeilen
// 20.12.2011 / Gérald Koehn / Koehn Consulting
Message "Wollen Sie wirklich die markierten Positionen löschen?" -yesno
if Q[ok]
set V[i] 1
Label Pos_Zeilenweise_loesch
if ( V[VAXX_Pos.cell.VAXX_Pos_Material.&[i]] or V[VAXX_Pos.cell.VAXX_Pos_Menge.&[i]])
if V[VAXX_Pos.stat.rowselection.&[i]]
// wir löschen die genannten Variablen der Zeile und nummerieren alle folgenden Variablen um
set V[VAXX_Pos.stat.rowselection.&[i]] "" // Statusvariablen von Zeile &[i] zurücksetzen
set V[VAXX_Pos.cell.VAXX_Pos_Zeile.&[i]] ""
set V[VAXX_Pos.cell.VAXX_Pos_Material.&[i]] "" // Inhalte der Zellen für Zeile &[i] zurücksetzen
set V[VAXX_Pos.cell.VAXX_Pos_Menge.&[i]] "" // Inhalte der Zellen für Zeile &[i] zurücksetzen
set V[VAXX_Pos.cell.VAXX_Pos_ME.&[i]] "" // Inhalte der Zellen für Zeile &[i] zurücksetzen
// jetzt noch umnummerieren der noch restlichen Variablen => wenn ich Zeile 2 lösche, so wird Zeile 3 dann automatisch zu Zeile 2 , Zeile 4 zu Zeile 3 usw.
set V[n] &[i] + 1
set V[gemerktes_i] &[i]
// Loop über alle restlichen Zeilen bis 101
Label Neu_durchnummerieren
if V[i<101]
set V[VAXX_Pos.cell.VAXX_Pos_Zeile.&[i]] "&[VAXX_Pos.cell.VAXX_Pos_Zeile.&[n]]"
set V[VAXX_Pos.cell.VAXX_Pos_Material.&[i]] "&[VAXX_Pos.cell.VAXX_Pos_Material.&[n]] "
set V[VAXX_Pos.cell.VAXX_Pos_Menge.&[i]] "&[VAXX_Pos.cell.VAXX_Pos_Menge.&[n]]"
set V[VAXX_Pos.cell.VAXX_Pos_ME.&[i]] "&[VAXX_Pos.cell.VAXX_Pos_ME.&[n]]"
// Markierung muss auch übergeben werden, damit der weitere Verlauf stimmt
set V[VAXX_Pos.stat.rowselection.&[i]] "&[VAXX_Pos.stat.rowselection.&[n]]"
set V[i] &[i] + 1
set V[n] &[n] + 1
goto Neu_durchnummerieren
else
set V[i] &[gemerktes_i]
goto Pos_Zeilenweise_loesch
endif
endif
set V[i] &[i] + 1
goto Pos_Zeilenweise_loesch
endif
endif
Return
Download: Loeschen_Zeile.zip
(Loeschen_Zeile.zip, 0.05 KB)
