SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
18 Beiträge • Seite 1 von 2 (current) Nächste
18 Beiträge Seite 1 von 2 (current) Nächste

SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von Luigi91 (ForumUser / 26 / 3 / 0 ) »
Hallo zusammen,

ich habe die Anforderung das im Auftrag VA02/VA03 beim drücken des Speicherbuttons alle Texte die im Kopf (Springen : Kopf : Texte) stehen in die Texte der Position kopiert werden.
Ich arbeite mit der Funktion Copy Texts.
Funktioniert auch so weit.

Problem:
Wenn ich jetzt trotzdem einen Positionstext habe welcher sich vom Kopftext unterscheiden soll, wird dieser beim Speichern überschrieben.

Lösung:
if [Tabelle:Positionstext] EQ 0.
(Funktion Copy Text)
endif.

*Wenn Tab:Postext nicht gefüllt, Copy Text from Kopf in Position.
*ansonsten lass alles wie es ist.

Meine Frage:
Wie heißt jetzt die Interne Tabelle in SAPMV45A für die Tabelle:Positionstext.

Habe bereits die Tabellen XTHEAD und YTHEAD gefunden, sind aber nur gefüllt wenn ich zuvor in den Kopftext oder Postext gesprungen bin.


Vielen Dank vorab.
Ciao Luis

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


Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
Luigi91 hat geschrieben:Habe bereits die Tabellen XTHEAD und YTHEAD gefunden, sind aber nur gefüllt wenn ich zuvor in den Kopftext oder Postext gesprungen bin.
VA03 und speichern?

Ansich läd SAP den Text nur, wenn er auch angezeigt/geändert wurde. Du musst also nicht nur in den Programmtabellen X/YTEXT sondern auch auf der DB nachschauen, ob der Positionstext bereits existiert.
Gruß Hendrik

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von Luigi91 (ForumUser / 26 / 3 / 0 ) »
Hi Hendrik,
habe jetzt nochmal alle Möglichkeiten durchdacht. Im Grunde reichen die beiden Abfragen aus.
Falls mir doch noch was einfällt, melde ich mich nochmal.
Merci

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
Die Texte werden in einem Textkatalog im SAP-Memory gehalten.
Hier steht, wie vorhandene Texte gelöscht werden können:
http://www.tricktresor.de/blog/texte-loeschen/

Das dürfte dir weiter helfen.

Eigentlich müsste das auch mit dem Baustein READ_TEXT gehen, der eine Ausnahme wirft, wenn der Text nicht vorhanden ist.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Luigi91


Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von Luigi91 (ForumUser / 26 / 3 / 0 ) »
Hi Zusammen,
jetzt brauch ich doch nochmal Hilfe.
Problem ist folgendes: Ich möchte in der VA01 (SAPMV45A) einen Kopftext anlegen.
Der Text kommt in die Interne Tabelle XTHEAD. BEVOR ich jetzt Speichern drücke, muss der Text auch noch in die Position geschrieben werden. (Szenario kopiere automatisch Text aus Kopf in Pos)
Das heißt ich muss den Text aus der XTHEAD (TDOBJECT = VBBK) in die XTHEAD (TDOBJECT = VBBP) schreiben, oder irgendwie so :-).
Funktionsbaustein READ_TEXT funktioniert hier noch nicht, da der ja einen SELECT auf die DB macht. Aber zu diesem Zeitpunkt die Daten noch im MEMORY stehen.

Weis da wer was?
Vielen vielen Dank schon mal vorab. :-)
Ciao Luis

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
Luigi91 hat geschrieben:Funktionsbaustein READ_TEXT funktioniert hier noch nicht, da der ja einen SELECT auf die DB macht. Aber zu diesem Zeitpunkt die Daten noch im MEMORY stehen.
Nein, der schaut zuerst im Speicher nach! Ggfs. mit dem Parameter LOCAL_CAT experimentieren.

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von Luigi91 (ForumUser / 26 / 3 / 0 ) »
Jetziger Stand:
-Daten werden aus Memory gelesen
-Gewünschter Text kopiert und verändert
-Und wieder ans Memory zurückgegeben

