¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Problemas al consumir API REST en SAP Sandbox: Solución para parsear con xco_cp_json

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 18 Vistas
0
Cargando...

Hello Gurus,

My query is in continuation of below thread,

https://answers.sap.com/questions/13891731/issue-while-consuming-rest-api-hosted-in-sandboxap.html

In my scenario am successfully able to consume SAP Sandbox below API related to Sales Order, but I am not able to parse the same using xco_cp_json :

https://sandbox.api.sap.com/s4hanacloud/sap/opu/odata/sap/API_SALES_ORDER_SRV

Code snippet:

CLASS zcl_test_class_output DEFINITION  PUBLIC  FINAL  CREATE PUBLIC .  PUBLIC SECTION.    INTERFACES if_oo_adt_classrun .  PROTECTED SECTION.  PRIVATE SECTION.ENDCLASS.CLASS zcl_test_class_output IMPLEMENTATION.METHOD if_oo_adt_classrun~main.    TRY."create http destination by url; API endpoint for API sandbox        DATA(lo_http_destination) =cl_http_destination_provider=>create_by_url( 'https://sandbox.api.sap.com/s4hanacloud/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder(''1'')?$select=SalesOrder,SalesOrderType' )."alternatively create HTTP destination via destination service"cl_http_destination_provider=>create_by_cloud_destination( i_name = '<...>'"                            i_service_instance_name = '<...>' )"SAP Help: https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/f871712b816943b0ab5e04b6079..."create HTTP client by destination        DATA(lo_web_http_client) = cl_web_http_client_manager=>create_by_http_destination( lo_http_destination ) ."adding headers with API Key for API Sandbox        DATA(lo_web_http_request) = lo_web_http_client->get_http_request( ).lo_web_http_request->set_header_fields( VALUE #(                    (  name = 'APIKey' value = 'JG3JeJn2WUsbu9MmO3P3ypAd5cGTxUGA' )
            
            
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

1 Respuestas

0
Cargando...

Hola Sijin,

Si deseas utilizar la transformación de pascal a guion bajo, los componentes en la estructura ts_result_payload también deben tener guiones bajos, por ejemplo, sales_order en lugar de salesorder. El componente __metadata necesita un guion bajo adicional debido a una limitación en nuestra implementación, pero supongo que de todos modos no estás interesado en los metadatos. Si ese es el caso, simplemente omite el componente y el resto se analizará correctamente. No creo que el error de tiempo de ejecución que viste en el sistema tenga algo que ver con la transformación json. Por favor, consulta mi código de ejemplo:

  METHOD if_oo_adt_classrun~main.
    TYPES:
      BEGIN OF ts_metadata,
        id   TYPE string,
        uri  TYPE string,
        type TYPE string,
        etag TYPE string,
      END OF ts_metadata,

      " Si se utiliza la transformación de pascal case a guion bajo, usa guiones bajos en los nombres de los componentes.
      BEGIN OF ts_result_payload,
        ___metadata      TYPE ts_metadata,
        sales_order      TYPE string,
        sales_order_type TYPE string,
      END OF ts_result_payload,

      BEGIN OF ts_a_salesorder_resp,
        d TYPE ts_result_payload,
      END OF ts_a_salesorder_resp.

    DATA ls_a_salesorder_resp TYPE ts_a_salesorder_resp.

    DATA(lv_response) = '{' && |\r\n|  &&
                        '  "d": {' && |\r\n|  &&
                        '   "__metadata": {' && |\r\n|  &&
                        '   "id": "someID",' && |\r\n|  &&
                        '   "uri": "someURI",' && |\r\n|  &&
                        '   "type": "someType",' && |\r\n|  &&
                        '   "etag": "someEtag"' && |\r\n|  &&
                        ' },' && |\r\n|  &&
                        
        
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?