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

S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram
Product Information

Integración de SAP Service and Asset Manager (SAM) con SAP Field Service Management (FSM) utilizando FSM Cloud Connector (proaxia)

By s4pcademy 


La aplicación móvil SAP Service and Asset Manager (SAM) se integra con SAP Field Service Management (FSM) como parte de la persona de Field Service Technician mediante el conector Proaxia. SAM se integra con el tablero de planificación de SAP FSM para establecer el estado actual de la actividad y los datos de ubicación del técnico. Además, actualiza los datos relacionados con el kilometraje y los gastos capturados desde la aplicación móvil SAM en el sistema en la nube de FSM. Como parte de esta integración, SAM también es compatible con FSM Smartforms y permite que la aplicación móvil de SAM descargue, modifique y cargue Smartforms asignados a una actividad/operación.

Proceso%20flujo%20para%20SAM%20Integración%20con%20FSMProceso%20flujo%20para%20SAM%20Integración%20con%20FSM

Flujo de proceso para la integración de SAM con FSM

SAP SAM se integró directamente con SAP FSM utilizando las API de servicio y datos proporcionadas por SAP FSM. Sin embargo, los objetos subyacentes que deben actualizarse (por ejemplo, Órdenes de servicio (Llamadas de servicio en FSM), Operaciones (Actividades en FSM), Empleados (Personas en FSM) son creados por el conector de Proaxia. Por lo tanto, deben cumplirse los siguientes requisitos previos implementarse para que los escenarios de extremo a extremo funcionen.

requisitos previos:

Para ejecutar los escenarios de integración admitidos entre SAP SAM y SAP FSM, se deben cumplir los siguientes requisitos previos para que la integración funcione correctamente:

  1. Habilite el indicador ‘ID externo’ en la sección de definición de empresa del conector FSM.
  2. Implemente métodos BAdi para proporcionar mapeo de ID entre SAM y FSM.

Detalles de implementacion:

Las siguientes secciones explicarán los detalles sobre cómo implementar estos requisitos previos.

Habilite el indicador ‘ID externo’ en la configuración de definición de empresa del conector FSM

Desde el sistema backend de SAP, use la opción de menú de FSM Connector, Customizing –> Objects –> Company –> Company Definition (Código de transacción: /PACG/ECM_COMP).

Habilitar%20Externo%20Id%20desde%20FSM%20Conector%20configuraciones

Definición de empresa de conector FSM

Al habilitar el indicador de identificación externa, puede activar el envío de la identificación externa desde el conector FSM a FSM.

Habilitar%20Externo%20Id%20desde%20FSM%20Conector%20configuraciones

Habilitar la identificación externa desde la configuración del conector FSM

Implemente métodos BAdi para proporcionar mapeo de ID entre SAM y FSM:

El marco de integración de aplicaciones móviles (MAIF), que admite funciones de integración de back-end de SAM, proporciona diferentes opciones de BAdi para determinar las referencias cruzadas de campos clave entre FSM Connector y el sistema FSM Cloud. El Badi /MERP/CA_FSM_CROSSREF_BADI se entrega para el sistema ERP y S/4HANA para admitir esta función con los siguientes métodos de interfaz.

BAdi%20Interfaz%20para%20FSM%20Id%20mapeo

Interfaz BAdi para mapeo de ID de FSM

Los siguientes ejemplos de código son un ejemplo, es posible que deba realizar ajustes adicionales para su entorno.

  1. Agregue el método local GET_COMPID para determinar la identificación de la empresa FSM. Este método requerido para el GET_EMPLOYEE_IDS BADI método en el paso 2. Este método devuelve los siguientes datos:

    Parámetro de importación: iv_cuenta TIPO /paquete/ecm_cloudaccount. Parámetro de retorno: rv_compid TIPO /paquete/ecm_compid.

    METHOD get_compid. 
     
        DATA: lv_string1    TYPE string, 
              lv_string2    TYPE string, 
              lv_account    TYPE string, 
              lv_fsmaccount TYPE /pacg/ecm_cloudaccount, 
              lv_fsmcompany TYPE /pacg/ecm_cloudid, 
              lv_compid     TYPE /pacg/ecm_compid, 
              ls_cacc       TYPE /pacg/ecm_cacc. 
     
        lv_account = iv_account. 
     
        SPLIT lv_account AT '&account=" INTO lv_string1 lv_string2. 
        SPLIT lv_string2 AT "&company=' INTO lv_string1 lv_string2. 
     
        lv_fsmaccount = lv_string1. 
        lv_fsmcompany = lv_string2. 
     
     
        ls_cacc = /pacg/ecm_cl_d_access=>get_cloudcomp_definition(  
    
    iv_cloudaccount = lv_fsmaccount 
    iv_cloudid      = lv_fsmcompany ). 
     
    rv_compid = ls_cacc-compid. 
     
    ENDMETHOD.​
  2. Implemente el método BAdi /MERP/IF_CA_FSM_CROSSREF_BADI~GET_EMPLOYEE_IDS:

    Este método es un requisito previo para guardar geolocalizaciones capturadas de SAP SAM hacia FSM de SAP tablero de planificación y programación. El método debe devolver el MEV Identificación(es) interna(s) de empleado (Campo identificación del Gestión de servicios de campo Persona entidad) en función de los números de personal proporcionados. Utilice el parámetro de importación IO_ACI_SERVICE para ejecutar una llamada de servicio a Gestión de servicios de campo para recuperar el identificación basado en el código en el siguiente ejemplo de código.

    METHOD /merp/if_ca_fsm_crossref_badi~get_employee_ids. 
     
        TYPES: BEGIN OF ty_error, 
                 error TYPE string, 
               END OF ty_error. 
     
        TYPES: BEGIN OF ty_fsmitem, 
                 id         TYPE string, 
                 externalid TYPE string, 
                 username   TYPE string, 
               END OF ty_fsmitem. 
     
        TYPES: BEGIN OF ty_persondata, 
                 person TYPE ty_fsmitem, 
               END OF ty_persondata. 
     
        DATA: 
          lv_pernr_query TYPE string, 
          ls_oblnk       TYPE /smfnd/sync_d_oblnk_h_upd_str, 
          lv_id          TYPE /smfnd/sync_object_key_dte, 
          lv_url         TYPE string, 
          lv_char_code   TYPE n LENGTH 3, 
          lt_persondata  TYPE STANDARD TABLE OF ty_persondata, 
          ls_persondata  LIKE LINE OF lt_persondata, 
          lt_error       TYPE STANDARD TABLE OF ty_error, 
          ls_error       LIKE LINE OF lt_error, 
          lv_status_code TYPE i, 
          lv_reason      TYPE string, 
          lv_result      TYPE string, 
          lv_raw_data    TYPE xstring, 
          lv_compid      TYPE /pacg/ecm_compid, 
          lv_cloud_uname TYPE /pacg/ecm_cloud_uname, 
          ls_pernr       LIKE LINE OF it_pernr. 
     
        TYPES: BEGIN OF ty_personresp, 
                 data LIKE lt_persondata, 
               END OF ty_personresp. 
     
        DATA: ls_personresp TYPE ty_personresp. 
     
        IF io_aci_service IS BOUND. 
          IF it_pernr IS INITIAL. 
            RETURN. 
          ENDIF. 
     
          lv_compid = get_compid( iv_account ). 
     
          LOOP AT it_pernr INTO ls_pernr. 
     
            CLEAR lv_pernr_query. 
     
            IF ls_pernr-low IS NOT INITIAL. 
              TRY. 
                  lv_cloud_uname = /pacg/ecm_cl_x_util=>build_cloud_uname( iv_pernr       = ls_pernr-low 
                                                                           iv_compid      = lv_compid ). 
                CATCH /pacg/ecm_cx_main. 
                  "No FSM user exists 
                  CONTINUE. 
              ENDTRY. 
              CONCATENATE lv_pernr_query 'externalId="' ls_pernr-low '"' INTO lv_pernr_query. 
            ENDIF. 
     
            IF lv_pernr_query IS NOT INITIAL. 
              CONCATENATE '/api/data/v4/Person?dtos=Person.24' '&query=' lv_pernr_query 
                         '&fields=id,externalId,userName' iv_account INTO lv_url. 
     
              CALL METHOD io_aci_service->call_service 
                EXPORTING 
                  iv_request_uri    = lv_url 
                  iv_request_method = 'GET' 
                  it_headers        = it_headers 
                IMPORTING 
                  ev_status_code    = lv_status_code 
                  ev_reason         = lv_reason 
                  ev_result         = lv_result 
                  ev_raw_data       = lv_raw_data. 
     
              lv_char_code = lv_status_code. 
              IF lv_char_code CP '4*'. 
                ls_error-error = lv_result. 
                APPEND ls_error TO lt_error. 
              ELSE. 
                /aci/cl_util_json_handler=>deserialize(  EXPORTING json =  lv_result 
                                                         CHANGING  data =  ls_personresp  ). 
                LOOP AT ls_personresp-data INTO ls_persondata. 
                  lv_id = ls_persondata-person-id. 
                  ls_oblnk-object_type="EMPLOYEE". 
                  ls_oblnk-object_key  = ls_pernr-low. 
                  ls_oblnk-ext_object_type="PERSON". 
                  ls_oblnk-ext_object_key  = lv_id. 
                  ls_oblnk-sys_comp = 'SAP_FSM'. 
                  ls_oblnk-mobile_app = iv_mapp. 
                  APPEND ls_oblnk TO et_oblnk. 
                  CLEAR ls_oblnk. 
                ENDLOOP. 
              ENDIF. 
            ENDIF. 
          ENDLOOP. 
        ENDIF. 
      ENDMETHOD. ​
  3. Implementar el método /MERP/IF_CA_FSM_CROSSREF_BADI~GET_ACTIVITY_ID:

    Este método es un requisito previo para implementar las actualizaciones de estado relevantes de SAP SAM hacia FSM de SAP tablero de planificación y programación. Este método debe devolver el Gestión de servicios de campo ID de actividad interna (la identificación campo de la Gestión de servicios de campo Actividad entidad) en base al número de orden y operación proporcionado.

    Usar el parámetro de importación IO_ACI_SERVICE para ejecutar una llamada de servicio a Gestión de servicios de campo para recuperar la identificación basada en el código. Consulte el siguiente ejemplo de código para obtener más detalles.

    METHOD /merp/if_ca_fsm_crossref_badi~get_activity_id. 
     
        TYPES: BEGIN OF ty_fsmitem, 
                 id         TYPE string, 
                 externalid TYPE string, 
               END OF ty_fsmitem. 
     
        TYPES: BEGIN OF ty_error, 
                 error TYPE string, 
               END OF ty_error. 
     
        TYPES: BEGIN OF ty_actdata, 
                 activity TYPE ty_fsmitem, 
               END OF ty_actdata. 
     
        DATA: 
          lv_act_query   TYPE string, 
          lv_id          TYPE /smfnd/sync_object_key_dte, 
          lv_url         TYPE string, 
          lv_char_code   TYPE n LENGTH 3, 
          lt_actnr       TYPE STANDARD TABLE OF /pacg/ecm_actnr, 
          lv_actnr       TYPE /pacg/ecm_actnr, 
          lv_object_key  TYPE /smfnd/sync_object_key_dte, 
          lt_error       TYPE STANDARD TABLE OF ty_error, 
          ls_error       LIKE LINE OF lt_error, 
          lt_actdata     TYPE STANDARD TABLE OF ty_actdata, 
          ls_actdata     LIKE LINE OF lt_actdata, 
          lv_status_code TYPE i, 
          lv_reason      TYPE string, 
          lv_result      TYPE string, 
          lv_raw_data    TYPE xstring, 
          lv_aufnr_len   TYPE i, 
          lo_descr       TYPE REF TO cl_abap_elemdescr, 
          ls_aufnr_dfies TYPE dfies. 
     
        TYPES: BEGIN OF ty_actresp, 
                 data LIKE lt_actdata, 
               END OF ty_actresp. 
     
        DATA: ls_actresp TYPE ty_actresp. 
     
        IF io_aci_service IS BOUND. 
          IF iv_aufnr IS INITIAL OR iv_vornr IS INITIAL. 
            RETURN. 
          ENDIF. 
     
          lv_object_key = iv_aufnr. 
          lo_descr ?= cl_abap_elemdescr=>describe_by_data( iv_aufnr ). 
          ls_aufnr_dfies = lo_descr->get_ddic_field( ). 
          lv_aufnr_len = ls_aufnr_dfies-leng. 
          lv_object_key+lv_aufnr_len = iv_vornr. 
     
          "Get all activitties for order operation 
          SELECT actnr INTO TABLE lt_actnr FROM /pacg/ecm_acti WHERE aufnr = iv_aufnr AND vornr = iv_vornr. 
     
          "Get the newest activity 
          SORT lt_actnr DESCENDING. 
          READ TABLE lt_actnr INTO lv_actnr INDEX 1. 
          IF sy-subrc IS NOT INITIAL. 
            RETURN. 
          ENDIF. 
     
          CONCATENATE lv_act_query 'externalId="' lv_actnr '"' INTO lv_act_query. 
     
          IF lv_actnr IS NOT INITIAL. 
            CONCATENATE '/api/data/v4/Activity?dtos=Activity.39' '&query=' lv_act_query '&fields=id,externalId' iv_account INTO lv_url. 
     
            CALL METHOD io_aci_service->call_service 
              EXPORTING 
                iv_request_uri    = lv_url 
                iv_request_method = 'GET' 
                it_headers        = it_headers 
              IMPORTING 
                ev_status_code    = lv_status_code 
                ev_reason         = lv_reason 
                ev_result         = lv_result 
                ev_raw_data       = lv_raw_data. 
     
            lv_char_code = lv_status_code. 
            IF lv_char_code CP '4*'. 
              ls_error-error = lv_result. 
              APPEND ls_error TO lt_error. 
            ELSE. 
              /aci/cl_util_json_handler=>deserialize(  EXPORTING json =  lv_result 
                                                       CHANGING  data =  ls_actresp  ). 
              LOOP AT ls_actresp-data INTO ls_actdata. 
                lv_id = ls_actdata-activity-id. 
                es_oblnk-object_type="OPERATION". 
                es_oblnk-object_key  = lv_object_key. 
                es_oblnk-ext_object_type="ACTIVITY". 
                es_oblnk-ext_object_key  = lv_id. 
                es_oblnk-sys_comp = 'SAP_FSM'. 
                es_oblnk-mobile_app = iv_mapp. 
    
          ev_id = ls_actdata-activity-id. 
                EXIT. 
              ENDLOOP. 
            ENDIF. 
          ENDIF. 
        ENDIF. 
     
      ENDMETHOD. ​
  4. Implementar el método /MERP/IF_CA_FSM_CROSSREF_BADI~GET_SERV_ASSIGN_ID:

    Este método es un requisito previo para implementar actualizaciones de estado relevantes de SAP SAM al tablero de planificación y programación de SAP FSM. El método debe devolver el MEV ID de actividad interna (la identificacióncampo de la Gestión de servicios de campo Actividad entrada) en función del número de pedido y operación proporcionado. Utilice el QUERY_FSM_SERVICEASSIGN método de la /MERP/CL_CA_FSM_INTEGRACIÓN class para obtener este valor según el siguiente ejemplo de código.

    METHOD /merp/if_ca_fsm_crossref_badi~get_serv_assign_id. 
        DATA lref_fsm_integration TYPE REF TO /merp/cl_ca_fsm_integration. 
     
        TRY. 
            " Create FSM object 
            CREATE OBJECT lref_fsm_integration 
              EXPORTING 
                iv_mapp = iv_mapp. 
          CATCH /merp/cx_core_exception_gen INTO DATA(lref_badi_exception). 
            RETURN. 
        ENDTRY. 
        " Fetch Service Assignment from FSM if it exists 
        lref_fsm_integration->query_fsm_serviceassign( 
          EXPORTING 
            iv_aufnr       = iv_aufnr 
            iv_vornr       = iv_vornr 
            iv_activity_id = iv_activity_id 
          IMPORTING 
            ev_id          = ev_id 
            ev_activity_id = ev_activity_id 
            es_oblnk       = es_oblnk 
            ). 
      ENDMETHOD.​
  5. Implementar el método /MERP/IF_CA_FSM_CROSSREF_BADI~GET~GET_SERV_ASSIGN_STATUS_ID:

    Este método es un requisito previo para implementar actualizaciones de estado relevantes de SAP SAM al tablero de planificación y programación de SAP FSM. Utilizar el QUERY_FSM_SERVICEASSIGNSTATUS método de la /MERP/CL_CA_FSM_INTEGRACIÓN class para obtener este valor según el siguiente ejemplo de código.

    METHOD /merp/if_ca_fsm_crossref_badi~get_serv_assign_status_id. 
        DATA lref_fsm_integration TYPE REF TO /merp/cl_ca_fsm_integration. 
     
        TRY. 
            " Create FSM object 
            CREATE OBJECT lref_fsm_integration 
              EXPORTING 
                iv_mapp = iv_mapp. 
          CATCH /merp/cx_core_exception_gen INTO DATA(lref_badi_exception). 
            RETURN. 
        ENDTRY. 
     
        lref_fsm_integration->query_fsm_serviceassignstatus( 
            EXPORTING 
              iv_aufnr       = iv_aufnr 
              iv_vornr       = iv_vornr 
              iv_activity_id = iv_activity_id 
            IMPORTING 
              ev_id          = ev_id 
              es_oblnk       = es_oblnk 
              ). 
    ENDMETHOD.​

Resumen:

Con el escenario de integración explicado anteriormente, SAP SAM ahora puede integrarse con SAP FSM. SAP SAM se integra directamente con SAP FSM a través de MAIF desde el backend utilizando las API de servicio y datos proporcionadas por SAP FSM. Sin embargo, los objetos subyacentes que deben actualizarse (p. ej., Órdenes de servicio (Llamadas de servicio en FSM), Operaciones (Actividades en FSM), Empleados (Personas en FSM), etc.) se sincronizan mediante el conector de Proaxia. Para admitir esta integración directa desde SAP SAM a SAP FSM, proporcionamos opciones BAdi dedicadas al mapeo de ID, para determinar las referencias cruzadas de campos clave entre el conector FSM y FSM.

Envíe sus comentarios para mejorar las características del producto. Además, lo invitamos a seguir la publicación Marco de integración de aplicaciones móviles y responder preguntas (https://answers.sap.com/tags/6baf0d27-c212-4154-85a9-71ed13c7b1ab), y lea otras publicaciones sobre el tema para MAIF (https://blogs.sap.com/tags/6baf0d27-c212-4154-85a9-71ed13c7b1ab/) y SAP SAM (https://blogs.sap.com/tags/73555000100800000639/).



Source link


AssetCloudconConnectorFieldFSMintegraciónManagementManagerproaxiaSAMSAPServiceutilizando

Artículos relacionados


#MaxAttentionInnovationWorkshop  ·  #SAPBuild  ·  Event Information  ·  innovationworkshop  ·  SAPInnovationWorkshop  ·  SAPMaxAttentionInnovationWorkshop
SAP Premium Engagement Forum Nordic ‘SAP Build’ (Copenhague, SAP Experience Center, 25 y 26 de abril de 2023)
Technical Articles
Comisiones de SAP (K8s) API Autenticación y otros puntos finales – Parte 2
Product Information
Parte 3: SAP S/4HANA Cloud, edición pública: Extracción de datos flexible a través de la aplicación Custom CDS View

Deja tu comentario Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

Energy Transition Better Faster: un mundo lleno de oportunidades en todas las industrias
Previo
IPS: Disponibilidad de conectores del sistema
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.
Cookies Para que este sitio funcione adecuadamente, a veces instalamos en los dispositivos de los usuarios pequeños ficheros de datos, conocidos como cookies. La mayoría de los grandes sitios web también lo hacen.
Aceptar
Cambiar ajustes
Configuración de Cookie Box
Configuración de Cookie Box

Ajustes de privacidad

Decida qué cookies quiere permitir. Puede cambiar estos ajustes en cualquier momento. Sin embargo, esto puede hacer que algunas funciones dejen de estar disponibles. Para obtener información sobre eliminar las cookies, por favor consulte la función de ayuda de su navegador. Aprenda más sobre las cookies que usamos.

Con el deslizador, puede habilitar o deshabilitar los diferentes tipos de cookies:

  • Bloquear todas
  • Essentials
  • Funcionalidad
  • Análisis
  • Publicidad

Este sitio web hará:

Este sitio web no:

  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
  • Recuerde sus detalles de inicio de sesión
  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
Guardar y cerrar