Tips & Tricks – Voorkom performance problemen in CRM
Voorkom performance problemen in CRM
Introductie
Zodra een SAP CRM systeem wordt ingericht is het vaak onvermijdelijk, dat er soms
problemen optreden met de performance.
Dat is op zich niet zo verwonderlijk, want het CRM systeem wordt in zeer veel verschillende
omgevingen ingezet en het is welhaast onmogelijk om de optimale instellingen voor elke
omgeving bij de installatie en inrichting vast te stellen.
Daarvoor kunt u nu deze tip gebruiken. Hierbij wordt een groot aantal punten doorgenomen
met daarnaast ook nog waardevolle SAP Notes.
CRM WebClient
Laten we maar gelijk met de deur in huis vallen. SAP heeft voor de performance diverse
SAP Notes uitgebracht, die specifiek betrekking hebben op CRM WebClient. Dat zijn er best
wel veel, maar ik wil u er 3 niet onthouden.
Om SAP Notes te kunnen bekijken, dient u toegang te hebben tot SDN.
Om de CRM WebClient binnen een netwerk beter te laten functioneren, leest u de volgende
SAP Note en kijkt u welke acties voor u van toepassing zijn. In deze SAP Note staan ook vele
verwijzingen naar specifiekere SAP Notes.
1162605 Netwerk performance voor CRM (IC) WebClient
Om voor de CRM WebClient de juiste instellingen te krijgen, gebruikt u deze SAP Note. Ook
hierin staan verwijzingen naar andere SAP Notes.
1162685 SAP CRM WebClient performance
Om bij de gebruiker het geheugengebruik met CRM WebClient onder controle te houden
gebruikt u deze SAP Note.
1281896 Hoog geheugengebruik en CRM WebClient
VNSG magazine jaargang 18 NR. 1  MAART 2014
Blad 1
Tips & Tricks - Voorkom performance problemen in CRM
CRM WebClient UI Framework
Om de zaak beter te laten functioneren, zult u bij het inrichten van CRM WebClient UI
rekening moeten houden met een paar regels. Het is geen dwingende regelgeving, maar uw
gezond verstand is leidend.
1. Plaats uitsluitend de benodigde views/assignment blokken in de UI. Niet gebruikte
views/assignment blokken gebruiken zeer vaak het “lazy load” modus. Dit laatste
betekent, dat de ongebruikte blokken pas op het laatste moment worden geladen (als de
UI het scherm opbouwt) en dat werkt vertragend.
2. Plaats geen “dure” code in de methode DO_PREPARE_OUTPUT van de view controller.
Deze methode wordt namelijk bij elke scherm  CRM systeem interactie uitgevoerd.
Natuurlijk is dat handig om zeer specifieke taken uit te voeren, maar u dient er rekening
mee te houden, dat hierdoor de performance negatief kan worden beïnvloed, als er
uitgebreide activiteit moet plaatsvinden. Gebruik bij voorkeur de methode
DO_INIT_CONTEXT als er componenten (initieel) moeten worden voorzien van
gegevens.
3. Het is aanlokkelijk om complexe binding te gebruiken, maar toch moet u complexe
binding voorkomen. Complexe binding is de koppeling van een knooppunt (node), die in
zich eveneens koppelingen naar andere knooppunten (nodes) heeft. Een update van de
complexe node leidt dan tot de update van alle gekoppelde nodes, met performance
verlies tot gevolg.
4. Gebruik nooit de component set ALL in de UI componenten. Dit kost onnodig veel
geheugen en het is vrijwel nooit noodzakelijk. Kies altijd de minimaal nodige component
set.
5. Als u events registreert in de processen, vergeet dan niet om de events weer te
déregistreren, zodra ze niet meer nodig zijn. Geregistreerde events nemen ruimte in het
geheugen in en die ruimte kunt u wel voor iets anders gebruiken.
CRM WebClient UI Front-end
Als u bezig bent met de front-end en daarvoor JavaScript, HTML en zelfs CSS gebruikt,
moet u ook rekening houden met een aantal zaken, die invloed hebben op de performance.
1. Bij het zogenaamde renderen van de browserpagina’s wordt CPU gebruikt. Hierbij is
vooral de complexheid van JavaScript en HTML een mogelijke oorzaak van performance
problemen. Optimaliseer JavaScript zoveel mogelijk. En gebruik geen uitgebreide CSS
voor uw HTML code als met een compactere hetzelfde kan worden gebruikt.
VNSG magazine jaargang 18 NR. 1  MAART 2014
Blad 2
Tips & Tricks - Voorkom performance problemen in CRM
2. Als u een JavaScript laat uitvoeren bij het OnLoad event, houdt er dan rekening mee,
dat telkens wordt uitgevoerd, als het front-end scherm in de browser opnieuw wordt
opgebouwd. Dat is al het geval bij een kleine wijziging (bijvoorbeeld het wijzigen van een
knop van uit naar aan). Als die JavaScripts veel code bevatten, dan duurt het laden van
schermen langer.
3. Kijk uit met DOM operaties in het JavaScript. DOM elementen hebben (mogelijk)
onvoorspelbaar gedrag, evenals de hen omringende elementen. De oorzaak is veelal de
gebruikte browser (met name de wat oudere versies). Hierdoor worden veel scherm
elementen opnieuw opgebouwd bij elke wijziging van het DOM element. Bijvoorbeeld
het wijzigen van de stijl van het DOM element <table>, als deze een groot aantal
regels bevat, zorgt ervoor, dat het gehele element opnieuw moet worden opgebouwd.
En dat kost extra tijd.
4. De hoeveelheid regels in de CSS zorgt ervoor, dat de browser voor elk element, die
regels moet doorlopen. Beperk daarom de CSS tot datgene wat u nodig heeft. Het
gebruik van generieke “all-purpose” CSS sheets moet worden voorkomen.
5. Zorg ervoor, dat in uw HTML code alle tags worden gesloten. Dus in plaats van alleen
<br> te specificeren, specificeer <br></br>. Vertrouw er dus niet op, dat WebClient UI
dit soort “fouten” voor u oplost. Dat gebeurd wel, maar gaat ten koste van de
performance.
6. Kijk goed uit bij complexe HTML code. In feite moet u die zoveel mogelijk proberen te
vermijden. Dit is vooral waar bij geneste <table> tags.
BSP
De vorige paragraaf was generiek voor HTML, CSS en JavaScript. Toch behoren die
onderdelen ook tot de BSP’s in SAP CRM. De Business Server Pages maken gebruik van
HTML (via XHTML) en inline script blokken.
1. Beperk zoveel mogelijk het gebruik van inline script blokken op BSP views, waarvan de
inhoud regelmatig wijzigt. Omdat de WebClient UI normaal gebruik maakt van ADH
(Automatic Delta Handling) worden de inline script bij elke wijziging meegenomen, met
performance verlies tot gevolg. Probeer inline script alleen op stabiele schermen te
gebruiken. Er is echter een ander alternatief. Maak een aparte view aan, met daarin
alleen het inline script. De ADH pikt deze dan maar eenmalig op voor plaatsing in de
documentheader.
2. Hetzelfde geldt natuurlijk ook voor inline stijl blokken en daarbij kunt u hetzelfde
alternatief gebruiken.
VNSG magazine jaargang 18 NR. 1  MAART 2014
Blad 3
Tips & Tricks - Voorkom performance problemen in CRM
3. Het gebruik van een horizontale scrollbar kent ook een performance probleem. Met
name het zetten van chtmlb:configCellerator op scrollable (in vorige versies:
chtmlb:configTable) leidt tot performance verlies.
Als u toch wilt scrollen, overweeg dan het gebruik van div rondom de tabel (met een
overflow in de x-richting).
4. Als u verticale scrollbars wilt gebruiken, zorg er dan voor dat SAP Note 1247380 is
opgenomen in uw systeem.
1247380 THTMLB cellerator resizing performance
5. Minimaliseer het aantal zichtbare kolommen en rijen in tabel elementen. Minimaliseer
ook de tabelinhoud op de back-end. Beide hebben invloed op de performance. Maak op
de back-end desnoods een eigen interne tabel met alleen de noodzakelijke kolommen
en records erin.
6. Bij event afhandeling moet u geen items kruisen in de direct uit te voeren programma
logica voor de callback. Gebruik in plaats daarvan de “end of document” processen.
Omdat het direct uitvoeren daarmee tegelijk de overige items aantikt en vice versa
worden de callback meerdere malen uitgevoerd en dat willen we natuurlijk niet.
Back-end
Natuurlijk gebruikt u knooppuntbomen (trees) en tabellen. En natuurlijk wilt u die
configureren. Daarbij is het van belang, dat de back-end niet teveel tijd kwijtraakt met het
renderen van de webpagina’s waarop dat soort elementen aanwezig zijn.
1. In veel gevallen bevatten de UI componenten context nodes, die geen implementatie
hebben van een P-Getter methode. En als die wel aanwezig is, levert die methode geen
waarde terug. Dit leidt tot het heuristisch bepalen van het type van een kolom van een
tabel. En dat is een erg dure actie. Maak daarom voor elke kolom een P-Getter methode
en lever daarmee altijd het type van de kolomvelden aan. Dit voorkomt het heuristisch
bepalen van het type.
2. Implementeer SAP Note 1179315 voor een sterke verbetering van de performance voor
trees en tabellen.
1179315 - CRM Web UI: Backend performance of configurable tables/trees
3. Als de context node een herdefinitie van de methode GET_P_T_TABLE bevat,
implementeer dan SAP Note 1277270. Dit geldt alleen, indien SAP Note 1179315
(hierboven) is geïmplementeerd.
1277270 - WEBCUIF: Wrong field types after note 1179315
VNSG magazine jaargang 18 NR. 1  MAART 2014
Blad 4
Tips & Tricks - Voorkom performance problemen in CRM
4. Plaats geen dure code (uitgebreide handling) in field exits. Telkens als de rendering van
het veld plaatsvindt, wordt de exit code doorlopen. Het veld is onderdeel van een groter
element? Dan wordt de veld exit ook doorlopen als een ander onderdeel van dat
element wordt aangepast. En natuurlijk ook bij het renderen van de webpagina zelf.
5.
Meten is weten
Natuurlijk wilt u de performance meten.
Standaard heeft de WebClient (vanaf SAP CRM 7.0) de mogelijkheid om de performance na
te gaan. Ook heeft SAP een speciaal gereedschap hiervoor.
1. Druk op de toetscombinatie CTRL+SHIFT+F7. Hiermee wordt rechtsboven een nieuw
scherm (workframe area) geopend met daarin de back-end en front-end rendering tijden
worden weergegeven. De back-end rendering (ABAP verwerking) is 100% accuraat. De
front-end rendering geeft alleen de onderste limiet van de rendering weer, maar is
natuurlijk een indicatie over de werkelijke front-end render tijd.
2. De Performance Measurement Tool van SAP is beschikbaar via SAP Note 1041556.
1041556 - SAP HTTP PlugIn for IE
In deze SAP Note staan nog verwijzingen naar andere gerelateerde SAP Notes. De
metingen met dit gereedschap kunnen verder worden vergeleken met STAD records.
Via transactie STAD haalt u analyse gegevens naar voren over de performance van de
back-end.
Figuur 1 - Transactie STAD
VNSG magazine jaargang 18 NR. 1  MAART 2014
Blad 5
Tips & Tricks - Voorkom performance problemen in CRM
3. Natuurlijk kunt u ook de standaard SQL tracer van SAP gebruiken.
Dat is bijzonder handig bij de ontwikkeling van uw eigen BSP pagina’s. Terwijl u
ontwikkelt, kunt u delen alvast tussentijds testen op performance. Dat is beter dan
achteraf performance issues oplossen.
U roept de SQL tracer op via transactie ST05.
Figuur 2 - Transactie ST05
CRM functie customizing
CRM functies maken gebruik van acties. Daarbij gelden ook regels voor de performance.
1. Houd de condities zo simpel mogelijk, onafhankelijk of het een geplande actie of een
start actie is. Dit zorgt ervoor, dat het vaststellen van de actie (en rapport selectie) snel is
en blijft.
2. In plaats van op workflow gebaseerde condities, overweeg het gebruik van de BADI’s
EVAL_SCHEDCOND_PPF of EVAL_STARTCOND_PPF om een (veel) betere
performance te krijgen. Bij workflow wordt namelijk een parser gebruikt en wordt de data
generiek toegankelijk gemaakt, waardoor er een performance probleem kan ontstaan.
3. Gebruik verschillende PPF profielen voor verschillende business scenario’s. Het is iets
meer werk maar zorgt ervoor, dat de runtime erg snel blijft omdat er minder condities
gecontroleerd worden en er minder acties geladen worden.
VNSG magazine jaargang 18 NR. 1  MAART 2014
Blad 6
Tips & Tricks - Voorkom performance problemen in CRM
Tot slot nog een lijstje met SAP Notes
1. Help
1251767 - Automatic Delta Handling: Checking
2. Algemeen
1162605 - Network performance for CRM (IC) Webclient
1048388 - General Performance improvements of BSP transactions
3. Front-end
1255130 - WEBCUIF: Frotend performance w.r.t PAI and table lines
1252586 - WEBCUIF: Light-DDLB for improved performance
1256218 - WEBCUIF: Cellerator tag: Resizing performance enhancement
1280372 - Web Client UI: Performance when using F4 with help objects
1283980 - THTMLB cellerator sizing performance fix
1300154 - JavaScript circular reference fix in thtmlbUtil eventing
1301750 - Severe JavaScript memory leak fix
1302789 - JavaScript memory leak fix for IC in CRM 2007
1318610 - Frontend Selection for Web Client UI tables
1326441 - Debugging authority check performance improvement
4. Back-end
1244479 - CRM WebClient: Runtime related issues
Bovenal gebruik uw gezond verstand. Even een pas op de plaats en nadenken helpt
beter, dan snel een BSP in elkaar draaien. Deze tip geeft u aanknopingspunten om de
performance wat beter te doorgronden op een CRM systeem.
Deze tip is aangeleverd door Superp Technology Consultants BV (http://www.superp.nl/).
Voor vragen of extra informatie over dit onderwerp kunt u via email contact opnemen met
Robbie Veenstra (mailto:[email protected]).
VNSG magazine jaargang 18 NR. 1  MAART 2014
Blad 7
Herunterladen

download hier de uirgebreide informatie