Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 4

"------------------------ New Ex.

rate -----------------------
* LOOP AT gt_item_display ASSIGNING FIELD-SYMBOL(<fs_new_ex>) .
* " select data trong table zheader_acv
* SELECT single ukurs, exrate2, exratedate FROM zheader_acv INTO @DATA(ls_ukurs)
WHERE zkonnr = @<fs_new_ex>-ebeln.
* IF sy-subrc = 0. "TH1 neu contract ton tai trong table zheader_acv
*
* IF ls_ukurs-ukurs IS NOT INITIAL. "UU TIEN 1
* <fs_new_ex>-ext_rate = ls_ukurs-ukurs.
* ELSE. "UU TIEN 2
* <fs_new_ex>-ext_rate = ls_ukurs-exrate2.
* ENDIF.
* ELSE. "TH2 neu contract khong ton tai trong table zheader_acv
* IF date IS NOT INITIAL . " UU TIEN 1
* IF lv_acv_contract_curr = 'USD'.
* CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'
* EXPORTING
* rate_type = 'M'
* from_curr = <fs_new_ex>-waers
* to_currncy = lv_acv_contract_curr
* date = ls_ukurs-exratedate
* IMPORTING
* exch_rate = lv_ex_rate_remain
* return = ls_return.
*
* IF lv_ex_rate_remain-exch_rate_v IS INITIAL.
* <fs_new_ex>-ext_rate = lv_ex_rate_remain-exch_rate.
* ENDIF.
*
* ELSEIF lv_acv_contract_curr = 'VND'.
* CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'
* EXPORTING
* rate_type = 'M'
* from_curr = lv_acv_contract_curr
* to_currncy = <fs_new_ex>-waers
* date = ls_ukurs-exratedate
* IMPORTING
* exch_rate = lv_ex_rate_remain
* return = ls_return.
*
* IF lv_ex_rate_remain-exch_rate_v IS INITIAL.
* <fs_new_ex>-ext_rate = lv_ex_rate_remain-exch_rate.
* ENDIF.
*
* ENDIF.
*
* ELSE. " UU TIEN 2
* SELECT SINGLE angdt FROM ekko INTO @DATA(ls_angdt_2) WHERE ebeln =
@<fs_new_ex>-rfq.
*
* IF lv_acv_contract_curr = 'USD'.
* CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'
* EXPORTING
* rate_type = 'M'
* from_curr = <fs_new_ex>-waers
* to_currncy = lv_acv_contract_curr
* date = ls_ukurs-exratedate
* IMPORTING
* exch_rate = lv_ex_rate_remain
* return = ls_return.
*
* IF lv_ex_rate_remain-exch_rate_v IS INITIAL.
* <fs_new_ex>-ext_rate = lv_ex_rate_remain-exch_rate.
* ENDIF.
*
* ELSEIF lv_acv_contract_curr = 'VND'.
* CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'
* EXPORTING
* rate_type = 'M'
* from_curr = lv_acv_contract_curr
* to_currncy = <fs_new_ex>-waers
* date = ls_ukurs-exratedate
* IMPORTING
* exch_rate = lv_ex_rate_remain
* return = ls_return.
*
* IF lv_ex_rate_remain-exch_rate_v IS INITIAL.
* <fs_new_ex>-ext_rate = lv_ex_rate_remain-exch_rate.
* ENDIF.
*
* ENDIF.
* ENDIF.
* ENDIF.
* ENDLOOP.
"------------------------ end Ex.rate -----------------------

13: New Ex.rate


Từ giá trị contract (6) điền vào [Table] ZHEADER_ACV -> Xét các trường hợp
- TH1: Nếu tồn tại giá trị (6) ở table -> Lấy giá trị (13) theo 2 độ ưu tiên (k
được phép edit)
+ Ưu tiên 1: [Field] UKURS
+ Ưu tiên 2: Nếu [Field] UKURS không có giá trị -> Lấy [Field] EXRATE2

