September 14th, 2010
admin
Toujours dans la class CL_GUI_FRONTEND_SERVICES, la methode FILE_DELETE permet de supprimer un fichier hors SAP.
DATA : wo_execute TYPE REF TO cl_gui_frontend_services,
wv_rc TYPE i.
CREATE OBJECT wo_execute.
CLEAR wv_rc.
wo_execute->file_delete( EXPORTING filename = ’C:\Temp\test.txt’
CHANGING rc = wv_rc ).
IF wv_rc <> 0.
* message d’erreur
ELSE.
* On continue le traitement
ENDIF.
Dans une méthode de type EVENT, on peut récupérer l’instance de l’objet appelant en utilisant le paramètre d’import SENDER.
Par exemple : C’est important quand on a plusieurs ALV dans un même écran et qu’on ne veut pas multiplier les méthodes pour gérer les évènements double_click .
PUBLIC SECTION.
METHODS constructor.
METHODS dbl_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column es_row_no sender.
…
METHOD dbl_click.
…
wv_name_alv = sender->get_name( ). ” On récupère ici le nom de l’objet à partir duquel on a déclenché l’évènement double_click
case wv_name_alv.
when ‘XXX’.
when ‘YYY’.
endcase.
ENDMETHOD.
Le table standard TIH01 permet de gérer en masse l’affichage de l’historique des S/N. Pour que chaque utilisateur puisse bénéficier de la même présentation.
Il faut tout d’abord préparer puis sauvegarder un affichage de référence pour un utilisateur donné :


La table TIH01 est alors alimentée.

RIHQMEL_H : Avis service + Qualité
RIHAUFK_H : Ordre…
Il reste à coder un petit utilitaire pour copier la mise en forme (càd les données de la table TIH01) de l’utilisateur de référence vers les utilisateurs cibles. Cela évite de passer sur les PC pour paramétrer les listes.
Exemple de code :
REPORT zbcspe14 .
************************************************************************
* Programme pour MAJ de la table TIH01 : Historique S/N
************************************************************************
* KU : JMEGIAS
* Dév : JMEGIAS
************************************************************************
PARAMETERS : p_user LIKE sy-uname OBLIGATORY DEFAULT ’FGONTHIER’.
SELECT-OPTIONS : s_user FOR sy-uname OBLIGATORY.
DATA : wr_tab TYPE RANGE OF tabname,
ws_tab LIKE LINE OF wr_tab.
DATA : wv_uname TYPE syuname.
DATA : wt_tih01 TYPE TABLE OF tih01,
ws_tih01 TYPE tih01.
DATA : wv_tp_user TYPE syuname.
DATA : ws_usr02 TYPE usr02.
INITIALIZATION.
CLEAR ws_tab.
ws_tab-sign = ’I’.
ws_tab-option = ’EQ’.
ws_tab-low = ’RIHAUFK_H’.
APPEND ws_tab TO wr_tab.
ws_tab-low = ’SER02′.
APPEND ws_tab TO wr_tab.
ws_tab-low = ’RIHQMEL_H’.
APPEND ws_tab TO wr_tab.
ws_tab-low = ’SER01′.
APPEND ws_tab TO wr_tab.
ws_tab-low = ’SER03′.
APPEND ws_tab TO wr_tab.
START-OF-SELECTION.
CHECK p_user IS NOT INITIAL.
CHECK s_user IS NOT INITIAL.
* on recupère les enregistrements dans la tables TIH01 pour le modèle
SELECT * INTO TABLE wt_tih01
FROM tih01
WHERE tabname IN wr_tab
AND uname = p_user.
IF sy-dbcnt > 0.
MOVE p_user TO wv_tp_user.
LOOP AT s_user INTO ws_tab.
MOVE ws_tab-low TO wv_uname.
* vérification du user
SELECT SINGLE * INTO ws_usr02
FROM usr02
WHERE bname = wv_uname.
IF sy-subrc = 0.
ws_tih01-uname = wv_uname.
MODIFY wt_tih01 FROM ws_tih01 TRANSPORTING uname WHERE uname = wv_tp_user.
IF sy-subrc = 0.
MOVE wv_uname TO wv_tp_user.
ENDIF.
* MAJ de la base de données
MODIFY tih01 FROM TABLE wt_tih01.
COMMIT WORK AND WAIT.
ELSE.
MESSAGE i107(zqm1).
ENDIF.
ENDLOOP.
ENDIF.
