Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

syntax error

Former Member
0 Likes
1,053

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". -

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,016

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

12 REPLIES 12
Read only

Former Member
0 Likes
1,016

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

Read only

Former Member
0 Likes
1,016

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.

Read only

Simha_
Product and Topic Expert
Product and Topic Expert
0 Likes
1,016

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.

Read only

Former Member
0 Likes
1,016

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

Read only

Former Member
0 Likes
1,017

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

Read only

Former Member
0 Likes
1,016

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.

Read only

Former Member
0 Likes
1,016

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.

Read only

Former Member
0 Likes
1,016

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

Read only

Former Member
0 Likes
1,016

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 .

Read only

Former Member
0 Likes
1,016

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

Read only

Former Member
0 Likes
1,016

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

Read only

Former Member
0 Likes
1,016

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