SAP ABAP Case Programm

Liebe/-r Experte/-in,

Guten Tag,

ich braquche Unterstützung.

ich möchte aus der Tabelle EASTE-PERVERBR Periodenverbrauch auslesen. Zu dieser Periodenverbrauch-Spalte habe ich eine BONUS-Spalte angelegt.

Periodenverbrauch BONUS
4555 KWh 84,03 Euro

Tabelle:EASTE Spalten

LOGIKZW PERVERBR
10000 4000
10001 1000
usw…

Aus der Spalte-Ettifn Tabelle muss ich die Anlagen und Operand als Where bedingung (operand, ANlage definieren)

aus der EPREIH-Tabelle muss ich die erpreih-PREISBTR bekommen.

hier ist mein Coding:
********************

data: it_ettifn type standard table of ettifn,
it_easte_bo_pv_pf type standard table of easte,
wa_easte_bo_pv_pf type easte,
BONUSPVPF like epreih-preisbtr,
it_epreih_bo_pv_pf type standard table of epreih,
wa_epreih_bo_pv_pf type epreih.

*clear it_easte_bonipf.
*clear bonuspvar.
*clear bonuspvpf.

SELECT * FROM ettifn INTO TABLE it_ettifn
where operand = ‚SPRS_APBO‘
AND anlage = ever-anlage
* AND bis = wa_ettifn-bis
AND bis > ever-einzdat
AND bis =

Du machst’n Loop auf
„…it_easte_bo_pv_pf into wa_easte_bo_pv_pf…“
und fragst anschließend EASTE ab?!
Du mußt den Inhalt bzw. die Felder von „wa_easte_bo_pv_pf“ abfragen!

BTW: Ich habe keine spezielle Frage in Deiner Email gefunden. Wo Dein Problem liegt und so… :wink:

Gruß, Ingo

kann leider nicht helfen

Hallo Buenos,

mit diesen Tabellen (EASTE) kenne ich mich leider nicht aus.
Gruss
Peter

Hi Buenos,

wie willst Du denn die Auswertung realisieren?
Als Query oder Programm? Als Liste oder ALV?

Der Case ist schonmal richtig, nur überschreibst Du das Ergebnis mit der Zeile:
BONUSPVPF = wa_epreih_bo_pv_pf-preisbtr.
Also die kannst du weglassen bzw. sinnvoll ersetzen.
Dazu benötigst du aber erstmal eine Ausgabestruktur, die du mit der DATA-Anweisung definierst.
Danach kannst du in das zusätzliche Feld den Bonus eintragen.
Ausgeben musst Du das ganze auch noch.
Mit ALV oder einfach dem Write-Befehl?

CU Thomas

Hallo,

ich empfehle an dieser Stelle mal eines der dicken ABAP/4-Bücher zu konsultieren.
Im o.G. Quellcode ist doch einiges zu optimieren …

MfG
Heiko Zink

Hallo Buenos,
ich hoffe nicht das dies das komplette Programm ist
(:wink:). Da fehlt wohl einiges? Für was brauchst du it_ettifn woher kommt it_easte_bo_pv_pf. dann überschreibst du wa_easte_bo_pv_pf beim looop über it_easte_bo_pv_pf . Woher wird easte-PERVERBR gefüllt sollte wohl wa_easte_bo_pv_pf-PERVERBR heißen. Zu den when-Bedingungen kann ich nichts sagen habe ich so noch nie verwendet => heißt meines Erachtens entweder wert to wert oder between. Und zu guter letzt überschreibst du den Bonus mit wa_easte_bo_pv_pf-PERVERBR???
Der Write-Befehl muss dann in die schleife oder die Ausgabetabelle muss dort gefüllt werden. Ich hoffe ich konnte dir ein bisschen helfen.

Gruß Wolf-Dieter

Hallo Buenos,

was ist denn die konkrete Frage?

Viele Grüße,
Udo.

Hallo Thomas,

viele viele Dank für die Antwort und die Unterstützung.

damit du mehr weisst, das realisiere ich innerhalb einem Query.(Habe schon drei Zusätzlische Felder angelgt und auch schon gefüllt)

  1. Spalte heisst=ZVB entspricht verbrauchte Menge

