olá,
tivemos o mesmo problema ! O que realmente identificamos é que no include LJ_1B_NFEF45, ele atribuia o valor xmli_310-vipidevol porém não atribuia o xmli_310-pipidevol no código abaixo. Se o campo pipidevol for devidamente preechido ele realiza o processamento e montagem corretamente conforme a nota 2125859 ítem 5.1.
IF xmli_badi IS NOT INITIAL.
MOVE-CORRESPONDING xmli_badi TO xmli."#EC ENHOK
IF xmlh-version >= gc_nfe_version_3. "1933985
xmli_badi-vipidevol = xmli_310-vipidevol. "2079944
MOVE-CORRESPONDING xmli_badi TO xmli_310. "1933985
ENDIF. "1933985
ENDIF.
A solução para não paramos foi utilizar a BADI, metodo FILL_ITEM e buscar os valores da memoria, assim eles vão ser preenchidos no código acima ao sair do metodo.
FIELD-SYMBOLS: <fs_xmli_310> TYPE j_1bnfe_s_badi_item310.
ASSIGN ('(SAPLJ_1B_NFE)xmli_310') TO <fs_xmli_310>.
IF <fs_xmli_310> IS ASSIGNED.
out_item-vipidevol = <fs_xmli_310>-vipidevol.
out_item-pipidevol = <fs_xmli_310>-pipidevol.
ENDIF.
No nosso caso resolveu !
Att.