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é :
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.
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
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.
Partager