|
|
 |
 |
 |
Développement
d'applications SAS/EIS®
QUESTIONS
- Comment peut-on modifier le label des statistiques
?
- Peut-on avoir des barres de différentes couleurs avec
le 3D Business Graph ?
- Comment modifier le label de l'axe des ordonnées dans
un 3D Business Graph ?
- Comment changer le format d'une variable d'analyse
d'un MDDB dans un Rapport Multidimensionnel ?
- Comment changer le format d'une variable d'analyse
d'un MDDB dans un 3D Business Graph ?
- Comment modifier le texte -ALL- dans un Dimension Navigator
?
- Comment modifier la couleur des cellules d'une colonne
dans un rapport multidimensionnel ?
- Comment peut-on faire un collapse/expand sur les colonnes
d'un rapport multidimensionnel?
- Comment changer les libellés des différentes
statistiques affichées dans un Multidimensional Report ?
- Comment mettre à jour en batch l’attribut
BASETABL au niveau d’un cube enregistré dans un repository
?
SOLUTIONS
Comment peut-on modifier le label des statistiques ?
Pour modifier le label des statistiques, vous devez surcharger en After
la méthode _SETUP_ . Les méthodes concernées par cette surcharge sont
_GET_ROW_INFO_ et _GET_COLUMN_INFO_ . Avec le code suivant, vous pourrez
remplacer SUM par Somme, MIN par Minimum, etc….
length _method_ $ 40 text $200 ;
modelid=modelid;
_self_=_self_;
_method_=_method_;
_frame_=_frame_;
setup:
method;
source=screenname();
call send(modelid,'_set_instance_method_','_get_row_info_',
source,'get_r_c');
call send(modelid,'_set_instance_method_','_get_column_info_',
source,'get_r_c');
EndMethod;
get_r_c:
method id 8;
call super(_self_,_method_,id);
call send(id,'_get_text_',text);
if text='SUM' then
call send(id,'_set_text_','Somme');
if text='MIN' then
call send(id,'_set_text_','Minimum');
if text='MAX' then
call send(id,'_set_text_','Maximun');
if text='PCTSUM'
then call send(id,'_set_text_','Poids ');
if text='AVG' then
call send(id,'_set_text_','Moyenne');
if text='N' then
call send(id,'_set_text_','Nombre');
EndMethod;

Peut-on avoir des barres de différentes couleurs avec le 3D Business
Graph ?
Pour ce faire, il faut surcharger la méthode_SET_VIEWER_ATTR_ en effectuant
un Override de la méthode.
Le code suivant attribue une couleur à chaque barre en spécifiant l'ordre
des couleurs. Attention, ce code n'est valable que si vous n'utilisez
pas de sous groupe.
length _method_ $40;
length subgroup idvar $ 30;
idvar=idvar;
modelid=modelid;
rc=rc;
ctype=ctype;
_self_=_self_;
_method_=_method_;
SETVIEW: method;
displst=makelist();
call send(modelid,'_get_displayed_class_vars_',displst);
do i=listlen(displst) to 1 by -1;
item=getitemc(displst,i);
if item = '_ANLSYS_' | item=
'_STATS_' then rc=delitem(displst,i);
end;
call putlist(displst,'displst=',0);
midpoint=getitemc(displst,1);
call send(_self_,'_get_id_var_',subgroup);
if subgroup=' ' and ctype ^in [15,16] then do;
call send(_self_,'_set_id_var_',midpoint);
call send(_self_,'_hide_legend_');
/* Si l'on veut spécifier l'ordre des couleurs
*/
if ctype >= 17 then do;
call send(_self_,'_set_color_','BAR','PINK',1);
call send(_self_,'_set_color_','BAR','ORANGE',2);
call send(_self_,'_set_color_','BAR','YELLOW',3);
call send(_self_,'_set_color_','BAR','BLUE',4);
/* etc... selon le nombre de bars
*/
end;
end;
put midpoint=;
rc=dellist(displst);
call super(_self_,_method_);
EndMethod;

 |
