‎2006 Nov 14 11:07 PM
Hi All,
I am getting this error , can you please tell me what I am doing wrong with the select stmt.
SELECT AFKDAT ANETWR B~KZWI1
FROM VBRK AS A INNER JOIN VBRP AS B ON
AVBELN = BVBELN
INTO (IOUT-FKDAT, IOUT-NETWR, IOUT-KZWI1)
WHERE B~VBELN = IOUT-VBELV
AND B~POSNR = ISDOC-POSNR.
Incorrect nesting: Before the statement "ENDIF", the structure
introduced by "SELECT" must be concluded by "ENDSELECT". -
Thanks
Veni.
‎2006 Nov 15 12:41 AM
hi veni
add single in below select statement.
SELECT <b>SINGLE</b> VBELN INTO IOUT-VBELV FROM VBFA WHERE
VBELV = ISDOC-VBELN
AND POSNV = ISDOC-POSNR
AND VBTYP_N = 'O'.
IF SY-SUBRC = 0.
SELECT AFKDAT ANETWR B~KZWI1
FROM VBRK AS A INNER JOIN VBRP AS B ON AVBELN = BVBELN
INTO CORRESPONDING FIELDS OF IOUT
(IOUT-FKDAT, IOUT-NETWR, IOUT-KZWI1)
WHERE B~VBELN = IOUT-VBELV
AND B~POSNR = ISDOC-POSNR.
APPEND IOUT.
CLEAR IOUT.
ENDIF.
ENDLOOP.
ENDFORM.
Regards
Usman
‎2006 Nov 14 11:15 PM
There are many solutions. You coan creat an internal table with the structure of FKDAT, NETWR AND KZWI1, and place the statement lik this
SELECT AFKDAT ANETWR B~KZWI1
FROM VBRK
INTO TABLE INTERNAL_TABLE AS A INNER JOIN VBRP AS B ON
AVBELN = BVBELN
INTO (IOUT-FKDAT, IOUT-NETWR, IOUT-KZWI1)
WHERE B~VBELN = IOUT-VBELV
AND B~POSNR = ISDOC-POSNR.
Or there is only one field with those characteristics
SELECT SINGLE AFKDAT ANETWR B~KZWI1
FROM VBRK
INTO TABLE INTERNAL_TABLE AS A INNER JOIN VBRP AS B ON
AVBELN = BVBELN
INTO (IOUT-FKDAT, IOUT-NETWR, IOUT-KZWI1)
WHERE B~VBELN = IOUT-VBELV
AND B~POSNR = ISDOC-POSNR.
Give points if this helps u.
‎2006 Nov 14 11:19 PM
Hi,
IOUT is my internal table, it has lot of fields, thats why I wanted to send the values to specific fields of the table.
Thanks
Veni.
‎2006 Nov 14 11:25 PM
Try:
SELECT a~fkdat a~netwr b~kzwi1
FROM vbrk AS a
INNER JOIN vbrp AS b ON
a~vbeln = b~vbeln
INTO CORRESPONDING FIELDS OF TABLE iout
WHERE b~vbeln = iout-vbelv
AND b~posnr = isdoc-posnr.
Rob
Message was edited by:
Rob Burbank
‎2006 Nov 14 11:25 PM
Hello Veni,
Please let me know what is the structure of IOUT.
Thanks,
Kalyan
‎2006 Nov 14 11:19 PM
Hello Veni,
All you need to do is add an endselect after the sleect.
SELECT AFKDAT ANETWR B~KZWI1
FROM VBRK AS A INNER JOIN VBRP AS B ON
AVBELN = BVBELN
INTO (IOUT-FKDAT, IOUT-NETWR, IOUT-KZWI1)
WHERE B~VBELN = IOUT-VBELV
AND B~POSNR = ISDOC-POSNR.
<b>ENDSELECT.</b>
I hope this helps.
Thanks,
Kalyan
‎2006 Nov 14 11:23 PM
Hi,
Try this..
SELECT AFKDAT ANETWR B~KZWI1
FROM VBRK AS A INNER JOIN VBRP AS B ON
AVBELN = BVBELN
INTO <b>CORRESPONDING FIELDS OF TABLE IOUT</b>
WHERE B~VBELN = IOUT-VBELV
AND B~POSNR = ISDOC-POSNR
Thanks,
Naren
‎2006 Nov 14 11:25 PM
Hi Veni,
Please check this help
http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb39c4358411d1829f0000e829fbfe/frameset.htm
Thanks!
Lakshmikandh
‎2006 Nov 14 11:30 PM
Rafael, Naren and Rob have all come up with good solutions.....but do you really have the doc number in IOUT-VBELV? There may not be a problem with it but it is unusual to use the same field as the source and target in a select.
SELECT AFKDAT ANETWR B~KZWI1
FROM VBRK AS A INNER JOIN VBRP AS B ON
AVBELN = BVBELN
INTO (IOUT-FKDAT, IOUT-NETWR, IOUT-KZWI1)
WHERE B~VBELN = <b>IOUT-VBELV</b>
AND B~POSNR = ISDOC-POSNR.
‎2006 Nov 14 11:50 PM
Hi All,
I tried INTO CORRESPONDING FIELDS OF IOUT
but with this also same error is comming. I am sending part of code.
Please help me.
Thanks
Veni.
TABLES: VBAK, VBAP, KNA1, VBRK, VBRP, VBFA.
DATA: BEGIN OF ISDOC OCCURS 0,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
KUNNR LIKE VBAK-KUNNR,
ERDAT LIKE VBAK-ERDAT,
BSTNK LIKE VBAK-BSTNK,
MATNR LIKE VBAP-MATNR,
ARKTX LIKE VBAP-ARKTX.
DATA: END OF ISDOC.
DATA: BEGIN OF IOUT OCCURS 0,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
KUNNR LIKE VBAK-KUNNR,
NAME1 LIKE KNA1-NAME1,
ERDAT LIKE VBAK-ERDAT,
BSTNK LIKE VBAK-BSTNK,
MATNR LIKE VBAP-MATNR,
ARKTX LIKE VBAP-ARKTX,
VBELV LIKE VBRP-VBELN,
FKDAT LIKE VBRK-FKDAT,
NETWR LIKE VBRK-NETWR,
KZWI1 LIKE VBRP-KZWI1.
DATA: END OF IOUT.
FORM getdata.
SELECT A~VBELN B~POSNR A~KUNNR A~ERDAT A~BSTNK B~MATNR B~ARKTX
FROM VBAK AS A INNER JOIN VBAP AS B ON A~VBELN = B~VBELN
INTO TABLE ISDOC
WHERE A~AUART IN SAUART
AND A~ERDAT IN SERDAT
AND A~KUNNR IN SKUNNR.
SORT ISDOC BY VBELN POSNR.
LOOP AT ISDOC.
MOVE-CORRESPONDING ISDOC TO IOUT.
CLEAR: KNA1.
SELECT SINGLE * FROM KNA1 WHERE KUNNR = ISDOC-KUNNR.
IF SY-SUBRC = 0.
MOVE KNA1-NAME1 TO IOUT-NAME1.
ENDIF.
SELECT VBELN INTO IOUT-VBELV FROM VBFA WHERE VBELV = ISDOC-VBELN
AND POSNV = ISDOC-POSNR
AND VBTYP_N = 'O'.
IF SY-SUBRC = 0.
SELECT A~FKDAT A~NETWR B~KZWI1
FROM VBRK AS A INNER JOIN VBRP AS B ON A~VBELN = B~VBELN
INTO CORRESPONDING FIELDS OF IOUT
* (IOUT-FKDAT, IOUT-NETWR, IOUT-KZWI1)
WHERE B~VBELN = IOUT-VBELV
AND B~POSNR = ISDOC-POSNR.
APPEND IOUT.
CLEAR IOUT.
ENDIF.
ENDLOOP.
ENDFORM. " getdata
‎2006 Nov 14 11:58 PM
‎2006 Nov 15 12:08 AM
Hi Rafael,
I did not understand what to put after append and clear.
Thanks
Veni.
‎2006 Nov 15 12:14 AM
Hi,
use select single
SELECT <b>SINGLE</b> AFKDAT ANETWR B~KZWI1
FROM VBRK AS A INNER JOIN VBRP AS B ON AVBELN = BVBELN
INTO CORRESPONDING FIELDS OF IOUT
(IOUT-FKDAT, IOUT-NETWR, IOUT-KZWI1)
WHERE B~VBELN = IOUT-VBELV
AND B~POSNR = ISDOC-POSNR.
Thanks,
Naren
‎2006 Nov 15 12:41 AM
Hi naren,
Select single is also not working. Again same error.
Thanks
Veni.
‎2006 Nov 15 12:16 AM
Ja, sorry, i think i didn't saw it again.
APPEND IOUT.
ENDSELECT.
When it finish append de internal table go to the next register that finds in the select statement.
‎2006 Nov 15 12:41 AM
hi veni
add single in below select statement.
SELECT <b>SINGLE</b> VBELN INTO IOUT-VBELV FROM VBFA WHERE
VBELV = ISDOC-VBELN
AND POSNV = ISDOC-POSNR
AND VBTYP_N = 'O'.
IF SY-SUBRC = 0.
SELECT AFKDAT ANETWR B~KZWI1
FROM VBRK AS A INNER JOIN VBRP AS B ON AVBELN = BVBELN
INTO CORRESPONDING FIELDS OF IOUT
(IOUT-FKDAT, IOUT-NETWR, IOUT-KZWI1)
WHERE B~VBELN = IOUT-VBELV
AND B~POSNR = ISDOC-POSNR.
APPEND IOUT.
CLEAR IOUT.
ENDIF.
ENDLOOP.
ENDFORM.
Regards
Usman
‎2006 Nov 15 12:50 AM
Thank you Usman.
My error solved.
Thank you all for your help.
Veni.
‎2006 Nov 15 3:53 PM
Hi,
Change the VBFA Sql to select single..
SELECT <b>SINGLE</b> VBELN INTO IOUT-VBELV FROM VBFA WHERE VBELV = ISDOC-VBELN
AND POSNV = ISDOC-POSNR
AND VBTYP_N = 'O'.
Thanks,
Naren