09-26-2008 1:28 AM
Hi Guys
I want to write a select statement in ABAP to select from 2 tables below is my code I want to write select within select statment in --->A and replace with ---> B
FORM sales_production_order USING p_vbeln TYPE vbeln_va
CHANGING p_aufnr TYPE aufnr
p_rtcod TYPE sysubrc.
CLEAR: p_rtcod,
p_aufnr.
A *******
SELECT aufnr FROM aufk INTO p_aufnr UP TO 1 ROWS
WHERE kdauf EQ p_vbeln .
B *******
SELECT kdauf from aufk into p_aufnr UP TO 1 ROWS
WHERE KDAUF IN ( SELECT VBELN FROM VBAP where vbeln EQ p_vbeln) .
ENDSELECT.
p_rtcod = sy-subrc.
ENDFORM. " sales
T
09-26-2008 2:18 AM
Hi Eslam,
In select statements, ENDSELECT must be added when single line returned without the addition 'SINGLE'.
The innner query in your code, returns a single record but with the addition 'UP TO 1 ROWS'. The outer query also like this only. But the outer query ended with 'ENDSELECT', not for inner query.
Else you can add 'SINGLE' keyword.
SELECT aufnr FROM aufk INTO p_aufnr UP TO 1 ROWS
WHERE kdauf EQ '10' .
SELECT SINGLE kdauf from aufk into p_aufnr
WHERE KDAUF IN ( SELECT VBELN FROM VBAP where vbeln EQ p_vbeln) .
ENDSELECT.
SELECT aufnr FROM aufk INTO p_aufnr UP TO 1 ROWS
WHERE kdauf EQ '10' .
***** It assigns Nth record's KDAUF to p_aufnr provided N records satisfy the condition.
SELECT kdauf from aufk into p_aufnr UPTO 1 ROWS
WHERE KDAUF IN ( SELECT VBELN FROM VBAP where vbeln EQ 'p_vbeln) .
ENDSELECT.
ENDSELECT.
Regards,
R.Nagarajan.
09-26-2008 2:18 AM
Hi Eslam,
In select statements, ENDSELECT must be added when single line returned without the addition 'SINGLE'.
The innner query in your code, returns a single record but with the addition 'UP TO 1 ROWS'. The outer query also like this only. But the outer query ended with 'ENDSELECT', not for inner query.
Else you can add 'SINGLE' keyword.
SELECT aufnr FROM aufk INTO p_aufnr UP TO 1 ROWS
WHERE kdauf EQ '10' .
SELECT SINGLE kdauf from aufk into p_aufnr
WHERE KDAUF IN ( SELECT VBELN FROM VBAP where vbeln EQ p_vbeln) .
ENDSELECT.
SELECT aufnr FROM aufk INTO p_aufnr UP TO 1 ROWS
WHERE kdauf EQ '10' .
***** It assigns Nth record's KDAUF to p_aufnr provided N records satisfy the condition.
SELECT kdauf from aufk into p_aufnr UPTO 1 ROWS
WHERE KDAUF IN ( SELECT VBELN FROM VBAP where vbeln EQ 'p_vbeln) .
ENDSELECT.
ENDSELECT.
Regards,
R.Nagarajan.
09-26-2008 2:31 AM
Hi Natrajan
Thanks for your answer but this statement is giving error as unexpected end of condition after 'p_vbeln Error is comming
FORM sales_production_order USING p_vbeln TYPE vbeln_va
CHANGING p_aufnr TYPE aufnr
p_rtcod TYPE sysubrc.
CLEAR: p_rtcod,
p_aufnr.
SELECT single aufnr FROM aufk INTO p_aufnr
WHERE kdauf EQ p_vbeln.
SELECT SINGLE kdauf from aufk into p_aufnr
WHERE KDAUF IN ( SELECT VBELN FROM VBAP where vbeln EQ p_vbeln) .
p_rtcod = sy-subrc.
ENDFORM. " sales_production_order
Thanks
Piroz
09-26-2008 2:42 AM
Hi Eslam,
Just give a space between 'p_vbeln' and ')'.
Now it's working?
Regards,
R.Nagarajan.
09-26-2008 2:41 AM
Hi Nagarajan
Thanks it works I forget to put ' at the end
SELECT SINGLE kdauf from aufk into p_aufnr
WHERE KDAUF IN ( SELECT VBELN FROM VBAP where vbeln EQ 'p_vbeln') .
Thread Closed
Regards
Piroz
09-26-2008 2:44 AM
Hi Eslam,
Don't put p_vbeln within single quotes.
Then it will not check for the value stored in p_vbeln.
Regards,
R.Nagarajan.
09-26-2008 2:56 AM
Hi Nagarajan
SELECT SINGLE kdauf from aufk into p_aufnr
WHERE KDAUF IN ( SELECT VBELN FROM VBAP where vbeln EQ ' p_vbeln ' ) .
Will this be ok it is compiling now