SAP:根据销售类型加入合作伙伴功能数据
SAP: join partner function data based on sales type
使用 SAP 数据,我们愿意丰富与最后一位客户的销售数据。根据销售类型,有不同的合作伙伴功能代码对应于执行销售的最后一家公司(例如:我们可能有间接或直接销售)。目前,我们一直在考虑 tables VBAP/VBAK/VBPA。我们从每个 table 中提取数据以使用 sap4j 分隔文件,然后在 VBELN 上加入 VBAP 和 VBPA,并考虑合作伙伴代码 WE(收货人)或指示最后一位买家的自定义委托代码。
是否有一些准确的方法可以知道谁是给定销售链中的最后一个买家?
可以通过以下方式完成:
def sales_tabkey(row):
return "001{}{}".format(row['VBELN'], row['POSNR'])
def expected_partner_function_for_sales_type(row):
consignation_codes = set(['ORK', 'XKB', 'ZSOK', 'ZLZK', 'ZTSK', 'KE', 'ZED', 'ZZN'])
if row['AUART'] in consignation_codes:
return 'ZK'
return 'WE'
def get_kunnrf_frame(vbap, vbak, vbpa, kna):
consignation_codes = set(['ORK', 'XKB', 'ZSOK', 'ZLZK', 'ZTSK', 'KE', 'ZED', 'ZZN'])
df = pd.merge(vbap, vbak, on=['VBELN'], how='left')
df = pd.merge(df, vbpa, on='VBELN', how='left')
df["EXPPARVW"]=df.apply(expected_partner_function_for_sales_type, axis=1)
# KUNNR in kna is considered end_client_id
df = pd.merge(df, kna, on='ADRNR', how='left')[['VBELN','POSNR', 'KUNNR','end_client_id', 'ADRNR', 'PARVW', 'EXPPARVW', 'AUART']].drop_duplicates()
df['TABKEY']=df.apply(sales_tabkey,axis=1)
endclient_tabkeys = set(df.TABKEY.unique())
dfa = df[df.PARVW==df['EXPPARVW']]
dfb = df[df.TABKEY.isin(endclient_tabkeys.difference(set(dfa.TABKEY.unique())))]
return pd.concat([dfa, dfb])
使用 SAP 数据,我们愿意丰富与最后一位客户的销售数据。根据销售类型,有不同的合作伙伴功能代码对应于执行销售的最后一家公司(例如:我们可能有间接或直接销售)。目前,我们一直在考虑 tables VBAP/VBAK/VBPA。我们从每个 table 中提取数据以使用 sap4j 分隔文件,然后在 VBELN 上加入 VBAP 和 VBPA,并考虑合作伙伴代码 WE(收货人)或指示最后一位买家的自定义委托代码。
是否有一些准确的方法可以知道谁是给定销售链中的最后一个买家?
可以通过以下方式完成:
def sales_tabkey(row):
return "001{}{}".format(row['VBELN'], row['POSNR'])
def expected_partner_function_for_sales_type(row):
consignation_codes = set(['ORK', 'XKB', 'ZSOK', 'ZLZK', 'ZTSK', 'KE', 'ZED', 'ZZN'])
if row['AUART'] in consignation_codes:
return 'ZK'
return 'WE'
def get_kunnrf_frame(vbap, vbak, vbpa, kna):
consignation_codes = set(['ORK', 'XKB', 'ZSOK', 'ZLZK', 'ZTSK', 'KE', 'ZED', 'ZZN'])
df = pd.merge(vbap, vbak, on=['VBELN'], how='left')
df = pd.merge(df, vbpa, on='VBELN', how='left')
df["EXPPARVW"]=df.apply(expected_partner_function_for_sales_type, axis=1)
# KUNNR in kna is considered end_client_id
df = pd.merge(df, kna, on='ADRNR', how='left')[['VBELN','POSNR', 'KUNNR','end_client_id', 'ADRNR', 'PARVW', 'EXPPARVW', 'AUART']].drop_duplicates()
df['TABKEY']=df.apply(sales_tabkey,axis=1)
endclient_tabkeys = set(df.TABKEY.unique())
dfa = df[df.PARVW==df['EXPPARVW']]
dfb = df[df.TABKEY.isin(endclient_tabkeys.difference(set(dfa.TABKEY.unique())))]
return pd.concat([dfa, dfb])