
Introducción: En las acciones de SAP CRM, no tenemos ninguna opción para configurar, desarrollar e imprimir formulario de adobe. Solo permite la impresión de Smart Forms.
Pero podemos modificar el sistema para que esta característica sea posible, haciendo algunos cambios de configuración/codificación.
En SPRO tenemos Comportamiento disponible que se configura con toda la funcionalidad comercial requerida. Para los propósitos de esta explicación, usaré Acciones en Facturación como ejemplo, y supondré que somos conscientes de los criterios fundamentales para desarrollar perfiles de acción y definiciones. Voy a pasar directamente al mantenimiento Tipos de procesamiento.
Siga la ruta de SPRO que se menciona a continuación para mantener la impresión de formularios de Adobe.
Gestión de relaciones con el cliente –> Funciones básicas –> Acciones –>Acciones en facturación –> Cambiar acciones y condiciones –>Definir perfiles de acción y acciones
No hay ninguna opción disponible para mantener Adobe Form en el perfil de acción. Aquí solo se pueden abordar las opciones de Smart Forms.
Para lograr la impresión de formularios de Adobe desde el perfil de acción, necesitamos crear y activar un formulario inteligente (T-code-smartforms), digamos ZINVOICE_FORM, pero no ponga ninguna lógica en el formulario. Tendrá solo la ventana principal y otros detalles que el sistema crea automáticamente.
Crear clase personalizada (ZCL_BEA_ADB_PROCESSING_PPF ) y asigne una superclase como CL_BEA_SF_PROCESSING_PPF y crear un nuevo método (por ejemplo EXEC_ADOBE_FORM)
Crear formulario de Adobe (T-code SFP), por ejemplo ZINVOICE_FORM (Acabo de tomar el mismo nombre que Smart Form, también puede ser un nombre diferente). Este formulario de adobe tendrá todas las funcionalidades comerciales y la lógica para manejar el requerimiento.
Método EXEC_ADOBE_FORM tendrá la lógica para llamar al formulario de adobe y el fragmento de código a continuación jugará un papel clave para ejecutar el mismo.
TRY .
*If we have same name for Smartform and adobe form then we can assign importing parameter else it will have exact adobe form created in SFP t-code.
DATA(lv_adobe_form) = ip_smart_form.
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
EXPORTING
i_name = lv_adobe_form
IMPORTING
e_funcname = lv_adobe_fm_name.
CATCH cx_fp_api_repository
cx_fp_api_usage
cx_fp_api_internal.
IF sy-subrc <> 0.
* add an error message to processing protocol
MESSAGE i015(sppf_media) WITH lv_adobe_form INTO lv_dummy.
CALL METHOD cl_log_ppf=>add_message
EXPORTING
ip_problemclass="1"
ip_handle = ip_application_log.
RETURN.
ENDIF.
ENDTRY.
*-----------fill archive parameters for archive link -------------------
IF is_output_options-tdarmod = '2'
OR is_output_options-tdarmod = '3'.
* archive_index_tab
ASSIGN ct_archive_index_tab[ 1 ] TO FIELD-SYMBOL(<fs_archive_index>).
IF sy-subrc EQ 0 AND <fs_archive_index> IS ASSIGNED.
* just fill the id of actual BOR object
<fs_archive_index>-object_id = lv_bea_guid.
IF <fs_archive_index>-object_id IS INITIAL.
DELETE ct_archive_index_tab INDEX 1.
ENDIF.
ENDIF.
ENDIF.
*-----------language of smart form--------------------------------------
* determin here the language of the smart form
DATA(ls_control_parameters) = is_control_parameters.
ls_control_parameters-langu = lv_sf_langu.
DATA(ls_output_options) = is_output_options.
IF NOT ls_printer_profile_data IS INITIAL.
ls_output_options = CORRESPONDING #( ls_printer_profile_data ).
ENDIF.
* Logic for all the required exporting parameters (Here bdh, bdi, bdh_cond, bdi_cond : related to CRM billing) will be filled up as per business functionality.
CALL FUNCTION lv_adobe_fm_name
EXPORTING
archive_index = is_archive_index
archive_index_tab = ct_archive_index_tab
archive_parameters = is_archive_parameters
control_parameters = ls_control_parameters
mail_appl_obj = is_mail_appl_obj
mail_recipient = is_mail_recipient
mail_sender = is_mail_sender
output_options = ls_output_options
user_settings = ip_user_settings
bdh = <s_bdh>
bdi = <t_bdi>
bdh_cond = lt_bdh_cond
bdi_cond = lt_bdi_cond
IMPORTING
document_output_info = es_document_output_info
job_output_info = es_job_output_info
job_output_options = es_job_output_options
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
* add an error message to processing protocol
CASE sy-subrc.
WHEN 1.
MESSAGE e016(sppf_media) INTO lv_dummy.
WHEN 2.
MESSAGE e017(sppf_media) WITH lv_adobe_fm_name INTO lv_dummy.
WHEN 3.
MESSAGE e018(sppf_media) WITH lv_adobe_fm_name INTO lv_dummy.
ENDCASE.
CALL METHOD cl_log_ppf=>add_message
EXPORTING
ip_problemclass="1"
ip_handle = ip_application_log.
ENDIF.
* get error table
CALL FUNCTION 'SSF_READ_ERRORS'
IMPORTING
errortab = et_error_tab.
Volvamos a los perfiles de acción para asignar el Clase de procesamiento, Método de procesamiento y Nombre del formulario (Nombre de formulario inteligente) con los tipos de acción de procesamiento permitidos como (Impresión de formularios inteligentes)
A continuación, asigne la definición de acción en la siguiente ruta SPRO
Gestión de relaciones con el cliente –> Funciones básicas –> Acciones –>Acciones en facturación –> Cambiar acciones y condiciones –>Definir condiciones
Ahora vea la vista previa de impresión o procese la acción (Acciones en Facturación) para ver el resultado. (De la misma manera que ejecutamos el formulario inteligente)
Aquí, podemos ver una impresión que se creó directamente en formato PDF (No como formato OTF en el caso de Smart Form). Este paso completa las capacidades de impresión de formularios de Adobe (en acciones de SAP CRM) en el marco de Smart Form.
Espero que hayas disfrutado este. Siga leyendo y siéntase libre de proporcionar cualquier sugerencia o comentario.
Lea el próximo blog, donde estoy cubriendo algunos puntos más importantes, como imprimir varias copias del formulario y habilitar la misma funcionalidad en la pantalla CRM Web-UI.
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