| Passwort vergessen?
FICO Grundlagen
Karriere
Artikel
Auswertungen
Strategie
Demos
Forum
Add-On
Zertifizierung
Buecher
FICO - Fun
tell a friend


Werbung
Sie sind nicht angemeldet.  Anmelden



SAP
Query: Auslesen Stammdaten (Zusatzcoding ABAP) Problem SELECT Statement AUFK-KOSTV und CSKS-TELTX
 1
02.02.16 07:11
AUnkelbach 

Query: Auslesen Stammdaten (Zusatzcoding ABAP) Problem SELECT Statement AUFK-KOSTV und CSKS-TELTX

Guten Morgen miteinander,

ich bin gerade ein wenig in Richtung Zusatzcoding innerhalb SAP Query 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:

Zitieren:
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


Zitieren:
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

Zuletzt bearbeitet am 02.02.16 15:00

02.02.16 10:07
uwesap 
Re: Query: Auslesen Stammdaten (Zusatzcoding ABAP) Problem SELECT Statement AUFK-KOSTV und CSKS-TELTX

Hallo Andreas,

vielleicht scheitert Dein Select deshalb:
das Feld KOSTL ist doch 10-stellig und Kostenstellen mit weniger Stellen werden mit führenden Nullen gespeichert.

VG
Uwe

02.02.16 11:17
AUnkelbach 

Re: Query: Auslesen Stammdaten (Zusatzcoding ABAP) Problem SELECT Statement AUFK-KOSTV und CSKS-TELTX

Hallo Uwe,

leider werden zumindest in der SE12 sowohl 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.

Zitieren:
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.

Zitieren:
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.

Langsam glaube ich aber beinahe selbst, dass ich beim lokalen Feld bleibe und die Idee mit Select nicht weiter verfolge. Immerhin ist es schon einmal eine Erleichterung, dass ich im lokalen Feld nicht mehr Strings kürzen muss :-) Möglicherweise befindet sich aber auch einfach noch ein gordischer Knoten im Kopf :-)

In jeden Fall schon einmal Danke fürs Mitdenken.

Viele Grüße
Andreas

Zuletzt bearbeitet am 02.02.16 14:59

03.02.16 10:29
MrBojangles 
Re: Query: Auslesen Stammdaten (Zusatzcoding ABAP) Problem SELECT Statement AUFK-KOSTV und CSKS-TELTX

Hallo Andreas,

versuchs mal bitte mit folgendem Coding:



Weiterhin viel Freude mit SAP...
Cheers
MrB.
Blog

Zuletzt bearbeitet am 03.02.16 11:42

03.02.16 11:22
AUnkelbach 

Re: Query: Auslesen Stammdaten (Zusatzcoding ABAP) Problem SELECT Statement AUFK-KOSTV und CSKS-TELTX

Hallo MrB.,

vielen Dank für deine Hilfe inklusive der Erläuterungen zum Code :-)

Durch die Codeanpassung funktioniert das Infoset nun perfekt und ich muss nicht mehr an irgendwelche weiteren Felder in der Query selbst denken sondern bekomme die Zuordnung direkt vom Infoset geliefert.... das stellt tatsächlich eine Erleichterung für die Auswertung dar :-)

Als kleine Ergänzung habe ich jedoch das * 1 behalten, da andernfalls die führenden 00 ebenfalls als Wert mit ausgegeben werden.

Durch *1 wird aus 001010 dann tatsächlich 1010 :-) In der Query wird das Feld ZUO als Textfeld ausgegeben, daher ist die Multiplikation erforderlich.

Viele Grüße
Andreas

03.02.16 11:36
MrBojangles 
Re: Query: Auslesen Stammdaten (Zusatzcoding ABAP) Problem SELECT Statement AUFK-KOSTV und CSKS-TELTX

Hallo Andreas,

freut mich, dass es geklappt hat. Ich tu mich nur immer schwer, wenn mathematische Operationen auf CHAR-Feldern angestellt werden. Sobald die Kostenstelle auch nur einen Buchstaben enthält, "dumpts". Daher mein Vorschlag zur Güte:

WRITE AUFK-KOSTV(6) TO ZUO NO-ZERO.

Weiterhin viel Freude mit SAP...
Cheers
MrB.
Blog

03.02.16 12:06
AUnkelbach 

Re: Query: Auslesen Stammdaten (Zusatzcoding ABAP) Problem SELECT Statement AUFK-KOSTV und CSKS-TELTX

Hallo MrB.


im Grunde hast du ja nicht unrecht damit solche Fälle abzufangen. Daher übernehme ich auch direkt deine Codezeile mit WRITE und bin mir sicher, dass auch unsere SAP Basis dankbarer ist, wenn ich keine Dumps produziere. :-) Zur Zeit kann ich mir zwar noch sicher sein, dass in den auszuwertenden Kostenstellen nur Nummern Zahlen vorhanden sind, allerdings ist dieses nicht für die Zukunft garantiert.... geschweige denn, dass es an anderer Stelle so sein muss.


Von daher Danke für deine diplomatische Korrektur und Erläuterungen zum Thema.

Viele Grüße und zumindest virtuell eine kleine Tasse [~]) als Danke

Andreas

 1
Stammdaten   CSKS-TELTX   CSKSTELTX   alphanumerische   Kostenstellenstamm   verantwortlichen   VOLLqualifiziertem   Kostenstelle   Querydefinition   Schlüsselbestandteil   Kostenstellen   auszuschliessen   Möglicherweise   Gültigkeitszeitraum   Einzelwertzuweisungen   verantwortliche   Erläuterungen   Kostenstellenstammsatz   Zusatzcoding   AUFK-KOSTV

SAP