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

I am getting run time error showing to correct select statement while joining two tables with vebln.Please let me know the solution.

rajeshpulime
Explorer
0 Likes
2,014

*&---------------------------------------------------------------------*

*& Report  ZIT_3TABLESR

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  zit_3tablesr.

DATA : vbeln TYPE vbeln_va,

        audat TYPE audat,

        kunnr TYPE kunag,

        matnr TYPE matnr,

        netwr TYPE netwr.

TYPES : BEGIN OF st_table,

             vbeln TYPE vbeln_va,

             audat TYPE audat,

             kunnr TYPE kunag,

             matnr TYPE matnr,

             netwr TYPE netwr,

         END OF st_table.

DATA  : w_area TYPE st_table.

TYPES : tt_vbak TYPE TABLE OF st_table,

         tt_vbap TYPE TABLE OF st_table.

DATA  : tm_vbak TYPE tt_vbak,

         tm_vbap TYPE tt_vbap.

PARAMETERS : my_vbeln TYPE vbeln.

START-OF-SELECTION.

   SELECT  vbeln audat kunnr  FROM vbak INTO TABLE tm_vbak WHERE  vbeln = my_vbeln.

     SELECT  vbeln matnr netwr FROM vbap INTO TABLE tm_vbap for all entries in tm_vbak WHERE vbap~vbeln = tm_vbak-vbeln.

END-OF-SELECTION.

   WHILE ( sy-subrc = 0 ).

     READ TABLE tm_vbak INTO w_area INDEX sy-index.

     READ TABLE tm_vbap INTO w_area INDEX sy-index.

     WRITE : / w_area-vbeln,

               w_area-audat,

               w_area-kunnr,

               w_area-matnr,

               w_area-netwr.

   ENDWHILE.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,991

Hi,

your fields are not matching the structures of the tables. Please try

INTO CORRESPONDING FIELDS OF TABLE

instead OF INTO TABLE.

Regards,

Klaus 

*&---------------------------------------------------------------------*

*& Report  ZIT_3TABLESR

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  zit_3tablesr.

DATA : vbeln TYPE vbeln_va,

        audat TYPE audat,

        kunnr TYPE kunag,

        matnr TYPE matnr,

        netwr TYPE netwr.

TYPES : BEGIN OF st_table,

             vbeln TYPE vbeln_va,

             audat TYPE audat,

             kunnr TYPE kunag,

             matnr TYPE matnr,

             netwr TYPE netwr,

         END OF st_table.

DATA  : w_area TYPE st_table.

TYPES : tt_vbak TYPE TABLE OF st_table,

         tt_vbap TYPE TABLE OF st_table.

DATA  : tm_vbak TYPE tt_vbak,

         tm_vbap TYPE tt_vbap.

PARAMETERS : my_vbeln TYPE vbeln.

START-OF-SELECTION.

   SELECT  vbeln audat kunnr  FROM vbak INTO TABLE tm_vbak WHERE  vbeln = my_vbeln.

     SELECT  vbeln matnr netwr FROM vbap INTO TABLE tm_vbap for all entries in tm_vbak WHERE vbap~vbeln = tm_vbak-vbeln.

END-OF-SELECTION.

   WHILE ( sy-subrc = 0 ).

     READ TABLE tm_vbak INTO w_area INDEX sy-index.

     READ TABLE tm_vbap INTO w_area INDEX sy-index.

     WRITE : / w_area-vbeln,

               w_area-audat,

               w_area-kunnr,

               w_area-matnr,

               w_area-netwr.

   ENDWHILE.

9 REPLIES 9
Read only

Former Member
0 Likes
1,992

Hi,

your fields are not matching the structures of the tables. Please try

INTO CORRESPONDING FIELDS OF TABLE

instead OF INTO TABLE.

Regards,

Klaus 

Read only

0 Likes
1,991

Thanks for all

Read only

Former Member
0 Likes
1,991

This message was moderated.

Read only

kabil_g
Active Participant
0 Likes
1,991


Hi Rajesh,


you can do inner join as these example method....


SELECT-OPTIONS: s_vbeln FOR vbap-vbeln no intervals

