Salut tout le Monde;


J' utilise actuellement une version gratuite de C++Builder 2007; j'ai reussi à programmer un portcom...Actuellement je voudrais pouvoir ajouter une fonction a mon program qui download et compare les cellules d'un tableau excel et sauvegarde le tout dans SAP.

Voici a quoi ressemble le code en VBA....
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
Option Explicit
 
Private oIFace As Object
 
Public Sub gWriteIni()
 
    Dim nFile As Integer
    Dim sFile As String
 
    Dim sDOWNLOAD As String
    Dim sWERK As String
    Dim sSUBSYS As String
    Dim sGRUPPE As String
    Dim sVORNR As String
    Dim sMERKMAL As String
    Dim sABSCHLUSS As String
    Dim sMETHODE As String
    Dim sMAXLOSANZ As String
    Dim sMaschine As String
 
    Exit Sub
    sDOWNLOAD = "[Download]"
    sWERK = "WERK=" & Tabelle1.Cells(3, 6)
    sSUBSYS = "SUBSYS=" & Tabelle1.Cells(4, 6)
    sGRUPPE = "GRUPPE=" & Tabelle1.Cells(5, 6)
    sVORNR = "VORNR=" & Tabelle1.Cells(6, 6)
    sMERKMAL = "MERKMAL=" & Tabelle1.Cells(7, 6)
    sABSCHLUSS = "ABSCHLUSS=" & Tabelle1.Cells(8, 6)
    sMETHODE = "METHODE=" & Tabelle1.Cells(9, 6)
    sMAXLOSANZ = "MAXLOSANZ=" & Tabelle1.Cells(10, 6)
 
    nFile = FreeFile
    sFile = ThisWorkbook.Path & "\" & Tabelle1.Cells(1, 6)
 
    Open sFile For Output As #nFile
 
    Print #nFile, sDOWNLOAD
    Print #nFile, sWERK
    Print #nFile, sSUBSYS
    Print #nFile, sGRUPPE
    Print #nFile, sVORNR
    Print #nFile, sMERKMAL
    Print #nFile, sABSCHLUSS
    Print #nFile, sMETHODE
    Print #nFile, sMAXLOSANZ
 
    Close #nFile
 
End Sub
 
Public Sub gDownload()
 
    Dim i As Long
    Dim j As Long
    Dim l1 As Long
    Dim l2 As Long
 
    Dim saRet() As String
    Dim saParam() As String
    Dim saErr() As String
    Dim sMessId As String
    Dim sQuery As String
    Dim sError As String
    Dim lRetCode As Long
 
 
    '*** INI-Datei mit Werten schreiben
    Call gWriteIni
 
    '*** Schnittstellen-DLL laden
    Set oIFace = CreateObject("SAPBAPI.clsInterface")
 
    ReDim saParam(9)
 
    '*** Messgerät-Id übergeben
    sMessId = Tabelle1.Cells(2, 2)
 
    '*** Parameterarray füllen
    saParam(0) = Tabelle1.Cells(3, 2)
    saParam(1) = Tabelle1.Cells(4, 2)
    saParam(2) = Tabelle1.Cells(5, 2)
    saParam(3) = Tabelle1.Cells(6, 2)
    saParam(4) = Tabelle1.Cells(7, 2)
    saParam(5) = Tabelle1.Cells(8, 2)
    saParam(6) = Tabelle1.Cells(9, 2)
    saParam(7) = Tabelle1.Cells(10, 2)
    saParam(8) = Tabelle1.Cells(11, 2)
 
    '*** alter Rückgabewert löschen
    Tabelle1.Cells(13, 1) = ""
 
    '*** Rückgabefelder löschen
    For i = 0 To 100
        For j = 0 To 60
            Tabelle1.Cells(i + 21, j + 1) = ""
        Next
    Next
 
    '*** Fehlerfelder löschen
    For i = 0 To 3
        For j = 0 To 2
            Tabelle1.Cells(i + 15, j + 1) = ""
        Next
    Next
 
    '*** Download ausführen
    lRetCode = oIFace.GetDataFromSAP(sMessId, saParam(), saRet(), sError, saErr(), sQuery)
 
    Set oIFace = Nothing
 
    '*** Rückgabewert und Meldung ausgeben
    Tabelle1.Cells(13, 1) = lRetCode & " " & sError
 
    '*** wenn Programmfehler aufgetreten
    If lRetCode <> 9999 Then
 
        '*** Rückgabearray in Tabelle anzeigen
        l1 = UBound(saRet, 1) - 1
        l2 = UBound(saRet, 2) - 1
        If l1 <> -1 Then
            For i = 0 To l1
                For j = 0 To l2
                    Tabelle1.Cells(i + 21, j + 1) = saRet(i, j)
                Next
            Next
        End If
 
        '*** Fehlerarry in Tablle anzeigen
        l1 = UBound(saErr, 1) - 1
        l2 = UBound(saErr, 2) - 1
        If l1 <> -1 Then
            For i = 0 To l1
                For j = 0 To l2
                    Tabelle1.Cells(i + 15, j + 1) = saErr(i, j)
                Next
            Next
        End If
 
    End If
 
End Sub
 
