Unlocking SAP Table Data: Streamlined Extraction via the RFC Connector
In the ever-evolving landscape of enterprise automation, integrating with SAP often stands out as a formidable challenge. Whether you're extracting materials, invoices, or master data, the process can feel rigid and complex. But what if you could streamline SAP data access into a reusable, low-code service layer?
Enter Workato's SAP RFC Connector + SAP—a powerful combo that enables flexible, scalable data extraction from any transparent table in SAP. This blog walks you through using this RFC connector to build a generic SAP table data reader integration with Workato.
❓Why do we need to extract data directly from SAP tables?
It's particularly useful when no APIs (BAPI/RFM/IDoc/OData) are available to read master or transactional data.
Some of the business use cases are:
🧠 How does Workato solve the problem and make integrations easy?
Our SAP-certified SAP RFC connector is capable of making complex integrations much easier.
RFC_READ_TABLE is a remote-enabled SAP function module that allows external applications to:Query any transparent table by name, Apply dynamic WHERE conditions, Limit fields and row counts. This makes it perfect for generic, reusable integrations—especially with iPaaS platforms like Workato. It provides direct and efficient access to SAP table data without requiring complex development. This function module simplifies integration by offering a straightforward interface for data retrieval, making it versatile for various use cases.
Manually type or Copy/Paste field names as needed, taking the reference from the dynamic schema generated under "Table fields", add more items as needed. The good thing here is that you do not need to rely on your SAP GUI access, or the SAP team to get the list of table fields along with their description and data type. 😍
It's important to investigate the SAP table structure to decide which fields are relevant to your use case. 🔍
Sample JSON response output once this is executed:
{
"RFM name": "RFC_READ_TABLE",
"Status": "Success",
"Response data": {
"ET_DATA": [
{
"LINE": "000000000000000024|01"
},
{
"LINE": "000000000000000025|01"
},
{
"LINE": "000000000000000026|01"
}
],
"DATA": [],
"FIELDS": [
{
"FIELDNAME": "MATNR",
"OFFSET": "000000",
"LENGTH": "000040",
"TYPE": "C",
"FIELDTEXT": "Material Number"
},
{
"FIELDNAME": "MATKL",
"OFFSET": "000041",
"LENGTH": "000009",
"TYPE": "C",
"FIELDTEXT": "Material Group"
}
],
"OPTIONS": []
},
"Table Fields": {
"/BEV1/LULDEGRP": "/BEV1/LULDEGRP",
"/BEV1/LULEINH": "/BEV1/LULEINH",
"/BEV1/NESTRUCCAT": "/BEV1/NESTRUCCAT",
"/CWM/TARA": "/CWM/TARA",
"/CWM/TARUM": "/CWM/TARUM",
"/CWM/TOLGR": "/CWM/TOLGR",
"/CWM/VALUM": "/CWM/VALUM",
"/CWM/XCWMAT": "/CWM/XCWMAT",
"/DSD/SL_TOLTYP": "/DSD/SL_TOLTYP",
"/DSD/SV_CNT_GRP": "/DSD/SV_CNT_GRP",
"/DSD/VC_GROUP": "/DSD/VC_GROUP",
"/SAPMP/ABMEIN": "/SAPMP/ABMEIN",
"/SAPMP/AHO": "/SAPMP/AHO",
"/SAPMP/BRAD": "/SAPMP/BRAD",
"/SAPMP/FBAK": "/SAPMP/FBAK",
"/SAPMP/FBDK": "/SAPMP/FBDK",
"/SAPMP/FBHK": "/SAPMP/FBHK",
"/SAPMP/KADP": "/SAPMP/KADP",
"/SAPMP/KADU": "/SAPMP/KADU",
"/SAPMP/KEDU": "/SAPMP/KEDU",
"/SAPMP/MIFRR": "/SAPMP/MIFRR",
"/SAPMP/RILI": "/SAPMP/RILI",
"/SAPMP/SPBI": "/SAPMP/SPBI",
"/SAPMP/SPTR": "/SAPMP/SPTR",
"/SAPMP/TRAD": "/SAPMP/TRAD",
"/STTPEC/COUNTRY_REF": "/STTPEC/COUNTRY_REF",
"/STTPEC/PRDCAT": "/STTPEC/PRDCAT",
"/STTPEC/SERTYPE": "/STTPEC/SERTYPE",
"/STTPEC/SYNCACT": "/STTPEC/SYNCACT",
"/STTPEC/SYNCCHG": "/STTPEC/SYNCCHG",
"/STTPEC/SYNCTIME": "/STTPEC/SYNCTIME",
"/VSO/R_BOT_IND": "/VSO/R_BOT_IND",
"/VSO/R_KZGVH_IND": "/VSO/R_KZGVH_IND",
"/VSO/R_NO_P_GVH": "/VSO/R_NO_P_GVH",
"/VSO/R_PAL_B_HT": "/VSO/R_PAL_B_HT",
"/VSO/R_PAL_IND": "/VSO/R_PAL_IND",
"/VSO/R_PAL_MIN_H": "/VSO/R_PAL_MIN_H",
"/VSO/R_PAL_OVR_D": "/VSO/R_PAL_OVR_D",
"/VSO/R_PAL_OVR_W": "/VSO/R_PAL_OVR_W",
"/VSO/R_QUAN_UNIT": "/VSO/R_QUAN_UNIT",
"/VSO/R_STACK_IND": "/VSO/R_STACK_IND",
"/VSO/R_STACK_NO": "/VSO/R_STACK_NO",
"/VSO/R_TILT_IND": "/VSO/R_TILT_IND",
"/VSO/R_TOL_B_HT": "/VSO/R_TOL_B_HT",
"/VSO/R_TOP_IND": "/VSO/R_TOP_IND",
"ADPROF": "ADPROF",
"ADSPC_SPC": "ADSPC_SPC",
"AEKLK": "AEKLK",
"AENAM": "AENAM",
"AESZN": "AESZN",
"ALLOW_PMAT_IGNO": "ALLOW_PMAT_IGNO",
"ANIMAL_ORIGIN": "ANIMAL_ORIGIN",
"ANP": "ANP",
"ATTYP": "ATTYP",
"BBTYP": "BBTYP",
"BEGRU": "BEGRU",
"BEHVO": "BEHVO",
"BFLME": "BFLME",
"BISMT": "BISMT",
"BLANZ": "BLANZ",
"BLATT": "BLATT",
"BMATN": "BMATN",
"BRAND_ID": "BRAND_ID",
"BREIT": "BREIT",
"BRGEW": "BRGEW",
"BRIDGE_MAX_SLOPE": "BRIDGE_MAX_SLOPE",
"BRIDGE_TRESH": "BRIDGE_TRESH",
"BSTAT": "BSTAT",
"BSTME": "BSTME",
"BWSCL": "BWSCL",
"BWVOR": "BWVOR",
"CADKZ": "CADKZ",
"CARE_CODE": "CARE_CODE",
"CHML_CMPLNC_RLVNCE_IND": "CHML_CMPLNC_RLVNCE_IND",
"CMETH": "CMETH",
"CMREL": "CMREL",
"COLOR": "COLOR",
"COLOR_ATINN": "COLOR_ATINN",
"COMMODITY": "COMMODITY",
"COMPL": "COMPL",
"CREATED_AT_TIME": "CREATED_AT_TIME",
"CUOBF": "CUOBF",
"CWQPROC": "CWQPROC",
"CWQREL": "CWQREL",
"CWQTOLGR": "CWQTOLGR",
"DATAB": "DATAB",
"DFS_MFRP2": "DFS_MFRP2",
"DFS_SENSITIVITY_KEY": "DFS_SENSITIVITY_KEY",
"DG_PACK_STATUS": "DG_PACK_STATUS",
"DISST": "DISST",
"DPCBT": "DPCBT",
"DUMMY_PRD_INCL_EEW_PS": "DUMMY_PRD_INCL_EEW_PS",
"EAN11": "EAN11",
"EANNR": "EANNR",
"EKWSL": "EKWSL",
"ENTAR": "ENTAR",
"ERGEI": "ERGEI",
"ERGEW": "ERGEW",
"ERNAM": "ERNAM",
"ERSDA": "ERSDA",
"ERVOE": "ERVOE",
"ERVOL": "ERVOL",
"ETIAG": "ETIAG",
"ETIAR": "ETIAR",
"ETIFO": "ETIFO",
"EXTWG": "EXTWG",
"FASHGRD": "FASHGRD",
"FERTH": "FERTH",
"FIBER_CODE1": "FIBER_CODE1",
"FIBER_CODE2": "FIBER_CODE2",
"FIBER_CODE3": "FIBER_CODE3",
"FIBER_CODE4": "FIBER_CODE4",
"FIBER_CODE5": "FIBER_CODE5",
"FIBER_PART1": "FIBER_PART1",
"FIBER_PART2": "FIBER_PART2",
"FIBER_PART3": "FIBER_PART3",
"FIBER_PART4": "FIBER_PART4",
"FIBER_PART5": "FIBER_PART5",
"FLAGCLASS": "FLAGCLASS",
"FORMT": "FORMT",
"FREE_CHAR": "FREE_CHAR",
"FSH_MG_AT1": "FSH_MG_AT1",
"FSH_MG_AT2": "FSH_MG_AT2",
"FSH_MG_AT3": "FSH_MG_AT3",
"FSH_SC_MID": "FSH_SC_MID",
"FSH_SEAIM": "FSH_SEAIM",
"FSH_SEALV": "FSH_SEALV",
"FUELG": "FUELG",
"GDS_RELEVANT": "GDS_RELEVANT",
"GENNR": "GENNR",
"GEWEI": "GEWEI",
"GEWTO": "GEWTO",
"GROES": "GROES",
"GTIN_VARIANT": "GTIN_VARIANT",
"HAZMAT": "HAZMAT",
"HEIGHT_NONFLAT": "HEIGHT_NONFLAT",
"HEIGHT_NONFLAT_UOM": "HEIGHT_NONFLAT_UOM",
"HERKL": "HERKL",
"HNDLCODE": "HNDLCODE",
"HOEHE": "HOEHE",
"HUTYP": "HUTYP",
"HUTYP_DFLT": "HUTYP_DFLT",
"ICFA": "ICFA",
"IDENTIFICATION_TAG_TYPE": "IDENTIFICATION_TAG_TYPE",
"IHIVI": "IHIVI",
"ILOOS": "ILOOS",
"IMATN": "IMATN",
"INHAL": "INHAL",
"INHBR": "INHBR",
"INHME": "INHME",
"INV_PLN_MODE": "INV_PLN_MODE",
"IPMIPPRODUCT": "IPMIPPRODUCT",
"IPRKZ": "IPRKZ",
"KOSCH": "KOSCH",
"KUNNR": "KUNNR",
"KZEFF": "KZEFF",
"KZGVH": "KZGVH",
"KZKFG": "KZKFG",
"KZKUP": "KZKUP",
"KZNFM": "KZNFM",
"KZREV": "KZREV",
"KZUMW": "KZUMW",
"KZWSM": "KZWSM",
"LABOR": "LABOR",
"LAEDA": "LAEDA",
"LAENG": "LAENG",
"LAST_CHANGED_TIME": "LAST_CHANGED_TIME",
"LIQDT": "LIQDT",
"LOGISTICAL_MAT_CATEGORY": "LOGISTICAL_MAT_CATEGORY",
"LOGLEV_RETO": "LOGLEV_RETO",
"LOGUNIT": "LOGUNIT",
"LVORM": "LVORM",
"MAGRV": "MAGRV",
"MANDT": "MANDT",
"MATFI": "MATFI",
"MATKL": "MATKL",
"MATNR": "MATNR",
"MATNR_EXTERNAL": "MATNR_EXTERNAL",
"MAXB": "MAXB",
"MAXC": "MAXC",
"MAXC_TOL": "MAXC_TOL",
"MAXDIM_UOM": "MAXDIM_UOM",
"MAXH": "MAXH",
"MAXL": "MAXL",
"MBRSH": "MBRSH",
"MCOND": "MCOND",
"MEABM": "MEABM",
"MEDIUM": "MEDIUM",
"MEINS": "MEINS",
"MFRGR": "MFRGR",
"MFRNR": "MFRNR",
"MFRPN": "MFRPN",
"MHDHB": "MHDHB",
"MHDLP": "MHDLP",
"MHDRZ": "MHDRZ",
"MLGUT": "MLGUT",
"MO_PROFILE_ID": "MO_PROFILE_ID",
"MPROF": "MPROF",
"MSBOOKPARTNO": "MSBOOKPARTNO",
"MSTAE": "MSTAE",
"MSTAV": "MSTAV",
"MSTDE": "MSTDE",
"MSTDV": "MSTDV",
"MTART": "MTART",
"MTPOS_MARA": "MTPOS_MARA",
"NEWPROD_INDI": "NEWPROD_INDI",
"NORMT": "NORMT",
"NRFHG": "NRFHG",
"NSNID": "NSNID",
"NTGEW": "NTGEW",
"NUMTP": "NUMTP",
"OVERHANG_TRESH": "OVERHANG_TRESH",
"OVLPN": "OVLPN",
"PACKCODE": "PACKCODE",
"PICNUM": "PICNUM",
"PILFERABLE": "PILFERABLE",
"PLGTP": "PLGTP",
"PMATA": "PMATA",
"PRDHA": "PRDHA",
"PRD_ENDDT": "PRD_ENDDT",
"PRD_STARTDT": "PRD_STARTDT",
"PRODUCTOID": "PRODUCTOID",
"PROD_SHAPE": "PROD_SHAPE",
"PROFL": "PROFL",
"PRZUS": "PRZUS",
"PSM_CODE": "PSM_CODE",
"PSTAT": "PSTAT",
"PS_SMARTFORM": "PS_SMARTFORM",
"QGRP": "QGRP",
"QMPUR": "QMPUR",
"QQTIME": "QQTIME",
"QQTIMEUOM": "QQTIMEUOM",
"RAUBE": "RAUBE",
"RBNRM": "RBNRM",
"RDMHD": "RDMHD",
"RETDELC": "RETDELC",
"RIC_ID": "RIC_ID",
"RMATP": "RMATP",
"RMATP_PB": "RMATP_PB",
"SAISJ": "SAISJ",
"SAISO": "SAISO",
"SAITY": "SAITY",
"SALES_MATERIAL": "SALES_MATERIAL",
"SATNR": "SATNR",
"SCM_BOD_DEPLVL": "SCM_BOD_DEPLVL",
"SCM_DRP_GL_STOCK": "SCM_DRP_GL_STOCK",
"SCM_EXCL_EXPEDITE": "SCM_EXCL_EXPEDITE",
"SCM_KITCOMP": "SCM_KITCOMP",
"SCM_MATID_GUID16": "SCM_MATID_GUID16",
"SCM_MATID_GUID22": "SCM_MATID_GUID22",
"SCM_MATURITY_DUR": "SCM_MATURITY_DUR",
"SCM_PROD_PAOOPT": "SCM_PROD_PAOOPT",
"SCM_PUOM": "SCM_PUOM",
"SCM_RESTRICT_INVBAL": "SCM_RESTRICT_INVBAL",
"SCM_SHLF_LFE_REQ_MAX": "SCM_SHLF_LFE_REQ_MAX",
"SCM_SHLF_LFE_REQ_MIN": "SCM_SHLF_LFE_REQ_MIN",
"SDM_VERSION": "SDM_VERSION",
"SERIAL": "SERIAL",
"SERLV": "SERLV",
"SGT_COVSA": "SGT_COVSA",
"SGT_CSGR": "SGT_CSGR",
"SGT_REL": "SGT_REL",
"SGT_SCOPE": "SGT_SCOPE",
"SGT_STAT": "SGT_STAT",
"SIZE1": "SIZE1",
"SIZE1_ATINN": "SIZE1_ATINN",
"SIZE2": "SIZE2",
"SIZE2_ATINN": "SIZE2_ATINN",
"SLED_BBD": "SLED_BBD",
"SOM_CTR_AUTORENEWAL": "SOM_CTR_AUTORENEWAL",
"SOM_CYCLE": "SOM_CYCLE",
"SOM_CYCLE_RULE": "SOM_CYCLE_RULE",
"SOM_TC_SCHEMA": "SOM_TC_SCHEMA",
"SPART": "SPART",
"SPROF": "SPROF",
"SRV_DURA": "SRV_DURA",
"SRV_DURA_UOM": "SRV_DURA_UOM",
"SRV_ESCAL": "SRV_ESCAL",
"SRV_SERWI": "SRV_SERWI",
"STFAK": "STFAK",
"STOFF": "STOFF",
"TAKLV": "TAKLV",
"TARE_VAR": "TARE_VAR",
"TEMPB": "TEMPB",
"TEXTILE_COMP_IND": "TEXTILE_COMP_IND",
"TOLERANCE_TYPE": "TOLERANCE_TYPE",
"TRAGR": "TRAGR",
"VABME": "VABME",
"VARID": "VARID",
"VHART": "VHART",
"VOLEH": "VOLEH",
"VOLTO": "VOLTO",
"VOLUM": "VOLUM",
"VPREH": "VPREH",
"VPSTA": "VPSTA",
"WEORA": "WEORA",
"WESCH": "WESCH",
"WHMATGR": "WHMATGR",
"WHSTC": "WHSTC",
"WRKST": "WRKST",
"XCHPF": "XCHPF",
"XGCHP": "XGCHP",
"XGRDT": "XGRDT",
"ZEIAR": "ZEIAR",
"ZEIFO": "ZEIFO",
"ZEINR": "ZEINR",
"ZEIVR": "ZEIVR",
"ZFIELD1": "ZFIELD1",
"ZZ1_CUSTOMFIELDHIGHRIS_PRD": "ZZ1_CUSTOMFIELDHIGHRIS_PRD",
"ZZ1_CUSTOMFIELDRISKMIT_PRD": "ZZ1_CUSTOMFIELDRISKMIT_PRD",
"ZZ1_CUSTOMFIELDRISKREA_PRD": "ZZ1_CUSTOMFIELDRISKREA_PRD"
}
}
⚠️ Known Limitations
⭐ While SAP officially discourages the use of the RFC_READ_TABLE function module due to its technical limitations, authorization concerns, and lack of public release (as outlined in SAP Note 382318 - FAQ | Function module RFC_READ_TABLE), the reality across the integration landscape tells a different story. Despite SAP's guidance to avoid it in favor of business-context-specific APIs or custom-developed RFCs, RFC_READ_TABLE remains one of the most widely used tools for reading data from SAP tables in external solutions. Here’s why:
That said, caution is essential. RFC_READ_TABLE should be used with strict access control as mentioned in SAP Note 382318.
⭐ Instead of the 512-character limited result table "DATA", you can use the unlimited exporting parameter table "ET_DATA". (use the flag USE_ET_DATA_4_RETURN)
⭐ The TEXT field under OPTION schema holds the query condition. There is a 75-character limit to the length of the query, so if the query exceeds that limit, add more items and split the query into new lines.
🤔✨ What more can you do?
When selecting a large volume of data, please keep the following points in mind:
🚀 Conclusion
Using RFC_READ_TABLE as a generic SAP reader in Workato allows teams to decentralize data access while keeping SAP logic centralized. With the right field-level controls and transformation logic, this approach can become your Swiss army knife for SAP data automation.
Are you tired of seeing legacy UI screens for SAP GUI and traditional IPaaS solutions do all the jobs? Switch to Workato ! 🔄
Explore our page: Workato/4SAP and SAP RFC connector documentation
Senior Manager | Practice Lead @ Bristlecone | Technical Presales, Delivery Management
2moThanks for sharing, Sidhant ! This is excellent! Keep it going 😊
Associate Director at Bristlecone
2moGreat insights, very well explained Sidhant Mahajan!
Maakt van IT weer een groeiversneller voor MKB's | Workato Silver Partner
2moThanks for sharing. Always good to see hands-on examples like this. RFC_READ_TABLE can be useful for prototyping, but tends to fall short in production due to limitations around structure, scalability, and access control. For the use cases you mentioned, standard SAP APIs like BAPIs, OData, or CDS Views are available and often offer a more robust and future-proof approach. Curious to hear how this worked out in your case.
Worth reading! Thank you Sidhant Mahajan!