¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Problemas ao consumir API REST no SAP Sandbox: Solução para fazer parse com xco_cp_json

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

Olá Gurus,

Minha consulta é referente ao tópico abaixo,

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

Em meu cenário, consigo consumir com sucesso a API relacionada ao Pedido de Vendas do SAP Sandbox abaixo, mas não consigo analisar o mesmo usando xco_cp_json:

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

Trecho de código:

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...

Olá Sijin,

Se deseja usar a transformação de Pascal para underscore, os componentes na estrutura ts_result_payload também devem ter underscores, por exemplo, sales_order em vez de salesorder. O componente __metadata precisa de um underscore adicional devido a uma limitação em nossa implementação, mas suponho que de qualquer forma você não está interessado nos metadados. Se for o caso, basta ignorar o componente e o restante será processado corretamente. Não acredito que o erro de tempo de execução que você viu no sistema tenha algo a ver com a transformação de JSON. Por favor, consulte meu código de exemplo:

  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,

      " Se utilizar a transformação de Pascal case para underscore, use underscores nos nomes dos 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?