Problem.
Beim Test des Programmes, wird der Text noch nicht auf der Position wiedergegeben.

Weiß da jemand was?
Dachte dass, das so reicht, und das Programm SAPMV45A den Rest selbst übernimmt.

Code: Alles auswählen.

      DATA:
         BEGIN OF lt_catalog OCCURS 0,
            tdobject    LIKE thead-tdobject,
            tdname      LIKE thead-tdname,
            tdid        LIKE thead-tdid,
            tdspras     LIKE thead-tdspras,
            function(1) TYPE c,
            keep(1)     TYPE c,
            rename(1)   TYPE c,
            id(6)       TYPE n,
            copyindex(4) TYPE i,
            is_reftext(1) TYPE c,
          END   OF lt_catalog.
          data: wa_catalog like LINE OF lt_catalog.

      IMPORT catalog TO lt_catalog FROM MEMORY ID 'SAPLSTXD'.

      loop at lt_catalog into wa_catalog where tdobject = 'VBBK' and tdid = '0001'.
      ENDLOOP.
          wa_catalog-tdobject = 'VBBP'.
          wa_catalog-tdname = zlf_vbelnpos.
      append wa_catalog to lt_catalog.

      EXPORT catalog FROM lt_catalog TO MEMORY ID 'SAPLSTXD'.

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
In deinem Coding kopierst du nur den Katalogeintrag. Der Text muss aber mittels READ_TEXT + SAVE_TEXT kopiert werden.
Mithilfe des Katalogeintrags kannst du nur prüfen, ob bereits ein entsprechender Text vorhanden ist oder nicht.

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von Luigi91 (ForumUser / 26 / 3 / 0 ) »
Ja stimmt,
ist mir dann auch aufgefallen. :-)
Habe jetzt mit Copy Text gearbeitet, da er auch den Parameter LOCAL_CAT besitzt.
Allerdings bricht das Programm jetzt beim einstieg in den Funktionsbaustein ab. Bekomme auch eine Fehlermeldung.

"
Widerspruch in Aufrufmethode lokal/global für Textkataloge
Meldungsnr. TD239

Falls ein Textkatalog lokal gehalten wird (Optimierungsoption ab 4.6B)
sollen alle Aufrufe der Text-Funktionsbausteine, die Katalogrelevanz
besitzen , durchgehend mit dem Parameter LOCAT_CAT = 'X' erfolgen.
Notwendig ist außerdem auch, dass kein Katalog vorher in Memory
angelegt wurde, oder als erster Aufruf eine Löschung des Katalogs
"

Habe jetzt schon die Parameter..
SAVEMODE_DIRECT = ' '
INSERT = ' '
auf Space gesetzt, ändert aber auch nichts.

Code: Alles auswählen.

DATA:
         BEGIN OF lt_catalog OCCURS 0,
            tdobject    LIKE thead-tdobject,
            tdname      LIKE thead-tdname,
            tdid        LIKE thead-tdid,
            tdspras     LIKE thead-tdspras,
            function(1) TYPE c,
            keep(1)     TYPE c,
            rename(1)   TYPE c,
            id(6)       TYPE n,
            copyindex(4) TYPE i,
            is_reftext(1) TYPE c,
          END   OF lt_catalog.
          data: wa_catalog like LINE OF lt_catalog.

      IMPORT catalog TO lt_catalog FROM MEMORY ID 'SAPLSTXD'.

      loop at lt_catalog into wa_catalog where tdobject = 'VBBK' and tdid = '0001'.
      ENDLOOP.

      DATA: itctc like itctc OCCURS 1 WITH HEADER LINE.

      itctc-destobject = 'VBBP'.
      itctc-destname = zlf_vbelnpos.
      itctc-destid = wa_catalog-tdid.
      itctc-destlang = wa_catalog-tdspras.

      itctc-srcobject = wa_catalog-tdobject.
      itctc-srcname = wa_catalog-tdname.
      itctc-srcid = wa_catalog-tdid.
      itctc-srclang = wa_catalog-tdspras.

      APPEND itctc.

      BREAK-POINT.

      CALL FUNCTION 'COPY_TEXTS'
       EXPORTING
         SAVEMODE_DIRECT       = ' '
         INSERT                = ' '
         LOCAL_CAT             = 'X'
       IMPORTING
         ERROR                 = zlf_error
        TABLES
          texts                 = itctc
                .

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von Luigi91 (ForumUser / 26 / 3 / 0 ) »
Habe den LOCAL_CAT jetzt auch auf Space gesetzt, da mir beim Debuggen des Funktionsbausteines aufgefallen ist das er intern auf einen Error läuft.
Habe jetzt also alle Imports auf Space.
Leider kopiert er aber den Text noch nicht.

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von Luigi91 (ForumUser / 26 / 3 / 0 ) »
Habe den Verdacht das es daran liegt das ich

