Hi,
ich habe ein paar sehr komische Probleme mit dem SELECT . Vielleicht ist euch ja schon mal etwas ähnliches passiert und ihr könnt mir Tipps geben.
Das Coding sieht in etwa so aus:
Code: Alles auswählen.
data: itab type any table,
ls like line of itab.
data: lv_where type text100.
DATA: g_ref_type TYPE REF TO cl_abap_structdescr,
g_data_ref_type TYPE REF TO cl_abap_elemdescr,
wa_comp TYPE abap_compdescr.
data: anz type i.
FIELD-SYMBOLS: <line> TYPE ANY.
append ls to itab.
READ TABLE itab INDEX 1 ASSIGNING <line>.
g_ref_type ?= cl_abap_typedescr=>describe_by_data( <line> ).
LOOP AT g_ref_type->components INTO wa_comp.
wa_comp-name.
concatenate wa_comp-name space '=' space 'LS-' wa_comp-name into lv_where.
select single count(*) from dbtab
into anz
where (lv_where)
group by mandt.
** Ausgabe bzw. Weiterverarbeitung von anz
ENDLOOP.
Problem 1:
In einem Syste läuft das ganze, aber es gibt einen ShortDump beim ~16 Durchlauf der Schleife, weil bereits zuviele Cursor offen seien. Ich habe aber gar keinen Cursor geöffnet. Woran könnte das liegen?
Problem 2:
gleicher Code - anderes System, es tritt ein Syntax-Fehler auf, weil statt der lv_where nur eine tabelle akzepiert wird.
Das ist zwar leicht zu beheben, aber trotzdem ärgerlich...
Problem 3:
Code wie oben, aber statt der lv_where benutze ich eine lt_where.
hier kommt zur Laufzeit der Fehler, dass die dynamische ansprache von Variablen nicht erlaubt sei.
d.h. es ist z.b. das " MANDT = LS-MANDT " nicht erlaubt.Gab es hier möglicherweisre Änderungen mit den Releases?
danke für eure Hilfe.
just