Aller au contenu

Rouvrir une tâche libérée

Abap RDDIT076 sinon faire version Z* en enlevant le leave program qui a été mis pour ne plus fonctionner

Donner le nom de l'OT

Double cliquer sur la tâche

Choisir mode modif

Passer le statut de R à D

Version Z  :

  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
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
*&---------------------------------------------------------------------*
*& Report  RDDIT076                                                    *
*&                                                                     *
*&---------------------------------------------------------------------*
REPORT  zrddit076  NO STANDARD PAGE HEADING  LINE-SIZE 132.

TABLES: e070.

* global variables for RDDIT076
PARAMETERS: pg_order LIKE e070-trkorr .

DATA: gv_order_text    LIKE e07t-as4text,
      gv_col_len       TYPE i,
      gv_bodend        TYPE i,
      gv_bodbg         TYPE i,
      gv_col_end       TYPE i.
DATA: gc_korrnr_len     TYPE i VALUE '20',
      gc_fkt_len        TYPE i VALUE '3',
      gc_stat_len       TYPE i VALUE '4',
      gc_zielsys_len    TYPE i VALUE '10',
      gc_kat_len        TYPE i VALUE '4',
      gc_autor_len      TYPE i VALUE '12',
      gc_datum_len      TYPE i VALUE '10',
      gc_uzeit_len      TYPE i VALUE '8',
      gc_qman_len       TYPE i VALUE '4',
      gc_zman_len       TYPE i VALUE '4',
      gc_bg             TYPE i VALUE '1',
      gc_headrow        TYPE i VALUE '6'.
DATA: lv_x1 TYPE i.

DATA: gv_reonflag TYPE c.

DATA: BEGIN OF gt_col_info OCCURS 10,
           col_text(20) TYPE c,
           col_len TYPE i,
      END OF gt_col_info.

DATA: gt_ko020        LIKE ko020   OCCURS 0   WITH HEADER LINE,
      gs_e070         LIKE e070,
      gt_e071         LIKE e071    OCCURS 0   WITH HEADER LINE,
      gt_e071k        LIKE e071k   OCCURS 0   WITH HEADER LINE,
      gs_e07t         LIKE e07t,
      gs_e070c        LIKE e070c.

DATA: BEGIN OF lt_task OCCURS 10,
          trkorr LIKE e070-trkorr,
          strkorr LIKE e070-strkorr,
     END OF lt_task .

************************************************************************
START-OF-SELECTION.

*  LEAVE PROGRAM.

* initialize itab GT_COL_INFO
  CLEAR gt_col_info.
  gt_col_info-col_text = text-002.
  gt_col_info-col_len = gc_korrnr_len.
  APPEND gt_col_info.
  gt_col_info-col_text = text-003.
  gt_col_info-col_len = gc_fkt_len.
  APPEND gt_col_info.
  gt_col_info-col_text = text-004.
  gt_col_info-col_len = gc_stat_len.
  APPEND gt_col_info.
  gt_col_info-col_text = text-005.
  gt_col_info-col_len = gc_zielsys_len.
  APPEND gt_col_info.
  gt_col_info-col_text = text-006.
  gt_col_info-col_len = gc_kat_len.
  APPEND gt_col_info.
  gt_col_info-col_text = text-007.
  gt_col_info-col_len = gc_autor_len.
  APPEND gt_col_info.
  gt_col_info-col_text = text-008.
  gt_col_info-col_len = gc_datum_len.
  APPEND gt_col_info.
  gt_col_info-col_text = text-009.
  gt_col_info-col_len = gc_uzeit_len.
  APPEND gt_col_info.
  gt_col_info-col_text = text-010.
  gt_col_info-col_len = gc_korrnr_len.
  APPEND gt_col_info.
  gt_col_info-col_text = text-011.
  gt_col_info-col_len = gc_qman_len.
  APPEND gt_col_info.
  gt_col_info-col_text = text-012.
  gt_col_info-col_len = gc_zman_len.
  APPEND gt_col_info.

* determine column length of the list
  gv_col_len = 1.
  LOOP AT gt_col_info.
    gv_col_len = gv_col_len + gt_col_info-col_len + 1.
  ENDLOOP.

