1. Ошибка показывает вам, что у вас заполнилась вторая позиция, а первая нет. Т.е. параметры контрольности в проводке есть, а самого контрагента - нет.
2. Я всегда работал с проводками, где есть только один контрагент. Дебитор работает по умолчанию, а с кредитором нужно писать замещение. Вот статья, где описан приблизительный способ:
https://blogs.sap.com/2014/07/03/tbb1-u ... -postings/Возможно вам нужно дописать экзит, чтобы контрагенты подставлялись в обе позиции.
3. Что касается контрагентов в переоценке и реклассе, то опять же экзит, развести логику обработки по коду транзакций и заполнять струтуры CH_ACCIT_D и CH_ACCIT_C. Тут нужно эксперементировать. У меня контрагент подставляется в проводку из тр. TPM44.
вот пример моей реализации контрагентов в проводке из TPM44. Для оценки и рекласс логика тоже должно работать.
Code:
* 2. ------ В тр. TPM44 нужно делать проводку на счет дебитора --------------------------------------------------
* в тр. Для разграничения/начисления процентов по депозитам, должен быть Деловой партнер. Поэтому мы заменяем
* технический счет Z999999999, который прописан в схеме проводки.
*----------------------------------------------------------------------------------------------------------------
" Кредитор
IF ch_accit_d-hkont = 'Z999999998' AND sy-tcode = 'TPM44'.
SELECT SINGLE kontrh zztrm_tsel_dog rcomvalcl
FROM vtbfha
INTO ( bp, lv_tsel, lv_dk )
WHERE bukrs = im_data-company_code AND rfha = im_data-deal_number.
ch_accit_d-hkont = COND #( WHEN lv_tsel = 'Инвестиция' AND lv_dk = '1' THEN '6621000000' " %
WHEN lv_tsel = 'Инвестиция' AND lv_dk = '3' THEN '6721000000' " %
WHEN ( lv_tsel = 'Текущая' OR lv_tsel IS INITIAL ) AND lv_dk = '1' THEN '6611000000' " %
WHEN ( lv_tsel = 'Текущая' OR lv_tsel IS INITIAL ) AND lv_dk = '3' THEN '6711000000' " %
ELSE '7601020000' ). " Все остальное
ch_accit_d-koart = 'K'.
ch_accit_d-bschl = '21'.
IF sy-subrc = 0.
SELECT SINGLE cvi~vendor FROM cvi_vend_link AS cvi
INNER JOIN but000 AS bu ON bu~partner_guid = cvi~partner_guid
INTO vendor
WHERE bu~partner = bp.
IF sy-subrc = 0.
ch_accit_d-lifnr = vendor.
ELSE.
RAISE failed.
ENDIF.
ELSE.
RAISE failed.
ENDIF.
ELSEIF ch_accit_c-hkont = 'Z999999998' AND sy-tcode = 'TPM44'.
SELECT SINGLE kontrh zztrm_tsel_dog rcomvalcl
FROM vtbfha
INTO ( bp, lv_tsel, lv_dk )
WHERE bukrs = im_data-company_code AND rfha = im_data-deal_number.
ch_accit_c-hkont = COND #( WHEN lv_tsel = 'Инвестиция' AND lv_dk = '1' THEN '6621000000' " %
WHEN lv_tsel = 'Инвестиция' AND lv_dk = '3' THEN '6721000000' " %
WHEN ( lv_tsel = 'Текущая' OR lv_tsel IS INITIAL ) AND lv_dk = '1' THEN '6611000000' " %
WHEN ( lv_tsel = 'Текущая' OR lv_tsel IS INITIAL ) AND lv_dk = '3' THEN '6711000000' " %
ELSE '7601020000' ). " Все остальное
ch_accit_c-koart = 'K'.
ch_accit_c-bschl = '31'.
IF sy-subrc = 0.
SELECT SINGLE cvi~vendor FROM cvi_vend_link AS cvi
INNER JOIN but000 AS bu ON bu~partner_guid = cvi~partner_guid
INTO vendor
WHERE bu~partner = bp.
IF sy-subrc = 0.
ch_accit_c-lifnr = vendor.
ELSE.
RAISE failed.
ENDIF.
ELSE.
RAISE failed.
ENDIF.
" Дебитор
ELSEIF ch_accit_d-hkont = 'Z999999999' AND sy-tcode = 'TPM44'.
ch_accit_d-hkont = '7601010000'.
ch_accit_d-koart = 'D'.
ch_accit_d-bschl = '01'.
SELECT SINGLE kontrh FROM vtbfha
INTO bp
WHERE bukrs = im_data-company_code AND rfha = im_data-deal_number.
IF sy-subrc = 0.
SELECT SINGLE cvi~customer FROM cvi_cust_link AS cvi
INNER JOIN but000 AS bu ON bu~partner_guid = cvi~partner_guid
INTO customer
WHERE bu~partner = bp.
IF sy-subrc = 0.
ch_accit_d-kunnr = customer.
ELSE.
RAISE failed.
ENDIF.
ELSE.
RAISE failed.
ENDIF.
ELSEIF ch_accit_c-hkont = 'Z999999999' AND sy-tcode = 'TPM44'.
ch_accit_c-hkont = '7601010000'.
ch_accit_c-koart = 'D'.
ch_accit_c-bschl = '11'.
SELECT SINGLE kontrh FROM vtbfha
INTO bp
WHERE bukrs = im_data-company_code AND rfha = im_data-deal_number.
IF sy-subrc = 0.
SELECT SINGLE cvi~customer FROM cvi_cust_link AS cvi
INNER JOIN but000 AS bu ON bu~partner_guid = cvi~partner_guid
INTO customer
WHERE bu~partner = bp.
IF sy-subrc = 0.
ch_accit_c-kunnr = customer.
ELSE.
RAISE failed.
ENDIF.
ELSE.
RAISE failed.
ENDIF.
ENDIF.