1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2017
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : mai 2017
    Messages : 258
    Points : 454
    Points
    454

    Par défaut Connexion entre SAP et Excel

    Bonjour,

    Je suis actuellement en stage en entreprise afin de réaliser un outil Excel permettant de calculer un prévisionnel des stocks de chaque magasins de l'entreprise. J'ai donc décidé d'utiliser les données de SAP pour réaliser mon outil. J'utilise la transaction ZSB me permettant d'obtenir les stocks de chaque article de l'entreprise sur un horizon de 1 an en triant par type d'article (chaque type d'article correspond à un magasin). Ensuite, j'extrais les données obtenues sous format Excel et je les utilise via une macro me permettant d'obtenir le résultat souhaité.

    L'outil marche très bien de cette manière, cependant, la réalisation des extractions via la transaction ZSB est extrêmement long (environ 10 min par extraction). J'ai donc décidé d'essayer d'obtenir les données de la transaction ZSB directement via une macro Excel. C'est ici que les choses se compliquent. Je me suis renseigné sur les différents moyens permettant de réaliser une connexion entre SAP et Excel, je me suis arrêté sur 2 méthodes, OLE et RFC. Dans le cas de l'OLE, je n'ai pas réussi à trouver beaucoup d'informations dessus et je ne suis pas sur que c'est une méthode me permettant de répondre à mes attentes. Dans le cas de la RFC, voilà ce que j'ai réalisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Option Explicit
    
    Public Sub login()
        
        Dim R3 As Object
        Dim res As Variant
        Dim conn As Object
        
        Dim objRfcFunc As Object
     
        Set R3 = CreateObject("SAP.Functions")
        
        R3.connection.System = "00"
        R3.connection.User = "XXXXX"
        R3.connection.Password = "XXXXX"
        R3.connection.Client = "XXX"
        R3.connection.ApplicationServer = "XXXXXXXX"
        R3.connection.Language = "FR"
    
        Set conn = R3.connection
    
        If conn.logon(0, False) <> True Then
        
            MsgBox "ERROR - logon to SAP Failed"
            Exit Sub
            
        Else
        
            MsgBox "Connexion réussie"
        
        End If
        
        'BAPI RFC Call
        Set objRfcFunc = R3.Add("BAPI_WHSE_STOCK_GET_LIST")
        
        Rem *** BAPI CALL ***
       ' If objRfcFunc.Call = False Then
        
           ' ErrorMsg = objRfcFunc.Exception 'Message collection
            'MsgBox ErrorMsg, 16, "Errore"
            'sapConn.connection.logoff
        '    Exit Sub
            
      '  Else
        
         '   Dim objReturn As Object
        '    Set objReturn = objRfcFunc.imports("RETURN")
       '
       ' End If
    
    End Sub
    Malheureusement, je n'ai pas les droits d'utiliser le module RFCping avec mon compte, je suis donc en attente de recevoir les droits pour me connecter sur SAP via Excel (ce qui risque de prendre pas mal de temps...). Comme vous pouvez le voir, je suis parti dans l'idée d'utiliser la BAPI_WHSE_STOCK_GET_LIST mais son utilisation reste très flou pour moi.

    J'aimerai donc savoir si vous pourriez m'éclairer sur l'utilisation de cette BAPI (ou des BAPI en générale) et si elle pourrait me permettre d'obtenir le résultat que je recherche. Dans le cas où la solution RFC n'est pas la meilleur, est-ce qu'il serait possible de réaliser mon outil via OLE et de quelle manière ?

    Merci d'avance de votre aide et de vos réponses.
    Jeune développeur toujours prêt à apprendre et à aider.

    N'oubliez pas de mettre un si vous avez été aidé , pensez aussi à mettre si vous n'avez plus de problème.

    On ne fait pas les devoirs des gens, parce que les devoirs c'est fait pour apprendre, si on ne les fait pas on apprend pas. Si on apprend pas on est pas compétent. Et si on est pas compétent mais qu'on se fait embaucher comme quelqu'un qui l'est, ça pose problème aux gens comme nous.

  2. #2
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2003
    Messages
    784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : avril 2003
    Messages : 784
    Points : 1 260
    Points
    1 260

    Par défaut

    Bonjour,

    Pour commencer ta transaction ZSB ne parleras à personne car en SAP tout ce qui commence par Z* ou Y* est du code spécifique.
    Du coup pour l'export des données de celle-ci personne ne pourra t'aider (à par quelqu'un de ton entreprise).

    Je ne connais pas la BAPI dont tu parles, mais plusieurs points :
    * elle est accessible depuis le RFC => c'est donc déjà un bon point.
    * Pour le USER, il faut des droits particuliers, par défaut c'est normal que ton user ne le possède pas.
    * Pour l'utilisation finale, il faudra soit prévoir un utilisateur globale pour l'appel, soit donner tous les droits à chaque utilisateur (du coup laissé la possibilité de saisir login/mdp)

    Autre point voici l'interface de ta BAPI :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    *"*"Local Interface:
    *"  IMPORTING
    *"     VALUE(WAREHOUSENUMBER) LIKE  BAPI3016A-WAREHOUSENUMBER
    *"     VALUE(MATERIAL) LIKE  BAPI3016A-MATERIAL
    *"     VALUE(PLANT) LIKE  BAPI3016A-PLANT
    *"     VALUE(STORAGELOCATION) LIKE  BAPI3016A-STGE_LOC OPTIONAL
    *"     VALUE(STORAGETYPE) LIKE  BAPI3016A-STGE_TYPE OPTIONAL
    *"     VALUE(STOCKCATEGORY) LIKE  BAPI3016A-STOCK_CAT OPTIONAL
    *"     VALUE(SPECIALSTOCKIND) LIKE  BAPI3016A-SPEC_STOCK OPTIONAL
    *"     VALUE(SPECIALSTOCKNO) LIKE  BAPI3016A-SP_STCK_NO OPTIONAL
    *"     VALUE(BATCH) LIKE  BAPI3016A-BATCH OPTIONAL
    *"     VALUE(PICKAREA) LIKE  BAPI3016A-PICK_AREA OPTIONAL
    *"     VALUE(MAXROWS) LIKE  BAPIF4A-MAX_ROWS DEFAULT 0
    *"     VALUE(MATERIAL_EVG) TYPE  BAPIMGVMATNR OPTIONAL
    *"     VALUE(MATERIAL_LONG) TYPE  BAPI3016A-MATERIAL_LONG OPTIONAL
    *"  TABLES
    *"      STORAGEBINSELECT STRUCTURE  BAPI3016B OPTIONAL
    *"      STOCKKEY STRUCTURE  BAPIQUANTKEY
    *"      RETURN STRUCTURE  BAPIRET2
    les paramètres IMPORTING doivent être envoyé à la BAPI et dans ton code, je ne vois le pas, du coup cela doit poser problème.
    Tout énigme a une solution ! Tout est question de discipline !

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2017
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : mai 2017
    Messages : 258
    Points : 454
    Points
    454

    Par défaut

    Bonjour,

    Merci de ta réponse,

    Dois-je comprendre que la transaction ZSB est une transaction qui n'existe pas initialement dans SAP et que c'est donc mon entreprise qu'il l'a programmé (ou a demandé un intégrateur de SAP) ? Dans ce cas, je suppose qu'il y est très peu de chance qu'il existe une BAPI me permettant d'obtenir un résultat équivalent à cette transaction .

    Merci pour l'interface de la BAPI, je ne m'y étais pas encore énormément intéressé car actuellement, mon code ne dépasse pas le "conn.logon(False, 0)" étant donné que je n'ai pas les droits pour réaliser une connexion via Excel.

    Merci encore de ton aide
    Jeune développeur toujours prêt à apprendre et à aider.

    N'oubliez pas de mettre un si vous avez été aidé , pensez aussi à mettre si vous n'avez plus de problème.

    On ne fait pas les devoirs des gens, parce que les devoirs c'est fait pour apprendre, si on ne les fait pas on apprend pas. Si on apprend pas on est pas compétent. Et si on est pas compétent mais qu'on se fait embaucher comme quelqu'un qui l'est, ça pose problème aux gens comme nous.

  4. #4
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2003
    Messages
    784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : avril 2003
    Messages : 784
    Points : 1 260
    Points
    1 260

    Par défaut

    Pour la transaction,
    En effet c'est bien cela. Il y a de fortes chances que tu ne retrouves pas exactement les mêmes résultats.
    Tout énigme a une solution ! Tout est question de discipline !

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2017
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : mai 2017
    Messages : 258
    Points : 454
    Points
    454

    Par défaut

    Une autre solution que l'utilisation de BAPI est envisageable dans ce cas ?

    Pour information, la transaction ZSB est un état des stocks prévisionnels (sur un horizon de 1 an) des articles de l'entreprise. Je ne sais pas si un équivalent existe dans une autre transaction.
    Jeune développeur toujours prêt à apprendre et à aider.

    N'oubliez pas de mettre un si vous avez été aidé , pensez aussi à mettre si vous n'avez plus de problème.

    On ne fait pas les devoirs des gens, parce que les devoirs c'est fait pour apprendre, si on ne les fait pas on apprend pas. Si on apprend pas on est pas compétent. Et si on est pas compétent mais qu'on se fait embaucher comme quelqu'un qui l'est, ça pose problème aux gens comme nous.

  6. #6
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2003
    Messages
    784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : avril 2003
    Messages : 784
    Points : 1 260
    Points
    1 260

    Par défaut

    La gestion des stocks n'est pas trop mon domaine, mais il y a plusieurs solutions :
    - générer une fonction module en Z (ou BAPI) accessible en RFC qui te renvoie ton ensemble de données
    - selon la version du serveur SAP, tu peux créer des services REST également.

    Mais dans tout les cas, il faut prévoir du développement.

    Mais si ta société est passée par une transaction Z, il y a de forte chances qu'aucune transaction standard ne donnait le résultat attendu.
    Tout énigme a une solution ! Tout est question de discipline !

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2017
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : mai 2017
    Messages : 258
    Points : 454
    Points
    454

    Par défaut

    Merci de toutes ces informations, je vais essayer de me renseigner mais je pense que je vais devoir garder la méthode classique de l'extraction de donnée en format Excel pour utiliser mon outils.

    Bonne soirée .
    Jeune développeur toujours prêt à apprendre et à aider.

    N'oubliez pas de mettre un si vous avez été aidé , pensez aussi à mettre si vous n'avez plus de problème.

    On ne fait pas les devoirs des gens, parce que les devoirs c'est fait pour apprendre, si on ne les fait pas on apprend pas. Si on apprend pas on est pas compétent. Et si on est pas compétent mais qu'on se fait embaucher comme quelqu'un qui l'est, ça pose problème aux gens comme nous.

  8. #8
    Membre éclairé Avatar de Celdrøn
    Homme Profil pro
    Consultant SAP
    Inscrit en
    juillet 2007
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Consultant SAP

    Informations forums :
    Inscription : juillet 2007
    Messages : 556
    Points : 873
    Points
    873

    Par défaut

    Bonjour,

    Autre point, si l'extraction dure trop longtemps par rapport à la quantité d'informations extraites, il est possible que le programme derrière la transaction ZSB ne soit pas optimisé pour traiter de la masse. Il peut être intéressant de faire un audit du programme par un ABAPeur expérimenté pour identifier les possibles points d'amélioration pouvant être apportés. Il existe un outil standard permettant de prémâcher le boulot, c'est Code Inspector (SCI) ou encore le Runtime Analysis (SAT), qui va déjà donner une idée des portions de traitement chronophages.

    À titre d'exemple, j'ai dû faire un audit récemment, pour un traitement qui était tellement gourmand que les applications s'appuyant dessus tombaient en Time Out, c'est dire… À la suite de quoi j'ai effectué les améliorations dans la limite du possible, ce qui a permis notamment de réduire drastiquement les temps de traitement de l'ordre de 7,3x en moyenne selon les mesures qu'on m'a communiquées. Mon client vécut heureux et eut beaucoup de clients en somme…

    Après, c'est un exemple, ça ne veut pas forcément dire que l'on peut optimiser tous les programmes.

    Bref, ça vaut peut-être le coup de demander à y jeter un œil si vraiment les temps de réponse sont excessivement longs.
    Boaf...signature <= ça suffira ça ??

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2017
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : mai 2017
    Messages : 258
    Points : 454
    Points
    454

    Par défaut

    Bonjour,

    J'ai en effet pensé à ce point là et j'en ai parlé à mon responsable. Il va contacter quelqu'un pour pouvoir améliorer la transaction.
    En espérant que ce problème se règle avant la fin de mon stage et que je puisse en voir les résultats.

    Il y a de forte chance que ce programme peut être optimiser, même en lui demande le prévisionnel de seulement un article, la transaction met au moins 30s à se réaliser. De plus, on m'a indiqué que cette transaction a été installée en même temps que SAP dans l'entreprise, soit il y a déjà une dizaine d'année. Je suppose que le langage de programmation de SAP a évolué depuis.

    Encore merci de votre aide en tout cas.
    Jeune développeur toujours prêt à apprendre et à aider.

    N'oubliez pas de mettre un si vous avez été aidé , pensez aussi à mettre si vous n'avez plus de problème.

    On ne fait pas les devoirs des gens, parce que les devoirs c'est fait pour apprendre, si on ne les fait pas on apprend pas. Si on apprend pas on est pas compétent. Et si on est pas compétent mais qu'on se fait embaucher comme quelqu'un qui l'est, ça pose problème aux gens comme nous.

  10. #10
    Membre éclairé Avatar de Celdrøn
    Homme Profil pro
    Consultant SAP
    Inscrit en
    juillet 2007
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Consultant SAP

    Informations forums :
    Inscription : juillet 2007
    Messages : 556
    Points : 873
    Points
    873

    Par défaut

    Bonjour,

    Non, le langage de SAP n'a pas évolué tant que ça, des instructions sont apparues au fil des versions qui permettent aujourd'hui de faire certaines choses plus simplement, mais dans les grandes lignes ça reste globalement la même chose.

    De plus, les nouvelles instructions composant le langage ABAP évoluent en même temps que les composantes logiciels SAP_BASIS et/ou SAP_ABA, donc si depuis l'intégration de votre système, il n'y a pas eu de montée de version, alors le langage n'a pas bougé d'un iota.

    Cependant, comme je l'ai dit, ça ne veut pas forcément dire que rien ne peut être fait pour améliorer les temps de traitement. En règle générale, les programmes pêchent surtout au niveau des traitements effectués au niveau base de données (requêtes de lecture principalement) ; le cas le plus typique, et qui mériterait aujourd'hui une condamnation à la chaise électrique (), reste une requête effectuée dans une boucle sur une table interne, donc c'est généralement ce qu'on chasse en premier comme gibier (bizarre de parler ainsi quand on est végane ).

    Bref, j'espère que l'audit donnera de bons résultats. Sur ce, bon courage pour la fin de ton stage.
    Boaf...signature <= ça suffira ça ??

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

Discussions similaires

  1. [XL-2013] Problèmes d'actualisation et de connexions entre 2 fichiers Excel
    Par carte_blanche dans le forum Excel
    Réponses: 3
    Dernier message: 15/04/2015, 08h18
  2. [2007] Problème connexion entre Access et Excel
    Par T4keo dans le forum Microsoft Office
    Réponses: 1
    Dernier message: 10/03/2014, 10h07
  3. Communication entre SAP et Excel
    Par zineb87 dans le forum SAP
    Réponses: 3
    Dernier message: 30/03/2010, 17h40
  4. Macro entre SAP et Excel
    Par baggerdav dans le forum SAP
    Réponses: 5
    Dernier message: 27/04/2009, 11h30
  5. échanger entre SAP et Excel à l'aide de macros
    Par aurelop dans le forum SAP
    Réponses: 2
    Dernier message: 20/08/2008, 18h30

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