* get E070, E070C, E07T information of the ORDER  ( PG_ORDER )

  PERFORM initialize_task_list.
  PERFORM display_list.

*----------------------------------------------------------------------*
TOP-OF-PAGE.
  PERFORM top_of_page USING gc_bg gv_col_len.

TOP-OF-PAGE DURING LINE-SELECTION.
  PERFORM top_of_page USING gc_bg gv_col_len.

*----------------------------------------------------------------------*
AT LINE-SELECTION.

  IF ( sy-cucol between gc_bg and gv_col_end ) and
     ( sy-curow eq gc_headrow or
      sy-curow between gv_bodbg and gv_bodend ).


    CALL FUNCTION 'TR_AUTHORITY_CHECK_ADMIN'
         EXPORTING
              iv_adminfunction = 'TABL'
         EXCEPTIONS
              e_no_authority   = 1.
    IF sy-subrc   = 0.
      CLEAR gv_reonflag.
    ELSE.
      gv_reonflag = 'X'.
    ENDIF.

    CALL FUNCTION 'TRINT_DISPLAY_REQUEST_HEADER'
         EXPORTING
              iv_read_only = gv_reonflag
              iv_trkorr    = gs_e070-trkorr
         IMPORTING
              es_e070      = gs_e070
              es_e070c     = gs_e070c
              es_e07t      = gs_e07t
         EXCEPTIONS
              OTHERS       = 1.

    IF sy-subrc <> 0.
      MESSAGE ID      sy-msgid
              TYPE    'E'
              NUMBER  sy-msgno
              WITH    sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

    IF gv_reonflag is initial.
      IF gs_e070-trkorr = pg_order.
        gv_order_text = gs_e07t-as4text.
      ENDIF.

      PERFORM modify_task_list USING gs_e070 gs_e070c gs_e07t.
    ENDIF.

    PERFORM display_list.

  ENDIF.

*----------------------------------------------------------------
* display top of table
*--------------------------------------------------------------
FORM top_of_page USING value(lv_bg) TYPE i
                       value(lv_len) TYPE i.

  DATA:   lv_curpos TYPE i,
          lv_e TYPE i,
          lv_korr_pos TYPE i,
          lv_text_pos TYPE i.

  lv_e = lv_bg + lv_len - 1.
  lv_korr_pos = lv_bg + 1.
  lv_text_pos = lv_korr_pos + gc_korrnr_len + 1.
*

  ULINE AT /lv_bg(lv_len).
  WRITE: AT /lv_bg sy-vline.
  WRITE: AT lv_korr_pos pg_order COLOR 4 INTENSIFIED OFF.
  WRITE: AT lv_text_pos gv_order_text COLOR OFF INTENSIFIED OFF.
  WRITE: AT lv_e sy-vline.
  ULINE AT /lv_bg(lv_len).
  WRITE: AT /lv_bg sy-vline.
  lv_curpos = lv_bg + 1.

  LOOP AT gt_col_info.
    PERFORM list_col USING lv_curpos  gt_col_info-col_len
                           gt_col_info-col_text.
    lv_curpos = lv_curpos + gt_col_info-col_len + 1.
  ENDLOOP.
  ULINE AT /lv_bg(lv_len).

ENDFORM.

*----------------------------------------------------------------
* form to  display the header of the columns
*---------------------------------------------------------------
FORM list_col  USING value(lv_pos) TYPE i
                     value(lv_len) TYPE i
                     value(lt_text) TYPE c.

  DATA: lv_pos_syl TYPE i.
  FIELD-SYMBOLS: <lv_cut_string>.

  ASSIGN lt_text(lv_len) TO <lv_cut_string>.


  lv_pos_syl = lv_pos + lv_len.

  WRITE: AT lv_pos <lv_cut_string>  COLOR 1 INTENSIFIED.
  WRITE: AT lv_pos_syl sy-vline.

ENDFORM.

