SAP BW BEx query – Dataselectie op basis van invoer zoekstring gebruiker

Ton van Velzen | Als SAP BI consultant kom ik bij klanten nog regelmatig tegen dat SAP BI wordt gebruikt voor operationele activiteiten. Zo wordt er bijvoorbeeld voor een afdeling klantenservice periodiek een Excel bestand gedumpt met ‘actuele’ klantgegevens. Wanneer klantenservice contact heeft met een klant, wordt dit bestand geraadpleegd (op basis van een e-mailadres of een gedeelte daarvan) om de klantgegevens direct tot de beschikking te hebben.

Vanuit het automatiseringsperspectief is bovenstaande een behoorlijk omvangrijke exercitie om snel klantgegevens op te vragen door een (gedeeltelijk) e-mailadres. Bij voorkeur wordt deze functionaliteit aangeboden binnen het transactionele systeem. Daar deze mogelijkheid (nog) niet altijd wordt geboden, heb ik onderzocht wat de mogelijkheden zijn binnen SAP BW. Deze blog geeft een technische oplossing om binnen de BEx query informatie te kunnen opvragen met behulp van een zoekstring die de gebruiker zelf kan invoeren.

Implementatie

De volgende objecten zullen moeten worden aangemaakt of gewijzigd:

  • InfoObject: geldt als placeholder voor de invoerstring
  • Kubus: aan de kubus waaruit de informatie wordt opgehaald moet de placeholder (InfoObject) worden toegevoegd
  • BEx query: de query waarin de functionaliteit moet worden toegevoegd
  • BEx query variabelen:
    • Variabele die fungeert als placeholder voor de zoekstring
    • Variabele op het veld ‘Documentnummer’
  • ABAP-object klantuitbreiding voor query variabelen: voor de logica die gebruikt wordt om de juiste records te retourneren op basis van de ingevoerde zoekstring

InfoObject (ZTXT)

Creëer InfoObject ZTXT: Char, 60 lang en ‘kleine letters’ zijn toegestaan:

Magnus SAP BW BEx query 01

Kubus

Voeg ZTXT toe aan de kubus. Het InfoObject fungeert als placeholder en hoeft dus niet gevuld te worden vanuit een bron:

Magnus SAP BW BEx query 02

BEx query variabelen

  • Creëer de variabele (ZSRC_EGO) op ZTXT die fungeert als placeholder voor de zoekstring. Instellingen: Afzonderlijke waarde, Verplichte invoer en Variabele kan worden ingevoerd.
    Filter ZTXT in de BEx query met de variabele en met de waarde ‘Niet toegewezen (#)’. De waarde ‘Niet toegewezen’ is nodig, omdat het veld ZTXT geen waarden bevat in de kubus. Op deze manier zorgt de door de gebruiker ingevoerde zoekstring niet voor filterbeperkingen:
    Magnus SAP BW BEx query 03
  • Creëer de variabele (ZDOC_NR3) op het documentnummer. Instellingen: Klant-exit, Meerdere afzonderlijke waarden, Verplichte invoer en Variabele kan niet worden ingevoerd.
    Filter 0DOC_NUMBER in de BEx query met de variabele:
    Magnus SAP BW BEx query 04

ABAP-object klantuitbreiding voor query variabelen

In transactie CMOD wordt de logica voor Klant-exit variabelen vastgelegd. Globaal worden hier de volgende stappen doorlopen:

  • Uitlezen van de door de gebruiker ingevoerde waarde en de transformatie van deze waarde in een zoekstring:
    Magnus SAP BW BEx query 05
  • Het klantenbestand (nummer + e-mailadres) wordt in een interne tabel gelezen en de e-mailadressen worden omgezet naar hoofdletters. De waarde in de zoekstring is namelijk ook in hoofdletters.
  • Het klantenbestand wordt afgezocht naar klanten die een match hebben met de ingevoerde zoekstring:
    Magnus SAP BW BEx query 06
  • Als laatste stap worden de actuele orders geselecteerd voor de betreffende klanten. Deze orders worden geretourneerd naar de variabele ZDOC_NR3.

Uitvoer

Wanneer het rapport wordt geraadpleegd, ziet dit er als volgt uit:

  • Invullen zoekstring:
    Magnus SAP BW BEx query 07
  • Resultaat (vertrouwelijke informatie is buiten beschouwing gelaten):
    Magnus SAP BW BEx query 08

Analysis for Excel

Ik had de uitvoer van deze functionaliteit graag willen demonstreren in Business Objects Analysis voor Excel. Echter, in Analysis for Excel kreeg ik een foutmelding. In Analysis for Excel wordt gecontroleerd of de ingevoerde waarde daadwerkelijk bestaat in de SID-tabel van het InfoObject ZTXT. Veelal bestaat deze ‘zoekstring’ niet in de SID-tabel, wat resulteert in de foutmelding. In de BEx Analyzer daarentegen wordt voor de ingevulde waarde automatisch een SID aangemaakt. Vandaar dat de oplossing wel werkt in de BEx Analyzer. Wellicht in een volgende blog, zal ik je op de hoogte brengen hoe deze functionaliteit werkend te krijgen in Analysis for Excel….

Ton van Velzen is managing analytics consultant bij Magnus. Binnen het Magnus Analytics team houden we ons bezig met het realiseren en implementeren van SAP Analytics oplossingen. Daarbij leggen we de focus op SAP Business Planning & Consolidation, Mobile BI, Design Studio, Predictive Analyses, HANA en Datawarehousing architecturen.