⚙️

Xpensio — SAP Entegrasyon Teknik Kılavuzu

ECC 6.0 · S/4HANA On-Premise · S/4HANA Cloud · SuccessFactors
Versiyon 2.0 · Mart 2026 · Gizlilik: Müşteri Teknik Dokümanı

📑 İçindekiler

1 Genel Mimari

1.1 Adapter Kalıbı (Factory Pattern)

Xpensio, tüm ERP/HR entegrasyonlarını Adapter Factory kalıbıyla yönetir. Ortam değişkenine (SAP_TYPE, IDENTITY_PROVIDER) göre uygun adapter otomatik seçilir:

┌─────────────────────── Xpensio Backend (NestJS) ───────────────────────┐
│                                                                         │
│  SapAdapterFactory                    IdentityAdapterFactory            │
│  ├─ ECC     → SapEccAdapter           ├─ SAP_HCM     → SapHcmAdapter   │
│  ├─ S4_ONPREM → SapS4OnPremAdapter    ├─ SAP_S4_ONPREM → S4OnPrem…     │
│  ├─ S4_CLOUD  → SapS4CloudAdapter     ├─ SAP_S4_CLOUD  → S4Cloud…      │
│  └─ MOCK      → SapMockAdapter        ├─ AZURE_AD    → AzureAdAdapter  │
│                                        ├─ LDAP        → LdapAdapter     │
│                                        └─ MOCK        → MockAdapter     │
└─────────────────────────────────────────────────────────────────────────┘

1.2 FI Posting (Masraf Muhasebeleştirme) Adapterleri

SAP_TYPEAdapterBağlantı YöntemiAuth
ECCSapEccAdapterSICF REST → BAPI_ACC_DOCUMENT_POSTHTTP Basic
S4_ONPREMSapS4OnPremAdapterOData v4 → API_JOURNALENTRY_POSTBasic / OAuth2
S4_CLOUDSapS4CloudAdapterREST → Journal Entry APIOAuth2 (XSUAA)
MOCKSapMockAdapterSimülasyon (%5 hata oranı)

1.3 HR / Kimlik Sync Adapterleri

IDENTITY_PROVIDERAdapterKaynakSync Periyodu
SAP_HCMSapHcmAdapterABAP SICF /sap/bc/xpensio/user_listHer gece 01:00
SAP_S4_ONPREMSapS4OnPremAdapterOData API_BUSINESS_PARTNERHer gece 01:00
SAP_S4_CLOUDSapS4CloudAdapterSuccessFactors OData v4Her gece 01:00
AZURE_ADAzureAdAdapterMicrosoft Graph APIHer gece 01:00
LDAPLdapAdapterLDAP/AD LDAPSHer gece 01:00

1.4 Platform Karşılaştırma Matrisi

ÖzellikSAP ECC 6.0S/4 On-PremS/4 Cloud
FI PostingBAPI_ACC_DOCUMENT_POSTBAPI compat / ODataREST Journal Entry
HR SyncABAP SICF endpointOData EmployeeEntitySuccessFactors OData v4
AuthHTTP BasicOAuth2 / BasicOAuth2 (XSUAA)
ABAP GereksinimiEvet (7.0+)Opsiyonel (7.50+)Hayır
Kurulum ZorluğuOrtaOrtaDüşük
ENV: SAP_TYPEECCS4_ONPREMS4_CLOUD

2 Ortak Referanslar

2.1 Kullanıcı / HR Alan Eşleşmesi

Xpensio DBHR Sistemi KarşılığıAçıklama
emailE-postaBirincil anahtar
nameAd + SoyadBirleştirilmiş
externalIdPERNR / EmployeeIdPersonel No
sapEmployeeIdPERNRFI kalemlerinde kullanılır
departmentCodeDEPARTMENTNO / OrgUnit→ departmentId FK
positionCodeTITLENO / PositionId→ positionId FK
gradeGRADE / PayGrade7–19 arası, onay limiti belirler
managerEmailMANAGEREMAILYönetici → managerId FK
isActive'1' / 'X' = aktifAktiflik durumu

2.2 Masraf → FI Mapping

XpensioFI KarşılığıÖrnek
netAmountNet Tutar (vergi hariç)100.00 TRY
taxAmountKDV Tutarı20.00 TRY
grossAmountBrüt Tutar120.00 TRY
expenseTypeCodeMasraf Türü → GL Hesap21 → Ulaşım GL
taxPercentageCodeVergi KoduV5 → %20
costCenterMasraf Yeri (KOSTL)10 hane
projectCodeWBS ElementiOpsiyonel

