温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python 3.x - Getting FAGLL03H report using pyrfc
python-3.x sap saprfc pyrfc

python 3.x - 使用pyrfc获取FAGLL03H报告

发布于 2020-04-15 11:38:16

这是SAP和pyrfc模块使用之间的混合问题。我需要每天使用FAGLL03H tcode将总帐报告复制到数据库中。现在,问题是FAGLL03H本身不是一个表,而是一个总账科目项目浏览器(总账视图),因此我需要访问该Tcode并传递一系列参数才能获取我们的信息。需要。

  1. 如何使用RFC协议访问该tcode并生成报告?
  2. 是否可以通过pyrfc做(1)?

这是我用来查询表的代码:

import pyrfc
from pprint import PrettyPrinter


conn = pyrfc.Connection(ashost=...)

options = [{'TEXT': "FCURR = 'USD'"}]
pp = PrettyPrinter(indent=4)
ROWS_AT_A_TIME = 10
rowskips = 0

while True:
    print(u"----Begin of Batch---")
    result = conn.call('RFC_READ_TABLE', \
                       QUERY_TABLE='TCURR', \
                       OPTIONS=options, \
                       ROWSKIPS=rowskips, ROWCOUNT=ROWS_AT_A_TIME)
    pp.pprint(result['DATA'])
    rowskips += ROWS_AT_A_TIME

    if len(result['DATA']) < ROWS_AT_A_TIME:
        break

查看更多

提问者
Juan David
被浏览
302
Suncatcher 2020-02-06 23:04
  1. 没门
  2. 没有

您需要了解的要点是SAP事务(tcode)和SAP RFC之间的区别两者之间的差异很大,因此无法以类似的方式使用它们。您正在尝试通过像表一样调用FAGLL03H报告RFC_READ_TABLE,但这不是表,而是更多,这是一个事务。

SAP tcode就是SAP中指向某些程序(通常是GUI程序)的快捷方式,它可以包含数百个模块,包括启用RFC的模块。而且其中一些模块是内部模块,没有RFC等效项,因此不可能远程调用它们,至少但不是最后一次调用,则必须知道如何调用它们(以什么顺序)以及传递哪些参数。

SAP RFC就像是ABAP代码的容器(也是调用此代码的协议),该容器实现了某些功能,或者是一小块,例如转换字符的大小写或转换度量单位,或者是一个巨大的功能,例如过帐财务文档和创建企业RFC模块可以比喻为Python模块或Java方法,它们通常是为一项任务实现的,通常不是独立使用,而是与其他方法结合使用。

上述交易量巨大,旨在用于总账科目行的输出,不能通过PyRFC调用。PyRFC 功能仅限于调用由其FAGLL03H组成的RFC模块

您在这里唯一能做的就是找到等效的功能模块,这些功能模块返回与相同的项目FAGLL03H可能的候选人:

  • BAPI_GLX_GETDOCITEMS

  • FAGL_GET_OPEN_ITEMS_GL

  • FAGL_GET_OPEN_ITEMS_KU

  • FAGL_GET_OPEN_ITEMS_LI

  • FAGL_GET_OPEN_ITEMS

  • FKK_GL_LINE_ITEMS_SELECT

  • BAPI_AP_ACC_GETBALANCEDITEMS

  • BAPI_AR_ACC_GETBALANCEDITEMS

  • BAPI_AP_ACC_GETOPENITEMS

  • BAPI_AR_ACC_GETOPENITEMS

您应该尝试每种方法,并将输出与您的tcode(如果相同)进行比较。只有在此之后,您才能使用PyRFC调用它们。