Hi Baskar,
I have done this thing from MIRO transaction to update BKPF table. Please check the below code.
METHOD if_ex_badi_fdcb_subbas01~put_data_to_screen_object.
CONSTANTS:
c_bkpf_xref1(25) TYPE c VALUE '(SAPLFDCB)BKPF-XREF1_HD'.
FIELD-SYMBOLS: <fs_bkpf_xref1> TYPE ANY.
me->if_ex_badi_fdcb_subbas01~invfo = im_invfo.
ASSIGN (c_bkpf_xref1) TO <fs_bkpf_xref1>.
IF sy-subrc = 0.
<fs_bkpf_xref1> = me->if_ex_badi_fdcb_subbas01~invfo-zlet_number.
ENDIF.
ENDMETHOD.
METHOD if_ex_badi_fdcb_subbas01~get_data_from_screen_object.
CONSTANTS:
c_bkpf_xref1(25) TYPE c VALUE '(SAPLFDCB)BKPF-XREF1_HD'.
FIELD-SYMBOLS: <fs_bkpf_xref1> TYPE ANY.
ex_invfo = me->if_ex_badi_fdcb_subbas01~invfo.
ASSIGN (c_bkpf_xref1) TO <fs_bkpf_xref1>.
if sy-subrc = 0.
<fs_bkpf_xref1> = ex_invfo-zlet_number.
endif.
ENDMETHOD.
After passing the data through field symbols, then you need to update the BKPF table using the BADI AC_DOCUMENT. Refer the below code.
METHOD if_ex_ac_document~change_after_check.
DATA: lv_let_number TYPE zisr_let_number,
lv_field TYPE char18 VALUE '(SAPLMRMP)xaccit[]',
lv_let_field TYPE char27 VALUE '(SAPLMR1M)RBKPV-ZLET_NUMBER'.
FIELD-SYMBOLS : <ft_accit> TYPE accit_t,
<fs_accit> TYPE accit,
<fv_let_number> TYPE ANY.
CONSTANTS : lc_miro TYPE sytcode VALUE 'MIRO'.
IF sy-tcode EQ lc_miro.
ASSIGN (lv_field) TO <ft_accit>.
CHECK sy-subrc EQ 0.
ASSIGN (lv_let_field) TO <fv_let_number>.
CHECK sy-subrc EQ 0.
LOOP AT <ft_accit> ASSIGNING <fs_accit>.
lv_let_number = <fv_let_number>.
<fs_accit>-xref1_hd = lv_let_number.
ENDLOOP.
ENDIF.
ENDMETHOD.