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

Update a internal table

Former Member
0 Likes
529

Hi

I need a help..

I Have a program ,which read data from three diferent tables. I create a inner join between two, but the field key to the third is diferent. At one case a need

INNER JOIN vbkd AS d ON dvbeln = ivbeln_ncf

on other I need INNER JOIN vbkd AS d ON dvbeln = ivbeln_rf

How can i do this ?

this is my abap code

FORM get_data.

DATA:aux_bstkd LIKE vbkd-bstkd,

aux_bstdk LIKE vbkd-bstdk.

SELECT cmandt czproc cgrund cfrbnr_dc czrejeic cbstnk izitem_dev imblnr_df

ibudat_df ibldat_df cmatnr_dc imenge_df ikunnr imenge_drf i~vbeln_ncf

ivbeln_rf ivbeln_ec igrund ivkaus iaugru iwerks ilgort ist_forn i~st_cli

ist_glob itipo_ent "dbstkd dbstdk

INTO CORRESPONDING FIELDS OF TABLE lt_tab

FROM ( zmm_trocas_devol AS c

INNER JOIN zmm_trocdev_item AS i ON czproc = izproc )

  • INNER JOIN vbkd AS d ON dvbeln = ivbeln_ncf )

WHERE

i~zitem_dev NE ' ' AND

c~kunnr EQ s_kunnr AND

c~werks EQ s_werks AND

c~lgort EQ s_lgort AND

c~st_glob EQ 'C'.

BREAK-POINT.

ENDFORM.

i think that a solution is after this select, put a loop at lt_tab and update the field bstdk one by one... but i don´t know how to do it.

Thanks

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
489

Hi,

You will have to write 2 select queries and then merge the records



SELECT c~mandt c~zproc c~grund c~frbnr_dc c~zrejeic c~bstnk i~zitem_dev i~mblnr_df
i~budat_df i~bldat_df c~matnr_dc i~menge_df i~kunnr i~menge_drf i~vbeln_ncf
i~vbeln_rf i~vbeln_ec i~grund i~vkaus i~augru i~werks i~lgort i~st_forn i~st_cli
i~st_glob i~tipo_ent "d~bstkd d~bstdk
into CORRESPONDING FIELDS OF TABLE lt_tab
FROM ( zmm_trocas_devol AS c
INNER JOIN zmm_trocdev_item AS i ON c~zproc = i~zproc )

INNER JOIN vbkd AS d ON d~vbeln = i~vbeln_ncf ) 
WHERE
i~zitem_dev NE ' ' AND
c~kunnr EQ s_kunnr AND
c~werks EQ s_werks AND
c~lgort EQ s_lgort AND
c~st_glob EQ 'C'.

SELECT c~mandt c~zproc c~grund c~frbnr_dc c~zrejeic c~bstnk i~zitem_dev i~mblnr_df
i~budat_df i~bldat_df c~matnr_dc i~menge_df i~kunnr i~menge_drf i~vbeln_ncf
i~vbeln_rf i~vbeln_ec i~grund i~vkaus i~augru i~werks i~lgort i~st_forn i~st_cli
i~st_glob i~tipo_ent "d~bstkd d~bstdk
into CORRESPONDING FIELDS OF TABLE lt_tab_2
FROM ( zmm_trocas_devol AS c
INNER JOIN zmm_trocdev_item AS i ON c~zproc = i~zproc )

INNER JOIN vbkd AS d ON d~vbeln = i~vbeln_rf ) 
WHERE
i~zitem_dev NE ' ' AND
c~kunnr EQ s_kunnr AND
c~werks EQ s_werks AND
c~lgort EQ s_lgort AND
c~st_glob EQ 'C'.

You can then loop at lt_tab and merge the entries from lt_tab_2

regards,

Advait

3 REPLIES 3
Read only

Former Member
0 Likes
489

Hi Ricardo,

First you need to put a select query in 2 tables and then Loop at the join of the two table and do the select single on the basis of the output of the 2 table data.

Thanks,

Chidanand

Read only

Former Member
0 Likes
490

Hi,

You will have to write 2 select queries and then merge the records



SELECT c~mandt c~zproc c~grund c~frbnr_dc c~zrejeic c~bstnk i~zitem_dev i~mblnr_df
i~budat_df i~bldat_df c~matnr_dc i~menge_df i~kunnr i~menge_drf i~vbeln_ncf
i~vbeln_rf i~vbeln_ec i~grund i~vkaus i~augru i~werks i~lgort i~st_forn i~st_cli
i~st_glob i~tipo_ent "d~bstkd d~bstdk
into CORRESPONDING FIELDS OF TABLE lt_tab
FROM ( zmm_trocas_devol AS c
INNER JOIN zmm_trocdev_item AS i ON c~zproc = i~zproc )

INNER JOIN vbkd AS d ON d~vbeln = i~vbeln_ncf ) 
WHERE
i~zitem_dev NE ' ' AND
c~kunnr EQ s_kunnr AND
c~werks EQ s_werks AND
c~lgort EQ s_lgort AND
c~st_glob EQ 'C'.

SELECT c~mandt c~zproc c~grund c~frbnr_dc c~zrejeic c~bstnk i~zitem_dev i~mblnr_df
i~budat_df i~bldat_df c~matnr_dc i~menge_df i~kunnr i~menge_drf i~vbeln_ncf
i~vbeln_rf i~vbeln_ec i~grund i~vkaus i~augru i~werks i~lgort i~st_forn i~st_cli
i~st_glob i~tipo_ent "d~bstkd d~bstdk
into CORRESPONDING FIELDS OF TABLE lt_tab_2
FROM ( zmm_trocas_devol AS c
INNER JOIN zmm_trocdev_item AS i ON c~zproc = i~zproc )

INNER JOIN vbkd AS d ON d~vbeln = i~vbeln_rf ) 
WHERE
i~zitem_dev NE ' ' AND
c~kunnr EQ s_kunnr AND
c~werks EQ s_werks AND
c~lgort EQ s_lgort AND
c~st_glob EQ 'C'.

You can then loop at lt_tab and merge the entries from lt_tab_2

regards,

Advait

Read only

former_member585060
Active Contributor
0 Likes
489

Hi

Try with this statement.

( (zmm_trocdev_item AS i INNER JOIN zmm_trocas_devol AS c

ON izproc = czproc)

INNER JOIN vbkd AS d ON ivbeln_ncf = dvbeln)

WHERE

i~zitem_dev NE ' ' AND

c~kunnr EQ s_kunnr AND

c~werks EQ s_werks AND

c~lgort EQ s_lgort AND

c~st_glob EQ 'C'.

Regards

Bala Krishna

Edited by: Bala Krishna on Oct 30, 2008 4:10 PM