*---------------------------------------------------------------------*
*       FORM DISP_E070                                                *
*---------------------------------------------------------------------*
FORM disp_e070    USING ps_e070 STRUCTURE e070
                        ps_e070c STRUCTURE e070c.

  DATA: lv_curpos TYPE i .

  lv_curpos = gc_bg.

  WRITE: AT /lv_curpos sy-vline.

  FORMAT COLOR 4 INTENSIFIED OFF.
  lv_curpos = lv_curpos + 1.
  WRITE: AT lv_curpos  ps_e070-trkorr.
  lv_curpos = lv_curpos + gc_korrnr_len.
  WRITE: AT lv_curpos sy-vline.

  FORMAT COLOR 2 INTENSIFIED OFF.

  lv_curpos = lv_curpos + 1.
  WRITE: AT lv_curpos  ps_e070-trfunction.
  lv_curpos = lv_curpos + gc_fkt_len.
  WRITE: AT lv_curpos sy-vline.

  lv_curpos = lv_curpos + 1.
  WRITE: AT lv_curpos  ps_e070-trstatus.
  lv_curpos = lv_curpos + gc_stat_len.
  WRITE: AT lv_curpos sy-vline.

  lv_curpos = lv_curpos + 1.
  WRITE: AT lv_curpos  ps_e070-tarsystem.
  lv_curpos = lv_curpos + gc_zielsys_len.
  WRITE: AT lv_curpos sy-vline.

  lv_curpos = lv_curpos + 1.
  WRITE: AT lv_curpos  ps_e070-korrdev.
  lv_curpos = lv_curpos + gc_kat_len.
  WRITE: AT lv_curpos sy-vline.

  lv_curpos = lv_curpos + 1.
  WRITE: AT lv_curpos  ps_e070-as4user.
  lv_curpos = lv_curpos + gc_autor_len.
  WRITE: AT lv_curpos sy-vline.

  lv_curpos = lv_curpos + 1.
  WRITE: AT lv_curpos  ps_e070-as4date.
  lv_curpos = lv_curpos + gc_datum_len.
  WRITE: AT lv_curpos sy-vline.

  lv_curpos = lv_curpos + 1.
  WRITE: AT lv_curpos  ps_e070-as4time.
  lv_curpos = lv_curpos + gc_uzeit_len.
  WRITE: AT lv_curpos sy-vline.

  lv_curpos = lv_curpos + 1.
  WRITE: AT lv_curpos  ps_e070-strkorr.
  lv_curpos = lv_curpos + gc_korrnr_len.
  WRITE: AT lv_curpos sy-vline.

  lv_curpos = lv_curpos + 1.
  WRITE: AT lv_curpos  ps_e070c-client.
  lv_curpos = lv_curpos + gc_qman_len.
  WRITE: AT lv_curpos sy-vline.

  lv_curpos = lv_curpos + 1.
  WRITE: AT lv_curpos  ps_e070c-tarclient.
  lv_curpos = lv_curpos + gc_zman_len.
  WRITE: AT lv_curpos sy-vline.

  FORMAT RESET.

ENDFORM.

*-------------------------------------------------------------
* form initialize_task_list to built up the list of the task
*       of an order
*
FORM initialize_task_list.

  CLEAR gt_ko020.
  REFRESH gt_ko020.

  CLEAR lt_task.
  REFRESH lt_task.

  PERFORM get_e070_entry TABLES gt_e071  gt_e071k USING pg_order
                                gs_e070 gs_e070c gs_e07t .

* check if PG_ORDER is a ORDER

  IF gs_e070-strkorr eq space.         "order/task is an order

    MOVE-CORRESPONDING gs_e070 TO gt_ko020.
    MOVE-CORRESPONDING gs_e070c TO gt_ko020.
    MOVE-CORRESPONDING gs_e07t TO gt_ko020.
    APPEND gt_ko020.

  ELSE.                                " order/task is a task

* read the corresponding order of the task
    PERFORM get_e070_entry TABLES gt_e071  gt_e071k
                           USING gs_e070-strkorr
                                 gs_e070 gs_e070c gs_e07t .

    MOVE-CORRESPONDING gs_e070 TO gt_ko020.
    MOVE-CORRESPONDING gs_e070c TO gt_ko020.
    MOVE-CORRESPONDING gs_e07t TO gt_ko020.
    APPEND gt_ko020.
    pg_order = gs_e070-trkorr.

  ENDIF.

