Дополню пример, добавив PRICING_AMOUNT_DETERMINATION для получения итоговой суммы,
сумма в поле KBETR, кроме этого не заполняю структуру ls_comm_item_i
*&---------------------------------------------------------------------*
*& Report ZSD_TEST_PRICING
*& Тестирования BAPI PRICING
*&---------------------------------------------------------------------*
*& Автор Паганель
*&---------------------------------------------------------------------*
REPORT zsd_test_pricing.
TABLES: komk, komp, vbak, komv.
DATA: ls_comm_head_i TYPE komk. "OCCURS 1 WITH HEADER LINE.
DATA: ls_comm_item_i TYPE komp. "OCCURS 1 WITH HEADER LINE.
DATA: ls_comm_head_e TYPE komk. "OCCURS 1 WITH HEADER LINE.
DATA: ls_comm_item_e TYPE komp. "OCCURS 1 WITH HEADER LINE.
DATA: gt_tkomv TYPE komv OCCURS 100 WITH HEADER LINE.
DATA: ls_tkomv LIKE komv.
DATA: ls_tkomv_e LIKE komv.
PARAMETERS: pa_belnr TYPE komk-belnr OBLIGATORY.
AT SELECTION-SCREEN.
SELECT SINGLE * INTO CORRESPONDING FIELDS OF ls_comm_head_i FROM vbak
WHERE vbeln = pa_belnr.
" Для простоты делаю выбор только по 1позици,
" но не смотря на это в gt_tkomv
" выводятся записи условий для всех позиций
"SELECT SINGLE * INTO CORRESPONDING FIELDS OF ls_comm_item_i FROM vbap
" WHERE vbeln = pa_belnr AND posnr ='1'.
CALL FUNCTION 'PRICING'
EXPORTING
comm_head_i = ls_comm_head_i
comm_item_i = ls_comm_item_i
IMPORTING
comm_head_e = ls_comm_head_e
comm_item_e = ls_comm_item_e
TABLES
tkomv = gt_tkomv .
WRITE /. " что бы поставить точку останова :-)
READ TABLE gt_tkomv INTO ls_tkomv INDEX 1.
CALL FUNCTION 'PRICING_AMOUNT_DETERMINATION'
EXPORTING
komk_i = ls_comm_head_i
komp_i = ls_comm_item_i
komv_i = ls_tkomv
IMPORTING
komv_e = ls_tkomv_e.
WRITE /. " что бы поставить точку останова :-)