‎2008 Oct 30 10:21 AM
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
‎2008 Oct 30 10:35 AM
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
‎2008 Oct 30 10:24 AM
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
‎2008 Oct 30 10:35 AM
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
‎2008 Oct 30 10:39 AM
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