Olá Gilberto,
Não foi possível utilizar o 'FILL_REGISTER_J150' devido ao fato de que este método re-processa os registros já tratados pelo standard, ou seja, quase o resultado final. No caso, para apresentar os valores do ultimo DRE, precisamos utilizar além das contas contábeis, a estrutura de aglutinação das contas e no escopo deste método, não temos nenhuma destas informações.
Então precisei criar um enhancement no FORM 'pre_fill_j150'. No SPOT de saída do form, eu adicionei a seguinte lógica: leio a estrutura de aglutinação e obtenho as contas. Busco na GLT0 os resultados do exercicio anterior e executo a aglutinação.
Não sei se é a melhor maneira, mas aqui funcionou sem problemas. segue a implementação:
DATA: wa_cre TYPE glt0,
wa_deb TYPE glt0,
l_tot_cre TYPE wertv8,
l_tot_deb TYPE wertv8,
l_total TYPE wertv8,
l_gjahr_ant TYPE glt0-ryear.
FIELD-SYMBOLS: <fs_j150> TYPE j_1becd_j150_3_s.
l_gjahr_ant = P_GJAHR - 1.
IF <gts_account> IS NOT INITIAL.
LOOP AT gt_pl_aglut_level INTO ls_aglut_level.
SELECT SINGLE * INTO wa_cre
FROM glt0
WHERE bukrs = p_bukrs
AND rldnr = '00'
AND racct = ls_aglut_level-account_nr
AND ryear = l_gjahr_ant
AND rbusa = ''
AND drcrk = 'H'.
IF sy-subrc IS INITIAL.
l_tot_cre = wa_cre-tsl16.
ELSE.
l_tot_cre = 0.
ENDIF.
SELECT SINGLE * INTO wa_deb
FROM glt0
WHERE bukrs = p_bukrs
AND rldnr = '00'
AND racct = ls_aglut_level-account_nr
AND ryear = l_gjahr_ant
AND rbusa = ''
AND drcrk = 'S'.
IF sy-subrc IS INITIAL.
l_tot_deb = wa_deb-tsl16.
ELSE.
l_tot_deb = 0.
ENDIF.
l_total = l_tot_cre + l_tot_deb.
READ TABLE gt_j150 ASSIGNING <fs_j150> WITH KEY cod_agl = ls_aglut_level-aglut_code
nivel_agl = ls_aglut_level-level
descr_cod_agl = ls_aglut_level-description.
IF sy-subrc IS INITIAL.
<fs_j150>-VL_CTA_ULT_DRE = <fs_j150>-VL_CTA_ULT_DRE + l_total.
ELSE.
IF l_total <> 0.
CLEAR ls_j150.
ls_j150-cod_agl = ls_aglut_level-aglut_code.
ls_j150-nivel_agl = ls_aglut_level-level.
ls_j150-descr_cod_agl = ls_aglut_level-description.
ls_j150-vl_cta_ult_dre = l_total.
APPEND ls_j150 TO gt_j150.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
Att,
Reinaldo