2.3 Grade → Rol Eşleştirmesi

GradeUnvan TipiAtanan Rol
17–19VP / GM / CTOMANAGER
14–16Division HeadMANAGER
13Unit HeadMANAGER
7–12Engineer / AnalystEMPLOYEE
⚠️ FINANCE ve ADMIN rolleri grade ile asla değiştirilmez. Eşik: MANAGER_GRADE_THRESHOLD = 13

2.4 Çok Seviyeli Onay Zinciri

AdımOnaylayanKoşul
1MANAGERHer zaman zorunlu
2UPPER_MANAGERTutar > çalışanın grade limiti
3CFO / ADMINTutar > 50.000 TRY
4FINANCEHer zaman zorunlu (son adım)

Grade Limit Örnekleri: G7–12 → 10.000 TRY  |  G13–15 → 25.000 TRY  |  G16–18 → 50.000 TRY

2.5 Vergi & Ödeme Kodları

Vergi KoduOranÖdeme TipiAçıklama
V0%00Nakit
V1%11Kişisel Kart
V4%102Şirket Kartı
V5%203Kurumsal Kart

3 SAP ECC 6.0 Entegrasyonu

IDENTITY_PROVIDER=SAP_HCM SAP_TYPE=ECC ABAP 7.0+

3.1 Kurulum Sırası

#AdımSAP TxAçıklama
1DDIC NesneleriSE11Tablo ve yapıları oluştur + aktive et
2ABAP SınıflarıSE24ZCL_EXPENSE_POSTING + ZCL_EXPENSE_USER_LIST
3SICF ServisleriSICFHandler ata + aktive et
4SAP KullanıcısıSU01API sistem kullanıcısı oluştur
5YetkilendirmePFCGRol + izin nesneleri ata
6İlk VerilerSM30ZEXP_AUTH + ZEXP_CFG tabloları doldur
7FI UyarlamaOBA7 / FS00 / KS01 / FTXPBelge tipi, GL, masraf yeri, vergi kodları

3.2 DDIC Nesneleri (SE11)

ZEXP_AUTH — Kimlik Doğrulama

AlanTipKeyAçıklama
MANDTCLNT 3Mandant
TYPECHAR 504=HTTP Basic, 05=Form
USERNAMECHAR 100API kullanıcı adı
PASSWORDCHAR 100API şifresi

ZEXP_POST_LOG — FI Posting Log

AlanTipAçıklama
LOGIDCHAR 36UUID (expense ID)
BUKRSBUKRS 4Şirket kodu
BELNRBELNR 10SAP FI belge no
STATUSCHAR 1S=Başarı, E=Hata
MESSAGECHAR 255SAP mesajı
RETRY_CNTINT1Deneme sayısı

ZEXP_CFG — Genel Yapılandırma

CFGKEYÖrnek DeğerAçıklama
EXPENSE_GL<GIDER_GL>Gider GL Hesabı
COUNTER_GL<KARSI_GL>Karşı Hesap
KDV_GL<KDV_GL>İndirilecek KDV
DOC_TYPESABelge Tipi

ZEXP_CFG_GL — Masraf Türü → GL Hesap Eşleşme

AlanKeyAçıklama
BUKRSŞirket kodu
SUBCOMPCODEAlt şirket kodu
EXPENSETYPECODEMasraf türü (21/22/23…)
GLACCOUNTGL hesap numarası
TAXCODEVergi kodu (V0/V1/V4/V5)

ZEXP_USERS — Kullanıcı Tablosu

AlanXpensio KarşılığıAçıklama
EMAILemail (PK)E-posta adresi
NAME / SURNAMEnameAd + soyad birleştirilir
DEPARTMENTNOdepartmentCodeDepartman kodu
TITLENOpositionCodePozisyon kodu
GRADEgradeSeviye (7–19), rol ataması
MANAGEREMAILmanagerEmailYönetici e-posta
PERSONNELCODEexternalId, sapEmployeeIdPersonel numarası
ISACTIVEisActive1=aktif, 0=pasif

ZEXP_GRADE_POLICIES — Grade / Politika Tablosu

AlanKeyAçıklama
BUKRSŞirket kodu
GRADEGrade seviyesi
POLICYCODEMasraf politikası kodu
LIMIT_AMOUNTHarcama limiti (TRY)

ZEXP_COMPANY — Şirket Yapılandırması

