Personal Object Work List
Personal Object Work List, Power List of kort POWL is een query dat de gebruiker een overzicht geeft van zijn of haar persoonlijke werklijst. NetWeaver bevat een groot aantal standaard POWL’s, veelal gegroepeerd in rollen zoals “Inkoper”, “Verkoper”, etc. Daarnaast biedt het de mogelijkheid om zelf nieuwe queries te definiëren. Gebruikers hoeven niet meer verschillende transacties of rapporten in het backend uit te voeren om alle informatie boven water te halen.
Een POWL kan worden ontsloten via een SAP Portal of SAP NetWeaver Business Client of kan stand-alone via een URL uitgevoerd worden. POWL’s zijn eenvoudig en snel te bouwen en te ontsluiten via de portal en kunnen via rollen gegroepeerd worden aangeboden aan de gebruiker.
In deze tutorial wordt beschreven hoe een eenvoudige POWL gecreëerd kan worden. In een volgende tutorial zal worden beschreven hoe de POWL query kan worden ontsloten via een Web Dynpro for ABAP component. Deze eerste tutorial doorloopt de volgende stappen:
- Creëren van een nieuwe “Feeder-klasse”;
- Data container definiëren;
- Ophalen van de data uit de database;
- Selectiecriteria definiëren;
- Definiëren van een applicatie, type, rollen en query.
Stap 1. Creëer een nieuwe klasse die gebruik maakt van interface IF_POWL_FEEDER.
Start transactie SE24, vul een naam voor de klasse in en klik op creëren. Bevestig de pop-up schermen. Selecteer het tabblad Interfaces en voeg interface IF_POWL_FEEDER toe.

In het tabblad Methoden verschijnen de volgende methodes:
IF_POWL_FEEDER~GET_ACTIONS en IF_POWL_FEEDER~HANDLE_ACTION
Deze methodes worden gebruikt om buttons te creëren en acties voor de buttons te definiëren. Denk bijvoorbeeld aan het starten van een transactie wanneer de gebruiker op een button klikt.
IF_POWL_FEEDER~GET_ACTION_CONF
Via methode GET_ACTION_CONF kan een pop-up venster getoond worden voor bijvoorbeeld het bevestigen van een bepaalde actie.
IF_POWL_FEEDER~GET_SEL_CRITERIA
In methode GET_SEL_CRITERIA worden de toegestane selectiecriteria gedefinieerd. Selectiecriteria worden toegevoegd aan export parameter C_SELCRIT_DEFS.
IF_POWL_FEEDER~GET_FIELD_CATALOG
In deze methode worden de selectiecriteria en de layout van de ALV weergave gedefinieerd. Als deze methode niet geïmplementeerd wordt, worden alle structuurvelden in de standaard ALV layout getoond.
IF_POWL_FEEDER~GET_OBJECT_DEFINITION
In methode GET_OBJECT_DEFINITION wordt een tabeltype toegewezen aan het resultaat. Dit bepaald waar de resultaten worden opgeslagen.
IF_POWL_FEEDER~GET_OBJECTS
Het ophalen van de data uit de database gebeurd via methode GET_OBJECTS. Alle selectiecritia zijn in deze methode beschikbaar in import parameter I_SELCRIT_VALUES. Het resultaat wordt aan export parameter E_RESULTS toegewezen.
IF_POWL_FEEDER~GET_DETAIL_COMP
Methode GET_DETAIL_COMP kan gebruikt worden voor het tonen van detailgegevens onder de POWL lijst.

Voor een functionerende POWL rapportage, dienen minimaal de methodes GET_OBJECTS en GET_OBJECT_DEFINITION geimplementeerd te worden. In deze tutorial, worden de methodes GET_OBJECT_DEFINITION, GET_OBJECTS en GET_SEL_CRITERIA geimplementeerd.
Stap 2. Definiëer een data container in methode GET_OBJECT_DEFINITION.
In methode GET_OBJECT_DEFINITION wordt een structuur toegewezen aan export parameter E_OBJECT_DEF. Definieer een attribuut GT_SFLIGHT in het tabblad Attributen.

