Adriano,
Pelo que eu sei nessa função para atualizar os campos tu passa o valor e marca X em um campo que confirma que esse field vai ser atualizado. O campo do lote do fornecedor não tem o campo, acredito que possa ter outra função que tenha isso, mas não encontrei.
Implementei a BAdI LE_SHP_DELIVERY_PROC
Método: SAVE_DOCUMENT_PREPARE
Tive que pegar a tabela que preenchi na WS_DELIVERY_UPDATE:
ASSIGN ('(SAPLV50S)VBPOK_TAB[]') TO <fs_vbpok_tab>.
Se estivesse preenchida então eu seguia com a lógica,
Eu passava a estrutura do fieldsymbol para uma tabela interna (<FS_VBPOK_TAB> into TL_VBPOK)
Para cada registro da tabela CT_XLIPS (Recebida na BAdI).
Lia essa tabela interna TL_VBPOK comparando os campos VBELN_VL = VBELN e POSNR_VL = POSNR.
Se encontrava então eu seguia com a atualização:
CT_XLIPS-UPDKZ = ‘U’
CT_XLIPS-LICHN = WL_VBPOK-LICHN. (Lote que informei na WS_DELIVERY_UPDATE)
Depois atualizava a tabela CT_XLIPS com o índice que guardei mas sómente os campos UPDKZ e LICHN.