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])