2017-03-21 4 views
0

Mit ABAP kann ich Daten mit zwei Standardtabellen anzeigen, aber darin habe ich doppelte Einträge.Doppelte Einträge aus der internen Tabelle löschen und Benutzerwerte geben

EX:

A  16.03.2017 168 
B  16.03.2017 150 
A  16.03.2017 208 

Hier möchte ich Ausgabe angezeigt werden wie unten:

A  16.03.2017  200[here I want to give my value] 
B  16.03.2017  150 

Könnte jemand bitte helfen Sie mir auf diesem ??

+3

Was bedeutet „hier möchte ich meinen Wert geben, " bedeuten? Welcher Wert von A sollte gelöscht werden? Wie bekommst du 200 von 208 und 168? –

+0

Verstehen Sie die Idee auch nicht. Wenn Sie Werte besitzen wollen, erstellen Sie einfach Ihr eigenes Itab und das war's. – Suncatcher

Antwort

0

Die Frage ist unklar, was Sie erreichen möchten. Wie auch immer, das folgende Stück sollte funktionieren. Hier müssen Sie zwei Variablen row und last_row definieren.

SORT tab. 
LOOP AT tab INTO row. 
    IF sy-tabix = 1. 
    last_row = row. 
    ELSE. 
    IF last_row-col1 = row-col1 AND last_row-col2 = row-col2. "duplicate 
     last_row-value = 'My Value'. 
    ELSE. "New values 
     WRITE:/ last_row-col1, last_row-col2, last_row-value. 
     last_row = row. 
    ENDIF. 
    ENDIF. 
ENDLOOP. 
IF sy-subrc EQ 0. 
    WRITE:/ last_row-col1, last_row-col2, last_row-value. 
ENDIF. 
+2

Könnten Sie bitte erklären, was Ihr Code tun soll? –

+0

@lausek, der Code sortiert die Tabelle. und wenn sich die Spaltenwerte ändern, wird die letzte gespeicherte Zeile gedruckt. Wenn es doppelt vorkommt, aktualisiert es den Wert mit Ihrem eigenen Wert ... Wenn Sie die in der Frage angegebene Eingabe und Ausgabe verwenden, wird dieser Code funktionieren. Wie auch immer, ich bin sicher, wenn Frage mehr Details liefert, sind bessere Lösungen möglich . – jhamu

0

Ich verstehe nicht ganz Ihre Frage. Aber ich denke, dass Sie den folgenden Code als Referenz benötigen könnten.

Lassen Sie uns für die Spalten einige Namen geben, und einen Namen für die interne Tabelle geben: lt_tab

C1 C2   C3 
A  16.03.2017 168 
B  16.03.2017 150 
A  16.03.2017 208 

Versuchen Sie, die folgenden Ursachen:

SORT lt_tab BY C1 C2. 
DELETE ADJACENT DUPLICATES FROM lt_tab COMPARING C1 C2. 
LOOP AT lt_tab ASSIGNING FIELD-SYMBOL(<fs_tab>). 
    IF <fs_tab>-C1 EQ 'A'. 
    <fs_tab>-C3 = 200. 
    ENDIF. 
ENDLOOP. 
Verwandte Themen