SAPMV45A USEREXIT Itab Pos.Texte / Head Texte Thema ist als GELÖST markiert

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 ) » 31. Jan 2014 09:31

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


Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitrag von JHM (Top Expert / 1134 / 0 / 178 ) » 31. Jan 2014 09:42

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 ) » 31. Jan 2014 11:00

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 / 3977 / 164 / 368 ) » 3. Feb 2014 09:02

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 ) » 3. Feb 2014 09:22

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 / 3977 / 164 / 368 ) » 3. Feb 2014 09:32

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 ) » 3. Feb 2014 13:53

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 / 3977 / 164 / 368 ) » 3. Feb 2014 13:59

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 ) » 3. Feb 2014 14:48

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 ) » 3. Feb 2014 15:38

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 ) » 3. Feb 2014 15:50

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 / 3977 / 164 / 368 ) » 3. Feb 2014 15:56

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 ) » 3. Feb 2014 16:13

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 / 3977 / 164 / 368 ) » 3. Feb 2014 16:22

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 ) » 4. Feb 2014 07:52

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.

Seite 1 von 2 (current) Nächste

Aktuelle Forenbeiträge

Konstruktoren-Probleme.... gelöst
vor 22 Stunden von AdrianSchm 8 / 326
Workflow über Report starten
vor 22 Stunden von LostDarkness 2 / 73
Liste Angebote/ Aufträge nach ERNAM = sy-uname
Gestern von wreichelt 4 / 122
DOCVARIABLE in Worddokument setzen (OLE?)
Gestern von msfox 2 / 113
BAPI_PO_CREATE1 und Einkaufsinfosatz
Gestern von whaslbeck 2 / 155

Unbeantwortete Forenbeiträge

WCOCO: Gruppe für Betragsfelder 0S01
vor einer Woche von SAP_ENTWICKLER 1 / 95
CAS-Nr.: Chemical Abstracs Service
vor 3 Wochen von SAP_ENTWICKLER 1 / 124
Interaktives Skript, Rolle IC-Manager
vor 4 Wochen von erubadhron86 1 / 170
Wie findet man das Rahmenprogramm eines Infosets?
vor 4 Wochen von DeathAndPain 1 / 171