‎2008 Aug 21 4:13 AM
Hi experts,
I'm encountering a problem in the select statement on the standard program it is an upgrade from ECC 6.0 for queries. The error encountered is "SQL error in the database when accessing a table". It has a problem in the SELECT statement while in other box that is not upgraded into ECC 6.0 it encounters no dump, does ECC 6.0 affect the SELECT statement? Can anybody help me with this.
This is from transaction st22:
Runtime Errors: DBIF_RSQL_SQL_ERROR
Exception : CX_SY_OPEN_SQL_DB
How to correct the error
Database error text........: "ORA-01445: cannot select ROWID from, or sample, a
join view without a key-preserved table"
Internal call code.........: "[RSQL/FTCH/LIKP ]"
Please check the entries in the system log (Transaction SM21).
The dump points here:
-->SELECT LIKPKUNAG LIKPKUNNR LIKPLFART LIKPVBELN LIKPVSTEL LIKPWADAT_IST VBUKVBELN VBUKWBSTK LIPSCHARG LIPSLFIMG LIPS~MATNR
LIPSPOSNR LIPSVBELN LIPSVRKME VBFAVBELN VBFAVBELV VTTPTKNUM VTTPVBELN KNA1ADRNR KNA1KUNNR KNA1NAME1 KNA1~NAME2
KNA1ORT01 KNA1STRAS MAKTMAKTX MAKTMATNR ADRCADDRNUMBER ADRCSORT2 VBAKAUART VBAKSPART VBAKVBELN VBAKVKORG
VBAKVTWEG KNVVKDGRP KNVVKUNNR KNVVSPART KNVVVKORG KNVVVTWEG
into (LIKP-KUNAG , LIKP-KUNNR , LIKP-LFART , LIKP-VBELN , LIKP-VSTEL , LIKP-WADAT_IST , VBUK-VBELN , VBUK-WBSTK , LIPS-CHARG
, LIPS-LFIMG , LIPS-MATNR , LIPS-POSNR , LIPS-VBELN , LIPS-VRKME , VBFA-VBELN , VBFA-VBELV , VTTP-TKNUM , VTTP-VBELN
, KNA1-ADRNR , KNA1-KUNNR , KNA1-NAME1 , KNA1-NAME2 , KNA1-ORT01 , KNA1-STRAS , MAKT-MAKTX , MAKT-MATNR , ADRC-ADDRNUMBER
, ADRC-SORT2 , VBAK-AUART , VBAK-SPART , VBAK-VBELN , VBAK-VKORG , VBAK-VTWEG , KNVV-KDGRP , KNVV-KUNNR , KNVV-SPART
, KNVV-VKORG , KNVV-VTWEG )
from ( LIKP
inner join VBUK
on VBUKVBELN = LIKPVBELN
inner join LIPS
on LIPSVBELN = LIKPVBELN
inner join VBFA
on VBFAVBELN = LIPSVBELN
left outer join VTTP
on VTTPVBELN = LIKPVBELN
inner join KNA1
on KNA1KUNNR = LIKPKUNNR
inner join MAKT
on MAKTMATNR = LIPSMATNR
left outer join ADRC
on ADRCADDRNUMBER = KNA1ADRNR
inner join VBAK
on VBAKVBELN = VBFAVBELV
inner join KNVV
on KNVVKUNNR = LIKPKUNAG
and KNVVSPART = VBAKSPART
and KNVVVKORG = VBAKVKORG
and KNVVVTWEG = VBAKVTWEG )
where LIKP~LFART in SP$00009
and LIKP~VBELN in SP$00003
and LIKP~VSTEL in SP$00002
and LIKP~WADAT_IST in SP$00005
and VBUK~WBSTK in SP$00004
and LIPS~MATNR in SP$00001
and VBAK~AUART in SP$00006
and VBAK~VBELN in SP$00007
and KNVV~KDGRP in SP$00008.
%dbacc = %dbacc - 1.
if %dbacc = 0.
stop.
endif.
check SP$00008.
check SP$00009.
check SP$00003.
check SP$00002.
check SP$00005.
check SP$00001.
check SP$00006.
check SP$00007.
check SP$00004.
add 1 to %count-LIKP.
%linr-LIKP = '01'.
extract %fg01.
%ext-LIPS01 = 'X'.
extract %fgwrLIPS01.
%linr-LIKP = '02'.
endselect.
And any idea on how to convert this using for all entries since it uses a standard table.
‎2008 Aug 21 4:23 AM
Same problem here. Selecting from standard table for queries using inner joins and upon execution it will have a runtime error.
Is their any limitation or any relation in using inner joins for current version in ECC6?
‎2008 Aug 21 4:39 AM
hi,
SELECT KUNAG KUNNR LFART VBELN VSTEL WADAT_IST
INTO CORRESPONDING FIELDS OF TABLE I_LIKP
FROM LIKP
WHERE LFART IN SP$00009
AND VBELN IN SP$00003
AND VSTEL IN SP$00002
AND WADAT_IST IN SP$00005.
IF NOT i_likp[] IS INITIAL.
SELECT VBELN WBSTK
INTO CORRESPONDING FIELDS OF TABLE I_VBUK
FROM VBUK
FOR ALL ENTRIES IN i_likp
WHERE VBELN EQ i_likp-VBELN
AND WBSTK IN SP$00004.
SELECT CHARG LFIMG MATNR POSNR VBELN VRKME
INTO CORRESPONDING FIELDS OF TABLE I_LIPS
FROM LIPS
FOR ALL ENTRIES IN i_likp
WHERE vbeln EQ i_likp-vbeln
AND MATNR in SP$00001.
SELECT VBELN VBELV
INTO CORRESPONDING FIELDS OF TABLE I_VBFA
FROM VBFA
FOR ALL ENTRIES IN i_likp
WHERE vbeln EQ i_likp-vbeln.
SELECT TKNUM VBELN
INTO CORRESPONDING FIELD OF i_vttp
FROM VTTP
FOR ALL ENTRIES IN i_likp
WHERE vbeln EQ i_likp-vbeln.
SELECT ADRNR KUNNR NAME1 NAME2 ORT01 STRAS
INTO CORRESPONDING FIELDS OF i_kna1
FROM KNA1
FOR ALL ENTRIES IN i_likp
WHERE kunnr EQ i_likp-kunnr.
SELECT MAKTX MATNR
INTO CORRESPONDING FIELDS OF TABLE i_makt
FROM makt
FOR ALL ENTRIES IN i_likp
WHERE matnr EQ i_likp-matnr.
IF NOT i_kna1[] IS INITIAL.
SELECT ADDRNUMBER SORT2
INTO CORRESPONDING FIELDS OF TABLE i_adrc
FROM adrc
FOR ALL ENTRIES IN i_kna1
WHERE addrnumber EQ i_kna1-adrnr.
ENDIF.
IF NOT i_vbfa[] IS INITIAL.
SELECT AUART SPART VBELN VKORG VTWEG
INTO CORRESPONDING FIELDS OF TABLE i_vbak
FROM vbak
FOR ALL ENTRIES IN i_vbfa
WHERE vbeln EQ i_vbfa-vbelv
AND AUART in SP$00006.
ENDIF.
SELECT KDGRP KUNNR SPART VKORG VTWEG
INTO CORRESPONDING FIELDS OF TABLE i_knvv
FROM knvv
FOR ALL ENTRIES IN i_likp
WHERE kunnr EQ i_likp-kunag
AND KDGRP in SP$00008.
ENDIF.
regards,
Peter