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 :

Select table dynamique


Sujet :

SAP

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

    Informations professionnelles :
    Activité : SAP
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 612
    Points : 705
    Points
    705
    Par défaut Select table dynamique
    Bonjour,
    Je dois faire un état qui va lire les remises applicable à un client.
    Table A000 à A999 je recherche dans la DD03L pour ces tables celle qui ont le client dans la séquence d'accès.
    Ensuite je voudrais faire quelque chose comme ceci :
    SELECT * FROM (L_DD03L-TABNAME)
    INTO TABLE <FS_DYNTAB>
    WHERE (L_DD03L-FIELDNAME) IN R_KUNNR.

    ou

    SELECT * FROM (L_DD03L-TABNAME)
    INTO TABLE <FS_DYNTAB>.

    DELETE (L_DD03L-TABNAME) WHERE (L_DD03L-FIELDNAME) IN R_KUNNR.
    Mais il ne semble pas être d'accord avec les clause where dynamique.
    Vous savez si c'est possible? sinon je ferais autrement.
    Pensez à récompenser les réponses utiles et au tag

    Passez nous voir sur le chat chat.developpez.com ou http://87.98.168.209/

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 574
    Points : 764
    Points
    764
    Par défaut
    je pense que tu dois mettre tout le WHERE dans une variable string ou table interne, et il me semble que tu peux mettre le nom d'une variable range (à partir d'une certaine version)
    CONCATENATE L_DD03L-FIELDNAME ' IN R_KUNNR' INTO L_WHERE.
    ...
    WHERE (L_WHERE)
    .

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

    Informations professionnelles :
    Activité : SAP
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 612
    Points : 705
    Points
    705
    Par défaut
    Bonjour,
    Avec cette méthode ça compile mais j'ai un DUMP "DBIF_RSQL_INVALID_RSQL"
    Pourtant tout semble correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            DATA : L_WHERE TYPE STRING.
    
            CONCATENATE L_DD03L-FIELDNAME ' IN R_KUNNR' INTO L_WHERE.
            SELECT * FROM (L_DD03L-TABNAME)
              INTO TABLE <FS_DYNTAB>
           WHERE (L_WHERE).
    (L_DD03L-TABNAME) = A970
    (L_WHERE) = HIENR IN R_KUNNR
    Pensez à récompenser les réponses utiles et au tag

    Passez nous voir sur le chat chat.developpez.com ou http://87.98.168.209/

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 574
    Points : 764
    Points
    764
    Par défaut
    Essaye ce code qui marche pour moi, sur un système ABAP 7.31, et si ça marche pour toi aussi, essaye de voir les différences avec ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    TABLES scarr.
    SELECT-OPTIONS s_carrid FOR scarr-carrid.
    DATA : l_where TYPE string.
    l_where = 'CARRID IN S_CARRID'.
    DATA lref_table TYPE REF TO data.
    FIELD-SYMBOLS <fs_dyntab> TYPE STANDARD TABLE.
    CREATE DATA lref_table TYPE TABLE OF sflight.
    ASSIGN lref_table->* TO <fs_dyntab>.
    SELECT * FROM ('SFLIGHT')
      INTO TABLE <fs_dyntab>
      WHERE (l_where).
    WRITE : / sy-dbcnt.

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

    Informations professionnelles :
    Activité : SAP
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 612
    Points : 705
    Points
    705
    Par défaut
    Ton code fonctionne :

    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            SELECT * FROM (L_DD03L-TABNAME)
              INTO TABLE <FS_DYNTAB>
           WHERE HIENR IN R_KUNNR.
    j'ai toujours le dump (CX_SY_OPEN_SQL_DB)

    ça fonctionne par contre sans le where

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            SELECT * FROM (L_DD03L-TABNAME)
              INTO TABLE <FS_DYNTAB>.
    avec le where dynamique ou en dur rien
    Je vais essayé avec une autre table

    PS j'ai bien fait mes declarations :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    TRY .
                " Création des objets selon le nom de la table cible
                CREATE DATA:
                  RS_DYNTAB TYPE STANDARD TABLE OF (L_DD03L-TABNAME),
                  RS_DYNSTR TYPE (L_DD03L-TABNAME).
                " Assignation des contenus pour exploitation des données
                ASSIGN:
                  RS_DYNTAB->* TO <FS_DYNTAB>,
                  RS_DYNSTR->* TO <FS_DYNSTR>.
              CATCH CX_SY_CREATE_DATA_ERROR         INTO GO_REF."#EC NO_HANDLER
              CATCH CX_SY_ASSIGN_CAST_ILLEGAL_CAST  INTO GO_REF."#EC NO_HANDLER
              CATCH CX_SY_ASSIGN_CAST_UNKNOWN_TYPE  INTO GO_REF."#EC NO_HANDLER
              CATCH CX_SY_ASSIGN_OUT_OF_RANGE       INTO GO_REF."#EC NO_HANDLER
            ENDTRY.
    Pensez à récompenser les réponses utiles et au tag

    Passez nous voir sur le chat chat.developpez.com ou http://87.98.168.209/

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

    Informations professionnelles :
    Activité : SAP
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 612
    Points : 705
    Points
    705
    Par défaut
    Ahhh laisse tomber ça vient de mon ranges , il a trop de données...
    Pensez à récompenser les réponses utiles et au tag

    Passez nous voir sur le chat chat.developpez.com ou http://87.98.168.209/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Select sur plusieurs tables dynamiques
    Par skill-san dans le forum SQL Procédural
    Réponses: 19
    Dernier message: 25/05/2011, 12h11
  2. Select avec nom de table dynamique
    Par boutss dans le forum SQL
    Réponses: 6
    Dernier message: 31/01/2007, 09h51
  3. input ds une table dynamique
    Par mamouna dans le forum ASP
    Réponses: 32
    Dernier message: 30/06/2004, 18h12
  4. [C#] DropDownList dans un Table dynamiquement
    Par Mourad dans le forum ASP.NET
    Réponses: 12
    Dernier message: 30/04/2004, 15h09
  5. Gestion de table dynamique access avec delphi 7
    Par bob.marley dans le forum Bases de données
    Réponses: 7
    Dernier message: 22/04/2004, 13h12

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