1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
/* variables de debug */
%let MmoisYearDep=03/2012;
%let MmoisYearFin=03/2012;
%MACRO MTABUL();
%global MmoisYearDep MmoisYearFin Mdtdeb Mdtfin;
options fmtsearch=(htods work);
%let _ODSSTYLE=sasweb ;
/* Extraction des informations de stocks utiles */
data _null_;
/* on positionne les variables de temps si non initialisées */
if "&MmoisYearDep" = "" then call symput( "MmoisYearDep" ,month(today())/year(today()) ); /* mois/annee en cours */
if "&MmoisYearFin" = "" then call symput( "MmoisYearFin" ,month(today())/year(today()) ); /* mois/annee en cours */
run;
data _null_;
datedeb = intnx( "month" ,input(compress( "01/&MmoisYearDep" ),ddmmyy10.),0,'beginning');
datefin = intnx( "month" ,input(compress( "01/&MmoisYearFin" ),ddmmyy10.),0,'end');
call symput( "Mdtdeb" ,datedeb);
call symput( "Mdtfin" ,datefin);
run;
/* Extraction des sources sur annee/mois selectionnés */
proc sql noprint;
create table ca_gedimat as
select distinct code_client
, substr(nom_client_interne,9) as nom_client
, num_facture
, dt_facture
, vol_facture
, code_epaisvte/1000 as epaisseur format 3.2
, code_largvte/1000 as largeur format 3.2
, longueur
, unit_facture
, mt_facture
from htdwh.factures
WHERE nom_client_interne LIKE "%GEDIMAT%"
order by code_client
;
quit;
/* Regeneration des volumes en M3 à date sur les jours du mois en cours*/
data ca_gedimat2 ficdelete;
format date_jour ddmmyy10. ;
set ca_gedimat;
do i = &Mdtdeb to &Mdtfin by 1;
if i = dt_facture then do;
date_jour=i;
if unit_facture = "M2" then do;
volume = vol_facture * epaisseur;
end;
else if unit_facture = "ML" then do;
volume = vol_facture * epaisseur * largeur;
end;
else volume = vol_facture;
output ca_gedimat2;
end;
else output ficdelete;
end;
run;
/* Suppression des enreg inutiles */
proc datasets lib=work;
delete ficdelete / memtype=data;
run;
proc sort data=ca_gedimat2;
by num_facture code_client;
run;
/* Creation d'un format de type color coding pour le tableau */
proc format;
picture fmtcolor
low -< 5="#FFCCCC"
5 - high="white";
run;
/* Quelques options utiles */
options linesize=256 pagesize=800;
goptions rotate=landscape;
/*
ods listing close;
ODS html file="E:\HT-Decision\4- Résultats\gedimat.xls";
*/
/*
ods html body="C:\Tomcat4.1\webapps\HT-CONTRATS\etat_stocks.html" style=seaside;
*/
title1 h=4.6 f=Arial c=blue "CA REALISE SUR LA PERIODE DE &MmoisYearDep A &MmoisYearFin";
footnote1 h=2.4 f=arial j=r c=blue "Le &sysdate à &systime";
PROC TABULATE
DATA=WORK.CA_GEDIMAT2
;
LABEL volume='VOLUME M3'
mt_facture='MONTANT HT'
nom_client='Nom interne'
code_client='N° Client'
;
CLASS code_client / ORDER=DATA MISSING;
CLASS nom_client / ORDER=DATA MISSING;
CLASS num_facture / ORDER=DATA MISSING;
CLASS dt_facture / ORDER=DATA MISSING;
VAR volume mt_facture;
CLASS date_jour / ORDER=DATA MISSING;
TABLE code_client*nom_client*num_facture*dt_facture ALL = "TOTAUX" * f=8.3
,
volume mt_facture /
box="FACTURES" RTS = 15
;
KEYLABEL SUM="."
ALL='TOTAUX';
run;
/*
ods HTML close;
ods listing;
*/
%MEND;
%MTABUL(); |
Partager