Abfragen und löschen aus einer "Tabelle"

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

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

Abfragen und löschen aus einer "Tabelle"

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

ich habe im Analyseprozessdesigner (APD) diverse Vorarbeiten gemacht, um ein "Ergebnis" zu bekommen.

Jetzt muss ich in dem APD noch weiter mit einer ABAP - Routine arbeiten

Code: Alles auswählen.

REPORT RSAN_WB_ROUTINE_TEMP_REPORT .

TYPES: BEGIN OF y_source_fields ,
         /B99/S_BWPKKD TYPE /B99/OIBWPKKD ,
         /B99/S_BWKVNR30 TYPE /B99/OIBWKVNR30 ,
         /B99/S_BWKIATT01 TYPE /B99/OIBWKIATT01 ,
         /B99/S_BWKIATT02 TYPE /B99/OIBWKIATT02 ,
         /B99/S_BWVART TYPE /B99/OIBWVART ,
         /GKV/BWARTBEIF TYPE /B99/OIBWARTBEIF ,
         /GKV/BWAUDATAB TYPE /B99/OIBWAUDATAB ,
         /GKV/BWAUDATBI TYPE /B99/OIBWAUDATBI ,
         /GKV/BWKGDATAB TYPE /B99/OIBWKGDATAB ,
         /GKV/BWKGDATBI TYPE /B99/OIBWKGDATBI ,
         /B99/S_BWVALIDFR TYPE /B99/OIBWVALIDFR ,
         /B99/S_BWVALIDTO TYPE /B99/OIBWVALIDTO ,
         /B99/S_BWFALLSTS TYPE /B99/OIBWFALLSTS ,
         /GKV/BWEZBEGDA TYPE /B99/OIBWEZBEGDA ,
         /GKV/BWEZENDDA TYPE /B99/OIBWEZENDDA ,
         /GKV/BWBEGDAT TYPE /B99/OIBWBEGDAT ,
         /GKV/BWENDDAT TYPE /B99/OIBWENDDAT ,
         /GKV/BWIMVERF TYPE /B99/OIBWIMVERF ,
         /GKV/BWFNR TYPE /B99/OIBWFNR ,
       END OF y_source_fields .
TYPES: yt_source_fields TYPE STANDARD TABLE OF y_source_fields .

TYPES: BEGIN OF y_target_fields ,
         ANZAHL TYPE /B99/OIBWANZGA ,
         /B99/S_BWPKKD TYPE /B99/OIBWPKKD ,
         /B99/S_BWKVNR30 TYPE /B99/OIBWKVNR30 ,
         /B99/S_BWKIATT01 TYPE /B99/OIBWKIATT01 ,
         /B99/S_BWKIATT02 TYPE /B99/OIBWKIATT02 ,
         /B99/S_BWVART TYPE /B99/OIBWVART ,
         /GKV/BWARTBEIF TYPE /B99/OIBWARTBEIF ,
         /GKV/BWAUDATAB TYPE /B99/OIBWAUDATAB ,
         /GKV/BWAUDATBI TYPE /B99/OIBWAUDATBI ,
         /GKV/BWKGDATAB TYPE /B99/OIBWKGDATAB ,
         /GKV/BWKGDATBI TYPE /B99/OIBWKGDATBI ,
         /B99/S_BWVALIDFR TYPE /B99/OIBWVALIDFR ,
         /B99/S_BWVALIDTO TYPE /B99/OIBWVALIDTO ,
         /B99/S_BWFALLSTS TYPE /B99/OIBWFALLSTS ,
         /GKV/BWEZBEGDA TYPE /B99/OIBWEZBEGDA ,
         /GKV/BWEZENDDA TYPE /B99/OIBWEZENDDA ,
         /GKV/BWBEGDAT TYPE /B99/OIBWBEGDAT ,
         /GKV/BWENDDAT TYPE /B99/OIBWENDDAT ,
         /GKV/BWIMVERF TYPE /B99/OIBWIMVERF ,
         /GKV/BWFNR TYPE /B99/OIBWFNR ,
       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.
Der erzeugte Code wird mir weitesgehend automatisch aufgebaut.
Nun zu meinem Problem:

Ich muss zu der Bedingung:
/GKV/BWKGDATAB = /GKV/BWEZBEGDA
and /GKV/BWKGDATBI = /GKV/BWEZENDDA. mir alle Fälle selektieren. Zu den gefundenen Fällen möchte ich alle Fälle mit den gleichen Inhalten: des Fldes /GKV/BWFNR TYPE /B99/OIBWFNR, dann aus der Ergebnissmenge löschen.

