Versiones comparadas

Clave

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

Basado en la documentación oficial: How to Extend a Custom Form Template for Billing Output with Custom Fields

Introducción

En este post vamos a detallar como ampliar un formulario estandar para que contenga un nuevo campo, el caso que se expone como ejemplo es el formulario estándar de documento financiero para añadirle un QR de TicketBAI y asignarlo como formulario por defecto para que se imprima, pero puede extrapolarse a cualquier formulario estandar de SAP S4HANA Cloud.

Info

Si el objetivo de esta guía es implementar el requerimiento de TicketBAI para el formulario de facturación, es necesario incluir dos campos: el QR y el código TicketBAI. Sin embargo, en esta guía solo se aborda la implementación del QR para simplificar el proceso. Para implementar otros campos hay que repetir los pasos 2, 3 y 4.

Pasos a seguir

  1. Encontrar el formulario en cuestión y copiarlo.

Para nuestro caso vamos a la aplicación “Change Billing Document” seleccionamos una factura reciente y entramos al detalle. En la pantalla de detalle vamos al menú Goto > Header > Output.

image-20241009-145749.pngImage Modified

En el caso del ejemplo el formulario es estándar ya que no empieza por Y o Z.

image-20241009-145806.png

Una vez encontrado el formulario vamos a la aplicación “Maintain Form Template” y copiaremos el formulario.

image-20241009-145959.png

Le asignaremos el nombre que queramos y guardaremos.

  1. Ampliar la factura con el campo nuevo.

Video: https://cdnapisec.kaltura.com/html5/html5lib/v2.101/mwEmbedFrame.php/p/1921661/uiconf_id/37285991/entry_id/0_9wva7cks?wid=_1921661&iframeembed=true&playerId=kaltura_player&entry_id=0_9wva7cks

En la aplicación “Custom fields” crearemos un nuevo campo y le pondremos el nombre que queramos usar en nuestro caso QR_TBAI. El contexto empresarial es super importante ya definirá donde puede usarse el campo, en S4HANA, al crear un campo este aplica no solo a una estructura o a una BADI, si no que se habilita para activarse en cualquier , por ejemplo con el contexto “Ventas: Documento de finanzas” podremos activar el campo para que aparezca en CDS, formularios, APIS, BAPIS, emails, etc, todas las relacionadas con el contexto empresarial.

image-20241009-150142.png

Vamos a activar el campo para que aparezca en nuestro formulario, vamos a la sección “Form Templates” activamos nuestro formulario. (En el caso del pantallazo ya está activado). Es normal que se activen objetos dependientes.

image-20241009-150946.png
  1. Modificar el Formulario para que se muestre el nuevo campo.

Desde la App “Install Additional Software” descargamos el Adobe® LiveCycle® Designer y lo instalamos en nuestro equipo.

Descargamos el formulario que creamos anteriormente desde la app “Maintain Form Templates” y descomprimimos el ZIP en nuestro equipo.

image-20241010-104222.png

Abrimos Adobe® LiveCycle® Designer seleccionamos “Open Form” y seleccionamos el XSD que empieza por YY1 que se nos han descargado anteriormente al descomprimir el ZIP. Si aparecen mensajes, aceptar todo.

Para nuestro ejemplo vamos a añadir un QR, así que en el menú “Object Library” de la derecha seleccionamos “QR Code” y arrastramos al lugar del formulario donde queremos que aparezca.

image-20241009-154802.png

En el caso de normativas como TicketBAI es importante revisar la especificación del requerimiento, ya que debe cumplirse “Ver anexo IV de

View file
nameNormativa TicketBAI.pdf

Una vez arrastrado el QR al formulario vamos a “bindearlo” con el campo que creamos anteriormente, desde la pantalla Binding, una vez seleccionado con doble click el QR en el formulario, seleccionamos nuestro campo (no el que acaba en F).

image-20241009-155943.png

TIP: Si queremos que un elemento solo se muestre cuando tenga información debemos hacer lo siguiente:

Con el elemento seleccionado, en la parte superior de la pantalla seleccionamos “Show: Validate” y añadimos el siguiente script.

image-20241010-104451.png
Bloque de código
// Hide field if data is not bound or the field value is empty
if (this.isNull)
then
  this.presence = "inactive";
endif
1; //returns true for validation

Guardamos y subimos la plantilla usando la aplicación “Maintain Form Templates”.

image-20241010-104323.png

  1. Implentar la lógica para que se rellene el campo cuando se genere el formulario.

En la aplicación “Custom logic” para el contexto empresarial “Sales: Billing Document” crear una nueva implementación para el siguiente punto de extensión:

image-20241009-160321.png

Publicamos y editamos el código para implementar nuestra lógica, en nuestro caso sería recuperar la URL de TicketBAI a través del apunte contable asociado al documento de finanzas, guardar y activar!

Bloque de código
languageabap
*   This method can be used to set values for output to billing document header extension fields.
*   Example:
*
*   First of all assign existing extension field values to output parameter:
    billingdoc_extension_out = billingdoc_extension_in.
    billingdocdescr_extension_out = billingdocdescr_extension_in.

select single url
from /tbai/r_registrotp
where companycode = @billingdoc-companycode
and accountingdocument = @billingdoc-accountingdocument
and fiscalyear = @billingdoc-fiscalyear
and estbai = @abap_true
into @billingdoc_extension_out-yy1_qr_tbai_bdh.
  1. Parametrizar el formulario para sea el formulario por defecto.

Video https://www.kaltura.com/p/1921661/sp/192166100/embedIframeJs/uiconf_id/37285991/partner_id/1921661?iframeembed=true&playerId=kaltura_player&entry_id=0_effltrb0

Este punto es tarea del equipo funcional y varía dependiendo de si el cliente tiene o no el Custom Business Configurator (CBC) activado para el sistema o no, debemos hacer 2 cosas, dar de alta la plantilla en el maestro de plantillas de documentos contables, y luego asignarla para que cuando se determine la plantilla, aparezca la nuestra.

Desde el CBC debemos ir a la actividad “Configure Your Business Processes” (si no está disponible debemos hablar con el equipo funcional para que lo haga) a “Assign Form Templates”.

image-20241010-105219.png

Puedes probar a acceder directamente usando la siguiente url:

<host>/ui#IMGActivity-execute?IMGActivity=APOC_C_FORMV&CustomizingObject=APOC_C_FORMV&CustomizingObjectType=V&CustomizingProject=&CustomizingTransaction=S_ER9_68000005&Type=SSCUI

Creamos una nueva entrada para nuestra plantilla:

image-20241010-105626.png

Para que se determine nuestra plantilla, en la aplicación “Output Parameter Determination” buscamos la tabla de “Billing Document” “Form Template” y cambiamos el formulario por defecto para nuestro escenario.

image-20241009-160858.png

Con esto habremos realizado la ampliación del formulario además de asignarlo como formulario por defecto en nuestro sistema.