— Integración SAP

Constructor de consultas SAP OData

Cree consultas OData V2 o V4 correctas para servicios de S/4HANA sin memorizar la sintaxis. Funciona en su navegador; no se envía nada.

Nota: los controles de la herramienta están por ahora en inglés.

$filter

Your query

Request URL

/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder?$filter=SalesOrganization%20eq%20'1010'&$select=SalesOrder,SoldToParty,TotalNetAmount&$orderby=SalesOrder%20desc&$top=50&$format=json

CPI OData receiver — Query Options

$filter=SalesOrganization eq '1010'&$select=SalesOrder,SoldToParty,TotalNetAmount&$orderby=SalesOrder desc&$top=50&$format=json

ABAP sample (SM59 destination)

" Sample only. GET requests need no CSRF token; POST/PUT/DELETE must
" first fetch one (header X-CSRF-Token: Fetch) and send it back.
DATA lo_client TYPE REF TO if_http_client.
DATA lv_path   TYPE string VALUE '/A_SalesOrder?$filter=SalesOrganization%20eq%20''1010''&$select=SalesOrder,SoldToParty,TotalNetAmount&$orderby=SalesOrder%20desc&$top=50&$format=json'.

" Recommended: SM59 destination (Z_ODATA_DEST is a placeholder name).
cl_http_client=>create_by_destination(
  EXPORTING destination = 'Z_ODATA_DEST'
  IMPORTING client      = lo_client
  EXCEPTIONS OTHERS     = 1 ).
" Without a destination: cl_http_client=>create_by_url( url = '/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder?$filter=SalesOrganization%20eq%20''1010''&$select=SalesOrder,SoldToParty,TotalNetAmount&$orderby=SalesOrder%20desc&$top=50&$format=json' ... ).
IF sy-subrc <> 0.
  RETURN. " destination missing or not reachable
ENDIF.

cl_http_utility=>set_request_uri( request = lo_client->request uri = lv_path ).
lo_client->request->set_method( if_http_request=>co_request_method_get ).
lo_client->request->set_header_field( name = 'Accept' value = 'application/json' ).

lo_client->send( EXCEPTIONS OTHERS = 1 ).
IF sy-subrc <> 0.
  lo_client->close( ).
  RETURN.
ENDIF.
lo_client->receive( EXCEPTIONS OTHERS = 1 ).
IF sy-subrc <> 0.
  lo_client->get_last_error( IMPORTING message = DATA(lv_error) ).
  lo_client->close( ).
  RETURN.
ENDIF.

lo_client->response->get_status( IMPORTING code = DATA(lv_status) ).
DATA(lv_json) = lo_client->response->get_cdata( ).
lo_client->close( ).
IF lv_status <> 200.
  " lv_json holds the OData error body — log it, do not treat as data.
  RETURN.
ENDIF.

Preguntas frecuentes

¿Qué diferencia hay entre los filtros OData V2 y V4?
V2 usa substringof() para buscar texto, literales datetime'…' y guid'…' y $inlinecount=allpages. V4 usa contains(), literales de fecha y GUID sin prefijo y $count=true. El constructor cambia la sintaxis al cambiar la versión.
¿Dónde pego el resultado para CPI?
En el campo Query Options del adaptador receptor OData (o en el asistente de consultas), sin el signo de interrogación inicial.
¿La herramienta llama a mi sistema SAP?
No. Todo se ejecuta en su navegador. No se envía nada a ERPClimb ni a SAP.

Verifique los nombres de entidades y propiedades con el $metadata de su servicio. ERPClimb es independiente y no está afiliado a SAP SE.