RANGE

Getting started ... Alles für einen gelungenen Start.
12 Beiträge • Seite 1 von 1
12 Beiträge Seite 1 von 1

RANGE

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo liebe Experten!


Ich stehe vor dem Problem, daß ich mir eine RANGE aufbauen muß, nur leider weis ich nicht, wie ich vorgehen muß.


Ich habe das Feld ZUONR in dem folgende Daten drinnen stehen können. (Länderkennzeichen, Dienstleistungskennzeichen)


z.B: DE 2080

AT 4050

US 2070

..........


Nun brauche ich eine RANGE für meine Select-Options so_land und so_dlkz.


Hoffe Ihr könnt mir weiterhelfen, da ich im Moment leider ganz daneben stehe.


Vielen vielen Dank für Eure Hilfe!


Schöne Grüße


Robin

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


RANGE

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Noch etwas Coding ...


SELECT-OPTIONS: so_land FOR lfa1-land1,

so_perio FOR bkpf-monat.


PARAMETERS pa_gj LIKE bseg-gjahr.


SELECT-OPTIONS: so_dlkz FOR zdlkz_t-zdlkz MATCHCODE OBJECT zmysearch.

SELECT lifnr hkont belnr zuonr blart bukrs monat gjahr shkzg wrbtr

FROM bsik INTO CORRESPONDING FIELDS OF TABLE itab_sumla

WHERE bukrs = '1001'

AND blart IN ('A1', 'A2', 'A3')

AND bschl IN ('50', '40')

AND gjahr IN range

AND zuonr+3(4) IN ???

AND zuonr(2) IN ???

AND monat IN so_perio.

LOOP AT itab_sumla INTO wa_soha.

IF wa_soha-zuonr = space.

wa_soha-zdlkz = space.

wa_soha-land1 = space.

ELSE.

READ TABLE itab_lfa1 INTO wa_lfa1 WITH KEY land1 = wa_soha-zuonr(2).

IF sy-subrc = 0.

wa_soha-land1 = wa_lfa1-land1.

ENDIF.

ENDIF.

wa_soha-laenge = strlen( wa_soha-zuonr+3(4) ).

IF wa_soha-zuonr = space.

wa_soha-zdlkz = space.

wa_soha-land1 = space.

ELSEIF wa_soha-laenge 4.

wa_soha-zdlkz = space.

wa_soha-bezeichnung = space.

ELSE.

READ TABLE itab_zdlkz_t INTO wa_zdlkz WITH KEY zdlkz =

wa_soha-zuonr+3(4).

IF sy-subrc = 0.

wa_soha-zdlkz = wa_zdlkz-zdlkz.

wa_soha-bezeichnung = wa_zdlkz-bezeichnung.

ENDIF.

ENDIF.


MODIFY ?


ENDLOOP.

RANGE

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo liebe Helfer!


Bin leider noch nicht weitergekommen.


Kann mir irgendwer helfen?


Danke


Robin

Re: RANGE

Beitrag von Jufo (ForumUser / 43 / 0 / 0 ) »
Hi Robin,


Du weißt schon, daß Select-Options bereits Ranges sind? Du kannst in Deiner Selektionsbedingung also einfach Deine Select-Options einsetzen. Oder verstehe ich Dein Problem falsch?


Gruß, Jufo

Re: RANGE

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Jufo!


Ja, das weis ich.


Das Problem ist, daß ich zweimal das selbe Feld mit unterschiedlichen Werten dem Select übergeben will.


SELECT lifnr hkont belnr zuonr blart bukrs monat gjahr shkzg wrbtr


FROM bsik INTO CORRESPONDING FIELDS OF TABLE itab_sumla


WHERE bukrs = '1001'


AND blart IN ('A1', 'A2', 'A3')


AND bschl IN ('50', '40')


AND gjahr IN range


AND zuonr IN so_land -> nur die 1. beiden Stellen vom Feld zuonr


AND zuonr IN so_dlkz -> nur die 4. Stellen nach den erste drei Stellen


AND monat IN so_perio.


Verstehst Du mein Problem jetzt?


Hoffe Ihr könnt mir helfen!


Vielen vielen Dank!


Robin

Re: RANGE

Beitrag von Jufo (ForumUser / 43 / 0 / 0 ) »
Hi Robin,


ok, jetzt verstehe ich Dein Problem. Einen solche Teilstringabfrage wie in Deinem Beispiel sollte in einer Select-Bedingung auf Fehler laufen. Du kannst aber folgendes machen: Frag die Select-Options nicht direkt in der Selektionsbedingung ab sondern einen Schritt danach (hierfür in der Select-Anweisung vor itab_sumla auch die Anweisung TABLE entfernen!!):


SELECT lifnr hkont belnr zuonr blart bukrs monat gjahr shkzg wrbtr


FROM bsik INTO CORRESPONDING FIELDS OF itab_sumla


WHERE bukrs = '1001'


AND blart IN ('A1', 'A2', 'A3')


