超过 72 个字符,另起一行
SAPJCOFunction_0.Request{/RFC_READ_TABLE/TABLES/OPTIONS/item[1]/TEXT} =AUFNR EQ '000000700023' OR AUFNR EQ '000000700003'
SAPJCOFunction_0.Request{/RFC_READ_TABLE/TABLES/OPTIONS/item[2]/TEXT} =OR AUFNR EQ '000000700006' OR AUFNR EQ '000000700007'
SAPJCOFunction_0.Request{/RFC_READ_TABLE/TABLES/OPTIONS/item[3]/TEXT} =OR AUFNR EQ '000000700011' OR AUFNR EQ '000000700005'
多行这样写,注意用 AND OR sql 语句连接
options = [{'TEXT': "VBELN EQ '%s'" % dn }, {'TEXT': "AND VBELN EQ '%s'" % dn }]
参考
https://answers.sap.com/questions/4063340/rfcreadtable-options—text-length.html
注意 options = [{'TEXT': "VBELN EQ '%s'" % dn }]
TEXT 最大长度 72 个字符,为 sql 查询语言,不能用 = 要用 EQ,并且语句用 AND
比如
"VBELN EQ '123' AND MATNR EQ '456'"
def query_lips_detail(dn):
with pyrfc.Connection(**conn_params) as conn:
options = [{'TEXT': "VBELN EQ '%s'" % dn }]
print(options)
# 执行查询
result = conn.call('RFC_READ_TABLE', QUERY_TABLE='LIPS', OPTIONS=options, DELIMITER='|',
FIELDS=['MATNR', 'MEINS'])
# 处理查询结果
unit_name_dict = {}
if 'DATA' in result:
data = result['DATA']
fields = result['FIELDS']
# print(fields)
# 输出查询结果
print(data)
for item in data:
material = item['WA'].split('|')[0].strip()
unit_name = item['WA'].split('|')[1].strip()
unit_name_dict[material] = unit_name
else:
print('查询结果为空')
print(unit_name_dict)
return unit_name_dict