Quantcast
Channel: SCN: Message List - Enterprise Resource Planning (SAP ERP)
Viewing all articles
Browse latest Browse all 6103

Re: How to Upload Data to SAP from Excel File ?

$
0
0

Hi Nur Syabila Zabidi,

 

Using Visual Basic in the excel you can connect to SAP and do what ever you need to do.

For example, the code sent below is:

- Loging the user in SAP

- Running SAP function: MD_STOCK_REQUIREMENTS_LIST_API for a list of material / plant combinations

- Copying the resultant data in the excel..

 

In this code I am not loading data, but if you have a SAP function to create what you need: materiials, sales orders, etc.. you can do it.

 

VB code:

 

Sub SapLogon()

Dim Destination_System As Integer
Dim objBAPIControl As Object
Dim sapConnection, MDPSX As Object
Set objBAPIControl = CreateObject("SAP.Functions")
Set sapConnection = objBAPIControl.Connection

pass = InputBoxDK("Enter SAP GUID Password", Sheets("Logon Data").Cells(11, 3).Value & " System")
Destination_System = Sheets("Logon Data").Cells(11, 2).Value + 2
sapConnection.client = Sheets("Logon Data").Cells(3, Destination_System).Value
sapConnection.hostname = Sheets("Logon Data").Cells(4, Destination_System).Value
sapConnection.Language = Sheets("Logon Data").Cells(5, Destination_System).Value
sapConnection.System = Sheets("Logon Data").Cells(6, Destination_System).Value
sapConnection.SystemNumber = Sheets("Logon Data").Cells(7, Destination_System).Value
sapConnection.User = Sheets("Test Control").Cells(9, 4).Value
sapConnection.Password = pass
sapConnection.Destination = Sheets("Logon Data").Cells(6, Destination_System).Value
If sapConnection.logon(1, True) <> True Then
MsgBox "No connection to R/3!"
Exit Sub
End If

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
   
Set objAccDoc = objBAPIControl.Add("MD_STOCK_REQUIREMENTS_LIST_API")

Set MDPSX = objAccDoc.Tables("MDPSX")
MDPSX.FreeTable

Sheet1.Select
UMat = Sheet1.Range(Range("c11"), Range("c11").End(xlDown)).Rows.Count - 1
Sheet6.Select
UCol = Sheet6.Cells.Find(What:="COUNTID").Column - 1
UCol2 = Sheet6.Range(Range("A1"), Range("A1").End(xlToRight)).Columns.Count
Ufila = Sheet6.Range(Range("A1"), Range("A1").End(xlDown)).Rows.Count
If Ufila > 1000000 Then Ufila = 2
Range(Cells(3, 1), Cells(Ufila, UCol2)).ClearContents
Range("a1").Select

ult = 0
For a = 1 To UMat

    objAccDoc.exports("MATNR") = WorksheetFunction.Text(Sheet1.Cells(11 + a, 3), "000000000000000000")
    objAccDoc.exports("WERKS") = WorksheetFunction.Text(Sheet1.Cells(11 + a, 4), "0000")


    returnTable = objAccDoc.Call


If returnTable = True Then


    For i = 1 To MDPSX.RowCount
   
        Sheet6.Cells(ult + i + 1, 1) = Sheet1.Cells(11 + a, 3).Value
        Sheet6.Cells(ult + i + 1, 2) = Sheet1.Cells(11 + a, 4).Value

        For j = 3 To UCol
        Cells(ult + i + 1, j) = Trim(MDPSX(i, "" & Sheet6.Cells(1, j) & ""))
        Next j
    Next i
    ult = ult + MDPSX.RowCount
End If
Next a

Range("N2:Q2").AutoFill Destination:=Range("N2:Q" & ult + 1 & "")
   
   
objBAPIControl.Connection.logoff

Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
Set sapConnection = Nothing
Set functionCtrl = Nothing
MsgBox "Program finished!", 0, "Exit"
End Sub

Sub SheetOrder()

Dim SortOrder As Variant
Dim Ndx As Long

Application.ScreenUpdating = False

Worksheets("Test Control").Activate
With Range(Range("F24"), Range("F24").End(xlDown).Offset(-1, 0))
    For Ndx = .Cells.Count To 1 Step -1
        Worksheets(.Cells(Ndx).Value).Move before:=Worksheets(1)
    Next Ndx
End With

Application.ScreenUpdating = True

Sheets("Test Control").Select


End Sub

 

 

 

 

Thanks and Regards,

Mariano


Viewing all articles
Browse latest Browse all 6103

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>