1.Создать для узла VSKOPF доп.поле "Цена"
Code:
ZZCENA ДополнитПоле Цена
ZZEDIZM ДополнитПоле ЕИ количества
ZZKOLVO ДополнитПоле Количество
ZZSTOIM ДополнитПоле Стоимость
ZZVALUT ДополнитПоле Валюта
2.В событии GET VSKOPF очищаем поля "Цена", KOLVO и SUMM
Code:
CLEAR: zzvalut, zzstoim, zzkolvo, zzedizm, zzcena.
3.В событии GET PRPS_R суммируем поле KOLVO
Code:
IF zzedizm IS INITIAL.
zzedizm = prps_r-use04.
ENDIF.
IF zzedizm <> prps_r-use04.
CALL FUNCTION 'MB_UNIT_CONVERSION'
EXPORTING
erfme = zzedizm
* ERFMG = 0
* MATNR = ' '
meins = prps_r-use04
menge = prps_r-usr04
IMPORTING
* O_ERFME =
o_erfmg = prps_r-usr04
EXCEPTIONS
conversion_not_found = 1
different_dimension = 2
division_by_zero = 3
overflow = 4
t006d_entry_missing = 5
t006_entry_missing = 6
OTHERS = 7.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ADD prps_r-usr04 TO zzkolvo.
4.В событии GET COVP11 суммируем поле SUMM
Code:
IF zzvalut IS INITIAL.
zzvalut = covp11-owaer.
ENDIF.
IF zzvalut <> covp11-owaer.
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
* CLIENT = SY-MANDT
date = covp11-budat
foreign_amount = covp11-wogbtr
foreign_currency = covp11-owaer
local_currency = zzvalut
IMPORTING
local_amount = covp11-wogbtr
EXCEPTIONS
no_rate_found = 1
overflow = 2
no_factors_found = 3
no_spread_found = 4
derived_2_times = 5
OTHERS = 6
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ADD covp11-wogbtr TO zzstoim.
5.В событии GET VSKOPF LATE вычисляем "Цена" = SUMM / KOLVO.
Code:
zzcena = zzstoim / zzkolvo.
Возникает вопрос: почему количество берется из определения СПП-элемента, а не из фактических данных. В структуре COVP11 тоже есть поле с количеством...
