Code: Alles auswählen.
SELECT SINGLE * FROM zsd_sofa2 INTO CORRESPONDING FIELDS OF ms_alv
WHERE id = ms_alv-id
AND cal_trnum IN s_trnum
Code: Alles auswählen.
SELECT SINGLE * INTO CORRESPONDING FIELDS OF ms_alv FROM zsd_sofa2
WHERE UPPER( cal_trnum ) IN s_trnum.
Dein anderes Datenelement zu nehmen ist leider keine Option."CAL_TRNUM" ist kein gültiger Vergleichsoperator.
warum nicht?hmaxi96 hat geschrieben: Dein anderes Datenelement zu nehmen ist leider keine Option.
Das wäre auch mein Tipp gewesen:ewx hat geschrieben:Dann nimm ein anderes Datenlement für die Sel-Opt.
Oder wandele alles vor dem Select in Upper Case um.
Code: Alles auswählen.
LOOP AT s_trnum ASSIGNING FIELD-SYMBOL( <trnum> ).
<trnum> = to_upper( <trnum> ).
ENDLOOP.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
hmaxi96
Jetzt kapiere ich das erst.......DeathAndPain hat geschrieben:Soweit ich den Threadersteller verstehe, ist ihm damit nicht geholfen, denn dann stehen in seiner internen RANGES-Tabelle zwar alle Werte in Großbuchstaben, aber auf der Datenbank stehen sie immer noch (teilweise) in Kleinbuchstaben, so dass der SELECT nichts findet.
Was ich an der Stelle machen würde, ist, die gesamte Tabelle zsd_sofa2 (oder die relevanten Spalten davon) in eine interne Puffertabelle vom Typ SORTED TABLE mit auf dem Text definiertem Schlüssel einzulesen, diese nach Großbuchstaben zu wandeln und dann darin zu suchen. Je nachdem, wie häufig Du auf diese Weise suchen musst, kann das sogar Performancevorteile bringen, und heutige Server haben so viel Hauptspeicher, dass das bei den allermeisten Tabellen kaum noch ein Thema ist.Das Problem ist nur dass der UPPER beim Select nicht funktioniert.
Müsste es nun irgendwie schaffen, den Text aus meiner DB-Tabelle in Großtext rauszulesen, ohne dass ich beim Datenelement den Haken für Kleinschreibung entferne und die DB-Tabelle anpasse. (Hat den Grund, dass auf diversen anderen Systemen[nicht SAP] auch Case-Sensitive gearbeitet wird)
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
hmaxi96
Code: Alles auswählen.
REPORT ztest_SQL.
TYPES:
BEGIN OF tp_trfzn,
ort01 TYPE ort01,
zzv_apo_ablocort TYPE zzv_apo_ablocort,
trfzn TYPE trfzn,
END OF tp_trfzn.
DATA:
r_salv TYPE REF TO cl_salv_table,
t_trfzn TYPE TABLE OF tp_trfzn,
w_trfzn TYPE tp_trfzn,
v_mandt TYPE mandt.
PARAMETERS:
p_ort01 TYPE ort01 DEFAULT 'CLAre'.
START-OF-SELECTION.
v_mandt = sy-mandt.
EXEC SQL PERFORMING APPEND_ITAB.
SELECT ORT01, ZZV_APO_ABLOCORT, TRFZN
FROM ZVFK_FRACHT_ZONE
INTO :W_TRFZN
WHERE MANDT = :V_MANDT
and UPPER(ORT01) LIKE upper(:P_ORT01)
ENDEXEC.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = r_salv
CHANGING
t_table = t_trfzn.
r_salv->display( ).
*&---------------------------------------------------------------------*
*& Form append_itab
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM append_itab.
APPEND w_trfzn TO t_trfzn.
ENDFORM. "append_cust
CDS-Views?thomas.klammer hat geschrieben:Ist es möglich mit exec sql eine dynamische where-bedingung zu haben?
Für mich ist es unglaublich, dass man 751 benötigt um eine simple Funktion wie "upper" nutzen zu können.