Inleiding
Door workflow taken aan meerdere personen toe te kennen ontstaat een gedeelde verantwoordelijkheid voor de verwerking. Een nadeel hiervan kan zijn dat het aantal taken in de workflow inbox snel oploopt, met een mindere performance van de SAP Workflow inbox tot gevolg. Een voorbeeld hiervan is de vaak grote workflow inbox van de crediteurenadministratie.
Een recente SAP OSS note verbetert de performance van het ophalen van taak specifieke attributen binnen de Fiori My Inbox app. De in deze note beschreven methodiek werkt ook voor de SAP GUI Workflow inbox (transactie SBWP) voor de professional users.
Er bestond natuurlijk al de mogelijkheid om een BAdI te implementeren, zodat de dynamische kolommen in één keer gevuld worden voor de gehele lijst work items. Ter volledigheid worden in dit stuk beide methoden beschreven.
Vullen van dynamische kolommen met "user attributes"
Dynamische kolommen (transactie SWL1) worden ingericht worden op taakniveau. Het gebruik van dynamische kolommen in de SAP Business Workplace (transactie SBWP) maakt het mogelijk taken te prioriteren op applicatie context.
Zie hieronder voor een voorbeeld van een workflow inbox waarbij dynamische kolommen worden gebruikt.
Standaardgedrag van de SAP Workflow runtime is dat de inhoud van de dynamische kolommen wordt vastgesteld op het moment dat de inbox wordt geopend. Bij binnenkomst van de inbox moeten alle workflow containers worden gelezen en de dynamische kolom waarden moet voor elk werkitem worden geëvalueerd. Het lezen van workflow containers, instantiëren van objecten en vervolgens het uitlezen de attributen is niet geoptimaliseerd voor massale verwerking waardoor de performance afneemt.
Met de introductie van OSS note 2023356 werd het mogelijk in de Fiori My Inbox app aan de takenlijst (de master list links in de app) taak-specifieke informatie toe te voegen. Deze functionaliteit is vergelijkbaar met dynamische kolommen in de SAP Business Workplace. Denk hierbij aan bijvoorbeeld aan het tonen van bedrag- of datumvelden of de naam van de leverancier. Grote voordeel hierbij is, dat er vervolgens op deze informatie in de takenlijst gezocht kan worden via de zoekfunctionaliteit.
Deze zogenaamde “user attributes” worden periodiek in batch bepaald en opgeslagen in tabel SWW_USRATT. In een tweede stap, maakte SAP met de introductie van OSS note 2089151 de koppeling tussen de SWL1 data (dynamische kolom definitie in de backend) en de user attributes mogelijk. De inrichting hiervan geschiedt met behulp van het rapport RSWD_MAINTAIN_USER_ATTR. Rapport RSWW_FILL_USER_ATTR kan gebruikt worden voor de initiële bepaling en eventuele her-indexatie van de actieve work items.
De SAP Workflow inbox SBWP zal eerst de genoemde tabel raadplegen. Als deze er niet is wordt de waarde bepaald op de standaard wijze door het uitlezen van de workflow containers of object attributen. Er kan worden gecustomized welke dynamische kolommen gebufferd moeten worden en welke niet. Aan verandering onderhevige dynamische kolommen kunnen dus van buffering worden uitgesloten.
Probleem dat hierbij kan ontstaan is, dat de gebufferde waarden kunnen verouderen. Hiervoor kan de genoemde job ingepland worden. Deze zal de gebufferde waarden regelmatig bijwerken.
In bepaalde situaties dient de beschreven methodiek niet gebruikt te worden:
- Het object attribuut is taalafhankelijk. De job die de attributen bepaald zal mogelijk onder een systeemgebruiker, bijvoorbeeld WF-BATCH, draaien. In dit geval zou dit de taal moeten zijn van de eindgebruiker.
- De kolom bevat een datum- of tijd veld. Indien het work item in een andere tijdzone is gecreëerd wordt deze wellicht gevuld met een verkeerde waarde voor de eindgebruiker.
Zie OSS note 2143729 (SBWP: Filling dynamic columns with user attributes) voor meer details.
Vullen van dynamische kolommen via een BAdI
Er is ook een Business Workplace BAdI beschikbaar voor het geoptimaliseerd bepalen van de inhoud van dynamische kolommen, zie SAP OSS note 848382.
De BAdI WF_BWP_DYN_COLUMN kan gebruikt worden om de standaard bepaling van de dynamische kolommen te omzeilen. Deze BAdI maakt het mogelijk om direct te selecteren op database niveau.
Een nadeel van deze methode is dat de ABAP logica voor het bepalen van de waarde wellicht al gedefinieerd is in de business object attributen of methoden. Deze logica zal opnieuw geschreven moeten worden voor de batch bepaling van de kolomwaarden.
Er is een voorbeeld implementatie van de BAdI WF_BWP_DYN_COLUMN beschikbaar: klasse CL_EXM_IM_WF_BWP_DYN_COLUMN bevat logica voor de bepaling van de dynamische kolommen van taak TS30000016 (goedkeuren verlofaanvragen).
Ter illustratie van de mogelijke performance winst bij gebruik van BAdi WF_BWP_DYN_COLUMN wordt 2 maal de SAP Business Workplace geopend. Eenmaal wordt de BAdi uitgeschakeld, de tweede maal wordt deze ingeschakeld.
Zonder BAdi is de responsetijd 25179 milliseconden, met BAdi is de responsetijd 5382 milliseconden. Een performanceverbetering van 467%!
Voor vragen of extra informatie over dit onderwerp kunt u contact opnemen met Sander van der Wijngaart.