精华内容
下载资源
问答
  • SAP:使用VBA调用SAP RFC

    2013-04-03 15:08:54
    使用VBA调用SAP RFC和JCO 常用的方法基本一致。 大致分为两步:登录和执行 1、设置登录信息 Set R3 = CreateObject(”SAP.Functions”) R3.Connection.System = “DEV” R3.Connection.ApplicationServer = ...

    使用VBA调用SAP RFC和JCO 常用的方法基本一致。

    大致分为两步:登录和执行

    1、设置登录信息

    Set R3 = CreateObject(”SAP.Functions”)

    R3.Connection.System = “DEV”

    R3.Connection.ApplicationServer = “10.1.82.46″

    R3.Connection.Client = “160″

    R3.Connection.SystemNumber = “00″  R3.Connection.User = “Daniel_1″

    R3.Connection.Password = “Daniel_1″

    R3.Connection.Language = “ZH”

    ‘有中文汉字或中文字符的话,需要设置代码页,否则可能出现乱码

    R3.Connection.Codepage = “8400″

    If R3.Connection.logon(0, False) <> True Then

    Exit Sub

    End If

    2、调用RFC,处理输入、表、输出等参数

    ‘添加RFC名称

    Set MyFunc = R3.Add(”ZRFC_TEST01″)

    ‘设置输入参数

    Set oParam1 = MyFunc.exports(”EBELN”)

    oParam1.Value = “230000459″

    ‘执行远程调用

    Result = MyFunc.CALL

    If Result = True Then

    ‘设置table参数

    Set ekpo = MyFunc.Tables(”T_EKPO”)

    ‘设置返回参数

    set oParam2 = MyFunc.exports(”E_RETURN”)

    Else

    MsgBox MyFunc.EXCEPTION

    R3.Connection.LOGOFF

    Exit Sub

    End If

    ‘注销登录

    R3.Connection.LOGOFF

    ‘使用循环处理table参数

    For i = 1 To ekpo.RowCount

    Set Row = ekpo.Rows(i)

    Cells(i, 1) = Row.Value(”EBELP”)

    Cells(i, 2) = Row.Value(”MATNR”)

    Next

    展开全文
  • 使用VBA调用SAP RFC

    千次阅读 2013-01-28 16:23:38
    使用VBA调用SAP RFC和JCO 常用的方法基本一致。 大致分为两步:登录和执行 1、设置登录信息 Set R3 = CreateObject(”SAP.Functions”) R3.Connection.System = “DEV” R3.Connection.ApplicationServer = ...

    使用VBA调用SAP RFC和JCO 常用的方法基本一致。

    大致分为两步:登录和执行

    1、设置登录信息

    Set R3 = CreateObject(”SAP.Functions”)

    R3.Connection.System = “DEV”

    R3.Connection.ApplicationServer = “10.1.82.46″

    R3.Connection.Client = “160″

    R3.Connection.SystemNumber = “00″  R3.Connection.User = “Daniel_1″

    R3.Connection.Password = “Daniel_1″

    R3.Connection.Language = “ZH”

    ‘有中文汉字或中文字符的话,需要设置代码页,否则可能出现乱码

    R3.Connection.Codepage = “8400″

    If R3.Connection.logon(0, False) <> True Then

    Exit Sub

    End If

    2、调用RFC,处理输入、表、输出等参数

    ‘添加RFC名称

    Set MyFunc = R3.Add(”ZRFC_TEST01″)

    ‘设置输入参数

    Set oParam1 = MyFunc.exports(”EBELN”)

    oParam1.Value = “230000459″

    ‘执行远程调用

    Result = MyFunc.CALL

    If Result = True Then

    ‘设置table参数

    Set ekpo = MyFunc.Tables(”T_EKPO”)

    ‘设置返回参数

    set oParam2 = MyFunc.exports(”E_RETURN”)

    Else

    MsgBox MyFunc.EXCEPTION

    R3.Connection.LOGOFF

    Exit Sub

    End If

    ‘注销登录

    R3.Connection.LOGOFF

    ‘使用循环处理table参数

    For i = 1 To ekpo.RowCount

    Set Row = ekpo.Rows(i)

    Cells(i, 1) = Row.Value(”EBELP”)

    Cells(i, 2) = Row.Value(”MATNR”)

    Next

    展开全文
  • VBA调用SAP GUI

    千次阅读 2017-10-31 14:04:00
    Function Attach() As Boolean '是否调用SAPGUI On Error Resume Next Set SapGuiAuto = GetObject("SAPGUI") On Error GoTo 0 If SapGuiAuto Is Nothing Then Attach = False Exit Function Else Set ...

    上半部分为判断SAP GUI是否可用

    下半部分是实际运用T-Code CK11N 

    Option Explicit
     Public SapGuiAuto As Object
     Public Applicat As Object
     Public Connection As Object
     Public Session As Object
     Public StaBar As Object
     Public SubTbar As Object
     Public subWindow As Object
     Public arr     '数据区域
    Function Attach() As Boolean              '是否调用SAPGUI
     On Error Resume Next
     Set SapGuiAuto = GetObject("SAPGUI")
     On Error GoTo 0
     If SapGuiAuto Is Nothing Then
        Attach = False
        Exit Function
     Else
        Set Applicat = SapGuiAuto.GetScriptingEngine
        On Error GoTo 0
     End If
     If Applicat Is Nothing Then
        MsgBox "Scripting Disabled"
        Attach = False
        Exit Function
     End If
     If Applicat.Children.Count = 0 Then
        Attach = False
        Exit Function
     Else
       Set Connection = Applicat.Children(0)
       On Error GoTo 0
     End If
     Set Session = Connection.Children(0)
     On Error GoTo 0
     If Session.ActiveWindow.text = "SAP" Then
        Attach = False
        Exit Function
     End If
     Attach = True
     End Function
    
    '==========================================================================
    Sub CK11N()
    Dim i&, j&
    Dim arr
    Dim t
    t = Timer
    arr = Sheet1.UsedRange
    If Attach Then
        'Stop
        For i = 2 To UBound(arr)
        On Error GoTo errLine
            Session.findById("wnd[0]/tbar[0]/okcd").text = "ck11n"
            Session.findById("wnd[0]").sendVKey 0
            Call WaitMoment(2)
            Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/subKOPF:SAPLCKDI:4620/ctxtCKI64A-MATNR").text = arr(i, 1)
            Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/subKOPF:SAPLCKDI:4620/ctxtCKI64A-WERKS").text = arr(i, 2)
            Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/tabsREITER/tabpALLG/ssubALLGEMEIN:SAPLCKDI:4612/ctxtCKI64A-KLVAR").text = arr(i, 3)
            Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/tabsREITER/tabpALLG/ssubALLGEMEIN:SAPLCKDI:4612/ctxtCKI64A-TVERS").text = arr(i, 4)
            Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/tabsREITER/tabpALLG/ssubALLGEMEIN:SAPLCKDI:4612/ctxtCKI64A-UEBID").text = arr(i, 5)
            Session.findById("wnd[0]").sendVKey 0
            Call WaitMoment(2)
            Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/tabsREITER/tabpTERM/ssubTERM:SAPLCKDI:4614/ctxtCKI64A-KADAT").text = arr(i, 6)
            Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/tabsREITER/tabpTERM/ssubTERM:SAPLCKDI:4614/ctxtCKI64A-BIDAT").text = arr(i, 7)
            Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/tabsREITER/tabpTERM/ssubTERM:SAPLCKDI:4614/ctxtCKI64A-ALDAT").text = arr(i, 8)
            Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/tabsREITER/tabpTERM/ssubTERM:SAPLCKDI:4614/ctxtCKI64A-BWDAT").text = arr(i, 8)
            Session.findById("wnd[0]").sendVKey 0
            Call WaitMoment(2)
            Session.findById("wnd[0]/tbar[0]/btn[11]").press
            Session.findById("wnd[1]/tbar[0]/btn[0]").press
            Call WaitMoment(2)
            Session.findById("wnd[0]/tbar[0]/btn[3]").press
            Session.findById("wnd[0]/tbar[0]/btn[3]").press
            
            Sheet1.Rows(i).Interior.ColorIndex = 33
        Next i
    End If
        MsgBox ("Done " & (Timer - t))
    Exit Sub
          
    errLine:
       MsgBox ("ERROR " & i)
    Stop
    End Sub
    
    Private Sub WaitMoment(rMoment!)
        Dim rT!
        rT = Timer
        Do While Timer - rT < rMoment
            DoEvents
        Loop
    End Sub
    

     

    转载于:https://my.oschina.net/tedzheng/blog/1558696

    展开全文
  • VBA调用SAP RFC出错

    2019-06-12 18:41:39
    Sub sapMARC() Dim iData As Integer Dim nField As Integer Dim nData As Integer Dim Result As Boolean Dim vRow As Variant ...Set R3 = CreateObject(“SAP.Functions”) R3.Connection.Sys...

    Sub sapMARC()
    Dim iData As Integer
    Dim nField As Integer
    Dim nData As Integer
    Dim Result As Boolean
    Dim vRow As Variant
    MsgBox “Program Start!”
    Set R3 = CreateObject(“SAP.Functions”)
    R3.Connection.System = “KP1”
    R3.Connection.ApplicationServer = SapApplicationServer
    R3.Connection.Client = SapCient
    R3.Connection.SystemNumber = SapSystemNumer
    R3.Connection.User = sapuser
    R3.Connection.Password = sappass
    R3.Connection.Language = SapLanguage

    If R3.Connection.logon(0, False) <> True Then
    Exit Sub
    End If
    ‘-------------------------------------------------------
    With ThisWorkbook.Sheets(“Program”)
    Lrow = .Range(“a65536”).End(xlUp).Row
    brr = Application.Transpose(.Range(“A7:A” & .Range(“A65536”).End(xlUp).Row))
    If IsArray(brr) Then
    For s = 1 To UBound(brr)
    brr(s) = "’" & brr(s) & “’”
    Next s
    optin = Join(brr, “,”)
    Else
    optin = “’” & brr & “’”
    End If
    .Cells(11, 10) = optin
    End With
    '---------------------------------------------------------
    Set RFC = R3.Add(“RFC_READ_TABLE”)
    'Print
    Set it_fields = RFC.Tables(“FIELDS”)
    Set it_options = RFC.Tables(“OPTIONS”)
    Set it_data = RFC.Tables(“DATA”)

    RFC.exports(“QUERY_TABLE”).Value = “MARC” ’ my table in SAP

    With ThisWorkbook.Sheets(“Parts info”)
    it_fields.Rows.Add
    it_fields.Value(1, “FIELDNAME”) = “MATNR”
    it_fields.Rows.Add
    it_fields.Value(2, “FIELDNAME”) = “WERKS”
    it_fields.Rows.Add
    it_fields.Value(3, “FIELDNAME”) = “MMSTA”
    it_fields.Rows.Add
    it_fields.Value(4, “FIELDNAME”) = “EKGRP”
    it_fields.Rows.Add
    it_fields.Value(5, “FIELDNAME”) = “DISMM”
    it_fields.Rows.Add
    it_fields.Value(6, “FIELDNAME”) = “DISPO”
    it_fields.Rows.Add
    it_fields.Value(7, “FIELDNAME”) = “PLIFZ”
    it_fields.Rows.Add
    it_fields.Value(8, “FIELDNAME”) = “DISLS”
    it_fields.Rows.Add
    it_fields.Value(9, “FIELDNAME”) = “BESKZ”
    it_fields.Rows.Add
    it_fields.Value(10, “FIELDNAME”) = “SOBSL”
    it_fields.Rows.Add
    it_fields.Value(11, “FIELDNAME”) = “MINBE”
    it_fields.Rows.Add
    it_fields.Value(12, “FIELDNAME”) = “BSTMI”
    it_fields.Rows.Add
    it_fields.Value(13, “FIELDNAME”) = “BSTRF”
    it_fields.Rows.Add
    it_fields.Value(14, “FIELDNAME”) = “MTVFP”
    it_fields.Rows.Add
    it_fields.Value(15, “FIELDNAME”) = “STRGR”
    'it_fields.Rows.Add
    'it_fields.Value(3, “FIELDNAME”) = “MAKTX”
    Set it_options = RFC.Tables(“OPTIONS”)
    it_options.Rows.Add
    it_options.Value(1, “TEXT”) = “MATNR in (” & optin & “)”
    it_options.Rows.Add
    it_options.Value(2, “TEXT”) = “AND WERKS =‘8701’”
    RFC.exports(“DELIMITER”).Value = “,”
    Result = RFC.Call
    .UsedRange.Clear
    nFields = it_fields.RowCount
    nData = it_data.RowCount
    For iField = 1 To nFields
    .Cells(1, iField) = it_fields.Rows(iField).Value(“FIELDTEXT”)
    Next
    .Columns(“a:a”).NumberFormatLocal = “@”
    For iData = 1 To nData
    For j = 1 To 15
    n = j - 1
    vRow = Split(it_data(iData, 1), “,”)
    .Cells(iData + 1, j) = vRow(n)
    Next
    Next
    .Activate
    End With
    R3.Connection.LOGOFF
    MsgBox “Program End!”
    End Sub

    一部分代码摘自 小懒_lan 博主的代码,我把MATNR(物料)设置为多颗料【it_options.Value(1, “TEXT”) = “MATNR in (” & optin & “)”】,现在遇到的问题是一旦料号超过4个,result就返回False,有木有博友知道问题的原因,帮忙看下怎么修改0.0#!
    [1]: http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference
    [2]: https://mermaidjs.github.io/
    [3]: https://mermaidjs.github.io/
    [4]: http://adrai.github.io/flowchart.js/

    展开全文
  • vba与SAP-RFC接口调用实例。通过VBA程序实例,介绍了利用Excel的VBA宏程序,调用SAP系统的RFC远程函数接口,实现外部数据与SAP系统的交互
  • VBA调用RFC

    千次阅读 热门讨论 2018-05-06 14:21:08
    创建sap.functions对象使用的是wdtfuncs.ocx文件(在gui的安装目录下也有)运行到createObject(sap.functions)报activex 429”不能创建对象的错误“,是因为用的是64位的excel,wdtfuncs.ocx文件是32位的,使用64位...
  • excel 调用SAP 函数

    2009-02-27 13:03:23
    The paper demonstrates by means of a code sample how easy it is to use VBA as the underlying technology for logon and data extraction. The example allows one to define R/3 systems and to retrieve/...
  • EXCEL技术VBA一键获取SAP系统数据

    千次阅读 2020-02-24 17:15:00
    1.第一步 在SAP系统建立一个可远程调用的函数RFC 2.第二步 就是在EXCEL里面的操作了 找到开发工具 点击Visual Basic (切记EXCEL要启用宏 在信任中心里面) 3.第三步 在EXCEL里面写代码 格式差不多大同小异 Sub ...
  • SAP DOI调用Excel例子

    2012-04-29 20:01:20
    SAP DOI调用Excel例子 DOI功能很强大,可以做到很多功能,而且可以使用VBA扩展新功能,可以做出如下效果: 一个简单的DOI模板代码如下: *&--------------------------------------...
  • SAP 对法定的会计报表,比如资产负债表,损益表等,有多种...1. 资产负债表实现方法说明在 Excel 中,使用 VBA 调用 SAP RFC 方法,导入公司代码下会计科目和科目汇总表 (英文叫 Trial balance, 包括会计科目的期初...
  • 当用SAP下载自开发的导入程序模板时候,提示“调用数据提供商错误”! 或者导出SAP表时,软件直接卡死,CUP占用100%,这种情况。都可以使用一下方法进行解决。 这也是我找了好长时间的解决办法才偶然发现的,至于网上...
  • 提问: 星主,你好。我们公司使用的是SAP GUI,数据库是hana,...目前可以用VBA调用BAPI获得SAP中的数据,比如客户的open items。尝试用nodejs,好像要下载rfc sdk,但没权限,也许是我不会下载。我想请教的是如何...
  • 提问: 星主,你好。我们公司使用的是SAP GUI,数据库是hana,...目前可以用VBA调用BAPI获得SAP中的数据,比如客户的open items。尝试用nodejs,好像要下载rfc sdk,但没权限,也许是我不会下载。我想请教的是如何...
  • WPS2019下开启宏,用于VBA编辑

    千次阅读 2019-10-21 10:33:44
    之前用C#调用RFC接口连接SAP系统出问题,所以尝试用VB。 听说WPS的excel里有VBA编辑器,所以尝试在WPS2019个人版下安装VBA插件。 插件下载地址:http://www.liangchan.net/soft/softdown.asp?softid=11004 安装步骤...
  • 1、调用SAP ODATA API 2、正则表达式解析返回结果 3、把结果复制到数组,并展示到excel表中,动态更新 4、excel中vba设置多项公式; 5、企业微信提醒;
  • 关于SAP-EXCEL的几种常用输出方式

    千次阅读 2011-09-21 16:50:49
    最近没事就整理了一下SAP的两种常用输出方式分别是: 1、EXCEL嵌套模式输出-OAOR http://download.csdn.net/detail/SAPHOME/3618828 2、SMW0上传EXCEL模版以及程序调用(常用的调用vba模式) http://d
  • 上述接口测试完成以后,在整个系统集成上具备了技术的可行性,因为日常工作用的比较多的就是Excel,在此处我们用VBA展示一下调用ODATA API的部分代码。 一 设置满足需求的URL字符串 ,例如我们要查询2020-12-01到2020...
  • 实现通用的数据库表读取功能。主要说明函数调用后,VBA如何处理这些数据并在Excel中显示。
  • 1. 用Tcode: SE11建立一个标准表ZTBRFC2. 写好RFC.3. 在EXCEL中调用该RFC, 并把当前EXCEL Sheet1的数据写入ZTBRFC. VBA代码:Private Sub updateRFCTB()Dim func, iTable As ObjectDim RC As Int
  • EXCEL宏的录制

    2019-04-19 10:21:36
    SAP的DOI和OLE操作往往会涉及到对EXCEL模板中宏的调用,宏的调用,实际上是对某段VBA代码的调用,而VBA代码是可以使用宏录制功能自动生成的,以下简单介绍宏的录制。 在视图选项下,就是宏录制和宏查看的入口,如下...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

vba调用sap