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
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>
Cordialmente,




















Comentarios
Publicar un comentario