A)

Code: Alles auswählen.

EXPORT catalog FROM lt_catalog TO MEMORY ID 'SAPLSTXD'.
noch Exportieren muss,

B)
Die Tabelle XTHEAD hat noch den ursprünglichen Aufbau, müsste diese sich nicht verändern? Also den Positionstext mit aufnehmen?

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
A) Ja, das mag sein. Du darfst den Katalog lesen, aber nicht verändern. Das machen die *_TEXT-Bausteine.
B) Wie gesagt: Nicht verändern... Vor allen Dingen nicht, wenn's deswegen Probleme gibt... :)

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von Luigi91 (ForumUser / 26 / 3 / 0 ) »
Naja, ich Debugge jetzt mal noch den Funktionsbaustein. Irgendwo muss er ja die Daten hinschreiben.

Trotzdem mal vielen Dank... :-)
Ich schmeiße die Lösung dann rein, wennnnnnn ich die irgendwann habe.. :-)

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
Ich würde lieber versuchen, den COPY_TEXTS zu Laufen zu kriegen.
Bzw. probieren, ob READ_TEXT + SAVE_TEXT funktionieren.

Bei Auftragsanlage ist der Textname übrigens XXXXXXXXXX.
In USEREXIT_SAVE_DOCUMENT_PREPARE wird noch die Dummy-Nummer verwendet, in USEREXIT_SAVE_DOCUMENT ist dann die per NUMBER_GET_NEXT ermittelte Belegnummer der textname (ggfs. + Posnummer).

LOCAL_CAT funktioniert nicht, weil die Initialisierung bereits mit LOCAL_CAT gemacht werden muss, was wahrscheinlich nicht der Fall ist. Ich weiß auch immer noch nicht genau, was es damit auf sich hat... aus dem Gestammel aus der Funktionsgruppendoku wird man ja kaum schlau. :/

SAVEMODE_DIRECT = Space ist in jedem Fall korrekt.
INSERT = X kann man verwenden, wenn man sich sicher ist, dass der text noch nicht funktioniert. Wenn man ihn weg lässt, ermittelt das System es selbst.

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von Luigi91 (ForumUser / 26 / 3 / 0 ) »
Ja meinte ich ja mit 'Funktionsbaustein'. :-)
Ich gehe mit meinem Namen direkt auf VBAK-VBELN, da XVBAK mal funktioniert und mal nicht.

Des mit LOCAL_CAT verstehe ich jetzt nicht ganz, was du damit meinst. Muss ich nochmal Recherche betreiben.

Alles klar.

Vergleichbare Themen

1
Antw.
1873
Views
PO Texte löschen
von teerock » 24.12.2005 11:00 • Verfasst in Sonstige Module
0
Antw.
1148
Views
17
Antw.
10287
Views
Texte übertragen
von bohne » 12.05.2006 13:25 • Verfasst in ABAP® für Anfänger
6
Antw.
2849
Views
ALV grid texte
von kostonstyle » 26.02.2007 09:25 • Verfasst in ABAP® für Anfänger
8
Antw.
968
Views
Texte im Rechnungskopf
von Sebastian82 » 21.01.2022 11:12 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

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.