Bonjour à tous,

je me permets de venir à vous car je suis confrontée à un petit problème.
J'ai construit un ALV et j'aimerai que si une personne apparait 2 fois avec un même statut je fasse la somme de son occupation(ETP).



J'aimerai donc que pour cette personne on retrouve dans somme ETP : 0.70.

Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
REPORT zhra_elections_genrales.

INCLUDE ZHRA_ELECTIONS_GENERALES_DATA.
*INCLUDE ZHRA_ELECTIONS_MANDATS_DATA.


INCLUDE ZHRA_ELECTIONS_GENERALES_FORM.
*INCLUDE ZHRA_ELECTIONS_MANDATS_FORM.



AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  DATA: ld_fullpath TYPE string,
        ld_path     TYPE string,
        ld_filename TYPE string.
  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      default_extension = 'XLS'
      default_file_name = 'ELECTIONS_GENERALES'       " nom du fichier lors de la sauvegarde
      initial_directory = 'c:\'
    CHANGING
      filename          = ld_filename
      path              = ld_path
      fullpath          = ld_fullpath.

  p_file = ld_fullpath.



START-OF-SELECTION.

  REFRESH itab.

GET peras.

  CLEAR line_itab.
  CLEAR age.
  CLEAR sexe.









  LOOP AT p0001  WHERE begda <= pn-endda AND endda >= pn-begda AND ( persg EQ '1' or persg EQ '2')

  AND ( persk NE 'CA'
  AND persk NE 'CV'
  AND persk NE 'JE'
  AND persk NE 'JS'
  AND persk NE 'JX'
  AND persk NE 'VA'
  AND persk NE 'VX'
  AND persk NE 'VO'

  ) .

    SELECT personid_ext FROM pa0709 INTO personid_ext
      WHERE pernr = p0001-pernr AND begda <= pn-endda AND endda >= pn-begda.
      MOVE personid_ext TO line_itab-personid_ext.
    ENDSELECT.

       move p0001-pernr to line_itab-pernr.