AND bschl IN ('50', '40')


AND gjahr IN range


AND monat IN so_perio.

IF itab_sumla-zuonr(2) IN so_land AND

itab_sumla-zuonr+3(4) IN so_dlkz.

APPEND itab_sumla .

ENDIF.


Endselect.

Re: RANGE

Beitrag von donny (Specialist / 253 / 0 / 2 ) »
Hi,


ich würde mir wohl 'ne weitere RANGE mit gleichem Feld definieren z.B. so_gesamt und damit arbeiten:


append lines of so_land to so_gesamt.


append lines of so_dlkz to so_gesamt.


Select .... where .... and zuonr in so_gesamt.


Damit kann die Datenbank bereits filtern und das ist wahrscheinlich fixer, als erstmal alle zu lesen.


Gruß


donny

Re: RANGE

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hi Donny!


Erstmals danke für Deine Antwort!


Habe es gerade so versucht wie Jufo es gemeint hat. Du hast wohl recht, daß es besser ist eine weitere RANGE zu definieren, da der Report jetzt doch ziemlich lange läuft.


Da ich doch noch ziemlicher Anfänger bin, wollte ich Dich fragen, ob Du mir da noch helfen kannst.


Wie gehe ich das nun genau an?


Vielen vielen Dank für Deine Hilfe!


Robin

RANGE

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo liebe Helfer!


Leider komme ich bei diesem Problem nicht weiter. Und zwar weis ich nicht, wie ich mir in diesem Fall eine Range aufbauen kann.


Könnt Ihr mir bitte weiterhelfen?


Vielen vielen Dank!!!


Robin

Re: RANGE

Beitrag von donny (Specialist / 253 / 0 / 2 ) »
Moin Robin,


Ich sehe gerade, daß so_land und so_dlkz ranges für unterschiedliche Felder sind. Beide sind dann Teile von zuonr. Dann wirds nix mit dem "append lines of ..." , das würde nur gehen, wenn alle ranges die gleichen Felder referenzieren.


Das einfachste wäre wohl, für den Zugriff so_zuonr als vollständiges Feld zu definieren:


select-options: so_zuonr for bsik-zuonr.


Dann kannst du das Feld in der where-Bedingung direkt verwenden. Die Anwender können dann im Feld das Suchmuster z.B. DE* oder A*0 oder was auch immer vorgeben.


Wenn du wirklich einzelne Select-options für Land und DLKZ anbieten willst, mußt du die Feldinhalte per loop über die Ranges einzeln in die Ziel-Range übertragen und dabei die Feldinhalte einzeln beachten. Ich glaube das wird von der logik zu kompliziert. Würde etwa so aussehen:


ranges: so_gesamt for bsik-zuonr.


loop at so_land.

case so_land-sign.

when 'I'.

if so_land-option = 'EQ'.

so_gesamt-sign = 'I'.

so_gesamt-option = 'EQ'.

so_gesamt-low(2) = so_land-low.

so_gesamt-low+2(1) = '*'.

append so_gesamt.

endif.

if so_land-option = 'CP'.

...

endif.

if so_land-option = 'BT'.

...

endif.

...

when 'E'.

...

endcase.


endloop.


append lines of so_land to so_gesamt.


Du müsstest also jede Mögliche Eingabe in deine range-Tabellen im Coding vorsehen. Vergiß es lieber.


Sorry


donny

Re: RANGE

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Donny!


Danke für Deine Antwort!


Habe das jetzt das Feld zuonr in eine Select-Option eingebunden. Nur leider funktioniert es nicht. Ich habe in den Select-Options DE* eingegeben, das Programm hat aber leider nichts rausgebracht.


Weist Du an was das liegen könnte?


Danke


Robin

Re: RANGE

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Donny!


Hab den Fehler schon gefunden!


Vielen vielen Dank für Deie Hilfe!


Schöne Grüße


Robin

Seite 1 von 1

Vergleichbare Themen

3
Antw.
1501
Views
Range-Tabelle gegen Range-Tabelle abgleichen
von Romaniac » 09.02.2024 16:26 • Verfasst in ABAP® Core
2
Antw.
1521
Views
RANGE OF
von Gast » 06.12.2005 14:31 • Verfasst in ABAP® für Anfänger
2
Antw.
1169
Views
Feldsymbol von Range
von Legxis » 06.11.2018 12:33 • Verfasst in ABAP® für Anfänger
5
Antw.
6111
Views
Range Alternative
von macjam » 18.10.2010 15:12 • Verfasst in ABAP Objects®
1
Antw.
1612
Views
'Range und FOR ALL ENTRIES
von eschi78 » 08.11.2007 09:51 • Verfasst in ABAP® Core

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor 4 Stunden von edwin 7 / 163
Daten an Tabelle binden
vor 18 Stunden von Bright4.5 3 / 1486

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 4 Stunden von edwin 7 / 163
Daten an Tabelle binden
vor 18 Stunden von Bright4.5 3 / 1486

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821