• 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
#api  ·  #api_improvement  ·  #api_performance_design_aspects  ·  Technical Articles

Manera fácil de crear API en SAP usando clases estándar

By s4pcademy 


SAP proporciona múltiples formas de interactuar o comunicarse con sistemas externos utilizando técnicas como OData, RFC, etc. En la era de TI actual, las API son la máxima prioridad al elegir los mecanismos de comunicación. SAP proporciona la clase estándar CL_REST_RESOURCE, que proporciona métodos REST como GET, PUT, POST, DELETE, etc. En este blog, he explicado cómo aceptar JSON de sistemas externos y consumir datos en SAP.

Flujo del proceso:

Proceso%20Flujo

Flujo del proceso

Vaya a Tcode: SE24 y cree una nueva clase, ZCL_API_TEST. Haga clic en la pestaña de propiedades y agregue la superclase CL_REST_RESOURCE.

ZCL_API_TEST

Métodos disponibles

Redefina el método POST para obtener datos fuera de SAP.

ZCL_API_TEST Publicar redefinición

Fragmento de código:

METHOD if_rest_resource~post.

    DATA:lr_data     TYPE REF TO data.
    FIELD-SYMBOLS:<lt_table> TYPE STANDARD TABLE.

    TYPES: BEGIN OF ty_workarea,
             name(50),
             city(50),
             region(20),
             pin(6).
    TYPES: END OF ty_workarea.

    DATA: wa_data TYPE ty_workarea.

    DATA(lv_request_body) = mo_request->get_entity( )->get_string_data( ).

    /ui2/cl_json=>deserialize(
  EXPORTING
    json             = lv_request_body
  CHANGING
    data             = lr_data
   ).

    ASSIGN lr_data->* TO FIELD-SYMBOL(<ls_data>).

    ASSIGN COMPONENT 'TESTAPI' OF STRUCTURE <ls_data> TO FIELD-SYMBOL(<lt_table_ref>).
    ASSIGN <lt_table_ref>->* TO <lt_table>.

    LOOP AT <lt_table> ASSIGNING FIELD-SYMBOL(<ls_line>).
      ASSIGN <ls_line>->* TO FIELD-SYMBOL(<ls_line_value>).

      ASSIGN COMPONENT 'NAME' OF STRUCTURE <ls_line_value> TO FIELD-SYMBOL(<ld_key>).
      IF <ld_key> IS ASSIGNED.
        ASSIGN <ld_key>->* TO FIELD-SYMBOL(<ld_key_value>).
        wa_data-name = <ld_key_value>.
      ENDIF.

      ASSIGN COMPONENT 'CITY' OF STRUCTURE <ls_line_value> TO <ld_key>.
      IF <ld_key> IS ASSIGNED.
        ASSIGN <ld_key>->* TO <ld_key_value>.
        wa_data-city = <ld_key_value>.
      ENDIF.

      ASSIGN COMPONENT 'REGION' OF STRUCTURE <ls_line_value> TO  <ld_key>.
      IF <ld_key> IS ASSIGNED.
        ASSIGN <ld_key>->* TO <ld_key_value>.
        wa_data-region = <ld_key_value>.
      ENDIF.

      ASSIGN COMPONENT 'PIN' OF STRUCTURE <ls_line_value> TO <ld_key>.
      IF <ld_key> IS ASSIGNED.
        ASSIGN <ld_key>->* TO <ld_key_value>.
        wa_data-pin = <ld_key_value>.
      ENDIF.

    ENDLOOP.

  ENDMETHOD.

Cree la clase de controlador REST ZCL_REST_TEST y proporcione el nombre de superclase CL_REST_HTTP_HANDLER. Además, redefina el método GET_ROOT_HANDLER. Esta clase de controlador se utilizará al crear servicios SICF. El objetivo principal de esta clase de controlador es vincular la URL a la clase de recurso REST.

Manejador%20Clase%20-%20Raíz%20Manejador%20Método%20Redefinición

Clase de controlador: redefinición del método del controlador raíz

Como se muestra en la instantánea anterior, el nombre de la plantilla es /ZAPI y esta clase de controlador raíz se vinculará a la clase ZCL_API_TEST. En la clase API POST, se llamará al método POST de la clase ZCL_API_TEST.

Fragmento de código:

    DATA(lo_router) = NEW cl_rest_router( ).
    lo_router->attach( iv_template="/ZAPI" iv_handler_class="ZCL_API_TEST" ).
    ro_root_handler = lo_router.

El siguiente paso es crear el servicio SICF. Vaya a tcode SICF -> host predeterminado -> Nuevo subelemento

Crear subelemento SICF

Ingrese la descripción del servicio, vaya a la pestaña de la lista de controladores y coloque el nombre de la clase como ZCL_REST_TEST.

SICF Agregar lista de controladores

Regrese y active el servicio.

Creación de URL:

Haga clic derecho en el servicio ZAPI y haga clic en Test Service; obtendrá la URL. Simplemente copie la URL y agregue ZAPI a la ruta existente.

Ejemplo:

URL original:

http://abc.company.com:8001/zapi?sap-client=100

URL modificada:

http://abc.company.com:8001/zapi/ZAPI?sap-client=100

Aquí, ZAPI distingue entre mayúsculas y minúsculas.

Al pasar la validación del token:

Cuando queremos hacer una llamada POST, la generación de token es obligatoria, lo que se logra realizando una llamada GET y luego colocando el token en la llamada POST. Este proceso de validación de token también se puede omitir redefiniendo el método HANDLE_CSRF_TOKEN sin escribir ningún código.

Probando la API usando POSTMAN:

CARTERO JSON

Seleccione la llamada POST e ingrese la URL. Seleccione autenticación básica en la pestaña de autorización e ingrese un nombre de usuario y contraseña. En la parte del cuerpo, seleccione «sin procesar» y cree datos JSON.

Datos en SAP

En la instantánea anterior, podemos ver que el área de trabajo wa_data contiene todos los datos que se pasan a través de JSON.

Este enfoque es muy eficiente y sencillo para su comprensión e implementación. Este método de implementación de API también supera el inconveniente de OData, que pasa campos separados por espacios en JSON. También es posible la omisión o redefinición de tokens, lo que facilitará el proceso de llamada a la API.

Espero escuchar más sobre la creación de API usando clases estándar de SAP. Siéntase libre de comentar y discutir.

Saludos, gracias por leer, y mantente saludable.

Abhijeet Tikar



Source link


APIclasescrearestándarfácilmaneraSAPusando

Artículos relacionados


#SAP S/4HANA Private Cloud Edition  ·  enterprise management layer  ·  Product Information
Enterprise Management Layer para SAP S/4HANA – Novedades – Versión 2022
Technical Articles
SAP Build Process Automation: consuma API de S/4 HANA On-Prem a través de RAP BTP ABAP o BTP CAP
Product Information
Integración de SAP CPQ con SAP S/4 HANA Cloud, Public Edition

Deja tu comentario Cancelar la respuesta

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

*

*

Plantilla de correo de recordatorio diverso - FLUJO DE TRABAJO
Previo
Informes de cumplimiento de la localización de India en S/4HANA Public Cloud
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