zu dieser Spalte habe ich sie mit diesem Coding realisiert:
die ZVB , AB und BIS habe ich schon definiert.
in diesem Coding habe ich alle ZVB,AB und BIS dirn, möchte ich aber das Coding für die Spalte Ab und BIS getrennt machen, kannst du mir hier helfen, wie ich das mache??Danke
dieses Coding läuft auch richtig:smile:
*******************ZVB****AB****BIS****
DATA:
wa_ettifn TYPE ettifn,
it_ettifn TYPE STANDARD TABLE OF ettifn.
clear it_ettifn.
clear zvb.
clear ab.
clear bis.
SELECT * FROM ettifn INTO TABLE it_ettifn
WHERE operand = ‚SQUANT_HIS‘
AND anlage = ever-anlage
* AND bis = wa_ettifn-bis
AND bis > ever-einzdat
AND bis = ever-einzdat
AND bis = ever-einzdat
AND bis =

Hallo Ingo,

ich hoffe ich kann dir helfen bei dieser Frage:smile:

mehr Info:

viele viele Dank für die Antwort und die Unterstützung.

damit du mehr weisst, das realisiere ich innerhalb einem Query.(Habe schon drei Zusätzlische Felder angelgt und auch schon gefüllt)

  1. Spalte heisst=ZVB entspricht verbrauchte Menge

zu dieser Spalte habe ich sie mit diesem Coding realisiert:
die ZVB , AB und BIS habe ich schon definiert.
in diesem Coding habe ich alle ZVB,AB und BIS dirn, möchte ich aber das Coding für die Spalte Ab und BIS getrennt machen, kannst du mir hier helfen, wie ich das mache??Danke
dieses Coding läuft auch richtig:smile:
*******************ZVB****AB****BIS****
DATA:
wa_ettifn TYPE ettifn,
it_ettifn TYPE STANDARD TABLE OF ettifn.
clear it_ettifn.
clear zvb.
clear ab.
clear bis.
SELECT * FROM ettifn INTO TABLE it_ettifn
WHERE operand = ‚SQUANT_HIS‘
AND anlage = ever-anlage
* AND bis = wa_ettifn-bis
AND bis > ever-einzdat
AND bis = ever-einzdat
AND bis = ever-einzdat
AND bis =

Hallo Peter,

viele viele Dank für die Antwort und die Unterstützung.

damit du mehr weisst, das realisiere ich innerhalb einem Query.(Habe schon drei Zusätzlische Felder angelgt und auch schon gefüllt)

  1. Spalte heisst=ZVB entspricht verbrauchte Menge

zu dieser Spalte habe ich sie mit diesem Coding realisiert:
die ZVB , AB und BIS habe ich schon definiert.
in diesem Coding habe ich alle ZVB,AB und BIS dirn, möchte ich aber das Coding für die Spalte Ab und BIS getrennt machen, kannst du mir hier helfen, wie ich das mache??Danke
dieses Coding läuft auch richtig:smile:
*******************ZVB****AB****BIS****
DATA:
wa_ettifn TYPE ettifn,
it_ettifn TYPE STANDARD TABLE OF ettifn.
clear it_ettifn.
clear zvb.
clear ab.
clear bis.
SELECT * FROM ettifn INTO TABLE it_ettifn
WHERE operand = ‚SQUANT_HIS‘
AND anlage = ever-anlage
* AND bis = wa_ettifn-bis
AND bis > ever-einzdat
AND bis = ever-einzdat
AND bis = ever-einzdat
AND bis =

Hallo Heiko,

viele viele Dank für die Antwort und die Unterstützung.
Habe hier ein paare Beispiele für dich, vieleicvht brauche ich keine Loop hier???

damit du mehr weisst, das realisiere ich innerhalb einem Query.(Habe schon drei Zusätzlische Felder angelgt und auch schon gefüllt)

  1. Spalte heisst=ZVB entspricht verbrauchte Menge

zu dieser Spalte habe ich sie mit diesem Coding realisiert:
die ZVB , AB und BIS habe ich schon definiert.
in diesem Coding habe ich alle ZVB,AB und BIS dirn, möchte ich aber das Coding für die Spalte Ab und BIS getrennt machen, kannst du mir hier helfen, wie ich das mache??Danke
dieses Coding läuft auch richtig:smile:
*******************ZVB****AB****BIS****
DATA:
wa_ettifn TYPE ettifn,
it_ettifn TYPE STANDARD TABLE OF ettifn.
clear it_ettifn.
clear zvb.
clear ab.
clear bis.
SELECT * FROM ettifn INTO TABLE it_ettifn
WHERE operand = ‚SQUANT_HIS‘
AND anlage = ever-anlage
* AND bis = wa_ettifn-bis
AND bis > ever-einzdat
AND bis = ever-einzdat
AND bis = ever-einzdat
AND bis =

Hallo Wolf-Dieter,

  1. ettifn brauche wegen dem Operand, oder ist das falsch hier.

vielen vielen Dank für die Antwort und die Unterstützung.

