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
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: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
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |