Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

How to retrieve the data from SAP-BAPI by using VB Code

Former Member
0 Kudos
1,213

Hi ,

I am new to BAPI.

V have created an application in Visual Basic with the following fields

EmpNo , EmpName, Addr1, Addr2, City and Phone (Only for Test)

We have written the code for SAVING the data into SAP. Already we have

constructed a table with the respective fields in SAP.

For that we ourself created our own BAPI Structure / Function Group /

Function Module/ Business Object - RELEASED related elements.

1)Established the connection successfully.

2)Stored the data into SAP Successfully and v r in need of

3)HOW TO RETRIEVE THE DATA FROM SAP (USING GETLIST.....GETDETAIL....)

Following is the code :

'BAPI Structure : ZBAPIEMP

'Function Group : ZBAPIEMP

'Function Module : ZBAPI_EMP_CREATEFROMDATA

'Business Object : ZBAPIEMP

'Function Module : ZBAPI_EMP_GETLIST

Dim bapictrl As Object

Dim oconnection As Object

Dim boEmp As Object

Dim oZEmp_Header As Object

Dim oImpStruct As Object

Dim oExpStruct As Object

Dim oreturn As Object

Dim x As String

Private Sub Form_Load()

Set bapictrl = CreateObject("SAP.BAPI.1")

Set oconnection = bapictrl.Connection

oconnection.logon

Set boEmp = bapictrl.GetSAPObject("ZBAPIEMP")

Set oZEmp_Header = bapictrl.DimAs(boEmp, "CreateFromData", "EmployeeHeader")

Set oImpStruct = bapictrl.DimAs(boEmp, "GetList", "EmployeeDispStruct")

End Sub

Private Sub cmdSave_Click()

oZEmp_Header.Value("EMPNO") = txtEmpNo.Text

oZEmp_Header.Value("EMPNAME") = txtEmpName.Text

oZEmp_Header.Value("ADDR1") = txtAddr1.Text

oZEmp_Header.Value("ADDR2") = txtAddr2.Text

oZEmp_Header.Value("CITY") = txtCity.Text

oZEmp_Header.Value("PHONE") = txtPhone.Text

boEmp.CreateFromData EmployeeHeader:=oZEmp_Header, Return:=oreturn

x = oreturn.Value("Message")

If x = "" Then

MsgBox "Transaction Completed!..."

Else

MsgBox x

End If

End Sub

Private Sub cmdView_Click()

?

?

?

End Sub

COULD ANYBODY GUIDE ME, HOW TO RETRIEVE THE DATA FROM BAPI, FOR THE WRITTEN CODE.

3 REPLIES 3

90070279
Participant
0 Kudos
255

I didn't seen any other answers but here's how it's been done previously in our organization for a custom BAPI. In this example, we give material and language to return the part description. It's not specific to your project but may give you ideas..

-Tim

Option Compare Database

Dim SAPLOGIN As Boolean

Dim FunctionCtrl As Object

Dim SapConnection As Object

Sub SAPLOGOUT()

On Error GoTo LogoutFehler

SapConnection.logoff

SAPLOGIN = False

Exit Sub

LogoutFehler:

If Err.Number = 91 Then

Exit Sub

Else

MsgBox Err.Description, vbCritical, "Fehler-Nr." & CStr(Err.Number) & " bei SAP-Logout"

End If

End Sub

Function SAPLOG() As Boolean

'Verbindungsobjekt setzen (Property von FunctionCtrl)

'

Set FunctionCtrl = CreateObject("SAP.Functions")

Set SapConnection = FunctionCtrl.Connection

'

'Logon mit Initialwerten

'

SapConnection.Client = "010"

SapConnection.Language = "EN"

SapConnection.System = "PR1"

SapConnection.SystemNumber = "00"

'SapConnection.Password = ""

SapConnection.GroupName = "PR1"

SapConnection.HostName = "168.9.25.120"

SapConnection.MessageServer = "168.9.25.120"

If SapConnection.Logon(0, False) <> True Then 'Logon mit Dialog

Set SapConnection = Nothing

DoCmd.Hourglass False

MsgBox "No connection to SAP R/3 !"

SAPLOGIN = False

SAPLOG = False

Exit Function

End If

SAPLOG = True

End Function

Function MatDescr(MatNr As String)

Dim func1 As Object

Dim row As Object, X As Integer, ErsteNr As String

Dim DatensatzZähler As Long

Dim RowField(1 To 50, 0 To 1) As String, RowLine As Long

If Not SAPLOGIN Then

If Not SAPLOG() Then

MsgBox "No connection to SAP !", 16

SAPLOGOUT

Exit Function

End If

End If

' Instanziieren des Function-Objektes

Set func1 = FunctionCtrl.Add("Z_BAPI_READ_MAKT")

' Export-Paramter definieren

func1.exports("MATNR") = MatNr

func1.exports("SPRAS") = "EN"

DoEvents

If Not func1.call Then

If func1.exception <> "" Then

MsgBox "Communication Error with RFC " & func1.exception

End If

DoCmd.Hourglass False

SAPLOGOUT

Exit Function

Else

MatDescr = func1.imports("MAKTX")

End If

If MatDescr = "" Then

MatDescr = "PART NO. NOT FOUND"

End If

End Function

Former Member
0 Kudos
255

Hi,

Using ur code as a sample i find out the solution to retrieve the data from SAP through RFC Concept (as per ur example). But its working only for retrieving the single record.

But I doesn't know how to retrieve the multiple records. Could u guide me in this aspect?....

Thanks in Advance.....

Former Member
0 Kudos
255

Hi Giri,

I am also very new to BAPI, so can u plz. send me the all steps of the same.

How to create BAPI , function module ....

Thanks,

Vikram