damit du mehr weisst, das realisiere ich innerhalb einem Query.(Habe schon drei Zusätzlische Felder angelgt und auch schon gefüllt)

  1. Spalte heisst=ZVB entspricht verbrauchte Menge

zu dieser Spalte habe ich sie mit diesem Coding realisiert:
die ZVB , AB und BIS habe ich schon definiert.
in diesem Coding habe ich alle ZVB,AB und BIS dirn, möchte ich aber das Coding für die Spalte Ab und BIS getrennt machen, kannst du mir hier helfen, wie ich das mache??Danke
dieses Coding läuft auch richtig:smile:
*******************ZVB****AB****BIS****
DATA:
wa_ettifn TYPE ettifn,
it_ettifn TYPE STANDARD TABLE OF ettifn.
clear it_ettifn.
clear zvb.
clear ab.
clear bis.
SELECT * FROM ettifn INTO TABLE it_ettifn
WHERE operand = ‚SQUANT_HIS‘
AND anlage = ever-anlage
* AND bis = wa_ettifn-bis
AND bis > ever-einzdat
AND bis = ever-einzdat
AND bis = ever-einzdat
AND bis =

Hallo Buenos,

das ist mir leider zu abstrakt (ohne das man das Programm laufen sehen kann).
Man müßte die Frage evt. auf ein viel einfacheres
Beispiel reduzieren…

Gruss
Peter

Hallo Udo,

vielen vielen Dank für die Antwort und die Unterstützung.

damit du mehr weisst, das realisiere ich innerhalb einem Query.(Habe schon drei Zusätzlische Felder angelgt und auch schon gefüllt)

  1. Spalte heisst=ZVB entspricht verbrauchte Menge

zu dieser Spalte habe ich sie mit diesem Coding realisiert:
die ZVB , AB und BIS habe ich schon definiert.
in diesem Coding habe ich alle ZVB,AB und BIS dirn, möchte ich aber das Coding für die Spalte Ab und BIS getrennt machen, kannst du mir hier helfen, wie ich das mache??Danke
dieses Coding läuft auch richtig:smile:
*******************ZVB****AB****BIS****
DATA:
wa_ettifn TYPE ettifn,
it_ettifn TYPE STANDARD TABLE OF ettifn.
clear it_ettifn.
clear zvb.
clear ab.
clear bis.
SELECT * FROM ettifn INTO TABLE it_ettifn
WHERE operand = ‚SQUANT_HIS‘
AND anlage = ever-anlage
* AND bis = wa_ettifn-bis
AND bis > ever-einzdat
AND bis = ever-einzdat
AND bis = ever-einzdat
AND bis =

Hallo Buenos,

als Abfrage ob ein Wert in einem bestimmten Wertebereich liegt nutze BETWEEN. Genauere Informationen holst Du Dir am besten über die F1-Hilfe.

Viele Grüße
Karsten

Hallo,

die Anfrage geht im Rahmen von wer-weiss-was eindeutig zu weit.
Mit der Beantwortung solcher Fragen verdienen viele Leute (auch ich) den Lebensunterhalt …

MfG
Heiko Zink

Du muckelst also mit IS-U 'rum :wink:


loop at it_easte_bo_pv_pf into wa_easte_bo_pv_pf.

case easte-PERVERBR. "wo kommt das denn her?
case wa_easte_bo_pv_pf-PERVERBR. "ich würde diese Zeile nehmen.

Mit case fragst du den Inhalt ab.
Willst du mir sagen, dass der Inhalt von perverbr '0

so ungefähr…
vielleicht kannst du es jetzt verstehen??

data:
it_ettifn type standard table of ettifn,
it_easte_bo_pv_pf type standard table of easte,
wa_easte_bo_pv_pf type easte,

BONUSPVPF like epreih-preisbtr
it_epreih_bo_pv_pf type standard table of epreih,
wa_epreih_bo_pv_pf type epreih.

SELECT * FROM ettifn INTO TABLE it_ettifn
where operand = ‚SPRS_APBO‘
AND anlage = ever-anlage.

SORT it_easte_bo_pv_pf by bis DESCENDING.
READ TABLE it_easte_bo_pv_pf INDEX 1 INTO wa_easte_bo_pv_pf.

loop at it_easte_bo_pv_pf into wa_easte_bo_pv_pf.

case wa_easte_bo_pv_pf-PERVERBR.

when '0

Hallo!

Ich hatte geschrieben, dass ich mich „ausklinke“.
Es gibt genug Spezies, die sich mit dem Thema auskennen…

Viele Grüße,
Ingo