Fetch next bei Native SQL nicht möglich

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

Fetch next bei Native SQL nicht möglich

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
Hallo zusammen,

Hab das problem das ich nicht mithilfe von Native SQL Fetch next ausführen kann.

Hier erst mal der Quellcode:

Code: Alles auswählen.

Report YEGR_TEST_TEST.

*&--------------------------------------------------------------------*
*&      Form  Test
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->EP_TABLE   text
*      -->ITAB_TEST  text
*---------------------------------------------------------------------*
Form Test using ep_table type ref to data changing itab_test type
standard table.
  Write: / 'Es funzt immer noch.'.
  FIELD-SYMBOLS: <wa_it1> TYPE standard table,
                 <wa_it> type any.
*
  ASSIGN ep_table->* TO <wa_it1>.
*
*  assign itab_test to <wa_it1>.
  DATA: NEW_LINE type ref to data.
*
  create data NEW_LINE like line of <wa_it1>.
*
**** A field-symbol to access that work area
  assign NEW_LINE->*  to <wa_it>.


  EXEC SQL.
  OPEN CURSOR c
   SELECT
   HOB_KH_IK as Ik, count(*) as ANZAHL,
   AVG(ENTL_DATUM - HOB_AUFN_DAT) AS VWD,
   SUM(KOSTEN_GESAMT/100)  as KOSTEN
  FROM BUSI.BW02_K_FALL
  GROUP BY HOB_KH_IK

  ENDEXEC.


 DO.
      EXEC SQL.
        fetch next c into structure :<wa_it>.
      ENDEXEC.
      IF sy-subrc <> 0.
        EXIT.
      ENDIF.
      append <wa_it> to itab_test.
    ENDDO.

    EXEC SQL.
      close c
    ENDEXEC.

    write: / 'OK ?'.
endform.
Ich bekomme immer einen Laufzeitfehler mit der Meldung:
Tabelle wurde in Datenbank nicht gefunden.
Auslösender Fehler : Fetch Next

Tabelle exzistiert aber in DB.

Hab überlegt das ganze mit Performing zu machen und dann den Arbeitsbereich der Tabelle anhängen.
Aber bei Performing kann ich keine Parameter mitgeben wie z.b.

Code: Alles auswählen.

PERFORMING loop using <wa_it> changing itab_test
Hoffe mir kann jemand helfen.

Gruß Steffi

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


Beitrag von frisbee (ForumUser / 19 / 0 / 0 ) »
Hi,
ich glaube es heißt FETCH NEXT CURSOR C

Gruß

Frisbee

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
Hallo Frisbee,

ja so heißt das bei Open SQL. Bei Native SQL wird Fetch Next so ausgeführt wie ich es habe (laut ABAP Hilfe). Aber diese Hilfe sagt auch das Fetch zum Open SQL befehlssatz gehört aber unter Native SQL wird es angeboten.

Wäre für weitere Hilfe dankbar.

Gruß Steffi.

Beitrag von frisbee (ForumUser / 19 / 0 / 0 ) »
Sorry, wer lesen kann ist klar im Vorteil.

Bin leider auch nicht der Native-Profi, eventuell liegt es am OPEN CURSOR.
Wird der nicht bei Native mit
OPEN c FOR SELECT geöffnet.?

Mehr fällt mir nicht ein

Gruß

Frisbee

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
upps sorry du hast recht wird natürlich so geschrieben wie du als letztes meintes...war mein fehler.

Nur leider funktioniert das auch nicht und ich bekomme immer noch die gleiche Fehlermeldung :cry:

Beitrag von frisbee (ForumUser / 19 / 0 / 0 ) »
nimm mal im fetch das STRUCTURE raus

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
auch schon geschehen...leider funktioniert das immer noch nicht. Solangsam hab ich keine Idee mehr wo der Fehler liegen könnte.

Report sieht jetzt so aus:

Code: Alles auswählen.

Report YEGR_TEST_TEST.

*&--------------------------------------------------------------------*
*&      Form  Test
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->EP_TABLE   text
*      -->ITAB_TEST  text
*---------------------------------------------------------------------*
Form Test using ep_table type ref to data changing itab_test type
standard table.
  Write: / 'Es funzt immer noch.'.
  FIELD-SYMBOLS: <wa_it1> TYPE standard table,
                 <wa_it> type any.
*
  ASSIGN ep_table->* TO <wa_it1>.