* find all tasks belonging to the ORDER , store them in
* lt_task

  SELECT * FROM e070 WHERE strkorr = pg_order .
    MOVE-CORRESPONDING  e070 TO lt_task .
    APPEND lt_task.
  ENDSELECT.

* initialize row, column values of the list lines.
  DESCRIBE TABLE lt_task LINES lv_x1.
  gv_bodbg = gc_headrow + 2.
  gv_bodend = gv_bodbg + lv_x1.
  gv_col_end = gc_bg + gv_col_len.

* initialize text of the order
  gv_order_text = gs_e07t-as4text.


* get all information of a task
  LOOP AT lt_task .


   PERFORM get_e070_entry TABLES gt_e071  gt_e071k USING lt_task-trkorr
                                        gs_e070 gs_e070c gs_e07t.


    MOVE-CORRESPONDING gs_e070 TO gt_ko020.
    MOVE-CORRESPONDING gs_e070c TO gt_ko020.
    MOVE-CORRESPONDING gs_e07t TO gt_ko020.
    APPEND gt_ko020.

  ENDLOOP.

ENDFORM.

*-------------------------------------------------------------
* form display_list to generate the list from GT_KO020
*-------------------------------------------------------------

FORM display_list.
  DATA lv_count TYPE i VALUE '0'.
  LOOP AT gt_ko020.

    MOVE-CORRESPONDING gt_ko020 TO gs_e070.
    MOVE-CORRESPONDING gt_ko020 TO gs_e070c.
    MOVE-CORRESPONDING gt_ko020 TO gs_e07t.

* display entries in E070, E07T, E070C
    PERFORM  disp_e070           USING gs_e070 gs_e070c .
    HIDE: gs_e070-trkorr.

    lv_count = lv_count + 1.

    IF sy-tabix eq 1.
      ULINE AT /gc_bg(gv_col_len).
    ENDIF.

  ENDLOOP.
  IF lv_count gt 1.
    ULINE AT /gc_bg(gv_col_len).
  ENDIF.

  sy-lsind = 0.
ENDFORM.

*----------------------------------------------------------------
* form modify_task_list modifies the entries in GT_KO020
*----------------------------------------------------------------
FORM modify_task_list  USING  ps_e070  STRUCTURE e070
                              ps_e070c STRUCTURE e070c
                              ps_e07t  STRUCTURE e07t.

  LOOP AT gt_ko020 WHERE trkorr = gs_e070-trkorr.
    MOVE-CORRESPONDING ps_e070  TO gt_ko020.
    MOVE-CORRESPONDING ps_e070c TO gt_ko020.
    MOVE-CORRESPONDING ps_e07t  TO gt_ko020.
    MODIFY gt_ko020 INDEX sy-tabix.
  ENDLOOP.
ENDFORM.

*---------------------------------------------------------------------*
*       FORM GET_E070_ENTRY                                           *
*---------------------------------------------------------------------*
FORM get_e070_entry  TABLES pt_e071 pt_e071k
                     USING value(order) LIKE e070-trkorr
                            ps_e070  STRUCTURE e070
                            ps_e070c STRUCTURE e070c
                            ps_e07t  STRUCTURE e07t .

  CALL FUNCTION 'TR_READ_COMM'
       EXPORTING
            wi_dialog        = ' '
            wi_langu         = sy-langu
            wi_sel_e070      = 'X'
            wi_sel_e071      = ' '
            wi_sel_e071k     = ' '
            wi_sel_e07t      = 'X'
            wi_trkorr        = order
            wi_sel_e070c     = 'X'
       IMPORTING
            we_e070          = ps_e070
            we_e07t          = ps_e07t
            we_e070c         = ps_e070c
       TABLES
            wt_e071          = pt_e071
            wt_e071k         = pt_e071k
       EXCEPTIONS
            not_exist_e070   = 01
            no_authorization = 02.


  IF sy-subrc = 1.
    MESSAGE i054(tk)    WITH pg_order.
*   Auftrag/Aufgabe $ existiert nicht
    SET SCREEN 0.
    LEAVE SCREEN.
  ELSEIF sy-subrc = 2.
    MESSAGE i603(tk) WITH sy-uname.
    SET SCREEN 0.
    LEAVE SCREEN.
  ENDIF.
ENDFORM.