|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() kercommun jp Inscription : décembre 2009 Messages : 32 ![]() |
Bonjour,
On me demande de faire une extraction pour recuperer ces champs : T023T-SPRAS T023T-WGBEZ T023-BKLAS T030-KONTS Les jointures sont les suivantes: T023T~MATKL = T023~MATKL T030_INT~BKLAS = T023~BKLAS Mon Problème vient du fait que l'on ne peut pas faire de jointure sur la table T030 . quelqu'un a-t-il une idée ??? |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Marianne ABAP Inscription : novembre 2008 Messages : 203 ![]() |
Bonjour,
Les jointures ne sont pas possibles pour certains types de tables : Pour les utilisations internes, comme par exemple la mémorisation de données de commande ou de textes saisis sans interruption, il existe les catégories de table suivantes : Table pool, Table cluster, etc Moi j'ai eu le cas avec la table BSEG (table cluster) qui a une grosse volumetrie, donc la jointure n'aurait surement pas ete perfomante. Il te suffit de faire 2 requetes distinctes. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() kercommun jp Inscription : décembre 2009 Messages : 32 ![]() |
J'ai fait 2 requêtes dont les résultats sont dans des tables internes (entry_tab et t_030).
Mais je ne parviens pas à récupérer le résultat pour faire à nouveau une jointure sur le champ bklas. Voici mon code, c'est le dernier select qui me pose probléme. Message d'erreur ENTRY_TAB is not defined in the ABAP Dictionary as a table D'avance merci pour votre aide ! TYPES: BEGIN OF entry_tab_type, groupe_marchandise type T023T-MATKL, designation_marchandise type T023T-WGBEZ, classe_valorisation type T023-BKLAS, END OF entry_tab_type. TYPES : BEGIN OF ts_t030, bklas TYPE t030-bklas, hkont TYPE t030-konth, END OF ts_t030. TYPES: BEGIN OF result_tab_type, groupe_marchandise type T023T-MATKL, designation_marchandise type T023T-WGBEZ, classe_valorisation type T030-BKLAS, compte_comptable1 type T030-KONTS, compte_comptable2 type T030-KONTH , END OF result_tab_type. DATA : t_t030 TYPE TABLE OF ts_t030 WITH HEADER LINE. DATA: entry_tab TYPE TABLE OF entry_tab_type WITH HEADER LINE. DATA: result_tab TYPE TABLE OF result_tab_type WITH HEADER LINE. DATA : entry_tab_tmp LIKE entry_tab[] . select WGBEZ as designation_marchandise BKLAS as classe_valorisation T023~MATKL as groupe_marchandise from T023T inner join T023 on T023~MATKL = T023T~MATKL INTO CORRESPONDING FIELDS OF TABLE entry_tab . IF NOT entry_tab IS INITIAL. "ou entry_tab[] pour table avec entête *Copie de table + Tri + Suppression des doublons = optimisation entry_tab_tmp = entry_tab[]. SORT entry_tab_tmp BY classe_valorisation. DELETE ADJACENT DUPLICATES FROM entry_tab_tmp COMPARING classe_valorisation. *Sélection des données. SELECT bklas konth FROM t030 INTO TABLE t_t030 FOR ALL ENTRIES IN entry_tab WHERE bklas = entry_tab-classe_valorisation and ktopl = 'Z100'. ENDIF. "NOT entry_tab IS INITIAL. select groupe_marchandise designation_marchandise classe_valorisation T030-KONTH from entry_tab join t_t030 on classe_valorisation = bklas. |
|
|
00
|
|
|
#4 |
|
Membre actif
![]() Marianne ABAP Inscription : novembre 2008 Messages : 203 ![]() |
tu ne peux pas faire de select sur une table interne (entry_tab est une table interne)
Soit tu peux passer par le dictionnaire en creant une table dans SE11 (tu devras faire des insert de entry_tab dans ta z_entry_tab et faire un delete a la fin de ton programme) c'est assez lourd, sinon tu vas devoir par exemple faire une boucle sur entry_tab et un read de la table t_030 pour alimenter une structure avec groupe_marchandise, designation_marchandise, classe_valorisation et KONTH |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() kercommun jp Inscription : décembre 2009 Messages : 32 ![]() |
Je ne trouve pas la syntaxe du read qui conviendrait.
peux tu me donner un exemple ? D'avance merci. |
|
|
00
|
|
|
#6 |
|
Membre actif
![]() Marianne ABAP Inscription : novembre 2008 Messages : 203 ![]() |
un exemple :
types : begin of t_result, groupe_marchandise type ..... designation_marchandise type .... classe_valorisation type .... KONTH type .... end of t_result. data : wt_result type table of t_result with header line. * les into si pas d header line Loop at entry_tab. (into l_entry) read table t_t030 (into l_t030) with key classe_valorisation = entry_tab-bklas. if sy-subrc = 0. wt_result-groupe_marchandise = entry_tab-groupe_marchandise. idem avec designation idem avec classe wt_result-konth = t_t030-konth. append wt_result. endif. endloop. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com