Всем спасибо! Сделал через OPEN_FI 1050...
Вставил сразу после коммита в форме variant_transactio (SAPLMR1M).
По идеи, в отладке после отработки коммита запись в BKPF уже была сделана...
Но на самом деле если программа работает в штатном режиме, то система просто не успевала внести запись.
И commit and wait не помог и задержку пытался сделать.. ни чего не вышло!
В итоге, сделал ФМ и зацепил его к OPEN_FI процессу 1050 и все нормально отработало,
плюс избавился от лишнего кода за счет импорта в ФМ.
Code:
FUNCTION z_open_fi_mm1580010.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" TABLES
*" T_BKPF STRUCTURE BKPF
*"----------------------------------------------------------------------
CONSTANTS :
gc_field_ntext(30) VALUE '(SAPLMRMP)RBKPV-SGTXT'
,gc_symbol_valid01(2) VALUE '@№'
,gc_symbol_valid02 VALUE '№'
,gc_tranz_code_valid TYPE sy-tcode VALUE 'MIRO'
,gc_ok_code_valid TYPE sy-ucomm VALUE 'BU'
,gc_num_field_text TYPE thead-tdid VALUE '0008'
,gc_field_text_obj TYPE thead-tdobject VALUE 'BELEG'
,gc_format_value(1) VALUE '*'
,gc_flag_fill(1) VALUE 'X'
.
DATA :
ls_objkey TYPE thead " Объект текстов
,lv_text(30)
,lt_lines TYPE TABLE OF tline
,ls_lines LIKE LINE OF lt_lines
.
FIELD-SYMBOLS: <fs_sgtxt> TYPE rbkp-sgtxt,
<fs_ebeln> TYPE rseg-ebeln.
" Условие отработки FM
IF sy-tcode = gc_tranz_code_valid AND sy-ucomm = gc_ok_code_valid.
" Получение текста
ASSIGN (gc_field_ntext) TO <fs_sgtxt>.
IF sy-subrc = 0.
IF <fs_sgtxt>(2) CO gc_symbol_valid01 " Условие переноса текста в документ BKPF
OR <fs_sgtxt>(1) CO gc_symbol_valid02.
READ TABLE t_bkpf.
IF sy-subrc = 0.
"Формирование объекта текста
CONCATENATE t_bkpf-bukrs t_bkpf-belnr t_bkpf-gjahr INTO ls_objkey-tdname.
ls_objkey-tdid = gc_num_field_text.
ls_objkey-tdobject = gc_field_text_obj.
ls_objkey-tdspras = sy-langu.
" Значение
ls_lines-tdformat = gc_format_value.
IF <fs_sgtxt>(2) CO gc_symbol_valid01.
ls_lines-tdline = <fs_sgtxt>+2.
ELSEIF <fs_sgtxt>(1) CO gc_symbol_valid02.
ls_lines-tdline = <fs_sgtxt>+1.
ENDIF.
APPEND ls_lines TO lt_lines.
" Сохраняем текст
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
savemode_direct = gc_flag_fill
header = ls_objkey
TABLES
lines = lt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
object = 4
OTHERS = 5.
IF sy-subrc = 0.
" Коммит для заполнения текста
CALL FUNCTION 'COMMIT_TEXT'
EXPORTING
savemode_direct = gc_flag_fill
object = ls_objkey-tdobject
name = ls_objkey-tdname.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.