- TH2: Nếu không tồn tại giá trị (6) ở table -> Xét chỉ tiêu (1) điền vào [Table]
ZFM_V_DIS_I_CONT -> Xét giá trị [Field] EXCHANGERATEDATE (A) theo 2 độ ưu tiên
(được phép edit)
+ Ưu tiên 1: Nếu (A) tồn tại -> sử dụng function get change rate với source
currency = (12) với target currency = [Field] ZFM_V_DISP_CONT - WAERS
+ Ưu tiên 2: Nếu (A) không tồn tại -> Từ số RFQ (9) -> Điền vào [Table] EKKO và
lấy lên [Field] ANGDT -> Sử dụng ngày của [Field] ANGDT và sử dụng function get
change rate với source currency = (12)
với target currency = [Field] ZFM_V_DISP_CONT - WAERS

"------------------------ New Ex.rate -----------------------


LOOP AT gt_item_display ASSIGNING FIELD-SYMBOL(<fs_new_ex>) .
" select data trong table zheader_acv
SELECT single ukurs, exrate2, exratedate FROM zheader_acv INTO
@DATA(ls_ukurs) WHERE zkonnr = @<fs_new_ex>-ebeln.
IF sy-subrc = 0. "TH1 neu contract ton tai trong table zheader_acv

IF ls_ukurs-ukurs IS NOT INITIAL. "UU TIEN 1


<fs_new_ex>-ext_rate = ls_ukurs-ukurs.
ELSE. "UU TIEN 2
<fs_new_ex>-ext_rate = ls_ukurs-exrate2.
ENDIF.
ELSE. "TH2 neu contract khong ton tai trong table zheader_acv
SELECT SINGLE EXCHANGERATEDATE FROM ZFM_V_DIS_I_CONT INTO
@DATA(LS_EXCHANGERATEDATE) WHERE contract = @<fs_new_ex>-ebeln.
SELECT SINGLE WAERS FROM ZFM_V_DISP_CONT INTO @DATA(LS_WAERS) WHERE
CONTRACT = @<fs_new_ex>-ebeln.
IF LS_EXCHANGERATEDATE IS NOT INITIAL . " UU TIEN 1
IF LS_WAERS = 'USD'.
CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'
EXPORTING
rate_type = 'M'
from_curr = <fs_new_ex>-waers
to_currncy = LS_WAERS
date = ls_ukurs-exratedate
IMPORTING
exch_rate = lv_ex_rate_remain
return = ls_return.

IF lv_ex_rate_remain-exch_rate_v IS INITIAL.
<fs_new_ex>-ext_rate = lv_ex_rate_remain-exch_rate.
ENDIF.

ELSEIF LS_WAERS = 'VND'.


CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'
EXPORTING
rate_type = 'M'
from_curr = LS_WAERS
to_currncy = <fs_new_ex>-waers
date = ls_ukurs-exratedate
IMPORTING
exch_rate = lv_ex_rate_remain
return = ls_return.

IF lv_ex_rate_remain-exch_rate_v IS INITIAL.
<fs_new_ex>-ext_rate = lv_ex_rate_remain-exch_rate.
ENDIF.

ENDIF.

ELSE. " UU TIEN 2


SELECT SINGLE angdt FROM ekko INTO @DATA(ls_angdt_2) WHERE ebeln =
@<fs_new_ex>-rfq.

IF LS_WAERS = 'USD'.
CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'
EXPORTING
rate_type = 'M'
from_curr = <fs_new_ex>-waers
to_currncy = LS_WAERS
date = ls_ukurs-exratedate
IMPORTING
exch_rate = lv_ex_rate_remain
return = ls_return.

IF lv_ex_rate_remain-exch_rate_v IS INITIAL.
<fs_new_ex>-ext_rate = lv_ex_rate_remain-exch_rate.
ENDIF.

ELSEIF LS_WAERS = 'VND'.


CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'
EXPORTING
rate_type = 'M'
from_curr = LS_WAERS
to_currncy = <fs_new_ex>-waers
date = ls_ukurs-exratedate
IMPORTING
exch_rate = lv_ex_rate_remain
return = ls_return.

IF lv_ex_rate_remain-exch_rate_v IS INITIAL.
<fs_new_ex>-ext_rate = lv_ex_rate_remain-exch_rate.
ENDIF.

ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
"----------------------------------- end Ex.rate
-----------------------------------

You might also like