IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAP Discussion :

jointure avec table T030


Sujet :

SAP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 33
    Points : 17
    Points
    17
    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 ???

  2. #2
    Membre éclairé Avatar de beuzy
    Femme Profil pro
    SAP
    Inscrit en
    Novembre 2008
    Messages
    613
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : SAP
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 613
    Points : 705
    Points
    705
    Par défaut
    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.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 33
    Points : 17
    Points
    17
    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.

  4. #4
    Membre éclairé Avatar de beuzy
    Femme Profil pro
    SAP
    Inscrit en
    Novembre 2008
    Messages
    613
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : SAP
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 613
    Points : 705
    Points
    705
    Par défaut
    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

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 33
    Points : 17
    Points
    17
    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.

  6. #6
    Membre éclairé Avatar de beuzy
    Femme Profil pro
    SAP
    Inscrit en
    Novembre 2008
    Messages
    613
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : SAP
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 613
    Points : 705
    Points
    705
    Par défaut
    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.

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/09/2014, 18h12
  2. Jointure avec tables différentes selon les cas
    Par ninikkhuet dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/07/2014, 20h58
  3. Requête, jointures avec table de liaison
    Par lorenzo16160 dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/10/2013, 15h27
  4. @OneToMany - jointure avec table ou colonne ?
    Par Hole_geek dans le forum JPA
    Réponses: 0
    Dernier message: 14/03/2012, 12h24
  5. Jointure avec tables contenant des memes noms de champs
    Par guy2004 dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/01/2010, 10h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo