Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

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