SQL im APAB

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

SQL im APAB

Beitrag von meistercoach (ForumUser / 22 / 13 / 0 ) »
Hallo zusammen,

grad eingesteigen schon die 2. Baustelle.
Ich habe eine Tabelle, welche ich mit sich selbst verknüpfen muss.
im SQL sieht das ganze so aus:

select a.*,b.beginn from a as a inner join a as b on a.nummer = b.nummer and a.beginn >= b.ende

Wie kann ich das ganze jetzt mit dem ABAP lösen.
Ich habe im BW alle Objekte definiert, weiß aber nicht wie ich mit DATA und TYPE,... umgehen muss.
Kann mir jemand helfen?

Bisher sieht mein vorgefertigter APAB durch einen automatischen Editor so aus:

Code: Alles auswählen.

REPORT RSAN_WB_ROUTINE_TEMP_REPORT .

TYPES: BEGIN OF y_source_fields ,
         ID1 TYPE ObjektID ,
          BWMELDBEG TYPE OIBWMELDBEG ,
          BWMELDEND TYPE OIBWMELDEND ,
       END OF y_source_fields .
TYPES: yt_source_fields TYPE STANDARD TABLE OF y_source_fields .

TYPES: BEGIN OF y_target_fields ,
         ID1 TYPE ObjektID ,
          BWMELDBEG TYPE OIBWMELDBEG ,
          BWMELDEND TYPE OIBWMELDEND ,
       END OF y_target_fields .
TYPES: yt_target_fields TYPE STANDARD TABLE OF y_target_fields .
*---------- Begin of type definitions -------------------------------

*----------- End of type definitions --------------------------------
FORM compute_data_transformation
     USING     it_source TYPE yt_source_fields
               ir_context TYPE REF TO if_rsan_rt_routine_context
     EXPORTING et_target TYPE yt_target_fields .
*--------- Begin of transformation code -----------------------------

  DATA:
        ls_source TYPE y_source_fields,
        ls_target TYPE y_target_fields.


  LOOP AT IT_SOURCE INTO ls_source.
    MOVE-CORRESPONDING LS_SOURCE TO ls_target.
    APPEND ls_TARGET TO et_target.
  ENDLOOP.

*---------- End of transformation code ------------------------------
ENDFORM.
Hier werden mir alle Werte aus der Tabelle zurückgegeben.
Ich muss diese Tabelle wie oben beschrieben mit ich selsbt verknüpfen (über ID1 und eine Bedingung von BWMELDBEG >= BWMELDEND herstellen).

Hoffe es kann mir jemand helfen.

Grüße

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


Re: SQL im ABAP

Beitrag von PeterPaletti (Specialist / 336 / 29 / 96 ) »
Verstehe ich nihct so ganz.
Du willst nur die Datensätze wo BWMELDBEG >= BWMELDEND aus der Source ins Target stellen?
Da würde doch eine einfache IF-Abfrage im LOOP reichen.

Code: Alles auswählen.

LOOP AT IT_SOURCE INTO ls_source.
   if LS_SOURCE-BWMELDBEG >= LS_SOURCE-BWMELDEND.
    MOVE-CORRESPONDING LS_SOURCE TO ls_target.
    APPEND ls_TARGET TO et_target.
    endif. 
  ENDLOOP.

Re: SQL im APAB

Beitrag von meistercoach (ForumUser / 22 / 13 / 0 ) »
Okay, gebe mich geschlagen, so wie ich es beschrieben habe hast du Recht.

Ich wollte mein Problem einfacher darstellen und dann selber erweitern.
Das Problem ist:
In Tabelle a
stehen in Spalte a betriebe
in Spalte b die jeweiligen Mitarbeiter dazu
in Spalte c Beginn der Mitarbeiters
in Splate c Ende des Mitarbeiters
in Spalte d,... x weitere Angaben

Ich muss im ersten Schritt zu bestimmten Betrieben (Spalte a) die Mitarbeiter zu mehreren Stichtagen selektieren.
Anschliessend muss ich prüfen, ob die Mitarbeiter, welche in anderen Betrieben wieder auftauchen, sollten sie ausgeschieden sein.

Also:

select *
from a as Mitarbeiter_neu inner join (
select distinct
a,b,c, d from a
where a in('Mueller','meier','schulze')
and Year(c)<=2011 ) as betriebe
on Mitarbeiter_neu.b = betriebe.b
and Mitarbeiter_neu.c >= betriebe.d

Ich hoffe jetzt ist es klar geworden.

Grüße

Re: SQL im APAB

Beitrag von PeterPaletti (Specialist / 336 / 29 / 96 ) »
So ungefähr ist es klar geworden.

Dann mach doch erstmal ein LOOP über die Tabelle und selektiere dir die passenden Mitarbeiter in eine Zwischentabelle.
Dann Loopst du über die Zwischentabelle und prüfst gegen die Ausgangstabelle, ob die Mitarbeiter in anderen Betrieben wieder auftauchen.

Re: SQL im APAB

Beitrag von meistercoach (ForumUser / 22 / 13 / 0 ) »
So ähnlich wollte ich das auch machen, aber genau da fehlt mir das ABAP Wissen.
Wo muss ich was defenieren, damit ich am Ende auf alles zugreifen kann.

Kannst du mir das ganze grob niederschreiben?
Das wäre echt Klasse.

Re: SQL im APAB

Beitrag von meistercoach (ForumUser / 22 / 13 / 0 ) »
Hallo,

kann mir wirklich keiner ganz grob einen kleines Bsp. schreiben, wie ich einen Select in einen APAB- einbaue und das ganze per Loop SChleife ausgeben kann?

Schönes Wochenende.

Re: SQL im APAB

Beitrag von meistercoach (ForumUser / 22 / 13 / 0 ) »
Hallo zusammen,

ich habe jetzt das Internet mit seinen Foren durchwühlt, aber komme imme rnoch nicht weiter.
Hat nicht jeamnd einen Lösungstipp?

Danke.

Re: SQL im APAB

Beitrag von bigld (ForumUser / 9 / 1 / 3 ) »
Hi

Ich bin mir nicht ganz sicher ob ich dich verstanden haben, aber was spricht gegen:

Code: Alles auswählen.

" liefere mit alle Mitarbeiter mit Name 'Mueller','Meier','Schulze' (Das ist sicher nicht der Key ;-)!) aus Tabelle a, die seit 2011 in einem Betrieb sind,
" aber nicht im selben Jahr oder früher in einem anderen Betrieb waren    
SELECT * FROM a AS mitarbeiter_neu WHERE mitarbeiter in ('Mueller','Meier','Schulze')
                                     AND year >= '2011'
                                     AND NOT EXISTS ( SELECT * FROM a AS mitarbeiter_füher WHERE mitarbeiter_füher~mitarbeiter =  mitarbeiter_neu~mitarbeiter 
                                                                                             AND mitarbeiter_füher~Year        <= '2011'
                                                                                             AND mitarbeiter_füher~betrieb     <> mitarbeiter_neu~betrieb )
Ist das deine Anforderung?

Das sollte funktionieren, allerdings ist die Performance hier stark von der Tabellengröße abhängig


lg
Domi Bigl

Folgende Benutzer bedankten sich beim Autor bigld für den Beitrag:
meistercoach

--------------------------------------------------------------------------------------------------------------
Die Performance und Ergebnisse von SELECTs und JOINs im Produktivsystem überprüfen?
=> SQL Cockpit
http://www.cadaxo.com

Seite 1 von 1

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141