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

Error with select stmt.

Former Member
0 Likes
5,141

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
3,424

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

17 REPLIES 17
Read only

Former Member
0 Likes
3,424

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.

Read only

0 Likes
3,424

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.

Read only

0 Likes
3,424

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

Read only

0 Likes
3,424

Hello Veni,

Please let me know what is the structure of IOUT.

Thanks,

Kalyan

Read only

Former Member
0 Likes
3,424

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

Read only

Former Member
0 Likes
3,424

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

Read only

Former Member
0 Likes
3,424
Read only

former_member186741
Active Contributor
0 Likes
3,424

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.

Read only

0 Likes
3,424

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

Read only

Former Member
0 Likes
3,424

Put after

APPEND IOUT.

CLEAR IOUT.

ENDSELECT.

Read only

0 Likes
3,424

Hi Rafael,

I did not understand what to put after append and clear.

Thanks

Veni.

Read only

Former Member
0 Likes
3,424

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

Read only

0 Likes
3,424

Hi naren,

Select single is also not working. Again same error.

Thanks

Veni.

Read only

Former Member
0 Likes
3,424

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.

Read only

Former Member
0 Likes
3,425

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

Read only

0 Likes
3,424

Thank you Usman.

My error solved.

Thank you all for your help.

Veni.

Read only

Former Member
0 Likes
3,424

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