Здравствуйте!
Подскажите, как можно изменить содержимое поля XREF2_HD в таблице BKPF без использования прямого обращения к таблице?
Я пытаюсь сделать это через ФМ
FI_DOCUMENT_CHANGE, но получаю ошибки.
Версия соответствующего компонента:
SAP_FIN 617 0007 SAPK-61707INSAPFIN SAP_FIN
ФМ FI_DOCUMENT_CHANGEПопытка №1, через bukrs+belnr+gjahrЗаполняю поля i_bukrs, i_belnr, i_gjahr, i_buzei = 1.
Получаю ошибку "FI: поле ссылки не заполнено.".
[cut]
Попытка №2, через i_awtyp + i_awref + i_aworg + i_awsys, awtyp = 'BKPF'Code:
Parameters:
p_bukrs type bukrs default 1000,
p_belnr type belnr_d default 5010000002,
p_gjahr type gjahr default 2015,
p_xref2 type xref2_hd default 1.
Data: ls_1 type ACCCHG,
ls_bkpf type BKPF,
lt_1 like standard table of ls_1,
lv_aworg type ACCHD-AWORG.
ls_1-fdname = 'XREF2_HD'.
ls_1-newval = p_xref2.
Append ls_1 to lt_1.
*ls_1-fdname = 'XREF2'.
*Append ls_1 to lt_1.
Select single * from BKPF into corresponding fields of ls_bkpf
where bukrs = p_bukrs and belnr = p_belnr and gjahr = p_gjahr.
lv_aworg = ls_bkpf-bukrs && ls_bkpf-gjahr.
Call function 'FI_DOCUMENT_CHANGE'
exporting
i_awtyp = 'BKPF'
i_awref = ls_bkpf-belnr
i_aworg = lv_aworg
i_awsys = space
* i_kunnr = ' '
* i_lifnr = ''
* i_obzei = ' '
i_buzei = 1
* i_bsegc =
* x_lock = 'X'
* i_bukrs = p_bukrs
* i_belnr = p_belnr
* i_gjahr = p_gjahr
tables
t_accchg = lt_1
exceptions
no_reference = 1
no_document = 2
many_documents = 3
wrong_input = 4
overwrite_creditcard = 5
others = 6
.
If sy-subrc <> 0.
Message e000(su) with 'ERROR' sy-subrc 'IN FI_DOCUMENT_CHANGE'.
Return.
Endif.
[/cut]
В результате в системе разработки всё нормально, поле XREF2_HD обновляется.
В тестовой же системе выдаётся сообщение то-ли "FI: поле ссылки не заполнено.", то-ли "FI: документы бухучета не найдены."
Попытка №3, через i_awtyp + i_awref + i_aworg + i_awsys, awtyp = 'TR-TM'В тестовой системе использую другое значение AWTYP, "TR-TM", т.к. разработка для модуля Treasury.
[cut="..."]
Code:
Data:
ls_1 type ACCCHG,
ls_2 type TRACT_DOCUMENT,
lt_1 type WRFT_ACCCHG_TTY,
lt_2 type TRACY_DOCUMENT.
ls_1-fdname = 'XREF2_HD'.
ls_1-newval = iv_new_xref2_hd.
Append ls_1 to lt_1.
Select * into corresponding fields of table lt_2
from tract_document
where deal_number = iv_deal_number
and aworg = iv_aworg
order by awref descending.
Read table lt_2 into ls_2 index 1.
Call function 'FI_DOCUMENT_CHANGE'
exporting
i_awtyp = 'TR-TM' "TODO см. доп.значения домена, там ФМ
i_awref = ls_2-awref "0000019019
i_aworg = ls_2-aworg "R12015
i_awsys = space
i_buzei = 1
tables
t_accchg = lt_1
.
[/cut]
В результате ФМ ALE_MODEL_INFO_GET выдаёт NO_MODEL_INFO_FOUND.
ПодозренияИз домена AWTYP вышел на таблицу TTYP «Типы объектов для учета и отчетности», в которой содержатся такие записи:
Code:
AWTYP STRUC FUNCTION REMOTE OTEXT
BKPF BKPF_AWOBJ FI_DOCUMENT_SENDER Бухгалт. документ
TR-TM TRCA_DOCUMENT_SENDER_TRTM Финанс. менеджмент
Подозреваю, что верный вызов ФМ FI_DOCUMENT_CHANGE требует какого-то взаимодействия с этими ФМ FI_DOCUMENT_SENDER, TRCA_DOCUMENT_SENDER_TRTM (в зависимости от того, что прописано в AWTYP: BKPF или TR-TM).
Вопрос: как поменять BKPF-XREF2_HD?