Open Source · MIT

YaNco

Ein moderner .NET-Wrapper für das SAP RFC SDK — mit funktionaler API, Dependency Injection und Cross-Platform-Support.

Warum wir YaNco gebaut haben

Immer wieder dieselbe Situation: .NET-Dienste auf Linux, die mit SAP sprechen müssen. DMS-Migrationswerkzeuge, die per RFC-Programmstart SAP-HTTP/FTP-Clients auslösen. Integrationspipelines, die hunderte RFC-Aufrufe hintereinander abarbeiten. Wir brauchten eine RFC-Schicht für modernes .NET — mit Dependency Injection, ohne Plattformbindung, und mit einer Fehlerbehandlung ohne Exceptions. Also haben wir sie selbst gebaut.

Was YaNco kann

Entwickelt für echte SAP-Integrationsprojekte.

Funktionale API

Vorhersagbar, testbar, leicht nachvollziehbar. RFC-Operationen sind reine Funktionen, die sich frei kombinieren lassen — kein versteckter Zustand, keine Seiteneffekte, keine Überraschungen zur Laufzeit.

Seiteneffektfreie Operationen
Sicher parallelisierbar
LINQ-Syntax für Strukturen und Tabellen
Fehler als Werte, nicht als Exceptions

Dependency Injection

YaNco ist von Grund auf für DI gebaut. Verbindungen, Kontexte und Lifecycles werden vom Container verwaltet — nicht über statische Factories oder globalen State.

RFC-Kontexte per Constructor Injection
Verbindungs-Lifecycle vom Container gesteuert
Konfiguration über IServiceCollection
Testbar durch Interface-Abstraktion

RFC-Server & Callbacks

SAP ruft Ihren .NET-Code auf. Empfangen Sie eingehende RFC-Aufrufe, verarbeiten Sie IDocs oder reagieren Sie auf ABAP-Programmstart-Callbacks.

Builder-API für die Serverkonfiguration
Typisierte Ein- und Ausgaben pro Handler
Transaktionales RFC für IDoc-Verarbeitung
ABAP-Callback-Unterstützung

Plattformunabhängig

Läuft auf Windows, Linux und macOS. Unterstützt .NET 6+ und .NET Framework 4.7.1+.

.NET 6+
.NET Framework 4.7.1+
Windows, Linux, macOS
SAP NW RFC SDK 750
await context.CallFunction("BAPI_COMPANYCODE_GETDETAIL",
    Input: f => f.SetField("COMPANYCODEID", "1000"),
    Output: f => f
        .MapStructure("COMPANYCODE_DETAIL", s =>
            from name in s.GetField<string>("COMP_NAME")
            from city in s.GetField<string>("CITY")
            select new { Name = name, City = city }))
.Match(
    r => Console.WriteLine($"{r.Name} in {r.City}"),
    l => Console.WriteLine($"Error: {l.Message}"));

Enterprise Support

Sie setzen YaNco produktiv ein? Mit unseren Support-Plänen haben Sie direkten Zugang zu den Entwicklern.

  • Bevorzugte Fehlerbehebung und Hotfixes
  • Direkter Eskalationsweg bei Problemen
  • Einfluss auf die Weiterentwicklung
  • Persönlicher Support per E-Mail, Telefon oder Video
  • Schulungen und Coaching für Ihr Team

Interesse an Support?

Erzählen Sie uns von Ihrem Projekt — wir melden uns.

Wir respektieren Ihre Privatsphäre. Lesen Sie unsere Datenschutzerklärung.

YaNco ausprobieren

MIT-lizenziert, Open Source, sofort einsatzbereit.