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