• Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
S4PCADEMY_Logo
Twitter Linkedin Instagram
S4PCADEMY_Logo
Twitter Linkedin Instagram
FORMACIÓN SAP

Funcionalidad de Adobe Form (Imprimir/Vista previa de impresión) en SAP CRM Actions

By s4pcademy 


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.




Proyecto Abap2ui5: desarrollo de pantallas de selección UI5 en ABAP puro (no se necesita implementación de aplicaciones ni javascript)
Previo
Resumen de lanzamiento de SAP HANA Cloud para diciembre de 2022
Siguiente

Madrid

Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010

México

Paseo de la Reforma 26
Colonia Juárez,  Cuauhtémoc
Ciudad de México 06600

Costa Rica

Real Cariari
Autopista General Cañas, 
San José, SJ 40104

Perú

Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073

Twitter Linkedin Instagram
Copyright 2022 | All Right Reserved.