*    " subterfuge pour avoir les dates au bon format.
*    CONCATENATE '''' pn-begda+6(2) '/' pn-begda+4(2) '/' pn-begda+0(4) INTO line_itab-debut_per_conc.
*    CONCATENATE '''' pn-endda+6(2) '/' pn-endda+4(2) '/' pn-endda+0(4) INTO line_itab-fin_per_conc.

    SELECT *  FROM pa0002 INTO it0002 WHERE pernr = p0001-pernr AND begda <= pn-endda AND endda >= pn-begda.
      MOVE it0002-nachn TO line_itab-nom.
      MOVE it0002-vorna TO line_itab-prenom.

      CONCATENATE '''' it0002-gbdat+6(2) '/' it0002-gbdat+4(2) '/' it0002-gbdat+0(4) INTO line_itab-date_naissance.

      MOVE it0002-gesch TO sexe.
      IF sexe = '1'.
        MOVE 'M' TO line_itab-sexe.
      ELSEIF sexe = '2'.
        MOVE 'F' TO line_itab-sexe.
      ENDIF.




    ENDSELECT.





    SELECT * FROM pa0001 INTO it0001 WHERE pernr = p0001-pernr AND begda <= pn-endda AND endda >= pn-begda AND ( persg EQ '1' or persg EQ '2') .
      MOVE it0001-persk  TO line_itab-statut.
      move it0001-persg to line_itab-persg.




*      ZZETP_ADM = it0001-ZZETP_ADM * 100.
      MOVE it0001-zzetp_adm TO line_itab-zzetp_adm.
      move it0001-zzniveau to line_itab-zzniveau.
      move it0001-ZZQUALIF to line_itab-ZZQUALIF.
      move it0001-zzacad_ecran to line_itab-zzacad_ecran.



    ENDSELECT.


CALL FUNCTION 'HR_READ_SUBTYPE'
    EXPORTING
*     TCLAS           = 'A'
      PERNR           = p0001-pernr
      INFTY           = '9032'
      SUBTY           = '0005'
*     SPRPS           = '*'
      BEGDA           = pnpbegda
      ENDDA           = pnpendda
    TABLES
      INFTY_TAB       = it9032
    EXCEPTIONS
      INFTY_NOT_FOUND = 1
      INVALID_INPUT   = 2
      OTHERS          = 3.
  IF SY-SUBRC EQ 0.
    SORT it9032 BY BEGDA ASCENDING. "L'adresse interne la plus ancienne est prise par défaut si manuelle
    LOOP AT it9032 into wa_line2.
      IF wa_line2-RB2_ADR_INT EQ 'X'."L'adresse interne est manuelle.
        move wa_line2-CODE_PINT to LINE_ITAB-CODE_PINT.
        move wa_line2-CODE_CAMPUS to LINE_ITAB-CODE_CAMPUS.
        exit.
      else.
        " Aller chercher l'adresse dans la structure Org
        perform GET_ADRESSE_INTERNE using p0001-pernr pnpbegda pnpendda changing wa_line2.
              "pnpendda changing wa_line2.
        move wa_line2-CODE_PINT to LINE_ITAB-CODE_PINT.
        move wa_line2-CODE_CAMPUS to LINE_ITAB-CODE_CAMPUS.
        exit.
      ENDIF.
    endloop.
*  else." Pas d'IT9032 subty 0005 pour la personne --> Aller chercher l'adresse dans la structure Org
*    clear wa_line2.
*    perform GET_ADRESSE_INTERNE using P_PERNR_CHEF p_begda p_endda changing wa_line2.
*    move wa_line2-CODE_PINT to P_LINE_ITAB_CHEF_SERV-CPI.
  endif.


CALL FUNCTION 'HR_READ_SUBTYPE'
    EXPORTING
*     TCLAS           = 'A'
      PERNR           = p0001-pernr
      INFTY           = '9032'
      SUBTY           = '0002'
*     SPRPS           = '*'
      BEGDA           = pnpbegda
      ENDDA           = pnpendda
    TABLES
      INFTY_TAB       = it9032
    EXCEPTIONS
      INFTY_NOT_FOUND = 1
      INVALID_INPUT   = 2
      OTHERS          = 3.
  IF SY-SUBRC EQ 0.
    SORT it9032 BY BEGDA ASCENDING. "L'adresse interne la plus ancienne est prise par défaut si manuelle
    LOOP AT it9032 into wa_line2.
      move wa_line2-COMM_PERS to line_itab-COMM_PERS.

    endloop.
*  else." Pas d'IT9032 subty 0005 pour la personne --> Aller chercher l'adresse dans la structure Org
*    clear wa_line2.
*    perform GET_ADRESSE_INTERNE using P_PERNR_CHEF p_begda p_endda changing wa_line2.
*    move wa_line2-CODE_PINT to P_LINE_ITAB_CHEF_SERV-CPI.
  endif.


"Get Faculté
  CALL FUNCTION 'ZHRA_GET_FAC'
    EXPORTING
      pernr  = pernr-pernr
      orgeh  = p0001-orgeh
      datum  = sy-datum
    IMPORTING
*     FACULTE         =
*     FAC_OBJID       =
      fac_id = line_itab-faculte.

















    APPEND line_itab TO itab.




    Sort itab ASCENDING by nom.
    ""SUPPRIMER LES LIGNES QUI SONT LES MEMES MODIF DU 15/12/2016
    DELETE ADJACENT DUPLICATES FROM itab .












  ENDLOOP.

END-OF-SELECTION.

  "" en fonction du choix fait au départ affichage ou sauvegarde du fichier
  IF p_displ EQ 'X'.
    PERFORM display_alv.
  ELSE.
    IF p_file IS NOT INITIAL.
      PERFORM export_alv.
    ENDIF.
  ENDIF.


D'avance merci de votre aide