Rize merkezli, çay + fındık ihracatçısı 95 çalışanlı bir firma, SAP B1’i 5 yıl önce kurdu. Son 1 yılda yavaşlık + entegrasyon sorunları başladı. 3 ayda mimari refactoring + performance tuning yaptık. Bu yazı SAP B1’in teknik derinliğini sahadan örneklerle anlatıyor.
SAP B1 Bileşen Mimarisi
[Client Katman]
- SAP B1 Windows Client (RDP / fat client)
- SAP B1 Web Client
- SAP B1 Mobile (iOS/Android)
- 3rd party integrasyon (REST/SOAP)
↓
[Service Layer (REST OData)]
[B1WS (SOAP, legacy)]
↓
[SAP B1 Application Server]
↓
[Database]
- SAP HANA (in-memory) veya
- Microsoft SQL Server
HANA vs SQL Server Karşılaştırma
| Konu | HANA | SQL Server |
|---|---|---|
| Performans | 5-10x hızlı (in-memory) | Standard |
| Maliyet (lisans) | Yüksek (RAM bazlı) | Düşük |
| Donanım (RAM) | ~~64 GB+ minimum | ~~16 GB yeter |
| Pervasive Analytics | Native + güçlü | Sınırlı |
| Real-time analytics | Mükemmel | Orta |
| İş zekası raporu | HANA Studio + Analytics | SSRS + Crystal |
| Yedekleme | HANA backup | SQL backup (VSS) |
| Yönetim karmaşıklık | Yüksek (HANA Studio öğren) | Düşük (SSMS) |
Şirket SQL Server kullanıyordu, performans sorunu nedeniyle HANA’ya geçiş değerlendirildi ama lisans + RAM maliyeti karşılamadı. SQL Server’da tuning yoluna gidildi.
Performans Tuning
Tespit Edilen Sorunlar
| Sorun | Etki |
|---|---|
| OINV (fatura) tablosu 4M kayıt, indeksler eksik | Sorgu 12 sn |
| İhracat raporları tüm fatura full scan yapıyor | 3 dk+ rapor süresi |
| Custom UDQ (User Defined Query) optimize edilmemiş | Ay sonu raporları bekliyor |
| SAP DB’si transaction log büyümüş (180 GB) | Backup uzun + disk dolu |
| VM’e ayrılan vCPU az (4) | CPU bottleneck |
Yapılan Tuning
-- OINV için ek indeks (ihracat sorgusuna göre)
CREATE NONCLUSTERED INDEX IX_OINV_DocDate_CardCode_Currency
ON OINV (DocDate, CardCode, DocCur)
INCLUDE (DocTotal, DocTotalSy, U_IhracatNo)
WHERE Canceled = 'N';
-- İhracat raporu için filtered indeks
CREATE NONCLUSTERED INDEX IX_OINV_Export
ON OINV (DocDate)
INCLUDE (CardCode, DocTotal, U_GTIP, U_Plaka)
WHERE U_IhracatNo IS NOT NULL;
-- Statistics update
UPDATE STATISTICS OINV WITH FULLSCAN;
UPDATE STATISTICS RDR1 WITH FULLSCAN;
-- VM'e vCPU 4 → 8, RAM 16 → 32 GB
-- TempDB ayrı disk
-- Recovery model: Simple yerine FULL ama log shipping ile
Sonuç
| İşlem | Önce | Sonra |
|---|---|---|
| İhracat fatura listeleme | ~~12 sn | ~~0.8 sn |
| Ay sonu rapor | ~~3 dk | ~~24 sn |
| Sales Order kayıt | ~~5 sn | ~~1.2 sn |
| Genel sistem responsive | Yavaş | Akıcı |
Add-On Mimarisi
SAP B1 ekstra fonksiyonalite Add-On ile gelir:
| Add-On tipi | Açıklama |
|---|---|
| UI Add-On (eski) | SAP B1 Studio + .NET, COM-based, Windows Client |
| Web Add-On | Web Client için, modern |
| Service Layer extension | OData REST API ile dış sistem entegrasyon |
| Pervasive Analytics | Custom dashboard + KPI |
Sahada Kullanılan Add-On’lar
- e-Dönüşüm (Türk partner): e-Fatura, e-İrsaliye, e-Defter
- Banka entegrasyon: Hesap hareket → otomatik mahsup
- İhracat dökümantasyon: Custom (paket listesi, çeki listesi, ATR/EUR.1)
- Excel Loader: Toplu master data ve transaction yükleme
Service Layer (REST OData)
# Login
POST https://b1srv:50000/b1s/v1/Login
{
"CompanyDB": "SBODemoUS",
"UserName": "manager",
"Password": "***"
}
→ Cookie: B1SESSION=...
# Müşteri yarat
POST https://b1srv:50000/b1s/v1/BusinessPartners
{
"CardCode": "C90001",
"CardName": "Yeni Müşteri AŞ",
"CardType": "cCustomer",
"GroupCode": 100,
"Currency": "USD"
}
# Sales Order yarat
POST /b1s/v1/Orders
{
"CardCode": "C90001",
"DocDate": "2026-04-25",
"DocumentLines": [
{ "ItemCode": "A1001", "Quantity": 100, "Price": 25.50 }
]
}
# Stok sorgu
GET /b1s/v1/Items?$filter=OnHand gt 0&$select=ItemCode,ItemName,OnHand
Integration Framework (B1iF)
SAP B1’in built-in iPaaS’ı:
- 3rd party sistemden veri çek (REST, SOAP, file, DB)
- Map (XSLT)
- SAP B1’e yaz (DI API ile)
- Schedule + monitoring
Sahada Örnek Akışlar
| Akış | Tetikleyici | Aksiyon |
|---|---|---|
| Webshop sipariş → SAP | HTTPS POST (webshop webhook) | SAP B1 Sales Order yarat |
| Banka hareketleri | Saatlik scheduled (banka API) | Hesap hareketi import |
| Lojistik tracking | Schedule (lojistik API) | Sipariş status update |
| Tedarikçi katalog | Daily (CSV) | Item master update |
Sahada Düşülen Üç Tuzak
- İlk gün doğru DB seçmemek: SQL’den HANA’ya geçiş zor + pahalı. Beklenen büyüme + analytics ihtiyacına göre baştan karar ver.
- Add-On’ları SAP B1 standartı yerine custom kod yazmak: Bakım + upgrade kâbusu. Önce SAP B1 native özellik dene, sonra add-on, son çare custom.
- Performance monitoring kurmadan canlıya çıkmak: Yavaşlık fark edildiğinde 4-5 yıl geçmiş, 4M kayıt birikmiş. Day 1 indeks + query plan monitoring.
CloudSpark olarak SAP Business One mimarisi (HANA/SQL Server seçimi), performans tuning, Add-On geliştirme, Service Layer integration ve B1 Integration Framework (B1iF) için danışmanlık veriyoruz.



