Может, это поможет
Code:
*&---------------------------------------------------------------------*
*& Form DOHOD_RASH
*&---------------------------------------------------------------------*
* приведение сумм к рублям
*----------------------------------------------------------------------*
* -->P_P_GT_PEREV text
*----------------------------------------------------------------------*
FORM dohod_rash USING pl_kbetr TYPE zsalv_perev-dohod "kbetr
pl_waerk TYPE waerk
pl_data TYPE sy-datum
* pl_vbeln_vf TYPE vbeln_vf
CHANGING pl_dohod TYPE zsalv_perev-dohod.
DATA: lt_tcurr TYPE TABLE OF tcurr WITH HEADER LINE,
ll_gdatu(10) TYPE c,
ll_ukurs(10) TYPE c,
ll_sum(20) TYPE c,
ll_data TYPE gdatu_inv,
len TYPE i.
*Столбец заполняется следующим образом:
*если ZTREESTR_PRODAJI WAERK = RUB,
*то копируется значение из ZTREESTR_PRODAJI - KBETR,
*если ZTREESTR_PRODAJI WAERK <>RUB,
*то берем из поля
*ZTREESTR_PRODAJI - VBELN_VF = VBRK – VBELN – дату с/ф VBRK – FKDAT,
*и берем на эту дату курс перерасчета валюты.
*Умножаем курс на значение в ZTREESTR_PRODAJI WAERK и заполняем поле
*и берем на эту дату курс перерасчета валюты
*V_TCURR – KURSP если: VBRK – FKDAT = V_TCURR – GDATU
*и V_TCURR – KURST = m
*и ZTREESTR_PRODAJI WAERK = V_TCURR – FCURR
*и V_TCURR – TCURR=RUB, : .
IF pl_waerk = c_rub.
pl_dohod = pl_kbetr.
ELSE.
* READ TABLE lt_vbrk WITH KEY vbeln = pl_vbeln_vf .
* IF sy-subrc = 0.
*
* IF lt_vbrk-fkdat IS NOT INITIAL.
IF pl_data IS NOT INITIAL.
* WRITE lt_vbrk-fkdat TO ll_gdatu.
WRITE pl_data TO ll_gdatu.
CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT'
EXPORTING
input = ll_gdatu
IMPORTING
output = ll_data.
SELECT *
FROM tcurr
INTO TABLE lt_tcurr
WHERE kurst = 'M'
AND fcurr = pl_waerk
AND tcurr = c_rub
AND gdatu >= ll_data.
SORT lt_tcurr BY gdatu.
READ TABLE lt_tcurr INDEX 1.
IF sy-subrc = 0.
pl_dohod = lt_tcurr-ukurs * pl_kbetr.
ENDIF. " READ TABLE lt_tcurr INDEX 1
* ENDIF. " lt_vbrk-fkdat IS NOT INITIAL
ENDIF. " READ TABLE lt_vbrk WITH KEY vbeln = pl_gt_perev-vbeln_vf .
ENDIF. " pl_gt_perev-waerk = c_rub
ENDFORM. " DOHOD_RASH