Ich weiß zwar wie ich das ganze per SQL lösen kann, komme jedoch durch meine geringen ABAP-Kenntnisse nicht weiter.

Wie kann ich die wohl nur im Arbeitsspeicher vorhandene über den APD ermittelten Ergebnisse vor der LOOP Schleife ansprechen?
Ich habe schon heraus gefunden, das ich die "Tabelle" it-source ansprechen kann und auch daraus löschen kann, jedoch kann ich hier keine SELECT Statements im klassichen Sinne abfeuern.
Kannich mir das ganze in eine Zwischentabelle speichen und mit dieser weiter arbeiten?
Wenn ja wie kann ich diese anlegen und befüllen, oder geht das auch nur mit den Typen ls_source, ls_target, it_source?

Ich würde mich echt freuen, wenn mir jemand unter die Arme greifen kann.

Schönes Wochenende.

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


Re: Abfragen und löschen aus einer "Tabelle"

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

Das Codingbeispiel sollte dir weiterhelfen:

Code: Alles auswählen.

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.
  FIELD-SYMBOLS: <lwa_source> TYPE y_source_fields.
  FIELD-SYMBOLS: <lwa_target> TYPE y_target_fields.

  LOOP AT it_source ASSIGNING <lwa_source>.
    IF     <lwa_source>-/gkv/bwkgdatab = <lwa_source>-/gkv/bwezbegda
       AND <lwa_source>-/gkv/bwkgdatbi = <lwa_source>-/gkv/bwezendda.
      "same timeslot => append only this BWFNR Record
      MOVE-CORRESPONDING <lwa_source> TO ls_target.
      APPEND ls_target TO et_target ASSIGNING <lwa_target>.

      "'count' /GKV/BWFNR entries
      LOOP AT it_source TRANSPORTING NO FIELDS WHERE /gkv/bwfnr = <lwa_target>-/gkv/bwfnr.
        <lwa_target>-anzahl = <lwa_target>-anzahl + 1.
      ENDLOOP.
    ENDIF.
  ENDLOOP.
*---------- End of transformation code ------------------------------
ENDFORM.                    "compute_data_transformation
Da es sich hier aber um BI-(Massen)-Daten handelt, kann das schon ne Zeit dauern!
Der "Count"-Teil ist auch nur als Beispiel zu sehen - hier gibt es natürlich auch andere Lösungen aber ohne Detailwissen (Mengengerüst, Keyfelder,...) ist eine Performanceoptimierung nicht möglich!

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

Re: Abfragen und löschen aus einer "Tabelle"

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

vielen Dank mit dem Beispiel komme ich schon wieder ein Stück weiter im ABAP zu Recht :-)
Leider hilft es mir noch nicht komplett weiter und trotzdem ich nun schon ein paar Stunden probiere und bastle komme ich nicht zum gewünschten Ergebnis.
Mit deiner Lösung zähle ich jetzt die Anzahl der Fälle, wo über die Fallnummer die Bedingung erfüllt ist.
Ich möchte aber alle die Fälle, wo die Bedingung zu einer Fallnummer nie erfüllt ist haben.
Diese Sätze bekomme ich aktuell gar nicht mehr ausgegeben.

Also:
Es gibt in meiner Ergbnismenge Fälle, wo die Bedingung für keinen einzigen Satz zutrifft und genau diese möchte ich ermitteln.

Ich vermute, dass ich die Fälle irgendwie vor dem LOOP ermitteln muss, oder?
Ich stelle mir das so vor, dass ich mir eine Zwischentabelle aufbaue und diese DAnn befülle und damit quer abfrage.
Geht das? Wenn ja wie oder geht es besser anders?

Wäre Klasse wenn Du noch mal helfen kannst.

Viele Grüße

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2596
Views
Interne Tabelle abfragen
von managero » 29.05.2008 14:07 • Verfasst in ABAP® für Anfänger
9
Antw.
3414
Views
Löschen des Inhalts in der Tabelle
von kaim77 » 08.01.2014 18:05 • Verfasst in ABAP® für Anfänger
4
Antw.
14362
Views
interne Tabelle löschen
von lisa » 17.09.2008 11:19 • Verfasst in ABAP® für Anfänger
14
Antw.
9811
Views
Löschen aus interner Tabelle
von Beginner014 » 21.11.2014 09:26 • Verfasst in ABAP® für Anfänger
5
Antw.
2792
Views
Dynamisches Löschen aus einer DB Tabelle
von hfahrian » 01.12.2004 10:34 • Verfasst in ABAP® Core

Ü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 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 168