Qué tal foreros, aquí de nuevo molestándolos con una consulta:
Existe una BADI que obtiene la información aduanera para factura electrónica de la siguiente manera:
Lo que a mi me solicitaron fue que en lugar de obtener el lote (CHARG) de la tabla LIPS, lo obtenga directamente de la tabla VBRP (la tabla que se está loopeando), esto porque con el código actual, así vengan 1000 lotes, sólo obtiene información aduanera de uno (en la tabla CT_ITEM_CUSTOMS se guarda este lote). Sin embargo, al realizar las modificaciones (ahora en la tabla CT_ITEM_CUSTOMS se guarda la información de todos los lotes) el idoc no me genera el XML, marca el error "El IDOC no se puede enviar a una puerta XML".
Revisando en la WE02 noté que el idoc con mis modificaciones se genera distinto, es decir en el original viene SEGMENTO X y dentro de este viene SEGMENTO Y, SEGMENTO Z, pero en el mío viene SEGMENTO X, SEGMENTO Y y SEGMENTO Z (Y y Z vienen fuera del SEGMENTO X).
¿Alguna idea de por qué es el error? Es la primera vez que me meto en este tema de los idocs y no entiendo mucho. Agradezco cualquier orientación que me puedan dar.
Saludos!!
Existe una BADI que obtiene la información aduanera para factura electrónica de la siguiente manera:
Código:
loop at it_xvbrp into ls_vbrp.
refresh:
lts_valtab, lts_chartab, lts_atttab.
clear l_batch.
select single charg
from lips
into l_batch
where
vbeln eq ls_vbrp-vgbel and
uecha eq ls_vbrp-vgpos and
matnr eq ls_vbrp-matnr.
IF sy-subrc <> 0.
SELECT SINGLE
charg
FROM lips
INTO l_batch
WHERE vbeln = ls_vbrp-vgbel
AND matnr = ls_vbrp-matnr.
ENDIF.
call function 'QC01_BATCH_VALUES_READ'
exporting
i_val_matnr = ls_vbrp-matnr
i_val_werks = ls_vbrp-werks
i_val_charge = l_batch
i_language = sy-langu
tables
t_val_tab = lts_valtab
t_char_tab = lts_chartab
t_att_tab = lts_atttab
exceptions
no_class = 1
internal_error = 2
no_values = 3
no_chars = 4
others = 5.
clear ls_item_custom.
loop at lts_valtab into ls_valtab.
case ls_valtab-atnam.
when 'YB_PEDIMENTO'.
ls_item_custom-customs_doc_nr = ls_valtab-atwrt.
when 'YB_FECHADEPEDIMENTO'.
concatenate ls_valtab-atwrt+6(4) ls_valtab-atwrt+3(2) ls_valtab-atwrt+0(2) into ls_item_custom-customs_doc_date.
when 'YB_ADUANA_ENT'.
ls_item_custom-customs_office = ls_valtab-atwrt.
endcase.
endloop.
ls_item_custom-vbeln = ls_vbrp-vbeln.
ls_item_custom-posnr = ls_vbrp-posnr.
append ls_item_custom to ct_item_customs.
endloop.
Revisando en la WE02 noté que el idoc con mis modificaciones se genera distinto, es decir en el original viene SEGMENTO X y dentro de este viene SEGMENTO Y, SEGMENTO Z, pero en el mío viene SEGMENTO X, SEGMENTO Y y SEGMENTO Z (Y y Z vienen fuera del SEGMENTO X).
¿Alguna idea de por qué es el error? Es la primera vez que me meto en este tema de los idocs y no entiendo mucho. Agradezco cualquier orientación que me puedan dar.
Saludos!!
.
Comentario