DATA:BEGIN OF x_vbakvbap,

     vbeln TYPE vbak-vbeln,

     kunnr TYPE vbak-kunnr,

     netwr TYPE vbak-netwr,

     posnr TYPE vbap-posnr,

     matnr TYPE vbap-matnr,

     kwmeng TYPE vbap-kwmeng,

     arktx TYPE vbap-arktx,

     netpr TYPE vbap-netpr,

     END OF x_vbakvbap,

     it_vbakvbap LIKE TABLE OF x_vbakvbap.

SELECT vbak~vbeln vbak~kunnr vbak~netwr

       vbap~posnr vbap~matnr vbap~kwmeng

       vbap~arktx vbap~netpr

   INTO TABLE it_vbakvbap

   FROM vbak

   INNER JOIN vbap

   ON vbak~vbeln = vbap~vbeln

WHERE vbak~vbeln IN s_vbeln

   AND vbap~matnr IN s_matnr.

LOOP AT it_vbakvbap INTO x_vbakvbap.

  WRITE:/ x_vbakvbap-vbeln, x_vbakvbap-posnr,

          x_vbakvbap-matnr, x_vbakvbap-kwmeng,

          x_vbakvbap-arktx, x_vbakvbap-kunnr,

          x_vbakvbap-netpr, x_vbakvbap-netwr.

ENDLOOP.

Regards,

Kabil

Read only

archanapawar
Contributor
0 Likes
1,991

Hi Rajesh,

You are writing second select query incorrectly.

SELECT  vbeln matnr netwr FROM vbap INTO TABLE tm_vbap for all entries in tm_vbak WHEREvbap~vbeln = tm_vbak-vbeln.


change this query to


SELECT  vbeln matnr netwr FROM vbap INTO TABLE tm_vbap for all entries in tm_vbak WHERE vbeln = tm_vbak-vbeln.


Also, you need to define types for tm_vbap with required fields.

Read only

Lakshmipathi
Active Contributor
0 Likes
1,991

What is the Business requirement and what exactly you were trying to do ?  You should be aware many reports can be fetched via Logical Database or Table join in SQVI and I am not sure whether you have explored this option.

G. Lakshmipathi

Read only

Former Member
0 Likes
1,991


Hi Rajesh,

Try below code. It will work.

SELECT vbeln
                audat
               kunnr
     FROM vbak
     INTO TABLE tm_vbak
     WHERE vbeln = my_vbeln.


IF tm_vbak[]  IS NOT INITIAL.
     SELECT vbeln
                     matnr
                    netwr
       FROM vbap
       INTO TABLE tm_vbap
       FOR ALL ENTRIES IN tm_vbak
       WHERE vbeln = tm_vbak-vbeln.
ENDIF.

Regards,

Pravin

Read only

rajeshpulime
Explorer
0 Likes
1,991

yeah i got executed but its showing the document created (audat) all columns as 00.00.0000 what i have you do

I am new to abap prgraminng.

thanks in advance

Read only

0 Likes
1,991

Hi Rajesh,


Try these below code  do innerjoin as i did below


TABLES:vbap.

DATA:BEGIN OF x_vbakvbap,

      vbeln TYPE vbak-vbeln,

      audat TYPE vbak-audat,

      kunnr TYPE vbak-kunnr,

      matnr TYPE vbap-matnr,

      netwr TYPE vbak-netwr,

      END OF x_vbakvbap,

      it_vbakvbap LIKE TABLE OF x_vbakvbap.

SELECT-OPTIONS: s_vbeln FOR vbap-vbeln no intervals.

SELECT vbak~vbeln vbak~audat vbak~kunnr vbap~matnr vbak~netwr

    INTO TABLE it_vbakvbap

    FROM vbak

    INNER JOIN vbap

    ON vbak~vbeln = vbap~vbeln

WHERE vbak~vbeln IN s_vbeln.

LOOP AT it_vbakvbap INTO x_vbakvbap.

   WRITE:/ x_vbakvbap-vbeln,

           x_vbakvbap-audat,

           x_vbakvbap-matnr,

            x_vbakvbap-kunnr,

           x_vbakvbap-netwr.

ENDLOOP.