Grundtext teilweise ändern

Getting started ... Alles für einen gelungenen Start.
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

Grundtext teilweise ändern

Beitrag von Kristin (ForumUser / 47 / 2 / 0 ) »
Hallo zusammen,

ich habe eine kurze Frage. Ich muss mit einem Direct Input alle Material-Grundtexte teilweise anpassen. Bedeutet, wenn z.B. irgendwo in einem Grundtext der Zusatz *ISO* steht aber das Feld Teilekennzeichen den Zusatz *DIN* beinhaltet, muss der Zusatz ausgetauscht werden. Ich hab das Programm soweit, dass das Feld aktualisiert wird, aber nur mit dem Inhalt, den ich hart mitgebe (ist halt mal ein Test gewesen). Wie bekomme ich es jetzt hin, dass der Inhalt vom Feld Teilekennzeichen im Grundtext den Inhalt AB *ISO* überschreibt (kann ich auch nicht über die Zeichenangabe machen, weil der Materialtext vor ISO unterschiedlich lang sein kann)?
Hab ich mich verständlich ausgedrückt? Vielen vielen Dank schon mal!
Beispiel:
Materialbezeichnung -> SCHRAUBE,ZYL ISO912 M2X6 TEST
Teilekennzeichen -> DIN912 M2X6 12.9 A2D
In Zukunft -> SCHRAUBE,ZYL DIN912 M2X6 12.9 A2D

Zusätzlich habe ich das Problem, dass ich lediglich die Felder MAKTX und MAKTG aus der Tabelle MAKT gefunden habe, ABER ich benötige auch noch den Grunddatentext, erreichbar über "Zusätze", welcher keine Feldzuweisung besitzt.

Vielen Dank nochmal!!

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Grundtext teilweise ändern

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Kristin,

der Grunddatentext wird im 'SAPScript-Format' abgelegt, die in den Tabellen STXH und STXL verwaltet werden. Um diese Texte auszulesen, ist zwingend der FB READ_TEXT zu benutzen und zum Schreiben SAVE_TEXT, eventuell in Verbindung mit dem COMMIT_TEXT. Ein direktes Lesen ist sinnlos, da die Daten in komprimierter Form abgelegt sind. Nach dem Ändern sollte der Text noch mit FORMAT_TEXT formatiert werden, um die Zeilenlänge richtig zu beachten.

Die Schlüssel dazu sind:
  • TDID = 'GRUN'
  • TDOBJECT = 'MATERIAL'
  • TDNAME = <Materialnummer 18stellig>
  • TDSPRAS = <sollte klar sein>
Hinweis:
Beim Aufbau des Namens reicht es aus, die Materialnummer in das Feld TDNAME zu schieben.
Bei anderen Texten wie z.B. den Vertriebstext (TDID = 0001; TDOBJECT = MVKE) reicht das nicht aus, da hier zusätzlich noch die VKORG und der VTWEG für den Namen benötigt werden. Hier sollte _nie_ mit CONCATENATE gearbeitet werden, weil alphanumerische Materialnummern i.d.R. weniger als 18 Stellen haben und somit die Positionierung von VKORG und VTWEG nach links verschoben würde. Daher sollte man sich eine Struktur mit den Feldern definieren und darüber die Werte für den Namen zusammenbauen.

Möglicherweise ist es sinnvoll, den Text zunächst in einen String zu konvertieren (CONVERT_ITF_TO_STREAM_TEXT), um die Ersetzung vorzunehmen und anschließend wieder in das Textformat (CONVERT_STREAM_TO_ITF_TEXT) für SAVE_TEXT zurückzukonvertieren.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Re: Grundtext teilweise ändern

Beitrag von Kristin (ForumUser / 47 / 2 / 0 ) »
Hi, okay vielen vielen Dank, ich setz mich gleich dran! :) Grüßle Krisi

Re: Grundtext teilweise ändern

Beitrag von Kristin (ForumUser / 47 / 2 / 0 ) »
Hi zusammen,

also das mit dem Grunddatentext hab ich jetzt geschnallt und umgesetzt. Dazu eine Frage: Welchen Befehl gebe ich mit, wenn er den vorhandenen Text nicht überschreiben, sondern ergänzen soll?

Zusätzlich habe ich immer noch ein Problem (hab mich in meinem ersten Beitrag etwas falsch ausgedürckt):

Ich muss den Materialtext im Material anpassen, z.B.:
Material Bezeichnung
10000002 Schraube,Zyl ISO1207-M2x4-A4-70

Dieses Material soll nach dem Direct Input so aussehen:
Material Bezeichnung
10000002 Schraube,Zyl DIN84-M2X4-1.4571

Den Text "DIN84-M2X4-1.4571" hol ich mir aus dem Teilekennzeichen-Feld.

Wie bekomme ich es hin, dass mein Programm, sobald in der Materialbezeichnung der Zusatz "ISO" auftaucht, der ganze hintere Teil mit der Beschreibung aus dem Teilekennzeichen-Feld überschrieben wird.

Danke schon mal! ;)

Re: Grundtext teilweise ändern

Beitrag von Kristin (ForumUser / 47 / 2 / 0 ) »
Kristin hat geschrieben:Hi zusammen,
also das mit dem Grunddatentext hab ich jetzt geschnallt und umgesetzt. Dazu eine Frage: Welchen Befehl gebe ich mit, wenn er den vorhandenen Text nicht überschreiben, sondern ergänzen soll?
Danke schon mal! ;)
Hi nochmal,

also ich habe den Quellcode jetzt wie folgt angepasst:

Code: Alles auswählen.