Comment modifier le label de l'axe des ordonnées dans un 3D Business
Graph ?
Il est possible de modifier le label de l'axe des ordonnées en surchargeant
la méthode _SET_VIEWER_ATTR_ en After. Le code qui suit attribue le label "valeur" à l'axe
des ordonnées.
_SELF_=_SELF_;
LABEL : method ;
call send(_SELF_,'_SET_TEXT_','VLABEL','valeur');
EndMethod ;

Comment changer le format d'une variable d'analyse d'un MDDB dans un
Rapport Multidimensionnel ?
Dans un Rapport Multidimensionnel, vous pouvez changer le format d'une
variable d'analyse d'un MDDB en effectuant une surcharge de la méthode
_SET_APPLICATION_ du model. Cette surcharge a lieu en After.
Avec le code suivant, vous assignez le format Dollar7. au résultat de
votre somme.
_self_ = _self_ ;
SETAPPL: Method applistrc 8 rc 8;
Call Send(_self_, '_SET_CLASS_FORMAT_','_STATS_', 'SUM','DOLLAR7.');
EndMethod;

Comment changer le format d'une variable d'analyse d'un MDDB dans un
3D Business Graph ?
Dans un 3D Business Graph, vous avez la possibilité de changer le format
d'une variable d'analyse d'un MDDB en surchargeant la méthode _SET_APPLICATION_
. La surcharge s'effectue sur le model et vous devez faire un Override
de la méthode. _WRITE_ est la méthode utilisée dans cette surcharge.
Length _method_ $40 stat format $40;
_self_=_self_;
_method_=_method_;
SETAPPLG: Method applist rc 8;
source = screenname() ;
Call Super(_self_, _method_,applist, rc);
Call Send(_self_, '_SET_CLASS_FORMAT_','_STATS_',
'SUM', 'dollar8.');
Call Send(_self_,'_set_instance_method_','_write_',
source,'write');
Call Send(_self_,'_set_instance_method_','apply_format_for_write',
source,'applfmt');
EndMethod;
WRITE: method dsname $17 optional= replace transpose $1;
Call Send(_self_,'apply_format_for_write');
Call Super(_self_,'_WRITE_',dsname,replace,transpose);
EndMethod;
APPLFMT: method;
/* Statisitique affichée */
stat=getnitemc(getniteml(getniteml(getniteml(getniteml(getniteml(_self_,'TABLES'),
'TABLE1'),'CLASSES'),'_STATS_'),'DISPLAYED_VALUES'),'VALUE1');
/* Variable d'analyse affichée*/
anal=getnitemc(getniteml(getniteml(getniteml(getniteml(getniteml(_self_,'TABLES'),
'TABLE1'),'CLASSES'),'_ANLSYS_'),'DISPLAYED_VALUES'),'VALUE1');
call putlist(varinfo_l,'var : ',0);
do cpt = 1 to listlen(VARINFO_L) ;
if anal = getnitemc(getiteml(varinfo_l,cpt),'VARLABEL',1)
then do ;
anal = getnitemc(getiteml(varinfo_l,cpt),'VARNAME',1);
cpt = listlen(VARINFO_L)
;
end ;
end ;
/*get the format for the current statistic, defined through the _set_class_format_method*/
statattr=getniteml(getniteml(_self_,'global_class_attributes'),'_stats_');
do i=1 to listlen(statattr);
if itemtype(statattr,i)='L'and substr(nameitem(statattr,i),1,5)='CLASS'
then do;
if getnitemc(getiteml(statattr,i),'VALUE')=stat
then do;
format=getnitemc(getiteml(statattr,i),'FORMAT');
end;
end;
end;
/* write the format to the customizations list */
cust_l=makelist();
fmtlst=makelist();
custom=makelist();
rc=insertc(CUSTOM,FORMAT,-1,anal);
rc=insertl(fmtlst,custom,-1,'CUSTOM');
rc=insertl(cust_l,fmtlst,-1,'FORMAT');
call send(_self_,'_set_custom_',cust_l);
cust_l=dellist(cust_l);
fmtlst=dellist(fmtlst);
custom=dellist(custom);
EndMethod;

 |
