...
Esta modificación se guardará en una OT con una tarea de reparación. Para poder transportarlo a otros entornos, se necesitará hacer mediante una orden de transporte de copia.
Error al generar lotes de pagos y cobros
Se detecta que tras la instalación de la versión 1.8.0, si se usa la BAdI estándar (ya sea de FI-CA o normal) de creación de lotes de producto, al crear un lote de pagos o cobros se produce el siguiente error:
...
Esto se soluciona en la versión 1.8.1, por lo que una solución sería subir a esta versión.
Si esto no es posible, se puede hacer un ajuste manual en el sistema para corregirlo. El ajuste es el siguiente:
Si no se tiene FI-CA en el sistema, implementar la BAdI: /EDGE/BADI_SII_EVENTO_GEN_LOTE, con clase de implementación una Z que herede de la estándar /EDGE/SII_DEFLT_EVENT_GEN_LOTE.
Redefinir método GET_EDOC_DATA:
Bloque de código |
---|
METHOD get_edoc_data.
DATA: lo_edoc TYPE REF TO cl_edocument,
lo_edoc_src TYPE REF TO /edge/cl_edoc_source_sii,
lo_edoc_src_sd TYPE REF TO /edge/cl_edoc_source_sd,
lo_edoc_src_mm TYPE REF TO /edge/cl_edoc_source_mm,
lo_edoc_src_item TYPE REF TO /edge/cl_clr_item_source_sii,
ls_invoice_item TYPE /edge/sii_src_data_fi_bse_clr,
ls_invoice_sd TYPE /edge/sii_src_data_cons_sd,
ls_invoice_fi TYPE edoc_src_data_fi_invoice.
FIELD-SYMBOLS: <fs_invoice_sd> TYPE /edge/sii_src_data_cons_sd,
<fs_invoice_mm> TYPE /edge/sii_src_data_cons_mm,
<fs_invoice_fi> TYPE edoc_src_data_fi_invoice,
<fs_invoice_item> TYPE /edge/sii_src_data_fi_bse_clr.
lo_edoc = cl_edocument=>retrieve_by_edoc_guid(
iv_edoc_guid = iv_edoc_guid " eDocument: GUID
iv_skip_interface_det = 'X' ).
lo_edoc->load_from_db( iv_edoc_guid = iv_edoc_guid ).
IF lo_edoc->ms_edocument-source_type = /edge/cl_edoc_source_sii=>gc_src_zfi_invoice_sii.
lo_edoc_src ?= lo_edoc->get_source( ).
CREATE DATA es_invoice TYPE edoc_src_data_fi_invoice.
ASSIGN es_invoice->* TO <fs_invoice_fi>.
lo_edoc_src->get_data(
IMPORTING
es_data = <fs_invoice_fi>
).
ELSEIF lo_edoc->ms_edocument-source_type = /edge/cl_clr_item_source_sii=>gc_src_invoice_sii.
lo_edoc_src_item ?= lo_edoc->get_source( ).
CREATE DATA es_invoice TYPE /edge/sii_src_data_fi_bse_clr.
ASSIGN es_invoice->* TO <fs_invoice_item>.
lo_edoc_src_item->get_data(
IMPORTING
es_data = <fs_invoice_item>
).
* es_invoice-document_header = ls_invoice_item-document_header.
ELSEIF lo_edoc->ms_edocument-source_type = /edge/cl_edoc_source_sd=>gc_src_sd_invoice_sii.
lo_edoc_src_sd ?= lo_edoc->get_source( ).
CREATE DATA es_invoice TYPE /edge/sii_src_data_cons_sd.
ASSIGN es_invoice->* TO <fs_invoice_sd>.
lo_edoc_src_sd->get_data(
IMPORTING
es_data = <fs_invoice_sd>
).
ELSEIF lo_edoc->ms_edocument-source_type = /edge/cl_edoc_source_mm=>gc_src_mm_invoice_sii.
lo_edoc_src_mm ?= lo_edoc->get_source( ).
CREATE DATA es_invoice TYPE /edge/sii_src_data_cons_mm.
ASSIGN es_invoice->* TO <fs_invoice_mm>.
lo_edoc_src_mm->get_data(
IMPORTING
es_data = <fs_invoice_mm>
).
ENDIF.
es_edocument = lo_edoc->ms_edocument.
FREE: lo_edoc, lo_edoc_src, lo_edoc_src_item.
ENDMETHOD. |
Si se tiene FI-CA instalado en el sistema, reparar la clase /EDGE/CL_SII_IS_EVNT_GEN_LOTE, método GET_EDOC_DATA.
Info |
---|
Si FI-CA no está instalado en el sistema, esta clase ABAP no existirá. |
Bloque de código |
---|
"Añadir el Field-symbol:
<fs_invoice_item> TYPE /edge/sii_src_data_fi_bse_clr.
"Desde línea 30
ELSEIF lo_edoc->ms_edocument-source_type = /edge/cl_clr_item_source_sii=>gc_src_invoice_sii.
lo_edoc_src_item ?= lo_edoc->get_source( ).
CREATE DATA es_invoice TYPE /edge/sii_src_data_fi_bse_clr.
ASSIGN es_invoice->* TO <fs_invoice_item>.
lo_edoc_src_item->get_data(
IMPORTING
es_data = <fs_invoice_item>
).
"Hasta línea 37 |