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)