對於SAP的應付賬款中根據供應商付款條件,計算付款日期,個人在實際使用中的一些做法, 分兩步走
一、借用 FUNCTION “FI_TERMS_OF_PAYMENT_PROPOSE” 作用:根據付款條件將文件日期或過帳日期,求的 條件起算日 bseg-zfbdt( Baseline date for payment)
及付款條件對應數據表T052的數據被表 i_t052
二、以bseg-zfbdt為計算日(即起始日),我公司因配合為財務月固定付款日, 將計算日分割為年、月、日,三部份,月+ i_t052-ZSMN1 ,日=i_t052-ZSTG1,組合后即得付款日。
下面是自己編寫的一個簡單的取得付款日的Function
FUNCTION Z_GET_DUE_DATE.
*\*\*\IMPORTING
*\VALUE(I_BLDAT) LIKE SY-DATLO
*\VALUE(I_BUDAT) LIKE SY-DATLO *\VALUE(I_ZTERM) LIKE T052-ZTERM *\EXPORTING
*\VALUE(I_DUDAT) LIKE SY-DATLO *\TABLES:T052.
DATA : BEGIN OF I_T052 OCCURS 0. INCLUDE STRUCTURE T052. DATA:END OF I_T052.
DATA: E_ZFBDT LIKE SY-DATLO.
CALL FUNCTION 'FI_TERMS_OF_PAYMENT_PROPOSE' EXPORTING
I_BLDAT = I_BLDAT \Document date I_BUDAT = I_BUDAT \Posting date * i_cpudt = sy-datum \CPU date * i_zfbdt = \Baseline date for payme I_ZTERM = I_ZTERM \Terms of payment IMPORTING
* e_zbd1t = \Days for cash discount * e_zbd1p = \Percentages for cash di
* e_zbd2t = \Days for cash discount * e_zbd2p = \Percentages for cash di * e_zbd3t = \Days for net due date E_ZFBDT = E_ZFBDT \Baseline date for payme * e_split = \Terms of payment are E_T052 = I_T052 . \DATA: YY(4), MM(2), DD(2), D1 TYPE P, M1 TYPE P. YY = E_ZFBDT+0(4). MM = E_ZFBDT+4(2). DD = E_ZFBDT+6(2). DD = I_T052-ZSTG1. MM = MM + I_T052-ZSMN1.
IF MM > 12. MM = MM - 12. YY = YY + 1. ENDIF.
Table of payment D1 = STRLEN( DD ). M1 = STRLEN( MM ). IF D1 = 1.
CONCATENATE '0' DD INTO DD. ENDIF. IF M1 = 1.
CONCATENATE '0' MM INTO MM. ENDIF.
CONCATENATE YY MM DD INTO I_DUDAT.
ENDFUNCTION.
相关推荐: