Intégrer un rapport RS dans les rapports PPS


Une des demandes qui revient de plus en plus fréquemment, c’est la possibilité d’inclure un ou plusieurs rapports personnalisés dés la phase de proposition d’idée.


Récemment, un rapport m’a été demandé, permettant de mettre rapidement en évidence la différence entre les dépenses et les bénéfices (type ROI).


Cet article décrit comment utiliser Reporting Service (Composant de SQL Server) afin de créer un rapport incluant les informations des bases de Portfolio Server.


Il faut savoir que par défaut, à partir du menu « Project report » d’une fiche Projet de PPS, l’application passe les paramètres suivants au serveur de rapport :


clip_image002


Il sera donc nécessaire que l’un de ces paramètres soit inclus dans votre rapport. Le plus souvent seul le paramètre « OriginalID » est nécessaire (et suffisant).


1/ création du rapport


Le Rapport va être créé avec Reporting Services 2005. Dans le menu « Start/All programs/Microsoft SQL Server 2005/SQL server Business Intelligence Development Studio ».


Vous pouvez au choix utiliser le guide de rapport ou créer directement votre rapport


A/ Requête d’extraction de données


Dans l’onglet « Data », renseignez la requête permettant d’extraire les données de la base


La requête utilisée et donnée à titre d’exemple est la suivante. Cette requête a été utilisée dans le cadre d’une démonstration et devra être adaptée à votre besoin et contexte :



SELECT


sfSTRUCTURE_ENTRIES.Name AS Proj_Name, hrORGANIZATION_HIERARCHY.Name AS [Level n], fnVALUES.Value, fnVALUES.Period, fnNAMES_1.Name AS Cost_Niv_Inf, fSTRUCTURE_ENTRIES_1.Name AS [Cost Center], fnVALUES.Granularity, fnNAMES_1.LevelID, fnLEVELS.Name AS Level_Name, fnLEVELS.ShortName, fnLEVELS.EntityType, fnLEVEL_RELATIONS.PrimaryLevelID, fnLEVEL_RELATIONS.SecondaryLevelID, sfSTRUCTURE_ENTRIES.OriginalID, sfSTRUCTURES.AccountID


FROM


fnVALUES INNER JOIN sfSTRUCTURE_ENTRIES INNER JOIN


sfSTRUCTURES ON sfSTRUCTURE_ENTRIES.StructureID = sfSTRUCTURES.ID INNER JOIN


hrGROUPS ON sfSTRUCTURES.InternalClassID = hrGROUPS.InternalClassID INNER JOIN


hrORGANIZATION_HIERARCHY ON hrGROUPS.ID = hrORGANIZATION_HIERARCHY.DefaultPortfolioID ON


fnVALUES.ProjectID = sfSTRUCTURE_ENTRIES.ID INNER JOIN


fnRELATIONS ON fnVALUES.EntityID = fnRELATIONS.ID INNER JOIN


fnNAMES AS fnNAMES_1 ON fnRELATIONS.SecondaryNameID = fnNAMES_1.ID INNER JOIN


sfSTRUCTURE_ENTRIES AS sfSTRUCTURE_ENTRIES_1 ON fnVALUES.CenterID = sfSTRUCTURE_ENTRIES_1.ID INNER JOIN


fnLEVELS ON fnNAMES_1.LevelID = fnLEVELS.ID INNER JOIN


fnLEVEL_RELATIONS ON fnLEVELS.ID = fnLEVEL_RELATIONS.PrimaryLevelID


WHERE


(sfSTRUCTURE_ENTRIES.SolutionID IS NULL) AND (sfSTRUCTURES.Name = N’projects’) AND (fnVALUES.Type = N’cost’ OR fnVALUES.Type = N’benefit’) AND (fnVALUES.Granularity = @Granularity) AND (hrORGANIZATION_HIERARCHY.Name LIKE N’%’) AND (sfSTRUCTURE_ENTRIES.OriginalID =@OriginalID)


ORDER BY


Proj_Name


Après la première exécution du rapport le data set se met à jour :


clip_image004


Note : Les 2 autres « DataSet Organisaton_Hierarchy_List »et « Project_List » retourne l’organisation et la liste des projets afin d’inclure éventuellement ces valeurs dans des listes déroulantes de paramètres du rapport. Ce sujet ne sera pas abordé dans ce document.



B/ Mise en forme du rapport


Paramètres du rapport


La requête une fois renseignée, nous allons passer au design du rapport. Le design se réalise dans l’onglet « Layout ».


Mais avant d’aller plus loin, il est nécessaire de définir les paramètres du rapport qui seront récupérées dans la requête précédemment crée. Cliquez sur « Report »/ «Report Parameters.. »


clip_image006


La fenêtre suivante apparaît :


clip_image008


2 paramètres ont été crées et reprit par la requête : Granularity et OriginalID.


Par exemple, le paramètre « granularity » est une liste de valeur Texte associé à une valeur entière permettant de définir la période du rapport (Année, trimestre ou mois)


Design


Dans ce rapport j’ai utilisé 2 objets « Matrix » afin d’obtenir le rendu désiré.


clip_image010


Ensuite j’ai rajouté les lignes et les colonnes nécessaires afin d’obtenir le rendu souhaité (click droit sur la matrice pour rajouter des lignes ou des colonnes). Dans les propriétés de la matrice, dans l’onglet « Groups », il est possible de définir très précisément les propriétés des lignes et des colonnes.


clip_image012


Ci-dessous, un exemple de ma matrice


clip_image014


La deuxième matrice me permet d’afficher constamment la différence entre les coûts et bénéfice, afin de conserver une vision d’ensemble du ROI, même si la première matrice descend très finement dans l’arborescence des lignes de dépenses et de bénéfices.



Une fois le rapport terminé, il est possible de le pré visualiser en cliquant sur l’onglet « Preview ». Il est ensuite possible de publier le rapport sur le serveur Reporting Services.


Mais avant, il est nécessaire de définir l’adresse de publication dans les propriétés du rapport


Dans la fenêtre « Solution Explorer » faîtes un clique droit sur le nom de votre rapport et cliquez sur « Propriétés ».


clip_image016


La fenêtre suivante apparaît :


clip_image018


Cette fenêtre permet de définir l’adresse du serveur ainsi que le répertoire cible de publication. Par défaut, PPS est associé au répertoire « Reports ». Les rapports publiés dans ce répertoire seront visible dans l’onglet « Project reports » dans la fiche de projet de Project Portfolio.


Une fois publié, le rapport est disponible à partir de l’interface du serveur de rapports :


clip_image020


Cette liste de rapports est celle qui sera visible dans la fiche projet de PPS.


Si on clique sur notre rapport « Project_ROI », on peut en avoir l’aperçu :


clip_image022


Si vous avez autorisé la notion de « Drill down » dans votre patrice, il sera alors possible de descendre plus bas dans l’arborescence des lignes de dépenses et bénéfices (afin de répondre à des demandes de rapports type OPEX/CAPEX)


clip_image024


Bien entendu, le rapport apparaît aussi dans la fiche projet côté Portfolio Server :


clip_image026

Comments (0)

Skip to main content