*
*  assign itab_test to <wa_it1>.
  DATA: NEW_LINE type ref to data.
*       c type cursor.
*
  create data NEW_LINE like line of <wa_it1>.
*
**** A field-symbol to access that work area
  assign NEW_LINE->*  to <wa_it>.
*PERFORMING loop using <wa_it> changing itab_test

  EXEC SQL.
   open c for
   SELECT
   HOB_KH_IK as Ik, count(*) as ANZAHL,
   AVG(ENTL_DATUM - HOB_AUFN_DAT) AS VWD,
   SUM(KOSTEN_GESAMT/100)  as KOSTEN
  FROM BUSI.BW02_K_FALL
  GROUP BY HOB_KH_IK

  ENDEXEC.


 DO.
      EXEC SQL.
        fetch next c into :<wa_it>
      ENDEXEC.
      IF sy-subrc <> 0.
        EXIT.
      ENDIF.
      append <wa_it> to itab_test.
    ENDDO.

    EXEC SQL.
      close c
    ENDEXEC.

    write: / 'OK ?'.
endform.

Beitrag von frisbee (ForumUser / 19 / 0 / 0 ) »
Tjaaaa,

kannst Du mal einen select ohne cursor absetzen? Etwa so:
EXEC SQL.
SELECT irgendwas INTO :WA_IT FROM BUSI.BW02_K_FALL
ENDEXEC.

einfach um zu sehen, ob der zugriff auf die DB funktioniert
Mir gehen sonst auch die Ideen aus!

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
hab ich jetzt auch versucht und es kommt trotzdem zu nen laufzeitfehler...

ich weiß gar nicht warum??? *fragendguck*

Zur DB connect ich mich in meinen Rahmenprogramm, was dann wiederum eine Methode einer Klasse aufruft und dann wird das Unterprogramm aufgerufen.

Beitrag von frisbee (ForumUser / 19 / 0 / 0 ) »
alles was ich jetzt von mir gebe entspringt der Verzweiflung.
Wenn es beim normalen select zum Abbruch kommt, hast Du doch keine Verbindung zur DB oder? Ist Deine tabelle in der DBCON eingetragen und ist die Verbindung aktiv?
Gibt der Dump eine der native-sql-Fehlermeldungen zurück, beginnen mit DBIF_ oder EXSQL_

Ich habe sonst keinen Plan mehr

HAAALLOOOO sonst keiner da mit einer Idee??????????????

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
frisbee hat geschrieben:HAAALLOOOO sonst keiner da mit einer Idee??????????????
Wenn ich mir die Hilfe zu EXEC SQL anschaue wird dort in der Cursor-Verarbeitung immer mit einzelnen Data-Feldern gearbeitet, nie mit Strukturen.

Ich würde einmal versuchen, die gelesenen Daten nicht in eine Struktur, sondern in einzelne Felder zu stellen.
Gruß Hendrik

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
Hallo frisbee,

Komischer Weise ist die Verbindung zur DB wirklich weg. Ich weiß zwar nicht warum. aber es ist so. Hab sie jetzt im Programm nochmal gesetzt und es funktioniert.

Danke

@JHM
ich benötige die Strucktur, da ich die einzelnen Felder nicht kenne

Gruß Steffi

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
Schon komisch..mein Programm funktioniert jetzt aber das select-statement liefert nur die erste Spalte also es wird nur die erste Spalte gefüllt.

schon komisch. beim direkten ausführen des Statements auf der DB bekomme ich alle Spalten gefüllt. jemand ne ahnung warum das so ist?

Gruß Steffi

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2453
Views
Fetch next Cursor...
von MarkusW » 08.01.2008 12:31 • Verfasst in ABAP® Core
1
Antw.
2726
Views
Array-Fetch mit Umbenennen
von Snooze » 08.08.2005 17:16 • Verfasst in ABAP® Core
0
Antw.
1319
Views
TRACE: Erseter FETCH bei UP TO N Rows extrem hoch
von c0lt.seavers » 27.10.2008 11:38 • Verfasst in ABAP® Core
4
Antw.
4094
Views
Native SQL
von bliP! » 06.03.2006 15:49 • Verfasst in ABAP® für Anfänger
12
Antw.
4497
Views
Native SQL
von Bugfix13 » 12.09.2014 13:41 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Daten an Tabelle binden
vor 17 Stunden von Bright4.5 1 / 377
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2024
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8619