gelöst SAPMV45A USEREXIT Itab Pos.Texte / Head Texte


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

gelöst SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon Luigi91 » 31.01.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
Luigi91
ForumUser
 
Beiträge: 26
Registriert: 08.01.2014, 14:46
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon JHM » 31.01.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
JHM
Top Expert
 
Beiträge: 1132
Registriert: 15.02.2006, 12:39
Wohnort: Aachen
Dank erhalten: 178 mal

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon Luigi91 » 31.01.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
Luigi91
ForumUser
 
Beiträge: 26
Registriert: 08.01.2014, 14:46
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon ewx » 03.02.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.

Für diese Nachricht hat ewx einen Dank bekommen :
Luigi91
ewx
Top Expert
 
Beiträge: 3885
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 343 mal

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon Luigi91 » 03.02.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
Luigi91
ForumUser
 
Beiträge: 26
Registriert: 08.01.2014, 14:46
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon ewx » 03.02.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.
ewx
Top Expert
 
Beiträge: 3885
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 343 mal

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon Luigi91 » 03.02.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'.
 
Luigi91
ForumUser
 
Beiträge: 26
Registriert: 08.01.2014, 14:46
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon ewx » 03.02.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.
ewx
Top Expert
 
Beiträge: 3885
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 343 mal

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon Luigi91 » 03.02.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
                .
 
Luigi91
ForumUser
 
Beiträge: 26
Registriert: 08.01.2014, 14:46
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon Luigi91 » 03.02.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.
Luigi91
ForumUser
 
Beiträge: 26
Registriert: 08.01.2014, 14:46
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon Luigi91 » 03.02.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?
Luigi91
ForumUser
 
Beiträge: 26
Registriert: 08.01.2014, 14:46
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon ewx » 03.02.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... :)
ewx
Top Expert
 
Beiträge: 3885
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 343 mal

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon Luigi91 » 03.02.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.. :-)
Luigi91
ForumUser
 
Beiträge: 26
Registriert: 08.01.2014, 14:46
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon ewx » 03.02.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.
ewx
Top Expert
 
Beiträge: 3885
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 343 mal

Re: SAPMV45A USEREXIT Itab Pos.Texte / Head Texte

Beitragvon Luigi91 » 04.02.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.
Luigi91
ForumUser
 
Beiträge: 26
Registriert: 08.01.2014, 14:46
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Nächste

Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
(LKW)Bedarfsvorschau je Debitor
vor einer Stunde von owny 0 Antw.
(LKW)Bedarfsvorschau je Debitor
vor einer Stunde von owny 0 Antw.
Lieferplan, Einteilungen, Feinabrufe
vor 15 Stunden von bapimueller 0 Antw.
gelöst Smartforms Struktur rechtsbündig
vor 19 Stunden von qyurryus 3 Antw.
CALL_FUNCTION_SYSCALL_ONLY in RFC-Aufruf
vor 21 Stunden von lausek 0 Antw.

  Ähnliche Beiträge beta
Texte aus Kundenstamm
16.10.2003, 22:56 von simonretter 2 Antw.
Texte übertragen
17.05.2006, 16:18 von bohne 17 Antw.
ALV grid texte
27.02.2007, 10:51 von kostonstyle 6 Antw.
Formatzeichen in ABAP - Texte
27.02.2003, 12:00 von Steff 2 Antw.
SAP-Script - INCLUDE-Texte
16.08.2004, 15:23 von zkenitra 16 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]