Public Sub gUpload()
 
    Dim i As Long
    Dim j As Long
    Dim l1 As Long
    Dim l2 As Long
 
    Dim sMessId As String
    Dim sRueckNr As String
    Dim sErg As String
    Dim sCode As String
    Dim sABSCHLUSS As String
    Dim sAttrib As String
    Dim sPrfBemerkung As String
    Dim sPruefer As String
    Dim lRetCode As Long
    Dim sError As String
    Dim saErr() As String
 
 
    '*** Schnittstellen-DLL laden
    Set oIFace = CreateObject("SAPBAPI.clsInterface")
 
    '*** Übergabeparameter setzen
    sMessId = Tabelle2.Cells(2, 2)
    sRueckNr = Tabelle2.Cells(3, 2)
    sErg = Tabelle2.Cells(4, 2)
    sAttrib = Tabelle2.Cells(5, 2)
    sCode = Tabelle2.Cells(6, 2)
    sPrfBemerkung = Tabelle2.Cells(7, 2)
    sABSCHLUSS = Tabelle2.Cells(8, 2)
    sPruefer = Tabelle2.Cells(9, 2)
 
    '*** alter Rückgabewert löschen
    Tabelle2.Cells(10, 1) = ""
 
    '*** Fehlerfelder löschen
    For i = 0 To 3
        For j = 0 To 2
            Tabelle2.Cells(i + 12, j + 1) = ""
        Next
    Next
 
    '*** Upload ausführen
    lRetCode = oIFace.SendDataToSAP(sMessId, sRueckNr, sErg, sCode, sABSCHLUSS, sError, saErr(), sAttrib, sPrfBemerkung, sPruefer, sMaschine)
 
    Set oIFace = Nothing
 
    '*** Rückgabewert und Meldung ausgeben
    Tabelle2.Cells(10, 1) = lRetCode & " " & sError
 
 
    '*** Fehlerarry in Tablle anzeigen
    l1 = UBound(saErr, 1) - 1
    l2 = UBound(saErr, 2) - 1
 
    For i = 0 To l1
        For j = 0 To l2
            Tabelle2.Cells(i + 12, j + 1) = saErr(i, j)
        Next
    Next
 
End Sub
 
Public Sub gGetList()
 
    Dim sMessId As String
    Dim sMatNr As String
    Dim sAPlatz As String
    Dim sEDatVon As String
    Dim sEDatBis As String
    Dim sMERKMAL As String
    Dim sMETHODE As String
    Dim sPrfArt As String
    Dim sCharge As String
    Dim sHerkunft As String
    Dim sWERK As String
 
    Dim i As Integer
    Dim j As Integer
    Dim l1 As Integer
    Dim l2 As Integer
    Dim lRetCode As Long
    Dim saRet() As String
    Dim sError As String
    Dim saErr() As String
 
 
    '*** Schnittstellen-DLL laden
    Set oIFace = CreateObject("SAPBAPI.clsInterface")
 
    '*** Messgerät-Id und Parameter übergeben
    sMessId = Tabelle3.Cells(2, 2)
    sMatNr = Tabelle3.Cells(3, 2)
    sAPlatz = Tabelle3.Cells(4, 2)
    sEDatVon = Tabelle3.Cells(5, 2)
    sEDatBis = Tabelle3.Cells(6, 2)
    sMERKMAL = Tabelle3.Cells(7, 2)
    sMETHODE = Tabelle3.Cells(8, 2)
    sPrfArt = Tabelle3.Cells(9, 2)
    sCharge = Tabelle3.Cells(10, 2)
    sHerkunft = Tabelle3.Cells(11, 2)
    sWERK = Tabelle3.Cells(12, 2)
 
 
    '*** alter Rückgabewert löschen
    Tabelle3.Cells(14, 1) = ""
 
 
    '*** Rückgabefelder löschen
    For i = 0 To 100
        For j = 0 To 40
            Tabelle3.Cells(i + 28, j + 1) = ""
        Next
    Next
 
    '*** Fehlerfelder löschen
    For i = 0 To 9
        For j = 0 To 2
            Tabelle3.Cells(i + 16, j + 1) = ""
        Next
    Next
 
 
    '*** Arbeitsvorrat ermitteln
    lRetCode = oIFace.GetWorklistFromSAP(sMessId, saRet(), sError, saErr(), sMatNr, _
                                                                            sAPlatz, _
                                                                            sEDatVon, _
                                                                            sEDatBis, _
                                                                            sMERKMAL, _
                                                                            sMETHODE, _
                                                                            sPrfArt, _
                                                                            sCharge, _
                                                                            sHerkunft, _
                                                                            sWERK)
 
    Set oIFace = Nothing
 
    '*** Rückgabewert und Meldung ausgeben
    Tabelle3.Cells(14, 1) = lRetCode & " " & sError
 
    '*** wenn Programmfehler aufgetreten
    If lRetCode <> 9999 Then
 
        '*** Rückgabearray in Tabelle anzeigen
        l1 = UBound(saRet, 1) - 1
        l2 = UBound(saRet, 2) - 1
        If l1 <> -1 Then
            For i = 0 To l1
                For j = 0 To l2
                    Tabelle3.Cells(i + 28, j + 1) = saRet(i, j)
                Next
            Next
        End If
 
        '*** Fehlerarry in Tablle anzeigen
        l1 = UBound(saErr, 1) - 1
        l2 = UBound(saErr, 2) - 1
        If l1 <> -1 Then
            For i = 0 To l1
                For j = 0 To l2
                    Tabelle3.Cells(i + 16, j + 1) = saErr(i, j)
                Next
            Next
        End If
 
    End If
 
End Sub



ma Question est la suivante :

peut on traduire un code VBA en C++Builder?