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)

Empfehlen