SAP Jobsuche bei DV-Treff


Suchen
unkelbach
  • unkelbach
  • SAP Forum - Experte Thema Starter
vor 8 Jahre
Guten Morgen miteinander,

ich bin gerade ein wenig in Richtung Zusatzcoding innerhalb SAP Query (Infoset mit Zusatzfeld und Coding) am Verzweifeln, aber vielleicht kann mir jemand hier weiter helfen.

Hintergrund:

Aus der verantwortlichen Kostenstelle des Innnenauftrag (AUFK-KOSTV) soll eine Zuordnung in Form des Feldes ZUO erstellt werden. Hierzu soll, sofern die Kostenstelle in einen bestimmten Bereich liegt die ersten vier Ziffern der achtstelligen Kostenstellen genommen werden. In einen anderen Bereich wäre die Zuordnung fest vorgegeben oder aber es soll direkt die Kostenstelle ausgegeben werden.

Dieses bekomme ich auch problemlos durch eine IF Bedingung hin.

Ich habe ein Zusatzfeld ZUO mit den Eigenschaften LIKE CSKS-TELTX angelegt und dabei folgendes Coding hinterlegt:

Zitat:

IF AUFK-KOSTV => 10000000 AND AUFK-KOSTV =< 19999999.

ZUO = AUFK-KOSTV(6) * 1.

ELSEIF AUFK-KOSTV = 47110000.

ZUO = 'KW'.

ELSEIF AUFK-KOSTV => 20815000 AND AUFK-KOSTV =< 20815999.

ZUO = '1234'.

ELSE.

ZUO = AUFK-KOSTV * 1.

ENDIF.

Diese Bedingung funktioniert auch problemlos und liefert mir problemlos entweder die ersten Ziffern der Kostenstelle, wenn die verantwortliche Kostenstelle zwischen 10000000 und 19999999 liegt, die beiden Einzelwertzuweisungen KW oder 1234 für die anderen Intervalle und für alle anderen Zwecke nur die Nummer der Kostenstelle.

Nun möchte ich aber, als Sonderfall, sofern das Feld TELTX im Kostenstellenstamm gefüllt ist diesen als Wert ausgegeben. Hier scheitere ich aber an meiner Abfrage und hoffe ein wenig, dass jemand eine Idee hat, wo mein Fehler liegt.

Mein Ansatz war hier eine Abfrage, die ich nach obiger IF Abfrage eingefügt habe:

Zitat:

DATA: L_CSKSTELTX type CSKS-TELTX.

SELECT SINGLE teltx FROM csks INTO L_CSKSTELTX

WHERE kokrs = AUFK-KOKRS

AND kostl = AUFK-KOSTV.

IF sy-subrc <> 0.

ZUO = ZUO.

ELSE.

ZUO = L_CSKSTELTX.

ENDIF.

Allerdings liefert mir das Zusatzcoding weiterhin die Ergebnisse aus der oberen IF Abfrage und nicht das Feld TELTX (bzw. die gefüllte Teletexnummer aus den Kostenstellenstammsatz.

Grundsätzlich bekomme ich das gewünschte Ergebnis auch über lokale Felder innerhalb der Querydefinition, es wäre allerdings hilfreich, wenn schon im Infoset diese Zuordnung getroffen werden kann.

Hier ist die Lösung dann eine komplexe Berechnung in der Form:

Bedingung:

TELETEX <> ''

Formel:

TELETEX

Bedingung:

ZUO <> '' AND TELETEX = ''

Formel:

ZUO

Sonst:

KOSTV (AUFK-KOSTV)

Dennoch würde mich interessieren, ob es hier eine Möglichkeit gibt diesen Wert auch schon im Infoset zuzuweisen.

Über eine passende Anregung würde ich mich sehr freuen.

Viele Grüße

Andreas

Nachtrag:

Um ein Problem bzgl. achtstelligen Kostenstellen und führenden Nullen auszuschliessen habe ich noch folgendes gestest:

In der SE12 werden sowohl in AUFK-KOSTV als auch CSKS-KOSTL die Kostenstellen als CHAR (10) gespeichert. Eine Anzeige der Werte in der SE16 listet auch sowohl der verantwortliche Kostenstelle als auch die Kostenstelle aus CSKS mit führnenden 00 auf.

Durch die Bedingung KOSTL= AUFK-KOSTV. sollte dieses auch funktionieren.

Um allerdings diese Fehlerquelle auszuschliessen habe ich sowohl die führenden 00 als Wert erweitert.

Zitat:

DATA: L_CSKSTELTX type CSKS-TELTX.

DATA: T_AUFKKOSTV type CSKS-KOSTL.

CONCATENATE '00' AUFK-KOSTV INTO T_AUFKKOSTV.

SELECT SINGLE teltx FROM csks INTO L_CSKSTELTX

WHERE kokrs = AUFK-KOKRS

AND kostl = T_AUFKKOSTV.

IF sy-subrc <> 0.

ZUO = ZUO.

ELSE.

ZUO = L_CSKSTELTX.

ENDIF.

Ebenso wie folgende Anpassung um etwaige 00 zu entfernen.

Zitat:

DATA: L_CSKSTELTX type CSKS-TELTX.

DATA: T_AUFKKOSTV type CSKS-KOSTL.

T_AUFKKOSTV = AUFK-KOSTV * 1.

SELECT SINGLE teltx FROM csks INTO L_CSKSTELTX

WHERE kokrs = AUFK-KOKRS

AND kostl = T_AUFKKOSTV.

IF sy-subrc <> 0.

ZUO = ZUO.

ELSE.

ZUO = L_CSKSTELTX.

ENDIF.

unkelbach
  • unkelbach
  • SAP Forum - Experte Thema Starter
vor 8 Jahre
Dank @MrBojangles habe ich mittlerweile eine funktionierende Lösung erhalten :-)

Sollte noch jemand dieses Problem haben, sei auf folgenden Beitrag verwiesen :

http://fico-forum.de/fico_forum/thread.php?board=11&thread=90&page=1