Skillnaden mellan användarutgång och kundutgång i SAP
⚡ Smart sammanfattning
Användarutgångar och kundutgångar i SAP ABAP är förbättringshooks som lägger till anpassad funktionalitet till standardprogram utan att modifiera SAP kod. Den här sidan förklarar kundutgångstyper, utförda exempel, SMOD- och CMOD-transaktioner, användarutgångar och hur de två teknikerna skiljer sig åt.
Vad är kundutgångar?
Kundutgångar är "krokar" tillhandahålls av SAP inom många standardprogram, skärmar och menyer som kunderna kan "hänga" anpassad funktionalitet för att möta affärskrav. Mer om detta strax…
Den största fördelen är att standarden SAP objektet ändras aldrig. Den anpassade koden finns i en reserverad inkludering eller underskärm som SAP samtal vid rätt tillfälle, så att förbättringen överlever en systemuppgradering istället för att skrivas över. På grund av detta tillhör utgångar familjen av SAP förbättringstekniker tillsammans med det nyare Business Add-In.
Typer av kundutgångar
Det finns tre huvudtyper av kundexit:
- Funktionsmodul går ut
- Skärmen avslutas
- Menyn avslutas
Funktionsmodul ExitDet låter kunden lägga till kod via en funktionsmodul på en specifik plats i en SAP applikationsprogram
Syntax: CALL CUSTOMER-FUNCTION '004'
Avsluta skärmenDet låter kunden lägga till fält på en skärm i en SAP program via en underskärm. Underskärmen anropas inom standardskärmens flödeslogik.
Format: CALL CUSTOMER-SUBSCREEN CUSTSCR2
Meny avsluta: Det låter kunden lägga till objekt i en rullgardinsmeny i en standardmeny SAP programmera. Dessa objekt kan användas för att anropa tilläggsprogram eller anpassade skärmar.
Format: +CUS ( additional item in GUI status )
Exempel på kundavgångar
Exempel på en skärmutgång:
I transaktionen CAT2 – Time Sheet Entry vill HR inkludera en interaktiv bekräftelse på att att medvetet skicka in felaktiga uppgifter är skäl för uppsägning.
Exempel på menyavslut:
I transaktion SE38 – ABAP Editor, vill utvecklingsteamet inkludera en menylänk till transaktion SE80 – Object Navigator för enkel användning.
INNAN
EFTER
Exempel på en funktionsmodulutgång:
Företaget vill att bankuppgifterna för leverantörerna i skapandet av leverantören ska vara obligatoriska händelser. Så det måste blinka ett felmeddelande som "Vänligen ange bankuppgifterna"
INNAN
EFTER
Lokalisera kundutgångar
I transaktion SMOD och titta på detaljerna-
Eller i transaktion SE81 du kan använda lämpligt applikationsområde
Skapa en kundutgång
För att skapa en kundutgång måste du först skapa ett projekt i transaktion CMOD
Later du tilldelar Customer Exit till ditt projekt.
Hela sekvensen från att hitta utgången till att aktivera koden är kort och följer alltid samma sex steg.
- Hitta förbättringen: Leta reda på förbättringsnamnet i SMOD, till exempel komponenten EXIT_SAPMF02K_001 för leverantörsmall.
- Skapa projektet: I CMOD anger du ett projektnamn som börjar med Z eller Y och väljer Skapa.
- Tilldela förbättringen: På skärmen Förbättringstilldelningar lägger du till förbättringsnamnet som innehåller utgången.
- Skriv koden: Öppna funktionsmodulens utgång och placera koden i dess reserverade include, som börjar med ZX.
- Hantera skärm och menydelar: För en skärmutgång, bygg underskärmen CUSTSCR, och för en menyutgång, fyll i funktionskoden +CUS i GUI-status.
- Aktivera projektet: Aktivera projektet i CMOD så att exit anropas vid körning. Utan aktivering ignoreras koden.
💡 Tips: Inkluderingen av en funktionsmoduls exit börjar med ZX, så den transporteras med projektet. Placera aldrig den anpassade logiken direkt i SAP funktionsmodulen, eftersom det skulle vara en modifiering, inte en förbättring.
Vad är en användarutgång?
User Exit tjänar samma syfte som Customer Exit men de är endast tillgängliga för SD modul. Utgången implementeras som ett anrop till en funktionsmodul. Koden är skriven av utvecklaren.
Väl vet User Exit i SD är MV45AFZZ
- USEREXIT_FIELD_MODIFICATION – För att ändra skärmattribut
- USEREXIT_SAVE_DOCUMENT – För att utföra operationer när användaren trycker på Spara
- USEREXIT_SAVE_DOCUMENT_PREPARE
- USEREXIT_MOVE_FIELD_TO_VBAK – När ändringar i användarhuvudet flyttas till huvudarbetsområdet.
- USEREXIT_MOVE_FIELD_TO_VBAP – När ändringar av användarobjekt flyttas till SAP artikel arbetsområde
En användarutgång är tekniskt sett en subrutin (ett FORMULÄR) inuti en SAP include, så den redigeras direkt och kräver en åtkomstnyckel. Detta är den huvudsakliga praktiska skillnaden från en kundutgång, sammanfattad i nästa avsnitt.
Användarutgång kontra kundutgång
Båda teknikerna lägger till anpassat beteende till standard SAP, men de skiljer sig åt i omfattning, teknik och hur uppgraderingssäkra de är. Tabellen nedan jämför dem.
| Kriterier | Användarutgång | Kundutgång |
|---|---|---|
| Tillgänglighet | Endast SD-modul | Över alla SAP moduler |
| Teknik | Subrutin (FORM) i en SAP inkluderar såsom MV45AFZZ | Funktionsmodul, skärm eller menyutgång hanterad i SMOD och CMOD |
| Snabbtangent | Kräver en åtkomstnyckel för ändringar | Ingen åtkomstnyckel behövs |
| Upgrade beteende | Måste kontrolleras i uppgraderingen med SPAU | Upgrade säker, anropad från en reserverad inkludering |
| Hanteras av | Redigerad direkt i inkluderingen | Aktiverad genom ett CMOD-projekt |
Kundutgångar är den säkrare och mer generella av de två. För förbättringar som ingen av utgångarna kan nå, SAP introducerade senare Business Add-In.
Kundutgångar kontra BAdI
A Företagstillägg (BAdI) är den objektorienterade efterföljaren till kundutgången. Istället för en reserverad include definierar en BAdI ett gränssnitt, och den anpassade logiken finns i en klass som implementerar det. Detta medför två fördelar som en kundutgång inte erbjuder.
- Flera implementeringar: En BAdI för flera användningsområden tillåter flera oberoende implementeringar av samma förbättring, medan en kundutgång endast tillåter en.
- Objektorientering: En BAdI arbetar med metoder och klasser, så den passar modern ABAP Objects-utveckling och är enklare att filtrera efter land eller affärsscenario.
Den praktiska regeln är enkel: använd en befintlig kundutgång eller användarutgång när förbättringspunkten redan finns, och använd en BAdI när en ny, återanvändbar förbättringspunkt krävs.









