AIDE-MEMOIRE SAP CRYSTAL REPORTS - GUIDINEE.COM Reperes a garder sous la main pendant le projet fil rouge. === PRISE EN MAIN & ENVIRONNEMENT === - Crystal Reports = outil de REPORTING : creer des ETATS (documents structures : factures, releves, listes, etats de gestion...) a partir de donnees stockees AILLEURS (base, Excel, SAP). On ne saisit pas les donnees, on s'y CONNECTE. - Un rapport SEPARE le CONTENU (donnees a la source) de la PRESENTATION (le modele qu'on concoit). Modele REUTILISABLE, RAFRAICHISSABLE (presentation fixe, donnees suivent la realite). Force : documents a FORMAT FIXE, precis, repetables (vs Excel = analyse ad hoc). - EDITION : DESIGNER autonome (concevoir - a utiliser pour apprendre, via ESSAI GRATUIT ~30j) ; Crystal Reports for Visual Studio (gratuit, integration .NET) ; SAP BusinessObjects (diffusion entreprise). WINDOWS requis (Mac -> VM). Attention pilotes ODBC 32/64 bits. - SECTIONS (concept n°1) : gouvernent OU et COMBIEN DE FOIS un element s'affiche. En-tete de RAPPORT (1x), En-tete de PAGE (chaque page), DETAILS (chaque enregistrement = le coeur), Pied de PAGE, Pied de RAPPORT (1x). Champ dans Details = par ligne ; total dans Pied de rapport = une fois. - EXPLORATEUR DE CHAMPS (boite a outils : champs base, formules, parametres, resumes, champs speciaux) -> glisser vers les sections. Modes CONCEPTION (structure, sans donnees) vs APERCU (donnees reelles). - SE CONNECTER (Database Expert) : bases (SQL Server, Oracle, MySQL, SAP HANA) en natif ou ODBC/OLE DB ; fichiers (Excel, CSV, XML). CRUCIAL : les JOINTURES (liens entre tables par champ commun) - de mauvais liens = rapports FAUX (doublons qui gonflent les totaux, lignes manquantes). Echec de connexion = souvent pilote manquant ou 32/64 bits. === DEBUTANT : PREMIER ETAT === - ASSISTANT de creation (Report Wizard) = meilleure facon de demarrer : source/tables -> champs -> regroupements. Choisir UNIQUEMENT les tables necessaires (moins = simple/rapide/fiable) et bien les RELIER. Le rapport de l'assistant est un POINT DE DEPART a personnaliser. - PLACER les champs : DONNEES -> section DETAILS (par ligne) ; TITRES de colonnes -> En-tete de page ; TITRE -> En-tete de rapport ; TOTAUX -> Pied de rapport. Aligner les champs avec leurs titres (colonnes propres). Objets-champs (donnees) vs objets-texte (fixe). - MISE EN FORME : texte (police/styles/couleur - sobre, coherent), bordures/trames (structurer). CRUCIAL : FORMAT DES NOMBRES (decimales, separateur de milliers, symbole, negatifs) et DATES. Montant = « 1 234,50 € » pas « 1234.5 ». Nombres alignes a DROITE. Le format change l'affichage, pas la donnee. - TITRES + CHAMPS SPECIAUX (fournis par Crystal, maj auto) : numero/total de pages (« Page N sur M » -> Pied de page), date d'impression, numero d'enregistrement. Penser PAPIER : verifier en apercu pagination + debordement en largeur (PAYSAGE si beaucoup de colonnes), sauts de page, en-tetes repetes. === INTERMEDIAIRE : TRI, REGROUPEMENT & SELECTION === - TRIER = ordonner les lignes. REGROUPER = organiser en BLOCS selon un champ (par client/mois...), cree sections En-tete/Pied de GROUPE. Le regroupement inclut un tri. Groupes IMBRIQUES (Region > Client) - l'ordre = la hierarchie. Nom du groupe dans l'En-tete, SOUS-TOTAUX dans le Pied. - TOTAUX = champs de RESUME : Sum (additionner, le + courant), Count (compter les lignes), Average, Max/Min. NIVEAU = ce qui est totalise : Pied de GROUPE = sous-total ; Pied de RAPPORT = total general. Doublons de jointure gonflent -> recouper contre une valeur connue. - SELECTION (filtre, Select Expert) : champ + operateur + valeur, combinable (ET restreint / OU elargit, parentheses !). CRUCIAL : filtrer COTE SERVEUR (base ne renvoie que le filtre - rapide) vs COTE CLIENT (tout rapatrie puis filtre - lent). Conditions simples sur les champs de base. Verifier « Show SQL Query ». - PARAMETRES (invites) : valeur DEMANDEE a l'utilisateur a l'execution (annee, client...). Integre a la SELECTION -> un seul modele sert tous les cas (generique, reutilisable). Options : multiples, plage, LISTE de valeurs (menu, evite les fautes), valeur par defaut. Rester cote serveur. - GESTION DES SECTIONS (Expert de section) : MASQUER (dont CONDITIONNEL par formule), SUPPRIMER LES BLANCS, « nouvelle page avant/apres », « GARDER ENSEMBLE ». Masquer les DETAILS = rapport de SYNTHESE (totaux seuls). Basculer detail/synthese par parametre. === AVANCE : FORMULES & MISE EN FORME CONDITIONNELLE === - FORMULE = calcul/logique qui produit une valeur absente de la base (TTC = HT*1.2, marge, nom+prenom, categorie). Editeur de formules. Syntaxe CRYSTAL (la + repandue) ou Basic. Champs {table.champ}, operateurs, fonctions, litteraux. VERIFIER la syntaxe. Attention au TYPE (ToText/ToNumber). - MISE EN FORME CONDITIONNELLE : apparence (couleur, police...) selon une CONDITION, via bouton FORMULE (« x-2 ») sur une propriete. Ex. couleur police : « If {Montant} < 0 Then crRed Else crBlack ». Negatifs en rouge, seuils surlignes, statuts colores. AVEC SENS, coherent (rouge = probleme). - CUMUL EN COURS D'EXECUTION (Running Total) : total qui s'accumule ligne apres ligne (solde progressif). Reglage CRUCIAL = REINITIALISATION : JAMAIS (global), au changement de GROUPE (par client/compte), ou formule. DEPEND DE L'ORDRE des lignes (trier avant). - FONCTIONS : texte (UpperCase, Left/Right, Trim, Replace, ToText), date (Year/Month = regrouper par periode, DateDiff = delai, DateAdd, Today). LOGIQUE CONDITIONNELLE : If...Then...Else (seuils, enchainable), Select...Case (aiguillage sur une valeur). Couvrir tous les cas (Else/Default). NULS : tester IsNull AVANT. - GROUPES AVANCES : TOP N / Bottom N (N meilleurs/pires groupes selon un total - palmares). TRI PAR GROUPE (ordonner les groupes par leur TOTAL, pas leur nom). REGROUPEMENT SUR FORMULE (grouper par tranche/trimestre/categorie calculee). === EXPERT : SOUS-ETATS, GRAPHIQUES & MULTI-SOURCES === - SOUS-RAPPORT = rapport insere dans un autre. Combine des donnees difficiles a JOINDRE (sources differentes, relations complexes). LIE (par champ de lien, affiche les donnees correspondantes) vs NON LIE (independant, memes donnees). PERF : sous-rapport lie dans DETAILS = 1 execution/ligne (couteux) -> le mettre au niveau d'un GROUPE. - GRAPHIQUES : visualisent les RESUMES par groupe. TYPE selon le message : BARRES (comparer des categories), COURBE (evolution dans le temps), SECTEURS/camembert (parts d'un tout, PEU de categories). Categorie = un groupe, valeur = un total. Rester lisible (peu de series, titre, couleurs sobres). - TABLEAU CROISE (Cross-Tab) : resume selon DEUX dimensions (LIGNES x COLONNES) + valeur a l'intersection + totaux auto. Dimension a PEU de valeurs en COLONNES (mois), la nombreuse en LIGNES (sinon illisible). Combiner avec mise en forme conditionnelle (carte de chaleur). - COMMANDE SQL : ecrire sa propre requete comme source (controle/PERFORMANCE max, requetes complexes : sous-requetes, UNION, agregations). Demande de maitriser le SQL. MULTI-SOURCES : jointures (meme base) ; SOUS-RAPPORTS (sources differentes non jointables) ; consolider en amont pour les gros cas. - INTERACTIVITE (a l'ecran) : ALERTES (message conditionnel = dépassement/anomalie), DRILL-DOWN (synthese -> detail sur clic), HYPERLIENS (objet cliquable : URL, e-mail, autre rapport). Pas sur papier/PDF. === DIFFUSION, INTEGRATION & BONNES PRATIQUES === - EXPORT (Fichier -> Exporter) selon l'USAGE : LIRE/IMPRIMER -> PDF (fidele, universel, non modifiable - factures/etats officiels) ; ANALYSER -> EXCEL « donnees seulement » (se retraite bien) ; importer dans un systeme -> CSV ; editable -> Word. Verifier l'export (pagination PDF, exploitabilite Excel). - PARAMETRES DYNAMIQUES : liste tiree de la BASE (toujours a jour, reelle, sans maintenance, moins d'erreurs) vs statique (figee). EN CASCADE : choix hierarchiques lies (pays -> region -> ville : chaque choix filtre le suivant) - listes reduites, guidees, sans combinaisons invalides. - INTEGRATION APPLICATIVE : embarquer des .rpt dans une appli (ERP, logiciel metier). Concepteur cree le .rpt (designer), DEVELOPPEUR l'integre (SDK, ex. Crystal Reports for Visual Studio gratuit .NET : viewer, connexion + parametres par code). Deployer le RUNTIME. Concevoir n'exige pas d'etre dev ; integrer, oui. - PERFORMANCE (levier n°1) : FILTRER COTE SERVEUR (ne rapatrier que le necessaire - verifier le SQL) ; ne prendre que les tables/champs utiles ; POUSSER jointures/regroupements/agregations a la BASE ; exploiter les INDEX ; sous-rapports lies au niveau d'un GROUPE ; eviter les formules complexes cote client. Depend surtout du VOLUME rapatrie. - BONNES PRATIQUES : JUSTESSE d'abord (verifier les JOINTURES = pas de doublons ; RECOUPER les totaux contre des valeurs connues ; gerer les NULS) - un rapport FAUX est pire qu'absent. LISIBILITE (coherent, sobre, colonnes alignees, nombres formates). REUTILISABILITE (parametres, modeles). MAINTENABILITE (nommer/documenter, decomposer). TESTER sur donnees REELLES et VOLUMINEUSES avant de diffuser. RAPPELS - Crystal = REPORTING (documents a format fixe, precis, repetables, a partir de donnees a la source). SEPARE contenu et presentation. Rafraichissable. - SECTIONS = concept n°1 (ou/combien de fois). Donnees -> Details ; titres -> En-tete de page ; totaux -> Pied de rapport/groupe. JOINTURES correctes = rapports justes (doublons = totaux faux). - Regrouper (sous-totaux par groupe, au bon NIVEAU) ; filtrer COTE SERVEUR ; PARAMETRES = rapport reutilisable. FORMULES + mise en forme conditionnelle = rapports intelligents. - Sous-rapports (au niveau d'un groupe pour la perf), graphiques (bon type), tableaux croises (peu de colonnes). Export selon l'usage (PDF/Excel). Parametres dynamiques/cascade. - BUT ULTIME : non « maitriser Crystal Reports » mais produire des etats JUSTES, LISIBLES, PERFORMANTS et UTILES. Un bon rapport est d'abord JUSTE et CLAIR, puis rapide. TESTER avant de diffuser.