Re: Windev <-> SAP

Posté par drcharly93 le 27/3/2006 13:16:53
Bonjour,

Sans connaître SAP ni le BAPI qui semblerait être un accès aux fonctions SAP via une interface COM

Apparement le serveur COM de BAPI serait :
SAP.BAPI.1
Bien qu'il me semble comme dans Word que le 1 ne soit pas forcement nécessaire.

oBAPI est un objet automation dynamique
oBAPI = allouer un objet automation "SAP.BAPI.1"


Exemple de code à main levée de ce que pourrait être un morceau de code manipulant la création d'une commande
boOrder est un objet automation dynamique
oPartners est un objet automation dynamique
oHeaderIn est un objet automation dynamique
oItemsIn est un objet automation dynamique

boOrder = oBAPI>>GetSAPObject("SalesOrder")

oHeaderIn = oBAPI>>DimAs(boOrder, "CreateFromDat1", "OrderHeaderIn")
oItemsIn = oBAPI>>DimAs(boOrder, "CreateFromDat1", "OrderItemsIn")
oPartners = oBAPI>>DimAs(boOrder, "CreateFromDat1", "OrderPartners")

oHeaderIn>>Value("DOC_TYPE") = "ZA"
oHeaderIn>>Value("SALES_ORG") = "BG01"
oHeaderIn>>Value("DISTR_CHAN") = "01"
oHeaderIn>>Value("DIVISION") = "00"
oHeaderIn>>Value("SALES_GRP") = "016"
oHeaderIn>>Value("SALES_OFF") = "BG01"
oHeaderIn>>Value("PURCH_NO") = "123"
oHeaderIn>>Value("PURCH_DATE") = "20020729"
oHeaderIn>>Value("REF_1") = "BORLOS"
oHeaderIn>>Value("INCOTERMS1") = "FOB"
oHeaderIn>>Value("INCOTERMS2") = "GEMLIK"
oHeaderIn>>Value("PMNTTRMS") = "BL01"
oHeaderIn>>Value("ORD_REASON") = "PM"
oHeaderIn>>Value("PRICE_DATE") = "20020729"
oItemsIn>>Rows>>Add()
oItemsIn>>Value(1, "ITM_NUMBER") = "000010"
oItemsIn>>Value(1, "MATERIAL") = "GUMRUK GEMLIK"
oItemsIn>>Value(1, "REQ_QTY") = "1000"
oPartners>>Rows>>Add()
oPartners>>Value(1, "PARTN_ROLE") = "AG"
oPartners>>Value(1, "PARTN_NUMB") = "0001041002"
oPartners>>Rows>>Add()
oPartners>>Value(2, "PARTN_ROLE") = "RE"
oPartners>>Value(2, "PARTN_NUMB") = "0001041002"
oPartners>>Rows>>Add()
oPartners>>Value(3, "PARTN_ROLE") = "RG"
oPartners>>Value(3, "PARTN_NUMB") = "0001041002"
oPartners>>Rows.Add
oPartners>>Value(4, "PARTN_ROLE") = "WE"
oPartners>>Value(4, "PARTN_NUMB") = "0001041002"


Pour l'enregistrement il faut encore voir la doc pour connaitre l'ordre des paramètres car en WinDev il ne me semble pas réalisable l'envoi de paramètre nommés du style :
Citation :

boOrder>>CreateFromDat1( OrderHeaderIn=OrderItemsIn ,
OrderPartners=oPartners,
OrderItemsIn=oItemsIn )

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=14&topic_id=1863&post_id=15912