AlanKeyAçıklama
BUKRSŞirket kodu
COMP_NAMEŞirket adı
CURRENCYYerel para birimi
TAX_SYSTEMVergi sistemi (TR/EU)

ZEXP_S_POST_PAYLOAD — POST_EXPENSE Giriş Yapısı

COMPANYCODE (BUKRS), EMPLOYEEID (CHAR 20), EMPLOYEENAME (CHAR 100),
EXPENSEDATE (CHAR 8), POSTINGDATE (CHAR 8), DOCUMENTTYPE (BLART),
NETAMOUNT (DEC 13,2), TAXAMOUNT (DEC 13,2), GROSSAMOUNT (DEC 13,2),
TAXCODE (CHAR 2), TAXGLACCOUNT (SAKNR), CURRENCY (WAERS),
GLACCOUNT (SAKNR), COSTCENTER (KOSTL), PROJECTCODE (PS_POSID),
DESCRIPTION (CHAR 50), REFERENCE (CHAR 16), DEBUGMODE (CHAR 1)

3.3 ABAP — ZCL_EXPENSE_POSTING (FI Belge Oluşturma)

Interface: IF_HTTP_EXTENSION  |  SICF: /sap/bc/zexpense/post_expense

HANDLE_REQUEST — Ana Giriş Noktası

METHOD if_http_extension~handle_request.
  " 1. HTTP metod kontrolü (sadece POST)
  " 2. Auth doğrulama: ZEXP_AUTH → username + password
  " 3. JSON body → ZEXP_S_POST_PAYLOAD'a parse
  " 4. Zorunlu alan kontrolü (companycode, glaccount, netamount…)
  " 5. POST_EXPENSE çağır
  " 6. JSON response: { STATUS, BELNR, GJAHR, MESSAGE }
  " 7. ZEXP_POST_LOG'a loglama
ENDMETHOD.

POST_EXPENSE — BAPI Çağrısı

METHOD post_expense.
  " ── HEADER ──
  ls_header-comp_code  = is_payload-companycode.
  ls_header-doc_date   = is_payload-expensedate.
  ls_header-pstng_date = is_payload-postingdate.
  ls_header-doc_type   = is_payload-documenttype.
  ls_header-ref_doc_no = is_payload-reference.
  ls_header-currency   = is_payload-currency.
  ls_header-bus_act    = 'RFBU'.

  " ── KALEM 1: Gider GL (Borç) ──
  ls_accgl-gl_account = is_payload-glaccount.
  ls_accgl-tax_code   = is_payload-taxcode.
  ls_accgl-costcenter = is_payload-costcenter.
  ls_curr-amt_doccur  = is_payload-netamount.

  " ── KALEM 2: KDV GL (Borç, sadece KDV > 0) ──
  IF is_payload-taxamount > 0.
    ls_acctax-gl_account = is_payload-taxglaccount.
    ls_curr-amt_doccur   = is_payload-taxamount.
  ENDIF.

  " ── KALEM 3: Personel Cari (Alacak) ──
  ls_accpay-vendor    = is_payload-employeeid.
  ls_curr-amt_doccur  = - is_payload-grossamount.

  " ── BAPI ÇAĞRISI ──
  IF is_payload-debugmode = 'X'.
    CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK' ...
  ELSE.
    CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST' ...
  ENDIF.

  " Hata kontrolü
  IF RETURN tablosunda E tipi mesaj var.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ev_status = 'E'.  ev_message = hata metni.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'.
    ev_status = 'S'.  ev_belnr = belge no.
  ENDIF.
ENDMETHOD.
💡 DEBUGMODE = 'X' ile BAPI_ACC_DOCUMENT_CHECK kullanılarak commit yapılmadan test edilebilir.

3.4 ABAP — ZCL_EXPENSE_USER_LIST (HR Sync)

SICF: /sap/bc/zexpense/user_list

METHOD if_http_extension~handle_request.
  " ── Auth kontrolü (ZEXP_AUTH) ──
  " GET /           → ZEXP_USERS tablosundan JSON döndür
  " GET ?action=SYNC → PA0001/PA0002'den çekip ZEXP_USERS güncelle
  "   - Mevcut kayıt: UPDATE
  "   - Yeni kayıt:   INSERT
  "   - HR'da yok:    ISACTIVE = '0'
  " JSON Response: { EMPLOYEE_COUNT, SYNCED, INSERTED, DEACTIVATED }
ENDMETHOD.
⚠️ ABAP 7.0 uyumluluğu: &&, inline DATA(), string templates kullanılmaz.

