Forskellen mellem brugerudgang og kundeudgang i SAP
⚡ Smart opsummering
Brugerudgange og kundeudgange i SAP ABAP er forbedringshooks, der tilføjer brugerdefineret funktionalitet til standardprogrammer uden at ændre SAP kode. Denne side forklarer kunders exit-typer, udregnede eksempler, SMOD- og CMOD-transaktioner, brugerexits og hvordan de to teknikker adskiller sig.

Hvad er kunde-exits?
Kundeudgange er "kroge" fra SAP indenfor mange standardprogrammer, skærme og menuer, hvorpå kunderne evt "hænge" Tilpasset funktionalitet, der opfylder forretningskrav. Mere om dette om et øjeblik…
Den vigtigste fordel er, at standarden SAP objektet ændres aldrig. Den brugerdefinerede kode sidder i en reserveret inkludering eller underskærm, der SAP opkald på det rigtige tidspunkt, så forbedringen overlever en systemopgradering i stedet for at blive overskrevet. På grund af dette tilhører exits familien af SAP forbedringsteknikker sammen med det nyere Business Add-in.
Typer af kundeudgange
Der er tre hovedtyper af kundeudgange:
- Funktionsmodul afsluttes
- Skærm afsluttes
- Menuen afsluttes
Funktionsmodul AfslutDet giver kunden mulighed for at tilføje kode via et funktionsmodul på en specifik placering i en SAP ansøgningsprogram
Syntax: CALL CUSTOMER-FUNCTION '004'
Skærm AfslutDet giver kunden mulighed for at tilføje felter til en skærm i en SAP program via en underskærm. Underskærmen kaldes inden for standardskærmens flowlogik.
Format: CALL CUSTOMER-SUBSCREEN CUSTSCR2
Menu Afslut: Det giver kunden mulighed for at tilføje elementer til en rullemenu i en standard SAP program. Disse elementer kan bruges til at kalde tilføjelsesprogrammer eller brugerdefinerede skærme.
Format: +CUS ( additional item in GUI status )
Eksempler på kundeudgange
Eksempel på en skærmudgang:
I transaktion CAT2 – Time Sheet Entry ønsker HR at inkludere en interaktiv anerkendelse af, at bevidst indsendelse af ukorrekte data er grund til afskedigelse.
Eksempel på menuafslutning:
I transaktion SE38 – ABAP Editor ønsker udviklingsteamet at inkludere et menulink til transaktion SE80 – Object Navigator for at gøre det nemt at bruge.
FØR
EFTER
Eksempel på en funktionsmoduludgang:
Virksomheden ønsker, at bankoplysningerne for kreditorerne i kreditoroprettelsen skal være obligatoriske begivenheder. Så den skal blinke en fejlmeddelelse om, at 'Indtast venligst bankoplysninger'
FØR
EFTER
Lokalisering af kundeudgange
I transaktion SMOD og se detaljerne -
Eller i transaktion SE81 du kan bruge det relevante anvendelsesområde
Opret en kundeafslutning
For at oprette en kundeexit skal du først oprette et projekt i transaktion CMOD
Later du tildeler Customer Exit til dit projekt.
Hele sekvensen fra at finde udgangen til at aktivere koden er kort, og den følger altid de samme seks trin.
- Find forbedringen: Find navnet på forbedringen i SMOD, for eksempel komponenten EXIT_SAPMF02K_001 for leverandørstamdataene.
- Opret projektet: I CMOD skal du indtaste et projektnavn, der starter med Z eller Y, og vælge Opret.
- Tildel forbedringen: På skærmbilledet Forbedringstildelinger skal du tilføje det forbedringsnavn, der indeholder exit'en.
- Skriv koden: Åbn funktionsmodulets exit, og placer koden i dens reserverede include, som starter med ZX.
- Håndter skærm- og menudele: For en skærmafslutning skal du bygge underskærmen CUSTSCR, og for en menuafslutning skal du udfylde funktionskoden +CUS i GUI-statussen.
- Aktivér projektet: Aktivér projektet i CMOD, så exit kaldes under kørsel. Uden aktivering ignoreres koden.
💡 Tip: Inkluderingen af en funktionsmodul-exit starter med ZX, så den transporteres med projektet. Placer aldrig den brugerdefinerede logik direkte i SAP funktionsmodulet, fordi det ville være en ændring, ikke en forbedring.
Hvad er en brugerudgang?
Brugerudgang tjener samme formål som kundeudgange, men de er kun tilgængelige for SD modul. Afslutningen implementeres som et kald til et funktionsmodul. Koden er skrevet af udvikleren.
Velkendt User Exit i SD er MV45AFZZ
- USEREXIT_FIELD_MODIFICATION – For at ændre skærmattributter
- USEREXIT_SAVE_DOCUMENT – For at udføre handlinger, når brugeren trykker på Gem
- USEREXIT_SAVE_DOCUMENT_PREPARE
- USEREXIT_MOVE_FIELD_TO_VBAK – Når brugerhovedændringer flyttes til overskriftsarbejdsområde.
- USEREXIT_MOVE_FIELD_TO_VBAP – Når brugerelementændringer flyttes til SAP emne arbejdsområde
En brugerexit er teknisk set en subrutine (en FORMULAR) inde i en SAP include, så den redigeres direkte og kræver en adgangsnøgle. Dette er den primære praktiske forskel fra en kundeexit, som er opsummeret i næste afsnit.
Brugerudgang vs. kundeudgang
Begge teknikker tilføjer brugerdefineret adfærd til standard SAP, men de adskiller sig i omfang, teknologi og hvor opgraderingssikre de er. Tabellen nedenfor sammenligner dem.
| Kriterier | Brugerafslutning | Kundeudgang |
|---|---|---|
| tilgængelighed | Kun SD-modul | På tværs af det hele SAP moduler |
| Teknik | Subrutine (FORM) i en SAP inkluderer såsom MV45AFZZ | Funktionsmodul, skærm eller menuafslutning administreret i SMOD og CMOD |
| Adgangsnøgle | Kræver en adgangsnøgle til ændring | Ingen adgangsnøgle nødvendig |
| Upgrade adfærd | Skal kontrolleres i opgraderingen med SPAU | Upgrade sikker, kaldet fra en reserveret inkludering |
| Administreret af | Redigeret direkte i inkluderingen | Aktiveret gennem et CMOD-projekt |
Kundeudgange er den sikreste og mest generelle af de to. For forbedringer, som ingen af udgangene kan nå, SAP introducerede senere Business Add-In.
Kundeafgange vs. BAdI
A Virksomheds-tilføjelsesprogram (BAdI) er den objektorienterede efterfølger til customer exit. I stedet for en reserveret include definerer en BAdI en grænseflade, og den brugerdefinerede logik sidder i en klasse, der implementerer den. Dette medfører to fordele, som en customer exit ikke tilbyder.
- Flere implementeringer: En BAdI til flere anvendelser tillader flere uafhængige implementeringer af den samme forbedring, mens en kundeexit kun tillader én.
- Objektorientering: En BAdI fungerer med metoder og klasser, så den passer til moderne ABAP Objects-udvikling og er nemmere at filtrere efter land eller forretningsscenarie.
Den praktiske regel er enkel: brug en eksisterende kunde- eller bruger-exit, når forbedringspunktet allerede findes, og brug en BAdI, når et nyt, genanvendeligt forbedringspunkt er påkrævet.