LOOP AT lines.
      If lines-tdline = ' '.
      MOVE ausg-zztkz TO LINES-TDLINE.
      MODIFY LINES.
      Else.
      CONCATENATE lines-tdline ausg-zztkz INTO h_lines SEPARATED BY '            '.
      MOVE h_lines TO LINES-TDLINE.
      MODIFY LINES.
      Endif.
ENDLOOP.
Also der Grundtext wird ergänzt im Material aber gibt es eine Möglichkeit, anstatt "seperated by ' '" einen Befehl mitzugeben, so dass der neue Text in eine ganz neue Zeile geschrieben wird?

Vielen Dank!

Re: Grundtext teilweise ändern

Beitrag von Kristin (ForumUser / 47 / 2 / 0 ) »
Hmmmm okay, dabei kann mir wohl keiner helfen, schade :(

Dafür habe ich eine andere Frage. Ich habe zu manchen Materialnummern keinen Eintrag in der Tabelle STXH mit Text-ID = "GRUN" und Textobjekt = "MATERIAL", weil eben noch kein Grunddatentext gefüllt ist. Wie kann ich nun einen neuen Satz anlegen lassen, der die benötigte ID "GRUN" besitzt. Kann mir einer weiterhelfen? Danke.

Re: Grundtext teilweise ändern

Beitrag von strobbel (ForumUser / 29 / 0 / 0 ) »
Ich bräuchte hierfür auch eine Lösung. Ich muss in allen Materialkurztexten das Zeichen ',' durch '.' ersetzen.
Hat nicht vllt doch jemand eine Idee wie man das hinkriegen könnte?

Re: Grundtext teilweise ändern

Beitrag von Ratazong (Specialist / 144 / 1 / 14 ) »

Code: Alles auswählen.

SEARCH maktx FOR 'ISO' IN CHARACTER MODE.
IF sy-subrc = 0.
  text+sy-fdpos = <neuer Text>. "mit DIN
ENDIF.

Re: Grundtext teilweise ändern

Beitrag von Ratazong (Specialist / 144 / 1 / 14 ) »
strobbel hat geschrieben:Ich bräuchte hierfür auch eine Lösung. Ich muss in allen Materialkurztexten das Zeichen ',' durch '.' ersetzen.
Hat nicht vllt doch jemand eine Idee wie man das hinkriegen könnte?

Code: Alles auswählen.

TRANSLATE maktx USING ',.'.

Re: Grundtext teilweise ändern

Beitrag von Ratazong (Specialist / 144 / 1 / 14 ) »
Kristin hat geschrieben:Hmmmm okay, dabei kann mir wohl keiner helfen, schade :(

Dafür habe ich eine andere Frage. Ich habe zu manchen Materialnummern keinen Eintrag in der Tabelle STXH mit Text-ID = "GRUN" und Textobjekt = "MATERIAL", weil eben noch kein Grunddatentext gefüllt ist. Wie kann ich nun einen neuen Satz anlegen lassen, der die benötigte ID "GRUN" besitzt. Kann mir einer weiterhelfen? Danke.
Funktionsbaustein SAVE_TEXT macht das, Importparameter INSERT und SAVEMODE_DIRECT mitgeben.

Re: Grundtext teilweise ändern

Beitrag von Kristin (ForumUser / 47 / 2 / 0 ) »
Hi Ratazong,

vielen Dank, ich hab vor lauter Bäumen den Wald net gesehen oder so ;) hatte den Fb nur an der falschen Stelle... Nun klappt alles wie gewünscht.

Nur noch eine Frage, du weißt nicht zufällig wie ich zwei Datensätze zusammen bringen kann ABER nicht hintereinander, sondern den zweiten Datensatz in eine neue Zeile (also immer noch im Grunddatentext-Feld)?

Vielen Dank.

Re: Grundtext teilweise ändern

Beitrag von Ratazong (Specialist / 144 / 1 / 14 ) »
Kristin hat geschrieben:Hi Ratazong,

vielen Dank, ich hab vor lauter Bäumen den Wald net gesehen oder so ;) hatte den Fb nur an der falschen Stelle... Nun klappt alles wie gewünscht.

Nur noch eine Frage, du weißt nicht zufällig wie ich zwei Datensätze zusammen bringen kann ABER nicht hintereinander, sondern den zweiten Datensatz in eine neue Zeile (also immer noch im Grunddatentext-Feld)?

Vielen Dank.
Einfach eine neue Zeile an die LINES-Tabelle ran hängen, mit TDFORMAT = '*'?!

Grüße

André

Re: Grundtext teilweise ändern

Beitrag von Kristin (ForumUser / 47 / 2 / 0 ) »
Ne habs anders gelöst:

Code: Alles auswählen.

    LOOP AT ausg.
      If ausg-tdid = h_thead-tdid.
        PERFORM read_text.
        FIND ausg-zztkz IN TABLE lines.
        If sy-subrc = 0.
          CONTINUE.
         ENDIF.
        LOOP AT lines.
          lines-tdline = ausg-zztkz.
          lines-tdformat = '/'.
          APPEND lines. <----- hab hier MOVE TO gehabt, daran lags
          EXIT.
        ENDLOOP.
Aber danke für deinen Tipp!

Seite 1 von 1

Vergleichbare Themen

1
Antw.
967
Views
Materialbezeichnung teilweise übernehmen
von Kristin » 03.09.2009 14:19 • Verfasst in ABAP® für Anfänger
2
Antw.
1537
Views
SE01-Transport wird nur teilweise gefunden
von Ranganga » 20.12.2006 16:50 • Verfasst in Basis

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor 6 Stunden von tar 8 / 189
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1489

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 6 Stunden von tar 8 / 189
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1489

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822