‎2008 Jun 20 7:15 AM
hi abap experts,
TABLES: SFLIGHT,SPFLI.
DATA: BEGIN OF ITAB_SFLIGHT,
CARRID LIKE SFLIGHT-CARRID,
CONNID LIKE SFLIGHT-CONNID,
FLDATE LIKE SFLIGHT-FLDATE,
PRICE LIKE SFLIGHT-PRICE,
CURRENCY LIKE SFLIGHT-CURRENCY,
CITYFROM LIKE SPFLI-CITYFROM,
AIRPFROM LIKE SPFLI-AIRPFROM,
PLANETYPE LIKE SFLIGHT-PLANETYPE,
END OF ITAB_SFLIGHT.
SELECT ACARRID AFLDATE APRICE BCITYFROM B~AIRPFROM INTO
(ITAB_SFLIGHT-CARRID,ITAB_SFLIGHT-FLDATE,ITAB_SFLIGHT-PRICE,
ITAB_SFLIGHT-CITYFROM,ITAB_SFLIGHT-AIRPFROM)
FROM SFLIGHT AS A INNER JOIN SPFLI AS B
ON aconnID = bConnID .
now it is telling that
Incorrect nesting: Before the end of the program, the structureintroduced by "SELECT" must be concluded by "ENDSELECT". -
‎2008 Jun 20 7:20 AM
Hi Ansuman Parhi,
Check below code... its working fine...
TABLES: SFLIGHT,SPFLI.
DATA: BEGIN OF ITAB_SFLIGHT1, " This is only Work Area
CARRID LIKE SFLIGHT-CARRID,
CONNID LIKE SFLIGHT-CONNID,
FLDATE LIKE SFLIGHT-FLDATE,
PRICE LIKE SFLIGHT-PRICE,
CURRENCY LIKE SFLIGHT-CURRENCY,
CITYFROM LIKE SPFLI-CITYFROM,
AIRPFROM LIKE SPFLI-AIRPFROM,
PLANETYPE LIKE SFLIGHT-PLANETYPE,
END OF ITAB_SFLIGHT1.
DATA : ITAB_SFLIGHT LIKE ITAB_SFLIGHT1 OCCURS 0 WITH HEADER LINE. " Declare internal table if u want to fill all the data in one table
SELECT A~CARRID A~FLDATE A~PRICE B~CITYFROM B~AIRPFROM INTO
(ITAB_SFLIGHT-CARRID, "Put the small brackets here ( )
ITAB_SFLIGHT-FLDATE,
ITAB_SFLIGHT-PRICE,
ITAB_SFLIGHT-CITYFROM,
ITAB_SFLIGHT-AIRPFROM ) "Put the small brackets here ( )
FROM SFLIGHT AS A INNER JOIN SPFLI AS B
ON A~CARRID = B~CARRID .
* Write ur logic here...Begin
WRITE : ITAB_SFLIGHT-CARRID, ITAB_SFLIGHT-FLDATE, ITAB_SFLIGHT-PRICE,
ITAB_SFLIGHT-CITYFROM, ITAB_SFLIGHT-AIRPFROM.
APPEND ITAB_SFLIGHT.
* Write ur logic here...End
ENDSELECT. " write ENDSELECT here
Pls don't post multiple threads for the same question..
Hope it will solve your problem..
Reward points if useful..
Thanks & Regards
ilesh 24x7
‎2008 Jun 20 7:17 AM
HI,
Use like below:
TABLES: sflight,spfli.
DATA: BEGIN OF itab_sflight,
carrid LIKE sflight-carrid,
connid LIKE sflight-connid,
fldate LIKE sflight-fldate,
price LIKE sflight-price,
currency LIKE sflight-currency,
cityfrom LIKE spfli-cityfrom,
airpfrom LIKE spfli-airpfrom,
planetype LIKE sflight-planetype,
END OF itab_sflight.
SELECT a~carrid
a~fldate
a~price
b~cityfrom
b~airpfrom
INTO (itab_sflight-carrid,
itab_sflight-fldate,
itab_sflight-price,
itab_sflight-cityfrom,
itab_sflight-airpfrom)
FROM sflight AS a INNER JOIN spfli AS b
ON aconnid = bconnid .
ENDSELECT.
OR
SELECT a~carrid
a~fldate
a~price
b~cityfrom
b~airpfrom
INTO CORRESPONDING FIELDS OF itab_sflight
FROM sflight AS a INNER JOIN spfli AS b
ON acarrid = bcarrid .
ENDSELECT.
Reward points if it is helpful.
Edited by: Ravi Kumar on Jun 20, 2008 8:37 AM
‎2008 Jun 20 7:17 AM
just place endselect after select
SELECT A~CARRID A~FLDATE A~PRICE B~CITYFROM B~AIRPFROM INTO
(ITAB_SFLIGHT-CARRID,ITAB_SFLIGHT-FLDATE,ITAB_SFLIGHT-PRICE,
ITAB_SFLIGHT-CITYFROM,ITAB_SFLIGHT-AIRPFROM)
FROM SFLIGHT AS A INNER JOIN SPFLI AS B
ON a~connID = b~ConnID .
endselect.
‎2008 Jun 20 7:17 AM
Hi,
Put the 'END SELECT' statement at the end of the 'SELECT' Statement.
Please read the postings in your earlier thread and raise the new Query.
Cheers,
SImha.
‎2008 Jun 20 7:18 AM
hi parhi...
Declare Internal table as
DATA: BEGIN OF ITAB_SFLIGHT OCCURS 0,
CARRID LIKE SFLIGHT-CARRID,
CONNID LIKE SFLIGHT-CONNID,
FLDATE LIKE SFLIGHT-FLDATE,
PRICE LIKE SFLIGHT-PRICE,
CURRENCY LIKE SFLIGHT-CURRENCY,
CITYFROM LIKE SPFLI-CITYFROM,
AIRPFROM LIKE SPFLI-AIRPFROM,
PLANETYPE LIKE SFLIGHT-PLANETYPE,
END OF ITAB_SFLIGHT.
add Occurs 0 with ur declaration
‎2008 Jun 20 7:20 AM
Hi Ansuman Parhi,
Check below code... its working fine...
TABLES: SFLIGHT,SPFLI.
DATA: BEGIN OF ITAB_SFLIGHT1, " This is only Work Area
CARRID LIKE SFLIGHT-CARRID,
CONNID LIKE SFLIGHT-CONNID,
FLDATE LIKE SFLIGHT-FLDATE,
PRICE LIKE SFLIGHT-PRICE,
CURRENCY LIKE SFLIGHT-CURRENCY,
CITYFROM LIKE SPFLI-CITYFROM,
AIRPFROM LIKE SPFLI-AIRPFROM,
PLANETYPE LIKE SFLIGHT-PLANETYPE,
END OF ITAB_SFLIGHT1.
DATA : ITAB_SFLIGHT LIKE ITAB_SFLIGHT1 OCCURS 0 WITH HEADER LINE. " Declare internal table if u want to fill all the data in one table
SELECT A~CARRID A~FLDATE A~PRICE B~CITYFROM B~AIRPFROM INTO
(ITAB_SFLIGHT-CARRID, "Put the small brackets here ( )
ITAB_SFLIGHT-FLDATE,
ITAB_SFLIGHT-PRICE,
ITAB_SFLIGHT-CITYFROM,
ITAB_SFLIGHT-AIRPFROM ) "Put the small brackets here ( )
FROM SFLIGHT AS A INNER JOIN SPFLI AS B
ON A~CARRID = B~CARRID .
* Write ur logic here...Begin
WRITE : ITAB_SFLIGHT-CARRID, ITAB_SFLIGHT-FLDATE, ITAB_SFLIGHT-PRICE,
ITAB_SFLIGHT-CITYFROM, ITAB_SFLIGHT-AIRPFROM.
APPEND ITAB_SFLIGHT.
* Write ur logic here...End
ENDSELECT. " write ENDSELECT here
Pls don't post multiple threads for the same question..
Hope it will solve your problem..
Reward points if useful..
Thanks & Regards
ilesh 24x7
‎2008 Jun 20 7:22 AM
Hi,
Please refer the code below :
SELECT A~CARRID A~FLDATE A~PRICE B~CITYFROM B~AIRPFROM INTO
(ITAB_SFLIGHT-CARRID,ITAB_SFLIGHT-FLDATE,ITAB_SFLIGHT-PRICE,
ITAB_SFLIGHT-CITYFROM,ITAB_SFLIGHT-AIRPFROM)
FROM SFLIGHT AS A INNER JOIN SPFLI AS B
ON a~connID = b~ConnID .
if sy-subrc eq 0.
write : itab_sflight,.......
endif.
ENDSELECT.
Thanks,
Sriram Ponna.
‎2008 Jun 20 7:22 AM
Hi,
change the code like this.
TABLES: SFLIGHT,SPFLI.
DATA: BEGIN OF ITAB_SFLIGHT occurs 0,
CARRID LIKE SFLIGHT-CARRID,
CONNID LIKE SFLIGHT-CONNID,
FLDATE LIKE SFLIGHT-FLDATE,
PRICE LIKE SFLIGHT-PRICE,
CURRENCY LIKE SFLIGHT-CURRENCY,
CITYFROM LIKE SPFLI-CITYFROM,
AIRPFROM LIKE SPFLI-AIRPFROM,
PLANETYPE LIKE SFLIGHT-PLANETYPE,
END OF ITAB_SFLIGHT.
SELECT ACARRID AFLDATE APRICE BCITYFROM B~AIRPFROM INTO
(ITAB_SFLIGHT-CARRID,ITAB_SFLIGHT-FLDATE,ITAB_SFLIGHT-PRICE,
ITAB_SFLIGHT-CITYFROM,ITAB_SFLIGHT-AIRPFROM)
FROM SFLIGHT AS A INNER JOIN SPFLI AS B
ON aconnID = bConnID .
append itab_sflight.
endselect.
Reward.
‎2008 Jun 20 7:23 AM
Hi,
A normal select like what you have written works as a loop.
It hits database again and again for each record matching the criteria.
Hence it is necessary to put ENDSELECT after a select.
Whatever processing you need to do should be put in SELECT...ENDSELECT.
This is performance wise not suggested.
Instead you can write SELECT * into table itab.
This will fetch all the records from database at once into table itab.
Then you can process the records in itab.
Performance wise this is a much better option to use instead of SELECT..ENDSLECT.
Regards,
Himanshu
‎2008 Jun 20 7:34 AM
Use the following:
DATA: IT_FLIGHT TYPE STANDARD TABLE OF ITAB_SFLIGHT.
SELECT ACARRID AFLDATE APRICE BCITYFROM B~AIRPFROM
INTO CORRESPODING FIELD OF TABLE IT_FLIGHT
FROM SFLIGHT AS A INNER JOIN SPFLI AS B
ON aconnID = bConnID .
‎2008 Jun 20 7:44 AM
Hi Ansuman,
The select query you have written fetches generally fetches more than 1 record, so either you need to have an 'END SELECT.' statement at the end, or if you need all the entries into the internal table ITAB_SFLIGHT then you need to use INTO CORRESPONDING FIELDS OF TABLE ITAB, in this case no need to use the ENDSELECT.
Please let me know if you still have the problem, else kindly close the thread.
Regards
Yugandhar
‎2008 Jun 20 8:07 AM
Hi,
Either use below code or have select......endselect syntax.
TABLES: SFLIGHT,SPFLI.
TYPES: BEGIN OF TYP_SFLIGHT,
CARRID TYPE SFLIGHT-CARRID,
CONNID TYPE SFLIGHT-CONNID,
FLDATE TYPE SFLIGHT-FLDATE,
PRICE TYPE SFLIGHT-PRICE,
CURRENCY TYPE SFLIGHT-CURRENCY,
CITYFROM TYPE SPFLI-CITYFROM,
AIRPFROM TYPE SPFLI-AIRPFROM,
PLANETYPE TYPE SFLIGHT-PLANETYPE,
END OF TYP_SFLIGHT.
DATA: ITAB_SFLIGHT TYPE STANDARD TABLE OF
TYP_SFLIGHT,
WA_ITAB_SFLIGHT LIKE LINE OF ITAB_SFLIGHT .
SELECT A~CARRID
A~FLDATE
A~PRICE
B~CITYFROM
B~AIRPFROM
INTO TABLE ITAB_SFLIGHT
FROM SFLIGHT AS A INNER JOIN SPFLI AS B
ON a~connID = b~ConnID .
Or else for your code you need to use select.....endselect.
SELECT A~CARRID A~FLDATE A~PRICE B~CITYFROM B~AIRPFROM INTO
(ITAB_SFLIGHT-CARRID,ITAB_SFLIGHT-FLDATE,ITAB_SFLIGHT-PRICE,
ITAB_SFLIGHT-CITYFROM,ITAB_SFLIGHT-AIRPFROM)
FROM SFLIGHT AS A INNER JOIN SPFLI AS B
ON a~connID = b~ConnID
ENDSELECT.
This will help you to solve your problem.
Plz reward if useful.
Thanks,
Dhanashri.
Edited by: Dhanashri Pawar on Jun 20, 2008 9:09 AM
‎2008 Jun 20 9:36 AM
Hi parthi,
once observe the SELECT statement types
1. if we use SELECT <dbfield1> <dbfield2>..... INTO <wa-itab> from <dbtab>
we should end this statement with ENDSELECT. because it retrieves single line at a time.'coz it works like loop through all lines of lines of a table.
2. if we use SELECT <dbfield1> <dbfield2>..... INTO TABLE <itab> from <dbtab>, it retrieves all lines at a time into an internal table <itab>. here it does n't need to be ended by ENDSELECT