Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > ERP > SAP
SAP Forum d'entraide sur SAP et sur la programmation avec le langage ABAP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2011, 09h47   #1
Invité de passage
 
kercommun jp
Inscription : décembre 2009
Messages : 32
Détails du profil
Informations personnelles :
Nom : kercommun jp

Informations forums :
Inscription : décembre 2009
Messages : 32
Points : 0
Points : 0
Par défaut jointure avec table T030

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 ???
kercommun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 10h17   #2
Membre actif
 
Avatar de beuzy
 
Femme Marianne
ABAP
Inscription : novembre 2008
Messages : 203
Détails du profil
Informations personnelles :
Nom : Femme Marianne
Âge : 27
Localisation : France

Informations professionnelles :
Activité : ABAP

Informations forums :
Inscription : novembre 2008
Messages : 203
Points : 174
Points : 174
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.
beuzy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 13h52   #3
Invité de passage
 
kercommun jp
Inscription : décembre 2009
Messages : 32
Détails du profil
Informations personnelles :
Nom : kercommun jp

Informations forums :
Inscription : décembre 2009
Messages : 32
Points : 0
Points : 0
Par défaut jointure avec table T030

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.
kercommun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 14h44   #4
Membre actif
 
Avatar de beuzy
 
Femme Marianne
ABAP
Inscription : novembre 2008
Messages : 203
Détails du profil
Informations personnelles :
Nom : Femme Marianne
Âge : 27
Localisation : France

Informations professionnelles :
Activité : ABAP

Informations forums :
Inscription : novembre 2008
Messages : 203
Points : 174
Points : 174
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
beuzy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 15h02   #5
Invité de passage
 
kercommun jp
Inscription : décembre 2009
Messages : 32
Détails du profil
Informations personnelles :
Nom : kercommun jp

Informations forums :
Inscription : décembre 2009
Messages : 32
Points : 0
Points : 0
Par défaut jointure avec table T030

Je ne trouve pas la syntaxe du read qui conviendrait.
peux tu me donner un exemple ?

D'avance merci.
kercommun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 16h50   #6
Membre actif
 
Avatar de beuzy
 
Femme Marianne
ABAP
Inscription : novembre 2008
Messages : 203
Détails du profil
Informations personnelles :
Nom : Femme Marianne
Âge : 27
Localisation : France

Informations professionnelles :
Activité : ABAP

Informations forums :
Inscription : novembre 2008
Messages : 203
Points : 174
Points : 174
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.
beuzy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h03.


 
 
 
 
Partenaires

Hébergement Web