Quantcast
Channel:
Viewing all articles
Browse latest Browse all 7499

Re: Erfahrungen mit BAdI FI_TRANS_DATE_DERIVE

$
0
0
Bei implementierung von dieser BADI sollte man einem nicht ausser Acht lassen - diese BADI zieht fur die SD Belege nicht! Das selbe gilt für TRM Modul.

Das heißt aber nicht dass man diese beider Module nicht beinfulussen kann.
SD Umrechnungsdatum kann man durch folgende user exits beeinflusst sein:
USEREXIT_FILL_VBRK_VBRP in program RV60AFZCDort kann man die Umrechnungsdatum VBRK-KURRF_DAT beeinflussen.
Wichtig - falls die Determinierung basierend auf Belegart determiniert wird, muss man von der Tabelle TVFK von feld BLART entsprechenden Rechnung Belegart lesen. Die Werte aus dieser Tabelle sind schon während des Programmlaufes vorhanden in work area TVFK.
Auch immer beachten dass der Benutzer die Rechnungsdatum manuell in VF01 beeinflussen kann - da stehen die Werte in work area KOM (das manuel eingegebe Rechnungsdatum steht im Feld KOM-FKDAT).
Am besten wäre es wenn von diesem user exit dass FUBA FI_DERIVE_WWERT, der die BADI FI_TRANS_DATE_DERIVE aufruft, gerufen wird.

Beispiel Coding:
data: lv_date type bldat.
data: lv_wwert type wwert_d.
data: lv_blart type blart.

if TVFK-blart is INITIAL.
lv_blart = 'RV'. "das macht auch SAP Standard in Rechnungsbearbeitung
else.
lv_blart = TVFK-blart.
endif.

if kom-fkdat is initial.
lv_date = vbrk-fkdat.
else.
lv_date = kom-fkdat.
endif.

CALL FUNCTION 'FI_DERIVE_WWERT'
EXPORTING
i_budat = lv_date
I_BLDAT = lv_date
I_BUKRS = vbrk-bukrs
* I_WWERT = vbrk-fkdat
* I_INTCA =
I_BLART = lv_blart
IMPORTING
E_WWERT = lv_wwert
EXCEPTIONS
system_error = 1.

if sy-subrc eq 0 and lv_wwert is NOT INITIAL.

CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
EXPORTING
correct_option = '-'
date = lv_wwert
factory_calendar_id = 'PL' "Land Kalender - hier hardkodiert nur fur Beispiel Zweck
IMPORTING
date = lv_wwert
* FACTORYDATE =
* WORKINGDAY_INDICATOR =
EXCEPTIONS
calendar_buffer_not_loadable = 1
correct_option_invalid = 2
date_after_range = 3
date_before_range = 4
date_invalid = 5
factory_calendar_not_found = 6
OTHERS = 7.

if sy-subrc eq 0.
vbrk-kurrf_dat = lv_wwert.

ENDIF.
endif.


USEREXIT_NUMBER_RANGE_INV_DATE in program RV60AFZC. Dort kann man auch das Feld VBRK-KURRF_DAT manipulieren.

Mit diesen Userexits kann man gleichzeitig Werte in SD und FI beeinflusen.
Beispiele kann man auch in OSS Hinweis 1330330 finden (diese gilt aber nur fur Polen).

Fur TRM (zum Beispiel - fur TBB1 Abrechnung von Bank Depositen - Produkt Typen wie 510 - Festgeld) brauch man für manche Laendern (wie Polen) auch ein anderes Umrechnungsdatum.Dort muss mann in FUBA TB_DEAL_FIX_POST_PREPARE entweder das SAP standard modifiezieren bevor FUBA TB_CURRENCY_AMOUNTS_CONVERT aufgerufen wird, oder, mit Implicit Enhancement am Ende des FUBAs, Werte von Internen Tabelle FLOWS in Feldern bhwbetr und khwkurs modifiezieren. Dort wird das Kurs anhand von Feld DBELEG definiert - den musste man, bevor aufruf von FUBA TB_CURRENCY_AMOUNTS_CONVERT, beeinflussen.

LG,
Marek

Zuletzt bearbeitet am 18.12.16 20:17


Viewing all articles
Browse latest Browse all 7499