SAP資格過去問ならSAPnavi

NoteやStripe決済で安全にSAP過去問を購入することができます。
領収書発行可能 / 即時入手可能

SAP過去問 (SAP Exam)

Calling BAPIs from Visual Basic

使用する

この例は、BAPIActiveXコントロールを使用したVisualBasicでのBAPI呼び出しを示しています。このレポートは、サービスBAPI BapiService.MessageGetDetail()を使用して、エラーメッセージの短いテキストと長いテキストを表示します。

'' Visual BASIC 5.0' Copyright SAP AG Walldorf Juli 1998'' read a message short and longtext using the BAPI                     ' BAPI_MESSAGE_GETDETAIL of the object BapiService   ' constant for user identificationConst cstrMUsrClient        As String = "000"Const cstrMUsrUser          As String = "MYUSER"Const cstrMUsrPassword      As String = "MYPASS"Const cstrMUsrLanguage      As String = "EN" ' constant for system identificationConst cstrMSysSystem        As String = "P45"Const cstrMSysMessageServer As String = "p45main.wdf.sap-ag.de"Const cstrMSysGroupName     As String = "PUBLIC"'' constant values for reading message textsConst cstrMMsgId            As String = "SX"Const cstrMMsgNumber        As String = "101"Const cstrMMsgVariable1     As String = "var1"Const cstrMMsgVariable2     As String = "var2"Const cstrMMsgVariable3     As String = "var3"Const cstrMMsgVariable4     As String = "var4"Const cstrMMsgLanguage      As String = "DE" ' other constantConst cstrMPathfile         As String = "D:\A\saptext.rtf" ' password for login in R/3Dim strMUsrPassword         As String ' react on button STARTPrivate Sub cmdMsgStart_Click() '   define object for BAPI ActiveX control    Dim oBAPICtrl       As Object'   define object for R/3 logon control    Dim oLogonCtrl      As Object'   business object BapiService    Dim boBapiSercice   As Object '   for BAPI: BapiService.MessageGetDetail    Dim oMsgReturn      As Object    Dim oMsgText As Object    Dim intCounter      As Integer'   to open the file you need a file channel    Dim intChannel      As Integer  '   create BAPI ActiveX control object    Set oBAPICtrl            = CreateObject("SAP.BAPI.1")'   create R/3 logon control object    Set oLogonCtrl           = CreateObject("SAP.Logoncontrol.1")'   connection object is part of the BAPI ActiveX Control object    Set oBAPICtrl.Connection = oLogonCtrl.NewConnection '   fill logon parameters for system to use    oBAPICtrl.Connection.System        = txtSysSystem    oBAPICtrl.Connection.MessageServer = txtSysMessageServer    oBAPICtrl.Connection.GroupName     = txtSysGroupName'   fill logon parameter for user    oBAPICtrl.Connection.Client        = txtUsrClient    oBAPICtrl.Connection.User          = txtUsrUser    oBAPICtrl.Connection.Password      = strMUsrPassword    oBAPICtrl.Connection.Language      = txtUsrLanguage '   user logon to R/3    If oBAPICtrl.Connection.Logon(frmStart.hWnd, False) = False Then        MsgBox "R/3 connection failed"        End    End If '   create BAPI service object    Set boBapiService = oBAPICtrl.GetSAPObject("BapiService") '   call method of BapiService    boBapiService.MessageGetDetail id:=txtMsgId, _                                   Number:=txtMsgNumber, _                                   Language:=txtMsgLanguage, _                                   Textformat:=cboMsgTextformat.Text, _                                   message:=strMsgShorttext, _                                   Return:=oMsgReturn, _                                   Text:=oMsgText '   fill field in form'    If txtMsgShorttext = "" Then'        MsgBox "No message read"'    End If '   user logoff from R/3    oBAPICtrl.Connection.Logoff '   error handling check if RETURN parameter is not empty and react    If oMsgReturn.Value("TYPE") <> "" Then        lblReturn.Caption = oMsgReturn.Value("TYPE") + _                            ". " + _                            oMsgReturn.Value("ID") + _                            ". " + _                            oMsgReturn.Value("NUMBER") + _                            ". " + _                            oMsgReturn.Value("MESSAGE") + _                            ". " + _                            oMsgReturn.Value("MESSAGE_V1") + _                            ". " + _                            oMsgReturn.Value("MESSAGE_V2") + _                            ". " + _                            oMsgReturn.Value("MESSAGE_V3") + _                            ". " + _                            oMsgReturn.Value("MESSAGE_V4") + _                            ". " + _                            oMsgReturn.Value("LOG_NO") + _                            ". " + _                            oMsgReturn.Value("LOG_MSG_NO")     Else '       fill form fields        txtMsgShorttext = strMsgShorttext        arrayText       = oMsgText.Data '       handling of non RTF texts        If cboMsgTextformat.Text <> "RTF" Then            For intCounter = 1 To oMsgText.RowCount                If intCounter = 1 Then                    rtfMsgLongtext.Text = arrayText(intCounter, 1)                Else                    rtfMsgLongtext.Text = rtfMsgLongtext.Text + _                                         Chr(13) + Chr(10) + _                                         arrayText(intCounter, 1)                End If            Next intCounter        End If '       handling of RTF texts        If cboMsgTextformat.Text = "RTF" Then'           save text as rtf file            intChannel = FreeFile            Open cstrMPathfile For Output As #intChannel                For intCounter = 1 To oMsgText.RowCount                    Print #intChannel, arrayText(intCounter, 1)                Next intCounter            Close #intChannel            rtfMsgLongtext.LoadFile cstrMPathfile, rtfRTF        End If    End IfEnd Sub          

タイトルとURLをコピーしました