‎2009 Jan 06 10:00 AM
Hi ALL,
when i am executing native sql, it raises following exception:
CX_SY_NATIVE_SQL_ERROR
code as shown below:
REPORT ZABC2.
data:begin of ty_final occurs 0,
vkorg type vbrk-vkorg,
vtweg type vbrk-vtweg,
spart type vbrp-spart,
werks type vbrp-werks,
fkart type vbrk-fkart,
vbeln_invoice type vbrk-vbeln,
matnr type vbrp-matnr,
arktx type vbrp-arktx,
fkimg type vbrp-fkimg,
ntgew type vbrp-ntgew,
mwsbp type vbrp-mwsbp,
posnr type vbrp-posnr,
vbeln type likp-vbeln,
bldat type likp-bldat,
erdat type likp-erdat,
traid type likp-traid,
ernam type likp-ernam,
posnr_do type lips-posnr,
vbeln_so type vbak-vbeln,
audat_so type vbak-audat,
erdat_so type vbak-erdat,
ernam_so type vbak-ernam,
posnr_so type vbap-posnr,
vbeln_contract type vbak-vbeln,
audat_contract type vbak-audat,
erdat_contract type vbak-erdat,
ernam_contract type vbak-ernam,
vbtyp_contract type vbak-vbtyp,
posnr_contract type vbap-posnr,
end of ty_final.
TRY.
break-point.
EXEC SQL .
select
i1.inv_vkorg,
i1.inv_vtweg,
i1.inv_spart,
i1.inv_werks,
i1.inv_fkart,
i1.inv_vbeln,
i1.inv_matnr,
i1.inv_arktx,
i1.inv_fkimg,
i1.inv_ntgew,
i1.inv_mwsbp
i1.inv_posnr,
d.do_vbeln,
d.do_bldat,
d.do_erdat,
d.do_traid,
d.do_ernam,
d.do_posnr,
s.so_vbeln,
s.so_audat,
s.so_erdat,
s.so_ernam,
s.so_posnr,
c.co_vbeln,
c.co_audat,
c.co_erdat,
c.co_ernam,
c.co_vbtyp,
c.co_posnr
into :ty_final
from (SELECT
VBAK.VBELN co_vbeln,
VBAK.AUDAT co_audat,
VBAK.ERDAT co_erdat,
VBAK.ERNAM co_ernam,
VBAK.VBTYP co_vbtyp,
VBAP.POSNR CO_POSNR
FROM VBAK , VBAP
WHERE VBAK.VBELN=vbap.vbeln
and vbak.vbtyp='G') c,
(SELECT
vbak.vbeln so_vbeln,
vbak.audat so_audat,
vbak.erdat so_erdat,
vbak.ernam so_ernam,
vbap.posnr so_posnr
FROM VBAK ,VBAP
WHERE vbak.VBELN=vbap.vbeln
and vbak.vbtyp='C') s,
(SELECT
likp.vbeln do_vbeln,
likp.bldat do_bldat,
likp.erdat do_erdat,
likp.traid do_traid,
likp.ernam do_ernam,
lips.posnr do_posnr
FROM LIKP , LIPS
WHERE likp.VBELN=lips.vbeln
and likp.vbtyp='J'.
) d,
(SELECT
vbrk.vkorg inv_vkorg,
vbrk.vtweg inv_vtweg,
vbrp.spart inv_spart,
vbrp.werks inv_werks,
vbrk.fkart inv_fkart,
vbrk.vbeln inv_vbeln,
vbrp.matnr inv_matnr,
vbrp.arktx inv_arktx,
vbrp.fkimg inv_fkimg,
vbrp.ntgew inv_ntgew,
vbrp.mwsbp inv_mwsbp,
vbrp.posnr inv_posnr
FROM VBRK , VBRP
WHERE vbrk.VBELN=vbrp.vbeln
AND vbrk.VBTYP='M'
AND vbrk.FKART NOT IN ('S1','S2','S3')
AND vbrk.FKSTO<>'X') i1,
(SELECT
vbelv,
POSNV,
vbtyp_v,
vbeln,
POSNN,
vbtyp_n
FROM VBFA
where VBTYP_V='G'
AND VBTYP_N='C'
) f1,
(SELECT
vbelv,
POSNV,
vbtyp_v,
vbeln,
POSNN,
vbtyp_n
FROM VBFA
where VBTYP_V='C'
AND VBTYP_N='J'
) f2,
(SELECT
vbelv,
POSNV,
vbtyp_v,
vbeln,
POSNN,
vbtyp_n
FROM VBFA
where VBTYP_V='J'
AND VBTYP_N='M'
) f3
where c.vbeln=f1.vbelv(+)
and f1.vbeln=f2.vbelv(+)
and s.vbeln=f2.vbelv(+)
and f2.vbeln=f3.vbelv(+)
and d.vbeln=f3.vbelv(+)
and i1.vbeln=f3.vbeln(+)
ENDEXEC.
**and c.vbeln=f3.vbelv(+)
**and i1.vbeln=d.vbeln(+)
**
*if sy-subrc <> 0.
CATCH CX_SY_NATIVE_SQL_ERROR.
ENDTRY.
*ENDIF.
break-point.
‎2009 Jan 06 10:26 AM
Hi,
Try using this ..
data ref1 type ref to CX_SY_NATIVE_SQL_EROR.
try.
exec sql.
...
endexec.
catch CX_SY_NATIVE_SQL_EROR.
write 'Error ', ref1->SQL_ERROR.
RAISE EXCEPTION myref.
endtry.
Edited by: Vasavi Kotha on Jan 6, 2009 11:26 AM
‎2009 Jan 06 10:38 AM
What does the dump say? Oh, and if you enclose your code in code tags it will make it easier to read.