Wijs de attribuut in methode GET_OBJECT_DEFINITION toe aan de export parameter E_OBJECT_DEF:
e_object_def ?= cl_abap_tabledescr=>describe_by_data( gt_sflight ).
Als gebruik gemaakt wordt van verschillende POWL typen, kan met behulp van parameter I_TYPE verschillende attributen toegewezen worden.
Stap 3. Dataselectie in methode GET_OBJECTS.
Dataselectie wordt in methode GET_OBJECTS gerealiseerd. Importparameter I_SELCRIT_VALUES bevat alle selectiecriteria. Het resultaat van de dataselectie moet aan parameter E_RESULTS worden toegewezen. In het voorbeeld hieronder worden alle records uit databasetabel SFLIGHT opgehaald op basis van het carrier ID, connection ID en flightdate uit het selectiescherm.
METHOD if_powl_feeder~get_objects.
DATA: ls_selcrit TYPE rsparams.
DATA: lt_carrid TYPE RANGE OF s_carr_id,
ls_carrid LIKE LINE OF lt_carrid,
lt_connid TYPE RANGE OF s_conn_id,
ls_connid LIKE LINE OF lt_connid,
lt_fldate TYPE RANGE OF s_date,
ls_fldate LIKE LINE OF lt_fldate.
DATA: lt_sflight TYPE TABLE OF sflight.
DATA: lt_result LIKE TABLE OF gs_sflight,
ls_result LIKE gs_sflight.
FIELD-SYMBOLS: <sflight> LIKE gs_sflight.
LOOP AT i_selcrit_values INTO ls_selcrit.
CASE ls_selcrit-selname.
WHEN 'CARRID'.
ls_carrid-sign = ls_selcrit-sign.
ls_carrid-option = ls_selcrit-option.
ls_carrid-low = ls_selcrit-low.
ls_carrid-high = ls_selcrit-high.
APPEND ls_carrid TO lt_carrid.
WHEN 'CONNID'.
ls_connid-sign = ls_selcrit-sign.
ls_connid-option = ls_selcrit-option.
ls_connid-low = ls_selcrit-low.
ls_connid-high = ls_selcrit-high.
APPEND ls_connid TO lt_connid.
WHEN 'FLDATE'.
ls_fldate-sign = ls_selcrit-sign.
ls_fldate-option = ls_selcrit-option.
ls_fldate-low = ls_selcrit-low.
ls_fldate-high = ls_selcrit-high.
APPEND ls_fldate TO lt_fldate.
ENDCASE.
ENDLOOP.
SELECT * FROM sflight INTO TABLE lt_sflight
WHERE carrid IN lt_carrid
AND connid IN lt_connid
AND fldate IN lt_fldate.
LOOP AT lt_sflight ASSIGNING <sflight>.
MOVE-CORRESPONDING <sflight> TO ls_result.
INSERT ls_result INTO TABLE lt_result.
ENDLOOP.
e_results = lt_result.
ENDMETHOD.
Stap 4. Definieer selectiecriteria in methode GET_SEL_CRITERIA.
Selectiecriteria worden gedefinieerd in methode GET_SEL_CRITERIA. De methode heeft een changing parameter GET_SEL_CRITERIA waar de selectiecriteria aan toegevoegd worden. In het voorbeeld hieronder wordt een select option toegevoegd voor het veld CARRID.
Het veld “KIND” bepaald of het een select option (S) of parameter (P) betreft. Via “PARAM_TYPE” kan het veld gedefinieerd worden als invoerveld (I), checkbox (C), dropdownlijst (D) of tekstregel (T). “SELOPT_TYPE geeft aan of het een select option met interval en meervoudige selectie is (A), een select option zonder meervoudige selectie (I), een select option zonder interval (M) of een select option zonder interval met complexe inperking (C).
CLEAR ls_selcrit.
ls_selcrit-selname = 'S_CARRID'.
ls_selcrit-kind = 'S'.
ls_selcrit-param_type = 'I'.
ls_selcrit-selopt_type = 'A'.
ls_selcrit-mandatory = 'X'.
ls_selcrit-quicksearch_crit = 'X'.
ls_selcrit-datatype = 'S_CARR_ID'.
ls_selcrit-ref_table = 'SFLIGHT'.
ls_selcrit-ref_field = 'CARRID'.
ls_selcrit-allow_admin_change = 'X'.
APPEND ls_selcrit TO c_selcrit_defs.
Stap 5. Definieer een application ID.
Via customizingtransactie FPB_MAINTAIN_HIER kan een applicatie gedefinieerd worden. De applicatie wordt aangeroepen in een Web Dynpro for ABAP component.

Stap 6. Definieer een POWL type.
Met transactiecode POWL_TYPE kunnen één of meerdere POWL Typen gedefinieerd worden en gekoppeld worden aan de Feeder klasse. Het type is als import parameter beschikbaar in alle methodes van de Feeder klasse.

Stap 7. Koppel de Applicatie aan het Type.
Koppel de Types uit de voorgaande stap aan de POWL applicatie met transactiecode POWL_TYPER. Aan een applicatie kunnen meerdere Types gekoppeld worden.

Stap 8. Definieer queries.
Definieer één of meerdere queries via transactiecode POWL_QUERY. Deze queries zijn standaard voor de gebruiker beschikbaar. Onder de button Queryparameter kan een default selectie ingevuld worden. Onder Queryinstellingen kan de status van selectievelden ingesteld worden: verplicht, alleen lezen of verborgen. De instellingen overschrijven voor de betreffende query de instellingen uit methode GET_SEL_CRITERIA.

Stap 9. Koppel de applicatie aan een query.
In transactiecode POWL_QUERYR worden de queries toegewezen aan een applicatie. Markeer het selectieveld ‘Activ’.




