Gelöst IDoc Feldinhalt bearbeiten

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

Postby Ines3642 » Tue Sep 15, 2009 10:36 am

Zunächst: mach bitte keinen SELECT auf die EDID4. :!:

Mit zunehmendem Betrieb wird diese Tabelle immer größer und damit auch langsamer... Du hast doch alle benötigten Daten im Zugriff über die Methodenschnittstelle.

Die Methode wird bestimmt gerufen. Es ist aber schwer bis gar nicht zu debuggen, da es in der Regel a) eine Verbuchung und b) asynchron ist.

Wirklich testen kannst Du es nur, indem Du die IDOCs im Zielsystem überprüfst.

Zur Ausführung/Suche: ich bitte Dich an dieser Stelle nochmals, Dir generelle Infos über BAdIs im Netz zusammen zu suchen...

Aber kurz dazu: ein Interface ist immer "nur" eine Definition. Deine Z-Klasse implementiert das Interface (OO-Grundlagen). Ist Deine Klasse aktiv, "merkt" das System dies. Kommt es beim Durchlauf des Codings an die Stelle, an der das BAdI gerufen werden soll, wird die Methode GET_INSTANCE der Klasse CL_EXITHANDLER gerufen. Diese liefert Deine aktive Implementierung (wenn sie denn existiert) und kann dann direkt ausgeführt werden.
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Postby Eliana364 » Tue Sep 15, 2009 1:37 pm

Eine Frage hätte ich noch.
In der WE20 muss man unter dem Nachrichtentyp(in dem entsprechendem logischem System) ja auch ein sog. Vorgangscode angeben, der sich auf einen Funktionsbaustein bezieht. Dieser heißt im Standart 'BAPI'.

Bist du dir Sicher das der BADI "IDOC_DATA_MAPPER" irgendwo dort aufgerufen wird?

Oder muss ich den Vorgangscode noch ändern?

Grüße
Eliana364
..
..
 
Posts: 63
Joined: Fri Aug 22, 2008 9:11 am

Postby Ines3642 » Tue Sep 15, 2009 1:54 pm

Spontan würde ich sagen: ja, ich bin mir sicher. ;)

Falls das mit dem Mapper nicht funzt, könntest Du auch einfach Umsetzregeln definieren: SPRO -> SAP NW -> App. Server -> ALE -> Geschäftsprozesse -> Daten umsetzen
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Postby Eliana364 » Tue Sep 15, 2009 2:00 pm

Hi,

das Ding ist das der BADI "IDOC_DATA_MAPPER" im Paket SED liegt und der Bapi der genutzt wird im Paket SALE liegt. Somit kann ja die mapping methode nicht aufgerufen werden. Da du mir den Tipp gegeben hast mit dem BADI "IDOC_DATA_MAPPER", musst du ja irgendwo nachgeschaut haben das dieser oder andere Aufrufe aus dem Paket statt finden.
Ich kann ja auch einen anderen Vorgangscode angeben, nur dann bräuchte ich den richtigen Bapi aus dem Paket SALE.

Werde dann mal den anderen Weg versuchen.

Danke dir für deine Unterstützung und die promten antworten

Grüße
Eliana364
..
..
 
Posts: 63
Joined: Fri Aug 22, 2008 9:11 am

Postby Ines3642 » Tue Sep 15, 2009 2:19 pm

Warum sollten zwei Objekte aus unterschiedlichen Paketen keinen Zugriff aufeinander haben? Sieht man mal davon ab, dass Deine eigene Implementierung des BAdIs sowieso wieder in einem anderen Paket liegt... das hat nichts mit Ausführbarkeit zu tun. :!::?:

...aber ja, wahrscheinlich ist es besser, Du versuchst es über die Umsetzregeln.
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Postby Eliana364 » Tue Sep 15, 2009 2:34 pm

Ja wie soll es auch anders sein, will das auch nciht so richtig.

Kannst du mir eventuell sagen ob folgendes klappen würde:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.     find 'DATALOAD_QM' in wa_data-sdata.
  2.     if sy-subrc ne 0.
  3.       find 'WAGNESTE' in wa_data-sdata.
  4.       if sy-subrc ne 0.
  5.         lv_plant_old = 'FCPG'.
  6.         lv_plant_new = 'DE21'.
  7.       else.
  8.         lv_merker = 'X'.
  9.       endif.
  10.     else.
  11.       lv_merker = 'X'.
  12.     endif.
  13.  
  14.  
  15.     if not lv_merker is initial.
  16.       find 'FCPC' in wa_data-sdata.
  17.  
  18.       if sy-subrc eq 0.
  19.         lv_plant_old = 'FCPC'.
  20.         lv_plant_new = 'DE30'.
  21.       else.
  22.         find 'FCPG' in wa_data-sdata.
  23.         if sy-subrc eq 0.
  24.           lv_plant_old = 'FCPG'.
  25.           lv_plant_new = 'DE31'.
  26.         endif.
  27.       endif.
  28.     endif.
  29.  
GeSHi ©


also nicht ob das coding richtig ist sondern das man diese logik einbauen kann?
Denn das ist es was ich eigentlich vorhabe.

Grüße
Eliana364
..
..
 
Posts: 63
Joined: Fri Aug 22, 2008 9:11 am

Postby Ines3642 » Tue Sep 15, 2009 2:43 pm

So, oder so ähnlich sollte es gehen, ja.

Wobei Du dem Mapper (wenn ich es richtig in Erinnerung habe) eine Tabelle mitgeben musst, in der steht, was er so alles ändern soll.

...und nicht vergessen, die *korrekten* Zeilen aus der SDATA in einen passenden Arbeitsbereich (Segment-WA) zu schieben, damit Du Zugriff auf die Felder hast.
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Postby Eliana364 » Wed Sep 16, 2009 6:49 am

"...und nicht vergessen, die *korrekten* Zeilen aus der SDATA in einen passenden Arbeitsbereich (Segment-WA) zu schieben, damit Du Zugriff auf die Felder hast."


Das halt ich auch noch für ein Problem, da die Struktur der data mit dem Feld sdata ein 1000 zeichenlanges Feld ist. Wie soll man denn da eine geeignete Struktur finden?
Und mit der Tabelle hast du recht, da muss der Feldname eingetragen werden sowie der Wert. Nur wenn das feld 1000 zeichen lang ist wie kann ich der Tabelle da ein geeignetes Feld mitgeben, ohne großen Aufwand ?

Grüße
Eliana364
..
..
 
Posts: 63
Joined: Fri Aug 22, 2008 9:11 am

Postby Eliana364 » Wed Sep 16, 2009 7:02 am

sorry, doppel Post
Eliana364
..
..
 
Posts: 63
Joined: Fri Aug 22, 2008 9:11 am

Postby Ines3642 » Wed Sep 16, 2009 7:22 am

...und da sind wir beim nächsten Grundlagenproblem. Schau Dir hierzu bitte Infos zu IDOCs an. Jedes IDOC besteht nur aus Zeichenketten.

Du musst über den korrekten SEGNAM (Segment-Namen) die passende Zeile finden und diese dann in einen Arbeitsbereich schieben, der genauso typisiert ist, wie das Segment, dass Du suchst.

Beispiel: SEGNAM = 'E1EDKA1'
dann brauchst Du einen Arbeitsbereich vom Typ E1EDKA1 und machst einen MOVE der entsprechenden Zeile aus der SDATA in diesen Arbeitsbereich.

Anschließend kannst Du in dem Arbeitsbereich auf die Felder zugreifen.
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

PreviousNext

Return to ABAP® für Anfänger

Who is online

Users browsing this forum: No registered users and 10 guests