Comment modifier le texte -ALL- dans un Dimension Navigator ?
En surchargeant la méthode _SET_VIEWER_ATTR_ en After, il est possible
de modifier le texte -ALL- d'un Dimension Navigator. Le code qui suit,
remplace le texte -ALL- par Nouveau Texte.
_self_=_self_;
SETVIEW: method;
dim_value=getnitemc(_self_,'DIM_VALUE');
if dim_value='-ALL-' then
call send(_self_,'_set_text_','Nouveau
Texte');
EndMethod;

 |
Comment modifier la couleur des cellules d'une colonne dans un Rapport
Multidimensionnel ?
Vous pouvez attribuer une couleur à des cellules en fonction des valeurs
prises en surchargeant la méthode _POSTINIT_ en After. La méthode prise
en compte dans la surcharge est _GET_DATA_.
Le code qui suit, colorie en rose les cellules contenant des valeurs
supérieures à 121000 dans une colonne.
length text $ 30;
_self_=_self_;
rc=rc;
POSTINIT: method; source = screenname() ; dataid=getnitemn(_self_,'MODELID'); call symput('dataid',dataid); call send(dataid,'_set_instance_method_','_get_data_',source,'getdata'); call symput('flag',1);
EndMethod;
GETDATA: method vecid 8 numcols 8; dataid=symget('dataid'); call super(_self_,'_get_data_',vecid,numcols); collist=makelist(); do i=1 to numcols; call send(vecid,'_set_index_',i); call send(vecid,'_get_column_',collist); col=getitemn(collist,1); if col=1 then do; call send(vecid,'_get_text_',text); text=translate(text,'
','$'); text=compress(text); text=input(text,comma9.); if text gt 121000 then
call send(vecid,'_set_background_color_','pink'); end; end;
rc=dellist(collist,'y');
EndMethod; 
 |
Comment peut-on faire un collapse/expand sur les colonnes d'un rapport
multidimensionnel?
Les opérations collapse et expand ne sont pas réalisables directement
sur les colonnes d'un rapport multidimensionnel. Le seul moyen serait
de surcharger les comportements de l'objet directement dans le code scl
de l'objet.
On peut aussi contourner le problème en effectuant une rotation de l'objet
(rotate), ainsi les colonnes initiales passent en lignes. Ensuite, il
faut faire glisser les statistiques et les indicateurs sur les nouvelles
colonnes. Cette manipulation permet l'utilisation du collapse et de l'expand
sur les nouvelles lignes (donc anciennes colonnes).

Comment changer les libellés
des différentes statistiques affichées dans un Multidimensional
Report ?
Deux manières de procéder sont possibles
1. via la commande « EIS » :
Dans la fenêtre EIS, choisir l’icône
Setup.
Une fois sur la fenêtre Setup, choisir le menu
« Statistic Labels »
2. via le menu suivant :
Solutions
> Development and Programming
> OLAP Server Administration
> Statistic Labels

Comment mettre à jour en batch l’attribut BASETABL au niveau
d’un cube enregistré dans un repository ?
La méthode SCL _addAttribute_ permet de mettre à jour l'attribut
BASETABL.
Par exemple, le code ci après permet de positionner la table SUPPORT.TEST2
comme BASETABL pour le cube SUPPORT.CUBE situé dans le repository
SASUSER.
DCL sashelp.mb.resenv rid = _new_ sashelp.mb.resenv();
DCL sashelp.mb.metabase mb = getnitemn( envlist( 'L' ), 'METABASE' );
DCL char(200) mbmsg;
init:
mb._addAttribute_ (mbrc, mbmsg, 'SASUSER', 'SUPPORT.CUBE', 'BASETABL',
' ',
'SUPPORT.TEST2', 'N');
rid._term();
return;
|
 |
|