首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyrfc: RFCTable类型TBL1024

Pyrfc: RFCTable类型TBL1024
EN

Stack Overflow用户
提问于 2016-11-23 14:41:34
回答 1查看 366关注 0票数 0

要将PDF二进制文件上传到SAP,我可以使用RFC功能模块。这个FM需要两个特定的参数:

  • IC_ARC_OBJECT =在SAP (OAC2)中定义mime类型的文档类
  • IN_CONTENT_LENGHT =导入数据类型,是文件的大小
  • IT_CONTENT =导入带有文件字节的结构TBL1024表,切割成大小为1024的块
  • ET_MESSAGES =只是一个检查错误的BAPIRET2表(返回表)

函数模块在Python程序中成功执行,但当我中断函数模块以检查IT_CONTENT的内容时,可以看到表中的行没有正确填写:

提取FM的python程序调用:

代码语言:javascript
复制
arc_object = "ZZ_PDF" 
content = Arc.get_arc_content(filename)
size = Arc.get_size(filename)
messages = []
result = connection.call("ZZ_UPLOAD_FILE", 
IC_ARC_OBJECT = arc_object,
IN_CONTENT_LENGTH = str(size),
IT_CONTENT = content,
ET_MESSAGES = messages)
messages = result['ET_MESSAGES']
for mes in messages:
     print mes['MESSAGE']

python函数Arc.get_arc_content(filename)的提取

代码语言:javascript
复制
def get_arc_content(filename="file.pdf"):
    maxLineLength = 1024
    structure = []
    if filename == '':
        filename = 'file.pdf'
    with open(filename, 'rb') as file1:
        f = file1.read()
        n = 1024
        fl = [f[i:i + n] for i in range(0, len(f), n)]

    content = []
    for line in fl:
        lineapp = {
            u"LINE": line
        }
        print len(line)
        content.append(lineapp)

    return content

SAP中参数的结果如下:

  • IN_CONTENT_LENGHT = 000000007945 (7.8kb)
  • IT_CONTENT =8x1行:(4行)

255044462D312E3300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 B89B067867673EAB00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 LINE3 5BF4CB23B9A7513700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 LINE4 61DB44B3B0AAB12500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ..。LINE8 202020202020202000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

使用FM ARCHIVE_OBJECT_GET检查的IT_CONTENT的预期结果应该如下所示:

255044462D312E330D0A25E2E3CFD30D0A25525354585044463320506172616D65746572733A204452535458680D0A322030206F626A0D0A3C3C0D0A2F46696C7465722033203020520D0A2F4C656E67 FA1D555450C8EF41AC263F14BC03C49BDD773CF22BC43FD21B3565DA2DFCCB83D8FFAC7BCBBBEBE6DED0AD68DEA29B349398511824DDDCFFAF41EA7FDADDF67EE61EF3FC303293F7E96351A911F8DE10 FB4A559526CD6AED428976E80F8DD0B02517C4178D1EFB73C65792D09CFE5C717883BE38E61ED0AB3ADC0983C103E4338A1B210DA086DA73375E679C0A410F510FDC542BB686A1A4D601DD411A506504 .

所以问题是,只有第一个字节被传输,其余的都落后于零。

这与我做错了什么事有关,还是不可能正确地将二进制文件切割成1024块,并将它们转移到一个表中以实现SAP。如何在python中使用SAP的字节类型?

非常感谢你的建议/支持。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-25 07:40:44

用pyrfc-1.9.4-py2.7-双赢amd64蛋解决了这一问题。

似乎是Windows + PyRFC 1.9.3版本的问题,1.9.4发行版工作得很好,

非常感谢Srdjan Boskovic的支持

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40767381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档