问题描述
我正在尝试使用 python connect SAP 系统获取数据。在这里,我对如何过滤一个特定字段不是空的有疑问?
例如下图,如何过滤字段QNAME不为空。在SAP中,我们可以轻松设置。 非常感谢!
table = 'LTAP'
options = [{ 'TEXT': "LGNUM = '586'" and "VLTYP = 'GPA'" and "NLTYP = 'PD2'"}]
fields = ['TANUM','VLTYP','VLPLA','NLTYP','NLPLA','QDATU','QNAME']
pp = PrettyPrinter(indent=4)
rowskips = 0
print("----Begin of Batch---")
result = conn.call("RFC_READ_TABLE",QUERY_TABLE = table,DELIMITER='|',FIELDS = fields,\
OPTIONS = options,ROWSKIPS = rowskips,ROWCOUNT = 50 )
pp.pprint(result['DATA'])
解决方法
在 ABAP SQL(又名 Open SQL)中,“不等于”对应于运算符 <>
。使用 pyrfc,它将是:
options = [{ 'TEXT': "QNAME <> '' and LGNUM = '586' and VLTYP = 'GPA' and NLTYP = 'PD2'"},{ 'TEXT': " and QDATU = '20160422'" }]
注意有两行,因为 TEXT
在 RFC_READ_TABLE
中只有 72 个字符。如果您有超过 72 个字符,将条件分成几行,如解释 here,即 RFC_READ_TABLE
将用空格填充每一行以获得恰好 72 个字符,并将整理所有行而不进行任何转换形成 WHERE 子句。