SAP: присоединение к данным о партнерской функции в зависимости от типа продаж

Работая с данными SAP, мы хотим дополнить данные о продажах последним клиентом. В зависимости от типа продаж существуют разные коды функций партнера, которые соответствуют последней компании, которой осуществляется продажа (например: у нас могут быть косвенные или прямые продажи). Пока что мы рассматривали таблицы VBAP / VBAK / VBPA. Мы извлекаем данные из каждой таблицы в отдельные файлы с помощью sap4j, а затем присоединяемся к VBAP и VBPA на VBELN и рассматриваем партнерские коды. МЫ (получатель товара) или таможенные коды отправления, указывающие последнего покупателя отправлений.

Есть ли какой-нибудь точный способ узнать, кто является последним покупателем в цепочке для данной продажи?


person sashimi    schedule 02.12.2020    source источник
comment
есть стандартные отчеты, но нет отдельных -тип заказа среди них, поэтому ваш единственный выбор - vbap / vbpa   -  person Suncatcher    schedule 03.12.2020


Ответы (1)


Сделать это можно следующим образом:

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])
person sashimi    schedule 04.12.2020