Auto customer payment allocation
Auto customer payment allocation
START-OF-SELECTION.
SELECT belnr, bukrs, kunnr , budat, wrbtr , waers,hkont, zfbdt, umskz
FROM bsid_view
WHERE bukrs = @p_bukrs
AND kunnr IN @s_kunnr
AND budat IN @s_budat
AND waers = @p_waers
INTO TABLE @DATA(it_invoice).
IF it_invoice IS NOT INITIAL.
SORT it_invoice BY belnr bukrs zfbdt.
READ TABLE it_payments INTO DATA(ls_payments) WITH KEY bukrs = <fs_invoice>-bukrs waers =
<fs_invoice>-waers.
IF zaut_all = ’X’.
IF sy-subrc = 0 AND ls_payments-wrbtr = <fs_invoice>-wrbtr. " EXACT MATCH
wa_final-zalloc_amt = <fs_invoice>-wrbtr.
wa_final-zstatus = ’MATCHED’ .
DELETE it_payments WHERE belnr = ls_payments-belnr. " Remove payment from the table
wa_final-zalloc_amt = ls_payments-wrbtr.
wa_final-zstatus = ’PARTIALLY MATCHED’.
wa_final-zunalloc_amt = <fs_invoice>-wrbtr - ls_payments-wrbtr.
DELETE it_payments WHERE belnr = ls_payments-belnr.
wa_doc_header-ac_doc_no = <fs_invoice>-belnr.
wa_doc_header-comp_code = <fs_invoice>-bukrs.
wa_doc_header-pstng_date = <fs_invoice>-budat.
wa_accountgl-ac_doc_no = <fs_invoice>-belnr.
wa_accountgl-comp_code = <fs_invoice>-bukrs.
wa_accountgl-customer = <fs_invoice>-kunnr.
wa_accountgl-pstng_date = <fs_invoice>-budat.
wa_acc_rece-customer = <fs_invoice>-kunnr.
wa_acc_rece-gl_account = <fs_invoice>-hkont.
wa_acc_rece-comp_code = <fs_invoice>-bukrs.
wa_curr_amu-currency = <fs_invoice>-waers.
ENDFORM.