3.5 SICF Servisleri

Transaction: SICF → /sap/bc/zexpense/
  /post_expense  → Handler: ZCL_EXPENSE_POSTING
  /user_list     → Handler: ZCL_EXPENSE_USER_LIST
  Authentication: HTTP Basic (SAP standart)

3.6 Kullanıcı & Yetkilendirme

SU01 — Sistem Kullanıcısı

ParametreDeğer
Kullanıcı AdıZEXP_API_USER
Kullanıcı TipiSystem (Dialog değil)
RolZ_EXPENSE_API_ROLE

PFCG — Yetkilendirme Nesneleri

NesneAlanDeğer
S_TCODETCDSE16, SM30
S_TABU_DISTABLEZEXP_*
S_ICFICFSERVICE/sap/bc/zexpense/*
F_BKPF_BUKBUKRS<Şirket Kodu>
F_BKPF_KOAKOARTA, D, G, K, M, S

3.7 FI Uyarlamalar

TxİşlemDetay
OBA7Belge TipiSA veya özel ZK
FS00GL HesaplarGider GL, Karşı Hesap, KDV GL
KS01Masraf YeriEn az 1 aktif masraf yeri zorunlu
FTXPVergi KodlarıV0=%0, V1=%1, V4=%10, V5=%20
MK01/FK01VendorPersonel → Vendor eşleşmesi

3.8 Bağlantı Yapılandırması (DB Encrypted)

💡 SAP bağlantı bilgileri .env dosyasında tutulmaz. Tüm credential'lar Xpensio Setup Wizard veya Admin Panel üzerinden girilir ve veritabanında AES-256-GCM ile şifrelenerek Organization.erpConfig alanında saklanır. Şifreler API'den okunurken otomatik maskelenir (••••••••).

Admin Panel → ERP Ayarları

AlanÖrnek DeğerAçıklama
erpTypeECCSAP platform tipi
sapBaseUrlhttp://<SAP_HOST>:<PORT>SICF base URL
sapUsername<API_KULLANICI>SICF kullanıcı adı
sapPassword<API_SIFRESI>🔒 AES-256-GCM encrypted
sapClient<CLIENT_NO>SAP mandant
sapCompanyCode<BUKRS>Şirket kodu

Minimal .env (Sadece sistem seviyesi)

# Sadece şifreleme anahtarı .env'de tutulur
ENCRYPTION_KEY=<64_HEX_KARAKTER>   # 32-byte AES key
⚠️ ENCRYPTION_KEY production'da Docker Secret veya K8s Secret olarak yönetilmelidir. SAP kullanıcı adı/şifresi kesinlikle .env'de tutulmamalıdır.

3.9 Test Prosedürü

A) SAP Tarafı Test (SE38)

REPORT ZTEST_EXPENSE_POST.
" 1. ZEXP_S_POST_PAYLOAD yapısını doldur
" 2. DEBUGMODE = 'X' ile BAPI_ACC_DOCUMENT_CHECK çağır
" 3. RETURN tablosunu kontrol et → hata yoksa DEBUGMODE = '' ile tekrarla
" 4. BELNR alındı → FB03 ile belgeyi doğrula

B) REST Client Testi

curl -X POST http://<SAP_HOST>:<PORT>/sap/bc/zexpense/post_expense \
  -H "Content-Type: application/json" \
  -u "<USER>:<PASS>" \
  -d '{
    "COMPANYCODE":"<BUKRS>","EMPLOYEEID":"<VENDOR_NO>",
    "EXPENSEDATE":"20260324","POSTINGDATE":"20260324",
    "DOCUMENTTYPE":"SA","NETAMOUNT":100,"TAXAMOUNT":0,
    "GROSSAMOUNT":100,"TAXCODE":"V0","CURRENCY":"TRY",
    "GLACCOUNT":"<GL>","COSTCENTER":"<KY>",
    "DESCRIPTION":"Test","REFERENCE":"TEST-001","DEBUGMODE":"X"
  }'

C) Xpensio Uçtan Uca Test

  1. POST /api/v1/identity/sync → Kullanıcılar SAP'den çekildi
  2. Dashboard → Yeni masraf oluştur → Onayla
  3. Muhasebe → SAP'ye Gönder → Durum: POSTED_TO_SAP
  4. SAP FB03 ile belge numarasını doğrula

3.10 Kurulum Kontrol Listesi

SAP Tarafı

Xpensio Tarafı

4 S/4HANA On-Premise

IDENTITY_PROVIDER=SAP_S4_ONPREM SAP_TYPE=S4_ONPREM ABAP 7.50+

4.1 ECC ile Temel Farklar

ÖzellikECC 6.0S/4HANA On-Prem
MuhasebeKlasik FI (BKPF/BSEG)Universal Journal (ACDOCA)
ABAP7.0+ (eski syntax)7.50+ (inline DATA, string templates)
FI PostingBAPI_ACC_DOCUMENT_POSTBAPI compat veya OData v4
HR SyncCustom ABAPOData EmployeeEntity veya HCM compat
Silinen TablolarBSEG, BSIS, BSAS…Compatibility view olarak mevcut
💡 S/4HANA Universal Journal (ACDOCA), tüm FI/CO/ML/AA girişlerini tek tabloda birleştirir. Xpensio BAPI'si bu katmanın üzerinde çalışır.

4.2 FI Posting Yaklaşımları

Yaklaşım A — BAPI Compat (Önerilen, En Hızlı Kurulum)

S/4HANA BAPI_ACC_DOCUMENT_POST'u desteklemeye devam eder. Bölüm 3.23.7'deki ECC ABAP kodu ve DDIC nesneleri birebir çalışır. Tek değişiklik:

SAP_TYPE=S4_ONPREM   # (ECC yerine)

Yaklaşım B — OData v4 Journal Entry API

ABAP geliştirme yapmadan doğrudan S/4HANA standart OData servisi kullanılır:

POST /sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV/JournalEntryItem
Authorization: Basic <base64>
Content-Type: application/json

{
  "CompanyCode": "<BUKRS>",
  "PostingDate": "2026-03-24",
  "JournalEntryType": "SA",
  "to_JournalEntryItem": {
    "results": [
      { "GLAccount": "<GIDER_GL>", "DebitCreditCode": "S",
        "AmountInTransactionCurrency": "100.00", "CostCenter": "<KY>" },
      { "GLAccount": "<KARSI_GL>", "DebitCreditCode": "H",
        "AmountInTransactionCurrency": "120.00" }
    ]
  }
}
⚠️ OData yaklaşımı için /IWFND/MAINT_SERVICE'de servis aktive edilmeli + x-csrf-token yönetimi gerekli.

4.3 HR / Kimlik Sync

Seçenek A — HCM Compat: HCM modülü mevcutsa → Bölüm 3.4'teki ABAP user_list aynen uygulanır.

Seçenek B — OData EmployeeEntity:

GET /sap/opu/odata/sap/HCMFAB_EMPLOYEE_SRV/EmployeeCollection
  ?$select=EmployeeId,FirstName,LastName,EmailAddress,
           OrganizationalUnit,Position,Grade
  &$filter=IsActive eq true

Bu yaklaşımda ABAP geliştirme gerekmez; IDENTITY_PROVIDER=SAP_S4_ONPREM ile otomatik seçilir.

4.4 Bağlantı Yapılandırması (DB Encrypted)

Bölüm 3.8'deki yapı aynen geçerlidir. Admin Panel → ERP Ayarları:

AlanÖrnek DeğerAçıklama
erpTypeS4_ONPREMPlatform tipi
sapBaseUrlhttps://<S4_HOST>:<PORT>S/4 base URL
sapUsername<API_KULLANICI>SICF veya OData kullanıcısı
sapPassword<API_SIFRESI>🔒 AES-256-GCM encrypted
sapClient<CLIENT_NO>SAP mandant
sapCompanyCode<BUKRS>Şirket kodu
odataServicePath/sap/opu/odata/sap/API_JOURNAL…OData yaklaşımında ek path

4.5 Kontrol Listesi

5 S/4HANA Cloud + SuccessFactors

IDENTITY_PROVIDER=SAP_S4_CLOUD SAP_TYPE=S4_CLOUD ABAP Gerekmez

5.1 OAuth 2.0 Kurulumu (XSUAA / BTP)

  1. BTP Cockpit → Subaccount → Service Marketplace → S/4HANA Cloud aboneliği
  2. Service Instance oluştur → clientid ve clientsecret al
  3. Scope'lara Journal Entry API erişimi ekle

Token Endpoint

POST https://<XSUAA>.authentication.<REGION>.hana.ondemand.com/oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=<CLIENT_ID>
&client_secret=<CLIENT_SECRET>
💡 Token süresi genellikle 1800sn (30dk). Xpensio expire öncesi otomatik yeniler.

5.2 FI Posting — Journal Entry API

Adım 1: CSRF Token Al

GET /sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV/$metadata
Authorization: Bearer <TOKEN>
x-csrf-token: Fetch

→ Response Header: x-csrf-token: <CSRF_VALUE>

Adım 2: Journal Entry Oluştur

POST /sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV/JournalEntryItem
Authorization: Bearer <TOKEN>
x-csrf-token: <CSRF_VALUE>
Content-Type: application/json

{
  "CompanyCode": "<BUKRS>",
  "AccountingDocumentType": "SA",
  "DocumentReferenceID": "<EXPENSE_ID>",
  "PostingDate": "2026-03-24",
  "to_JournalEntryItem": {
    "results": [
      { "GLAccount": "<GIDER_GL>", "DebitCreditCode": "S",
        "AmountInTransactionCurrency": "100.00",
        "CostCenter": "<KY>", "TaxCode": "V5" },
      { "GLAccount": "<KARSI_GL>", "DebitCreditCode": "H",
        "AmountInTransactionCurrency": "120.00",
        "Vendor": "<TEDARIKCI_NO>" }
    ]
  }
}

5.3 HR Sync — SuccessFactors Employee Central API

SuccessFactors OAuth 2.0

POST https://<SF_HOST>/oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=<SF_CLIENT_ID>
&client_secret=<SF_CLIENT_SECRET>
&company_id=<SF_COMPANY_ID>

Çalışan Listesi

GET https://<SF_HOST>/odata/v4/sfsf/User
  ?$select=userId,firstName,lastName,email,department,
           jobTitle,managerId,payGrade
  &$filter=status eq 'active'
  &$top=1000
Authorization: Bearer <SF_TOKEN>

Departman Listesi

GET https://<SF_HOST>/odata/v4/sfsf/FODepartment
  ?$select=departmentId,name,headOfUnit,parentUnit
  &$filter=effectiveStatus eq 'A'

Pozisyon Listesi

GET https://<SF_HOST>/odata/v4/sfsf/Position
  ?$select=positionCode,externalName,payGrade
  &$filter=effectiveStatus eq 'A'

5.4 SuccessFactors → Xpensio Alan Eşleşmesi

SF OData AlanıXpensio DBNot
userIdexternalIdSF kullanıcı ID
emailemailPK — eşleşme anahtarı
firstName + lastNamenameBirleştirilir
departmentdepartmentCode→ departmentId FK
jobTitle / positionjobTitleUnvan
managerId → email resolvemanagerEmail2. sorgu ile resolve
payGradegradeSayısal (7–19)
status='active'isActive=true

5.5 Bağlantı Yapılandırması (DB Encrypted)

Bölüm 3.8'deki yapı aynen geçerlidir. Admin Panel → ERP Ayarları:

AlanÖrnek DeğerAçıklama
erpTypeS4_CLOUDPlatform tipi
s4CloudBaseUrlhttps://<S4CLOUD_HOST>S/4 Cloud API base
s4CloudTokenUrlhttps://<XSUAA>.authentication…XSUAA token endpoint
s4CloudClientId<CLIENT_ID>OAuth2 client
s4CloudClientSecret<CLIENT_SECRET>🔒 AES-256-GCM encrypted
sapCompanyCode<BUKRS>Şirket kodu
sfBaseUrlhttps://<SF_HOST>/odata/v4/sfsfSuccessFactors OData
sfTokenUrlhttps://<SF_HOST>/oauth/tokenSF OAuth2 token
sfClientId<SF_CLIENT_ID>SF OAuth2 client
sfClientSecret<SF_CLIENT_SECRET>🔒 AES-256-GCM encrypted
sfCompanyId<SF_COMPANY_ID>SF şirket ID

5.6 Kontrol Listesi

SAP BTP / S/4HANA Cloud

SuccessFactors

Xpensio

6 Güvenlik & Ağ Gereksinimleri

6.1 Ağ & Firewall

KaynakHedefPortProtokol
Xpensio BackendSAP ECC/S4 SICF8000/44300HTTPS
Xpensio BackendS/4 Cloud API443HTTPS (OAuth2)
Xpensio BackendSuccessFactors API443HTTPS (OAuth2)
Xpensio BackendBTP XSUAA Token443HTTPS
✅ SAP/ERP sunucusu ile Xpensio backend arasında VPN veya özel ağ (private link) bağlantısı önerilir.

6.2 Kimlik Bilgileri Yönetimi

6.3 SAP Tarafı Güvenlik


Xpensio SAP Entegrasyon Teknik Kılavuzu v2.0 — Mart 2026