¡Hola SAPers!
Mi anterior correo se centró en el proceso de referencia en torno a la importación de extractos bancarios en Fiori. Esta publicación explora mejoras adicionales que son necesarias si desea cargar extractos bancarios en formatos específicos del banco, por ejemplo, XML, CSV, JSON, etc.
Si su banco no proporciona extractos bancarios en un formato comúnmente reconocido (p. ej., MT940, Multicash, BAI, etc.), puede configurar SAP para cargar extractos bancarios en cualquier formato estructurado. Comencé a explorar este tema en mis publicaciones anteriores y recomiendo revisarlas. Las configuraciones descritas en esas publicaciones son requisitos técnicos previos y proporcionarán un buen punto de partida para esta publicación. Los enlaces a estas publicaciones se proporcionan a continuación:
Esta publicación describirá cómo cargar un extracto bancario en formato CSV, pero se centrará en las configuraciones y mejoras específicas de Fiori. Sin embargo, la idea se puede aplicar a extractos bancarios en cualquier formato estructurado, es decir, legible por máquina.
Esta publicación no describe la lógica de análisis para el archivo CSV o cómo los datos resultantes deben asignarse a las tablas estándar de SAP que almacenan los detalles transaccionales de los extractos bancarios. Estos detalles fueron descritos por separado correo mencionado anteriormente.
Se requieren cuatro mejoras separadas (es decir, BADI) antes de que pueda cargar dichos extractos bancarios en SAP. Dos de estas mejoras son específicas de Fiori. Una de estas mejoras verifica si el archivo del extracto bancario cumple con la lista de formatos configurados. Otro: calcula el número de extractos bancarios en el archivo. Dos mejoras más se ejecutan en el backend y se describieron en mi publicación anterior.
Definir nuevo formato de extracto bancario en la vista VFIEB_MAPP_XCTRL. También puede utilizar la siguiente ruta de menú para esta actividad de configuración:
SPRO → Contabilidad financiera → Contabilidad bancaria → Transacciones comerciales → Transacciones de pago → Extracto bancario electrónico → Formato XML y formatos específicos del banco.
Configure el nuevo formato de extracto bancario para cargar el extracto bancario. Utilice la siguiente ruta de menú para configurar el formato. Alternativamente, puede usar el código de transacción S_ER9_11000399 o la vista de mantenimiento VC_FAR_IPF (a través de SM34) para configurarlo.
SPRO → Contabilidad financiera → Contabilidad bancaria → Transacciones comerciales → Transacciones de pago → Extracto bancario electrónico → Configurar formatos para importación (SAP Fiori).
Esencialmente, usted define un nuevo formato de extracto bancario específico del banco (el valor «X» en la lista desplegable representa el formato específico del banco) y lo vincula al formato definido anteriormente (es decir, en la vista VFIEB_MAPP_XCTRL). La entrada UA_PRV en la configuración representa el tipo de transacción (es decir, el código de transacción OT83) que se usará para derivar las reglas de contabilización.
Configure un nuevo conjunto de parámetros para controlar los parámetros de procesamiento para la importación de extractos bancarios. Puede usar el código de transacción S_ER9_11001563 o la vista de mantenimiento VC_FAR_BSIMP_PSETS (a través de SM34) para configurarlo. La actividad de configuración relevante también está disponible en la siguiente ruta de menú:
SPRO → Contabilidad financiera → Contabilidad bancaria → Transacciones comerciales → Transacciones de pago → Extracto bancario electrónico → Definir conjuntos de parámetros.
Además de estas actividades de configuración, implemente BADI FIEB_GET_BANK_STMTS_X y FIEB_MAPPING_X como se describe en mi anterior correo.
Si mantuvo la configuración de referencia para el formato de extracto bancario personalizado como se describe anteriormente, puede intentar cargar el extracto bancario a través de la aplicación Fiori F1680 “Administrar archivos de pagos entrantes”. Sin embargo, la aplicación arrojará un mensaje de error «No se seleccionó ninguna implementación para el BAdI actual. Se planteó una excepción”. Desafortunadamente, el mensaje de error no proporciona más detalles, por ejemplo, qué BAdI no se implementó.
Implementar BADI FAR_IPF_FORMAT_RECONOCIMIENTO para abordar esta excepción. El valor del filtro para esta mejora debe ser el mismo que el configurado en la vista VFIEB_MAPP_XCTRL.
Ejemplo de código fuente para BADI:
method if_far_ipf_badi_formats~is_compliant_format.
data lv_bank_statement type string.
call function 'LXE_COMMON_XSTRING_TO_STRING'
exporting
in_xstring = iv_bank_statement
importing
ex_string = lv_bank_statement
exceptions
error = 1
others = 2 .
if sy-subrc <> 0.
return.
endif.
split lv_bank_statement at cl_abap_char_utilities=>cr_lf into table data(lt_csv_lines).
if sy-subrc = 0.
rv_is_compliant = abap_true.
endif.
endmethod.
Implementar el segundo BADI FAR_IPF_NUMBER_OF_STATEMENTS para calcular el número de extractos bancarios por archivo de pago. Tenga en cuenta que este BADI utiliza una combinación de dos valores para los fines del filtro:
– FILE_FORMAT debe ser “X” (es decir, formato específico del banco como se explicó anteriormente).
– El ID de formato de la vista VFIEB_MAPP_XCTRL debe indicarse como FILE_FORMAT_LONG.
Opinión personal: Estaba un poco confundido con estos filtros BADI y no entiendo completamente por qué SAP usa valores de filtro diferentes para estos dos BADI. Pero al menos está funcionando como se anuncia.
Dependiendo de la complejidad de su extracto bancario, puede implementar este BADI de manera diferente. Si tu banco siempre proporciona solo un extracto bancario por archivo, la lógica de este BAdI será muy fácil:
method if_far_ipf_badi_statements~get_number_of_statements.
rv_number_of_statements = 1.
endmethod.
Sin embargo, si su banco proporciona más de un extracto bancario por archivo, deberá implementar una lógica más complicada. Aquí hay un código fuente de referencia que le permite obtener los datos binarios del archivo de pago y transformarlo en una tabla de texto. Una vez que tenga una tabla de texto, puede implementar su propia lógica para analizarla y decidir cuántas declaraciones contiene.
method if_far_ipf_badi_statements~get_number_of_statements.
data:
lt_contents_hex type far_ipf_tt_contents_hex,
ls_document_data type sofolenti1,
lt_text type table of char255,
lv_string type string.
data(lo_so_service) = cl_far_ipf_so_service=>get_so_service( ).
try.
lo_so_service->so_document_read(
exporting
iv_document_id = iv_document_id
importing
es_document_data = ls_document_data
changing
ct_contents_hex = lt_contents_hex ).
catch cx_far_ipf_exception.
return.
endtry.
if lt_contents_hex is initial.
return.
endif.
call function 'SCMS_BINARY_TO_TEXT'
exporting
input_length = conv i( ls_document_data-doc_size )
tables
binary_tab = lt_contents_hex
text_tab = lt_text.
" Implement your logic here
" Analyze the text in table lt_text and calculate the number of statements
" Return the number of statements via rv_number_of_statements
endmethod.
Usar la aplicación Fiori F1680 “Administrar archivos de pagos entrantes” para cargar el extracto bancario. Selecciona la opción “Estado de Cuenta”:
Nota: esta publicación se basa en la versión 8.0.1 de la aplicación.
Seleccione el formato del extracto bancario en CSV y un conjunto de parámetros dedicado. Arrastre y suelte el archivo de pago para cargarlo o proporcione la ruta del archivo a través del menú de diálogo. Empezar a procesar.
Como puede ver, el archivo fue subido:
Registro detallado del archivo subido:
Espero que haya encontrado algunas ideas interesantes en esta publicación y espero sus comentarios.
Saludos,
Bohdan Petrushchak
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073