Debug paso a paso para obtener archivo .csv de Facturación Electrónica con Efact implementado en SAP S/4HANA por Seidor Perú

Hola comunidad SAP! Espero se encuentren bien. Alguna vez te has preguntado, cómo funciona internamente la lógica (código en lenguaje ABAP) de envio de facturación electrónica que integra tu sistema SAP con el operador Electrónico?

Objetivo: Obtener la data en formato .csv que se envia al operador electrónico.

Motivo: Para el operador muchas veces no es suficiente con mostrarle el mensaje de error que nos muestra el sistema, sino que se requiere tener la data que se está enviando para su análisis respectivo, esta data puede ser en formato .csv o en formato xml u en otro formato que se solicite.

En esta oportunidad mostraré una guía de cómo vía código ABAP hacer el segumiento al código e identificar el error que se genera al momento de enviar o reenviar el procesamiento de facturación electrónica. No obstante, sugiero antes revisar vía VF03 los datos de la factura que se envia tanto a nivel de cabecera como a nivel de posición, vía VA03 revisar los datos del pedido que se envia tanto a nivel de cabecera como a nivel de posición, revisar las condiciones que se envia, y por último y no menos importante revisar la descripción de los materiales u componentes que se envían, asegurarse que no tengan caracteres especiales ya que al enviar un archivo en formato .csv cada separador de ',' se interpreta como un campo nuevo ocasionando distorsión en la estructura de la data que se envía y por ende error y rechazo en el envío del comprobante.




Error: No se puede parsear el CSV

Pila ABAP vía debug.

Al momento de procesar el envío/reproceso/actualización del status observamos las rutinas, módulos de función y métodos por donde pasa la lógica del programa.

 


fm: /SEILOCPE/FACT_ELECTRONICA
En la línea 165 se invoca al método SELECCIONAR, cuyo métoo según operador electrónico realizará la lógica de envio del comprobante.


Método: /SEILOCPE/IF_SELOPEP~SELECCIONAR
Nota: Aparentemente todo el contenido .csv ya se puede obtener desde la tabla interna: /SEILOCPE/IF_FE_EFACT_DYNAMIC~GT_CSV pero no se confien que ahí no está completo todas las columnas de la data que se envía.

método: /SEILOCPE/IF_FE_EFACT_DYNAMIC~ENVIAR_COMPROBANTE


fm: /SEILOCPE/SEND_CRE_REST



FORM enviar_documento_electronico (parte 1)


FORM enviar_documento_electronico (parte 2)



FORM enviar_documento_electronico (parte 3)


Los registros viajan en la estructura GS_DATOS_INPUT-CONTENT
Doble click y descargar la data para luego convertirlo a formato .csv



FORM enviar_documento_electronico (parte 4)


Pruebas:

tcode: /SEILOCPE/SD_FE01

Ingresamos los parámetros a seleccionar y ejecutamos.


Nos muestra los registros cuyo resultado de la ejecución y clic en 'Reenviar Doc.'.

Análizamos el código vía debug (según lo detallado líneas arriba).
rutina: ENVIAR_DOCUMENTO_ELECTRONICO
Doble click en GS_DATOS_INPUT-CONTENT


Observamos el contenido de la data de tipo XSTRING.

Para que sea legible la data que estamos enviando, cambiamos la vista de VAR_SHORT a VAR_HTML o VAR_XML


Dejar la opción que viene seleccionada por defecto (Binario) y descargamos como .txt

Luego abrimos el archivo .txt desde un excel seleccionando el tipo 'Delimitados'.


En separadores activamos la casilla (checkbox) de 'Coma'



Y finalmente lo guardamos como un archivo .csv (delimitado por comas).
Se sugiere que el título del archivo tenga el siguiente patrón:
<RUC>_<REFERENCIA_FACTURA>

Nos vemos en el siguiente Blog!

Cordialmente,

Comentarios

Entradas populares de este blog

Modificando Vista de Actualización SM30

User Exit para VA01 y VA02

Buttons and events in ALV GRID and ALV GRID OO