Guten Morgen,
ich bin kompletter ABAP-Anfänger und neu hier.
Im voraus schon mal vielen Dank für jede Form von Hilfe.
Mir wurde folgende Aufgabe gestellt, an der ich gerade verzweifle und ich soll sie bis Ende der Woche ausgeführt haben:
In der Tabelle SDOKSTCA soll ein Content Repository durch einen neuen Wert ersetzt werden:
In der Spalte STOR_REP (2. Spalte) sollen alle Einträge mit dem Wert "Z_IBM_DVS_P11" durch den Wert "1Z" ersetzt werden. Es geht hier um den Umzug eines Content Repositorys. Der Eintrag taucht nach meinen Recherchen in der Tabell nur einmal auf.
Als Parameter habe ich definiert: Kategorie (in meinem Fall Z_DVS_3), Content Repository alt (bei mir Z_IBM_DVS_P11) und Content Repository neu (1Z).
Kann mir hierbei jemand helfen bzw. mir den Code nennen, der mich zur Lösung führt? Laut meinem Tutor sollte dies über einen select-Befehl möglich sein...?!?
Ohne die Tabelle oder das Thema genau zu kennen - setzte dich mal mit dem Befehl "UPDATE" oder "MODIFY" auseinander. ( Nimm hierfür lieber update )
Die Lösung ist relativ einfach, hoffe aber, dass hier niemand die Lösung direkt posten wird. ( Sollst ja dabei was lernen, vermute ich mal )
Dann gebe ich dir noch den Tipp, dich allgemein mehr mit dem Thema "SQL" in ABAP auseinander zu setzen.
Hi Frank,
ich denke hier könnten jetzt viele dir dein Coding lösen, aber dann hast du nichts gelernt.
Frei nach dem Motto: "Give a man a program, frustrate him for a day. Teach a man to program, frustrate him for a lifetime."
Alle Begriffe, die in diesem Text bold markiert sind, solltest du mal googeln und spezifisch die ABAP Doku dazu lesen. Entweder online, oder indem du die Begriffe im SAP Editor eingibst und dann F1 drückst.
Das mit einem SELECT zu machen scheint mir nach unnötiger Mehrarbeit, das kann man mit einem UPDATE erledigen.
Bei der Methode mit SELECT würdest du erst einen OpenSQL Select schreiben um die Datensätze, die du verändern willst, in eine interne Tabelle zu lesen. Über die würdest du dann LOOPen und ein Feldsymbol füllen, um den Wert zu verändern. Nach dem LOOP würdest du den UPDATE Befehl in der Variante FROM TABLE verwenden.
Bei der Variante, wo du nur Update brauchst, würdest du nach deinem Selection-Screen direkt UPDATE in der Variante SET ... WHERE ... verwenden.
Zuletzt geändert von Legxis am 22.10.2019 12:32, insgesamt 1-mal geändert.
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )
...und den Parameter mit der Kategorie brauchst Du im Selektionsbild nicht, denn die ergibt sich ja aus Deiner Anforderung, alle Tabellenzeilen mit einem bestimmten STOR_REP zu ersetzen.
Vielen, vielen Dank für Eure Hilfe!
Mit dem Update-Befehl ging es jetzt recht einfach.
Ich habe vorher noch einige Parameter definiert, so daß der Report sogar etwas dynamischer ist und sich auch für andere Systeme und Content Repositories verwenden lässt.
Hallo,
"mit Kanonen auf Spatzen schießen"...
ich würde als alternativen Vorschlag noch einbringen, das CR einfach über das Customizing (Transaktion OACT) zu pflegen, ganz ohne jegliche Programmierung.
Hallo,
"mit Kanonen auf Spatzen schießen"...
ich würde als alternativen Vorschlag noch einbringen, das CR einfach über das Customizing (Transaktion OACT) zu pflegen, ganz ohne jegliche Programmierung.
Klar ist das für die Tabelle ( anscheinend ) der richtige weg. Aber Frank soll anscheinend ABAP lernen. Natürlich ist es komisch, dass er diese Tabelle mit Coding ändern soll, aber das ist nunmal seine Aufgabe ^^