重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
用Excel去取SAP中的数据
青阳网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站开发等网站项目制作,到程序开发,运营维护。创新互联从2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
Dim iqtable As Object
Dim ifields As Object
Dim idata As Object
Dim itabname As String
Dim ifldname As String
' Macro1 Macro
' Macro recorded 9/7/2005 by StoneF
Set oFunction = CreateObject("SAP.LogonControl.1")
Set oConnection = oFunction.NewConnection
oConnection.Client = "200"
oConnection.Language = "EN"
oConnection.User = "Xenos"
oConnection.Password = "fhqitxgt"
oConnection.ApplicationServer = "172.21.0.2"
oConnection.SystemNumber = "00"
result = oConnection.Logon(0, True)
Set ofun = CreateObject("SAP.FUNCTIONS")
Set ofun.Connection = oConnection
Set func = ofun.Add("RFC_READ_TABLE") 'call RFC_READ_TABLE?
func.Exports("QUERY_TABLE") = "MARA"
Set ioptions = func.tables.Item("OPTIONS")
Set ifields = func.tables.Item("FIELDS")
Set idata = func.tables.Item("DATA")
'here only add 3 fields
ifields.Rows.Add
ifields.Value(1, "FIELDNAME") = "MATNR"
ifields.Rows.Add
ifields.Value(2, "FIELDNAME") = "MTART"
ifields.Rows.Add
ifields.Value(3, "FIELDNAME") = "MATKL"
'icall = func.RFC_READ_TABLE(QUERY_TABLE:="MARA", FIELDS:= ifields, DATA:=idata,OPTIONS = ioptions)
icall = func.Call
If icall = True Then 'icall=true
ThisWorkbook.Sheets(1).Cells(1, 1) = "料号"
ThisWorkbook.Sheets(1).Cells(1, 2) = "类型"
ThisWorkbook.Sheets(1).Cells(1, 3) = "未知"
For i = 2 To idata.Rows.Count
ILine = idata.Value(i, "WA")
imatno = Mid(ILine, 1, 18)
imtype = Mid(ILine, 19, 4)
imgrp = Mid(ILine, 23, 9)
ThisWorkbook.Sheets(1).Cells(i, 1).NumberFormatLocal = "@"
ThisWorkbook.Sheets(1).Cells(i, 1) = Right(imatno, 12)
ThisWorkbook.Sheets(1).Cells(i, 2) = imtype
ThisWorkbook.Sheets(1).Cells(i, 3) = imgrp
Next i
MsgBox "Read table MARA OK!"
Else
MsgBox "OPEN FAILed,Fuckying your damning SAP!"
End If
不知道能否帮到你。。。。 。。
1.执行T-CODE:SE15
2.进入菜单ABAP Dictionary = Fields = Table Fields.
3.输入table name, 例如: vbap(销售凭证项目数据),然后点击运行
4.此时只能看到几列数据,点击工具栏上倒数第二个按钮“Complete List”,就可以看到全部列的技术信息了
5.全选字段,然后利用系统菜单导出到excel(List = Save = Local files)
提到进销存报表,SAP提供了一个标准报表MB5B。这个报表能显示指定的日期范围内,期初库存(数量与金额),期末库存(数量与金额),总入库数(数量与金额),总出库数(数量与金额)等重要数据,如下图:
既然有了这个报表,既可以查实时库存,又可以查询历史期间的期初期末库存,还可以查询指定时间段内的收发货数量与金额,为什么很多企业里尤其是民营企业里还要开发自己的进销存报表呢?
首先是因为各个企业里有企业特殊需求。
笔者在SY项目里,一个重要任务就是要救活客户早已存在却不堪使用的进销存报表。优化后的进销存报表也是要显示期初余额,期初库存数量,入库数量与金额,出库数量与金额,期末数量与金额等栏位;同时对入库与出库,根据业务部门关注的重点做了几个细分,比如入库再细分采购入库,工单入库和其它入库;出库则再细分为销售出库,工单发料和其它出库。这些都是企业特定的需求,使用报表的业务部门有其特定关注点,所以报表需要支持这些关注点。MB5B报表对于这些需求的支持显然不太给力。
其次还因为企业还有特定行业要求。
SY项目的客户生产出来的成品与半成品,由于产品所在行业的特殊性,业务部门除了关心出入库数量与金额以外,还关心出入库的面积与重量以及期初期末面积与重量。并且由于客户使用了可配置物料,这些物料的单个面积不固定,而是根据不同销售订单里相关长宽特性值的不同而不同。类似这种需求,标准的MB5B报表当然更是无法支持。
第三,更重要的原因是,MB5B报表里对于收发货数量与金额栏位的统计口径并不科学,不能满足企业常规的需求。比如其总收发货数量栏位值的计算逻辑,除了包括常规收发货数量以外,还包括收货的取消,采购订单退货的数量等。
比如如下MB5B的截图里,
报表将105移动类型的收货以及冲销操作(106移动类型)的数量各自1000 KG分别计入了总收货的数量与总发货数量里。这显然是不符合企业常规逻辑的,比如采购订单收货,我收了1000KG,又退了1000KG,那么该订单的收货数量应该是0。你在总收/发货数量里都计入了这1000KG,在很多企业的进销存逻辑里是不能接受的。
再者SAP系统的报表MB5B,会把普通的转移过账的数量也分别计入总发货数量与总收货数量栏位里,比如MB5B如下结果截图里,
该物料有一笔移动类型413+E的货物移动,数量是9500 PC, 这张货物移动的业务背景是把9500 PC的自有库存转为销售订单库存。
这是一笔普通的转移过账,并不是真正的出库或者入库,但是MB5B报表结果里会把这笔数量分别计入发货数量与收货数量栏位里,这样不符合很多企业进销存报表中进与销的理解与逻辑。
包括但是不限于上述诸多原因,使得项目实践中,进销存报表的开发比较常见。
2018-06-28 写于上海市