connector-wizard-rfc-create
Create RFC connector calls for SAP system functions. Select function names to generate connector calls that enable integration with remote SAP systems.
Instructions
Create one or more calls for an RFC connector using the wizard
The RFC connector requires calls to refer to existing functions on the remote SAP system. To find available functions,
use the resource template simplifier://connector-wizard/{connectorName}/search/{term}/{page}. Select the desired
function names and pass them to this tool.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| connectorName | Yes | Name of the RFC Connector to add calls to | |
| rfcFunctionNames | Yes | Names of the SAP system's functions for which to create connector calls |
Implementation Reference
- src/tools/connector-tools.ts:250-278 (handler)The main execution handler for the 'connector-wizard-rfc-create' tool. It fetches details for RFC functions, prepares payload, and creates connector calls using the Simplifier client.async ({connectorName, rfcFunctionNames}) => { return wrapToolResult(`create ${rfcFunctionNames.length} connector calls using the RFC connector wizard`, async () => { const trackingKey = trackingToolPrefix + toolNameConnectorWizardRfcCreate; // required, so that the functions are "persisted" in Simplifier await simplifier.viewRFCFunctions(connectorName, rfcFunctionNames, trackingKey); const details = await simplifier.rfcWizardGetCallDetails(connectorName, rfcFunctionNames) const descriptions: {[k: string]: string} = {} const newNames: {[k: string]: string} = {} for(const func of rfcFunctionNames) { const match = details.calls.find(callDetails => callDetails.call.nameNonTechnicalized === func); if(!match) { throw new Error(`Details for function ${func} could not be retrieved`); } descriptions[func] = match.call.description; newNames[func] = match.call.name; } const payload: RFCWizardCreateCallsPayload = { callsRfc: rfcFunctionNames, descriptions: descriptions, newNames: newNames, } await simplifier.rfcWizardCreateCalls(connectorName, payload); return payload; }); }
- src/tools/connector-tools.ts:238-241 (schema)Zod input schema defining parameters: connectorName (string) and rfcFunctionNames (array of strings).inputSchema: { connectorName: z.string().describe(`Name of the RFC Connector to add calls to`), rfcFunctionNames: z.array(z.string()).describe(`Names of the SAP system's functions for which to create connector calls`), },
- src/tools/connector-tools.ts:229-279 (registration)Tool name constant and full server.registerTool call registering the tool with description, schema, annotations, and handler.const toolNameConnectorWizardRfcCreate = "connector-wizard-rfc-create" server.registerTool(toolNameConnectorWizardRfcCreate, { description: `# Create one or more calls for an RFC connector using the wizard The RFC connector requires calls to refer to existing functions on the remote SAP system. To find available functions, use the resource template \`simplifier://connector-wizard/{connectorName}/search/{term}/{page}\`. Select the desired function names and pass them to this tool. `, inputSchema: { connectorName: z.string().describe(`Name of the RFC Connector to add calls to`), rfcFunctionNames: z.array(z.string()).describe(`Names of the SAP system's functions for which to create connector calls`), }, annotations: { title: "Create RFC connector calls using the call wizard", readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: true }, }, async ({connectorName, rfcFunctionNames}) => { return wrapToolResult(`create ${rfcFunctionNames.length} connector calls using the RFC connector wizard`, async () => { const trackingKey = trackingToolPrefix + toolNameConnectorWizardRfcCreate; // required, so that the functions are "persisted" in Simplifier await simplifier.viewRFCFunctions(connectorName, rfcFunctionNames, trackingKey); const details = await simplifier.rfcWizardGetCallDetails(connectorName, rfcFunctionNames) const descriptions: {[k: string]: string} = {} const newNames: {[k: string]: string} = {} for(const func of rfcFunctionNames) { const match = details.calls.find(callDetails => callDetails.call.nameNonTechnicalized === func); if(!match) { throw new Error(`Details for function ${func} could not be retrieved`); } descriptions[func] = match.call.description; newNames[func] = match.call.name; } const payload: RFCWizardCreateCallsPayload = { callsRfc: rfcFunctionNames, descriptions: descriptions, newNames: newNames, } await simplifier.rfcWizardCreateCalls(connectorName, payload); return payload; }); } );