# ERPL — DuckDB for SAP, Microsoft 365, and Dynamics 365 ERPL is the DuckDB extension family for enterprise data integration. SAP (RFC, BICS, ODP, IDoc files, Datasphere, SAC, ABAP/ADT), Microsoft 365 (SharePoint, Excel, Teams, Outlook, Planner, Entra ID), Microsoft Dynamics 365 (Business Central, Dataverse), and open standards (OData, HTTP, Delta Sharing) — all queryable from one SQL engine. ## Bi_analytics_integration ## Cloud_integration ## Erpl - [BICS Protocol Deep Dive](https://erpl.io/docs/erpl/bics.md): Complete guide to BICS (BI Consumer Services) in ERPL - execute SAP BW queries over RFC, build cross-tabs, extract result sets, and track lineage - [functions](https://erpl.io/docs/erpl/functions.md) - [ODP Protocol Deep Dive](https://erpl.io/docs/erpl/odp.md): Complete guide to ODP (Operational Data Provisioning) protocol with ERPL - delta replication, subscription management, and change tracking - [RFC Protocol Deep Dive](https://erpl.io/docs/erpl/rfc.md): Complete guide to RFC (Remote Function Call) protocol with ERPL - read tables, call functions, and handle metadata ## Erpl-adt - [BW/4HANA Modeling](https://erpl.io/docs/erpl-adt/bw.md): Search the BW catalog, inspect ADSO structures, and export dataflows as Mermaid — from a CLI or MCP server. - [Metadata Catalog](https://erpl.io/docs/erpl-adt/catalog.md): Build a unified, cross-domain SAP metadata catalog (ABAP + DDIC + CDS + BW) in a single DuckDB file — with hybrid search, lineage, a business glossary, and a web explorer. - [MCP Server](https://erpl.io/docs/erpl-adt/mcp.md): Run erpl-adt as a Model Context Protocol server and let AI agents like Claude Code search, read, and write ABAP. - [Command Reference](https://erpl.io/docs/erpl-adt/reference.md): Every command, flag, and exit code in erpl-adt. Authoritative listing — generated from the binary. ## Erpl-idoc - [The Segment Dictionary](https://erpl.io/docs/erpl-idoc/dictionary.md): How erpl_idoc decodes opaque SDATA into typed columns — the segment dictionary schema, authoring one offline, and fetching one from a live SAP system with erpl_rfc. - [ERPL-IDoc Function Reference](https://erpl.io/docs/erpl-idoc/functions.md): Every erpl_idoc SQL function — readers, the COPY writer, pure encoders, flat⇄XML converters, and dictionary tooling. - [ERPL-IDoc Quick Start](https://erpl.io/docs/erpl-idoc/quickstart.md): Read an IDoc file, decode SDATA into typed columns, write a byte-valid IDoc, and convert flat to IDoc-XML — all in DuckDB SQL, offline in 5 minutes. ## Erpl-web - [SAP Datasphere](https://erpl.io/docs/erpl-web/datasphere.md): First-class DuckDB integration for SAP Datasphere - [functions](https://erpl.io/docs/erpl-web/functions.md) - [HTTP Functions](https://erpl.io/docs/erpl-web/http-functions.md): Call any HTTP/REST API from SQL with ERPL-Web - [OData V2/V4](https://erpl.io/docs/erpl-web/odata.md): Universal OData reader with ATTACH support and predicate pushdown - [ODP via OData](https://erpl.io/docs/erpl-web/odp-web.md): Delta replication from SAP using ODP OData protocol - [SAP Analytics Cloud (SAC)](https://erpl.io/docs/erpl-web/sac.md): Read SAC models and stories from DuckDB via the SAC OData APIs. - [Secrets Management](https://erpl.io/docs/erpl-web/secrets.md): Secure authentication with DuckDB secrets - [Tracing & Diagnostics](https://erpl.io/docs/erpl-web/tracing.md): Debug network calls and optimize performance with ERPL-Web tracing ## Erpl-web - Dyn365 - [Business Central](https://erpl.io/docs/erpl-web/dyn365/business-central.md): Query Microsoft Dynamics 365 Business Central from DuckDB — discover, read, and ATTACH companies as catalogs. - [Dataverse / Dynamics CRM](https://erpl.io/docs/erpl-web/dyn365/dataverse.md): Query Microsoft Dataverse and Dynamics 365 Customer Engagement from DuckDB. ## Erpl-web - M365 - [Entra ID (Azure AD)](https://erpl.io/docs/erpl-web/m365/entra-id.md): Query users and sign-in logs from Entra ID via Microsoft Graph and DuckDB. - [Excel Workbooks](https://erpl.io/docs/erpl-web/m365/excel.md): Read and write Excel tables and ranges in OneDrive and SharePoint via DuckDB. - [Outlook — Mail, Calendar, Contacts](https://erpl.io/docs/erpl-web/m365/outlook.md): Query emails, calendar events, and contacts from Outlook via Microsoft Graph and DuckDB. - [Microsoft Planner](https://erpl.io/docs/erpl-web/m365/planner.md): Read and create plans, buckets, and tasks in Microsoft Planner from DuckDB. - [SharePoint Lists](https://erpl.io/docs/erpl-web/m365/sharepoint.md): Read, write, and ATTACH SharePoint lists as DuckDB catalogs via the Microsoft Graph API. - [Microsoft Teams](https://erpl.io/docs/erpl-web/m365/teams.md): Query teams, channels, members, and channel messages from DuckDB via Microsoft Graph. ## Examples - [ERPL Examples](https://erpl.io/docs/examples/erpl-examples.md): Real-world examples using ERPL for on-premise SAP integration - [ERPL-Web Examples](https://erpl.io/docs/examples/erpl-web-examples.md): Real-world examples using ERPL-Web for HTTP, OData, and SAP integration - [real-world-use-cases](https://erpl.io/docs/examples/real-world-use-cases.md) ## Get_started - [Connect](https://erpl.io/docs/get_started/connect.md): How to connect to SAP systems with ERPL - [Installation](https://erpl.io/docs/get_started/install.md): We help you how to get your extension going within your respective environment. - [Quick Start Guide](https://erpl.io/docs/get_started/quickstart.md): Get up and running with ERPL in 5 minutes - [ERPL Quick Start (On-Premise)](https://erpl.io/docs/get_started/quickstart-erpl.md): Get up and running with ERPL in 5 minutes - connect to on-premise SAP systems - [ERPL-ADT Quick Start (CLI + MCP)](https://erpl.io/docs/get_started/quickstart-erpl-adt.md): Get up and running with erpl-adt in 5 minutes — install, log in, search ABAP, read source, and wire MCP into Claude Code. - [ERPL-Web Quick Start (Cloud/Web)](https://erpl.io/docs/get_started/quickstart-erpl-web.md): Get up and running with ERPL-Web in 5 minutes — query OData services and SAP Datasphere from DuckDB. - [Troubleshooting](https://erpl.io/docs/get_started/troubleshooting.md): Common issues and solutions for ERPL ## Guides - Advanced - [BICS Lineage Tracking](https://erpl.io/docs/guides/advanced/bics-lineage-tracking.md): Extract and analyze SAP BW data lineage with ERPL BICS lineage functions — edges, traces, and JSON graphs. - [OData Metadata Deep Dive](https://erpl.io/docs/guides/advanced/odata-metadata.md): Advanced guide to OData metadata handling for SAP experts - [odp-delta-replication](https://erpl.io/docs/guides/advanced/odp-delta-replication.md) - [ODP Subscription Management](https://erpl.io/docs/guides/advanced/odp-subscription-management.md): Manage ODP subscriptions and cursors with ERPL — inspection, cross-team visibility, recovery, and graceful cleanup. - [performance-tuning](https://erpl.io/docs/guides/advanced/performance-tuning.md) - [RFC Metadata Extraction](https://erpl.io/docs/guides/advanced/rfc-metadata.md): Complete guide to extracting and analyzing RFC metadata using ERPL functions - [sap-connection-pooling](https://erpl.io/docs/guides/advanced/sap-connection-pooling.md) ## Guides - Integration - [jupyter](https://erpl.io/docs/guides/integration/jupyter.md) - [powerbi](https://erpl.io/docs/guides/integration/powerbi.md) - [python-pandas](https://erpl.io/docs/guides/integration/python-pandas.md) - [r-integration](https://erpl.io/docs/guides/integration/r-integration.md) ## Guides - Simple - [connect-datasphere](https://erpl.io/docs/guides/simple/connect-datasphere.md) - [query-odata](https://erpl.io/docs/guides/simple/query-odata.md) - [How to Read an SAP Table](https://erpl.io/docs/guides/simple/read-sap-table.md): Learn how to extract data from SAP ERP tables into DuckDB - [run-bw-query](https://erpl.io/docs/guides/simple/run-bw-query.md) ## Key_tasks - [Understand and Execute a BW Query](https://erpl.io/docs/key_tasks/bw_query.md): Learn how to work with SAP BW queries using ERPL's BICS interface - [Call SAP BAPI Functions](https://erpl.io/docs/key_tasks/erp_bapi.md): Learn how to call SAP BAPI (Business Application Programming Interface) functions using ERPL - [Load an ERP Table](https://erpl.io/docs/key_tasks/erp_table.md): ERPL makes it easy to find, explain and query ERP tables directly from DuckDB. In the following document we show you how. - [Delta Replicate Stock Data from SAP ERP to Parquet](https://erpl.io/docs/key_tasks/replicate_odp.md): Learn how to use SAP ODP (Operational Data Provisioning) to replicate data from SAP ERP to DuckDB and Parquet files ## Reference - [configuration](https://erpl.io/docs/reference/configuration.md) - [ERPL Function Reference](https://erpl.io/docs/reference/erpl-functions.md): Complete reference for all ERPL functions organized by protocol (RFC, BICS, ODP) - [ERPL-Web Functions Reference](https://erpl.io/docs/reference/erpl-web-functions.md): Complete function signatures and parameters for ERPL-Web - [troubleshooting](https://erpl.io/docs/reference/troubleshooting.md) ## References - [Pragma Functions](https://erpl.io/docs/references/pragma.md): Reference documentation for SAP RFC Pragma functions in ERPL - [Remote Function Call (RFC)](https://erpl.io/docs/references/remote_function_call.md): Reference documentation for SAP RFC functions in ERPL ## References - Pragma - [sap_rfc_describe_function](https://erpl.io/docs/references/pragma/sap_rfc_function_desc.md): Returns the full RFC interface (imports, exports, tables, exceptions) of a function module. - [sap_rfc_ping](https://erpl.io/docs/references/pragma/sap_rfc_ping.md): Checks the connectivity to the SAP system. - [sap_rfc_reload_ini_file](https://erpl.io/docs/references/pragma/sap_rfc_reload_ini_file.md): Reloads the INI configuration file without restarting duckdb. - [sap_rfc_set_ini_path](https://erpl.io/docs/references/pragma/sap_rfc_set_ini_path.md): Specifies the path to the INI configuration file. - [sap_rfc_set_maximum_stored_trace_files](https://erpl.io/docs/references/pragma/sap_rfc_set_maximum_stored_trace_files.md): Defines the maximum number of trace files to keep. - [sap_rfc_set_maximum_trace_file_size](https://erpl.io/docs/references/pragma/sap_rfc_set_maximum_trace_file_size.md): Sets the maximum size for trace files. - [sap_rfc_set_trace_dir](https://erpl.io/docs/references/pragma/sap_rfc_set_trace_dir.md): Specifies the directory where trace files should be stored. - [sap_rfc_set_trace_level](https://erpl.io/docs/references/pragma/sap_rfc_set_trace_level.md): Sets the trace level for debugging and analysis purposes. ## References - Rfc - [sap_describe_fields](https://erpl.io/docs/references/rfc/sap_describe_fields.md): Provides detailed information about fields in a specified table. - [sap_read_table](https://erpl.io/docs/references/rfc/sap_read_table.md): Reads data from a specified SAP table. - [sap_rfc_describe_function](https://erpl.io/docs/references/rfc/sap_rfc_describe_function.md): Provides detailed information about a specific function module. - [sap_rfc_invoke](https://erpl.io/docs/references/rfc/sap_rfc_invoke.md): Executes a specified function module in the SAP system. - [sap_rfc_show_function](https://erpl.io/docs/references/rfc/sap_rfc_show_function.md): Search and list RFC function modules by name, group, and language. - [sap_rfc_show_groups](https://erpl.io/docs/references/rfc/sap_rfc_show_groups.md): List RFC function groups. - [sap_show_tables](https://erpl.io/docs/references/rfc/sap_show_tables.md): Lists all or specific tables available in the SAP system. ## Security ## Additional Resources - [Welcome to ERPL](https://erpl.io/docs/start_here.md): Connect DuckDB to the SAP ecosystem with ERPL and ERPL-Web extensions