-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathZTOC.abap
529 lines (458 loc) · 14.4 KB
/
ZTOC.abap
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
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
*&---------------------------------------------------------------------*
*& Report ZREQUEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZREQUEST.
TYPE-POOLS: slis, trwbo.
TABLES: e070.
PARAMETERS: p_new RADIOBUTTON GROUP gr1 USER-COMMAND rb DEFAULT 'X',
p_old RADIOBUTTON GROUP gr1.
SELECTION-SCREEN SKIP 1.
PARAMETERS: p_oldrq TYPE e070-trkorr.
SELECT-OPTIONS: s_reque FOR e070-trkorr NO INTERVALS.
PARAMETERS: p_uname TYPE xubname.
SELECTION-SCREEN SKIP 1.
PARAMETERS: p_relnw AS CHECKBOX DEFAULT 'X' USER-COMMAND cb,
p_trnnw AS CHECKBOX DEFAULT 'X',
p_relsb AS CHECKBOX DEFAULT 'X'.
DATA: BEGIN OF gt_sel OCCURS 0,
selkz TYPE selkz,
trkorr LIKE v_e071eu-trkorr,
as4user LIKE v_e071eu-as4user,
as4text LIKE e07t-as4text,
END OF gt_sel.
DATA: gt_e071eu TYPE TABLE OF v_e071eu,
gt_fldct TYPE slis_t_fieldcat_alv.
DATA: gs_e071eu TYPE v_e071eu,
gs_e071 TYPE e071,
gs_e070 TYPE e070,
gs_sel LIKE gt_sel,
gs_header TYPE trwbo_request_header.
DATA: gv_title TYPE as4text,
gv_err TYPE xfeld.
CONSTANTS: gc_client TYPE stpa-client VALUE '100'.
AT SELECTION-SCREEN OUTPUT.
PERFORM f_modify_screen.
AT SELECTION-SCREEN.
PERFORM f_selection_screen.
AT SELECTION-SCREEN ON s_reque.
PERFORM f_check_reque.
START-OF-SELECTION.
PERFORM f_get_subtasks.
PERFORM f_create_toc.
PERFORM f_check_old_toc.
PERFORM f_relase_subtasks.
PERFORM f_release_n_transport_toc.
*&---------------------------------------------------------------------*
*& Form F_MODIFY_SCREEN
*&---------------------------------------------------------------------*
FORM f_modify_screen.
%_p_new_%_app_%-text = 'Yeni TOC oluştur'.
%_p_old_%_app_%-text = 'Mevcut TOC''a ekle'.
%_s_reque_%_app_%-text = 'Request'.
%_p_oldrq_%_app_%-text = 'Mevcut TOC'.
%_p_uname_%_app_%-text = 'Kullanıcı'.
%_p_relnw_%_app_%-text = 'TOC''u release et'.
%_p_trnnw_%_app_%-text = 'TOC''u taşı'.
%_p_relsb_%_app_%-text = 'Sub task''i release et'.
LOOP AT SCREEN.
IF p_relnw IS INITIAL.
IF screen-name EQ 'P_TRNNW'.
screen-input = 0.
ENDIF.
ENDIF.
IF screen-name EQ 'S_REQUE-LOW'.
screen-required = 2.
ENDIF.
IF p_old IS INITIAL.
IF screen-name CS 'P_OLDRQ'.
screen-active = 0.
ENDIF.
ELSE.
IF screen-name EQ 'P_OLDRQ'.
screen-required = 2.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_SELECTION_SCREEN
*&---------------------------------------------------------------------*
FORM f_selection_screen.
IF p_relnw IS INITIAL.
CLEAR p_trnnw.
ENDIF.
LOOP AT s_reque.
CONDENSE s_reque-low.
MODIFY s_reque.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_CHECK_REQUE
*&---------------------------------------------------------------------*
FORM f_check_reque.
CLEAR gv_err.
CHECK sy-ucomm EQ 'ONLI'.
CHECK s_reque[] IS INITIAL.
gv_err = 'X'.
MESSAGE s899(fb) WITH 'Tüm zorunlu alanları doldurun'
DISPLAY LIKE 'E'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_GET_SUBTASKS
*&---------------------------------------------------------------------*
FORM f_get_subtasks.
RANGES: lr_uname FOR v_e071eu-as4user.
FREE: gt_e071eu, gt_sel.
CHECK gv_err IS INITIAL.
IF p_uname IS NOT INITIAL.
lr_uname = 'IEQ'.
lr_uname-low = p_uname.
APPEND lr_uname.
ENDIF.
SELECT *
FROM v_e071eu
INTO TABLE gt_e071eu
WHERE strkorr IN s_reque
AND as4user IN lr_uname
AND trstatus EQ 'D'.
LOOP AT gt_e071eu INTO gs_e071eu.
MOVE-CORRESPONDING gs_e071eu TO gs_sel.
COLLECT gs_sel INTO gt_sel.
ENDLOOP.
LOOP AT gt_sel INTO gs_sel.
SELECT SINGLE as4text
FROM e07t
INTO gs_sel-as4text
WHERE trkorr EQ gs_sel-trkorr.
MODIFY gt_sel FROM gs_sel.
ENDLOOP.
IF sy-subrc NE 0.
gv_err = 'X'.
RETURN.
ENDIF.
SELECT SINGLE as4text
FROM e07t
INTO gv_title
WHERE trkorr IN s_reque.
IF gt_sel[] IS INITIAL.
gv_err = 'X'.
RETURN.
ENDIF.
DESCRIBE TABLE gt_sel.
IF sy-tfill EQ 1.
LOOP AT gt_sel INTO gs_sel.
gs_sel-selkz = 'X'.
MODIFY gt_sel FROM gs_sel.
ENDLOOP.
ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'GT_SEL'
i_inclname = sy-repid
i_bypassing_buffer = 'X'
CHANGING
ct_fieldcat = gt_fldct[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
i_title = gv_title
i_screen_start_column = 10
i_screen_start_line = 2
i_screen_end_column = 110
i_screen_end_line = 7
i_selection = 'X'
i_zebra = 'X'
i_tabname = 'GT_SEL'
it_fieldcat = gt_fldct[]
i_checkbox_fieldname = 'SELKZ'
TABLES
t_outtab = gt_sel
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT gt_sel INTO gs_sel WHERE selkz EQ 'X'.
EXIT.
ENDLOOP.
IF sy-subrc NE 0.
gv_err = 'X'.
RETURN.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_CREATE_TOC
*&---------------------------------------------------------------------*
FORM f_create_toc .
DATA: lt_e071 TYPE tr_objects,
lt_line TYPE TABLE OF tline.
DATA: lv_like TYPE as4text,
lv_datum TYPE datum,
lv_tarsystem TYPE tr_target,
lv_title TYPE as4text,
lv_tdline TYPE tdline.
CHECK gv_err IS INITIAL.
CHECK p_new IS NOT INITIAL.
CONCATENATE 'TOC' gv_title INTO gv_title SEPARATED BY space.
CONCATENATE gv_title(57) '%' INTO lv_like.
lv_datum = sy-datum - 300.
SELECT COUNT( * )
FROM e07t
INNER JOIN e070 ON e070~trkorr EQ e07t~trkorr
INTO @DATA(lv_count)
WHERE as4text LIKE @lv_like
AND trfunction EQ 'T'
AND as4date GE @lv_datum.
DATA(lv_numc2) = CONV numc2( lv_count ).
ADD 1 TO lv_numc2.
CONCATENATE '#' lv_numc2 INTO lv_title.
gv_title+57(3) = lv_title.
SELECT SINGLE tarsystem
FROM e070
INTO lv_tarsystem
WHERE trkorr IN s_reque.
CALL FUNCTION 'TR_INSERT_REQUEST_WITH_TASKS'
EXPORTING
iv_type = 'T'
iv_text = gv_title
iv_target = lv_tarsystem
IMPORTING
es_request_header = gs_header
EXCEPTIONS
insert_failed = 1
enqueue_failed = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
gv_err = 'X'.
RETURN.
ENDIF.
DO.
SELECT SINGLE *
FROM e070
INTO gs_e070
WHERE trkorr EQ gs_header-trkorr.
IF sy-subrc EQ 0.
EXIT.
ELSE.
WAIT UP TO '0.5' SECONDS.
ENDIF.
ENDDO.
PERFORM f_insert_subtasks TABLES lt_e071.
LOOP AT gt_sel INTO gs_sel WHERE selkz EQ 'X'.
APPEND VALUE #( tdformat = '/' tdline = gs_sel-trkorr ) TO lt_line.
ENDLOOP.
IF sy-subrc EQ 0.
CONCATENATE '@' sy-uname INTO lv_tdline.
APPEND VALUE #( tdformat = '/' tdline = space ) TO lt_line.
APPEND VALUE #( tdformat = '/' tdline = lv_tdline ) TO lt_line.
ENDIF.
IF lt_line IS NOT INITIAL.
CALL FUNCTION 'TRINT_DOCU_INTERFACE'
EXPORTING
iv_object = gs_header-trkorr
iv_action = 'M'
TABLES
tt_line = lt_line
EXCEPTIONS
error = 1.
ENDIF.
MESSAGE s899(fb) WITH 'Request oluşturuldu'
gs_header-trkorr." DISPLAY LIKE 'S'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_CHECK_OLD_TOC
*&---------------------------------------------------------------------*
FORM f_check_old_toc.
DATA: lt_e071 TYPE tr_objects.
CHECK p_old IS NOT INITIAL.
SELECT SINGLE *
FROM e070
INTO CORRESPONDING FIELDS OF @gs_header
WHERE trkorr EQ @p_oldrq.
IF sy-subrc NE 0.
gv_err = 'X'.
MESSAGE s899(fb) WITH 'Mevcut TOC hatalı' DISPLAY LIKE 'E'.
RETURN.
ENDIF.
PERFORM f_insert_subtasks TABLES lt_e071.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_RELASE_SUBTASKS
*&---------------------------------------------------------------------*
FORM f_relase_subtasks .
CHECK gv_err IS INITIAL.
IF p_relsb EQ 'X'.
LOOP AT gt_sel INTO gs_sel WHERE selkz EQ 'X'.
CALL FUNCTION 'TR_RELEASE_REQUEST'
EXPORTING
iv_trkorr = gs_sel-trkorr
iv_dialog = space
iv_without_locking = 'X'
iv_display_export_log = space
EXCEPTIONS
cts_initialization_failure = 1
enqueue_failed = 2
no_authorization = 3
invalid_request = 4
request_already_released = 5
repeat_too_early = 6
error_in_export_methods = 7
object_check_error = 8
docu_missing = 9
db_access_error = 10
action_aborted_by_user = 11
export_failed = 12
OTHERS = 13.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_RELEASE_N_TRANSPORT_TOC
*&---------------------------------------------------------------------*
FORM f_release_n_transport_toc.
DATA: lt_req TYPE stms_tr_requests.
CHECK gv_err IS INITIAL.
IF p_relnw EQ 'X'.
CALL FUNCTION 'TR_RELEASE_REQUEST'
EXPORTING
iv_trkorr = gs_header-trkorr
iv_dialog = space
iv_without_locking = 'X'
iv_display_export_log = space
EXCEPTIONS
cts_initialization_failure = 1
enqueue_failed = 2
no_authorization = 3
invalid_request = 4
request_already_released = 5
repeat_too_early = 6
error_in_export_methods = 7
object_check_error = 8
docu_missing = 9
db_access_error = 10
action_aborted_by_user = 11
export_failed = 12
OTHERS = 13.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF p_trnnw EQ 'X'.
DO 20 TIMES.
SELECT SINGLE *
FROM e070
INTO gs_e070
WHERE trkorr EQ gs_header-trkorr.
IF gs_e070-trstatus EQ 'R'.
SELECT *
FROM e070
INTO CORRESPONDING FIELDS OF TABLE lt_req
WHERE trkorr EQ gs_header-trkorr.
CALL FUNCTION 'TMS_UI_TRANSMIT_TR_QUEUE'
EXPORTING
iv_system = gs_e070-tarsystem
it_requests = lt_req
EXCEPTIONS
cancelled_by_user = 1
without_refresh = 2
transmit_queue_failed = 3
OTHERS = 4.
IF sy-subrc <> 0.
IF sy-subrc EQ 1.
RETURN.
ENDIF.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'TMS_MGR_IMPORT_TR_REQUEST'
EXPORTING
iv_system = gs_e070-tarsystem
iv_request = gs_header-trkorr
iv_client = gc_client
iv_overtake = 'X'
EXCEPTIONS
read_config_failed = 1
table_of_requests_is_empty = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
EXIT.
ELSE.
WAIT UP TO 1 SECONDS.
ENDIF.
ENDDO.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_INSERT_SUBTASKS
*&---------------------------------------------------------------------*
FORM f_insert_subtasks TABLES t_e071 TYPE tr_objects.
DATA: lt_e071k TYPE tr_keys.
LOOP AT gt_sel INTO gs_sel WHERE selkz EQ 'X'.
LOOP AT gt_e071eu INTO gs_e071eu WHERE trkorr EQ gs_sel-trkorr.
CLEAR gs_e071.
MOVE-CORRESPONDING gs_e071eu TO gs_e071.
APPEND gs_e071 TO t_e071.
ENDLOOP.
SELECT *
FROM e071k
APPENDING TABLE @lt_e071k
WHERE trkorr EQ @gs_sel-trkorr.
ENDLOOP.
CALL FUNCTION 'TR_REQUEST_CHOICE'
EXPORTING
iv_suppress_dialog = 'X'
iv_request_types = 'T'
iv_request = gs_header-trkorr
it_e071 = t_e071[]
it_e071k = lt_e071k[]
IMPORTING
es_request = gs_header
EXCEPTIONS
invalid_request = 1
invalid_request_type = 2
user_not_owner = 3
no_objects_appended = 4
enqueue_error = 5
cancelled_by_user = 6
recursive_call = 7
OTHERS = 8.
IF sy-subrc <> 0.
IF p_old EQ space.
CALL FUNCTION 'TRINT_TDR_USER_COMMAND'
EXPORTING
iv_object = gs_header-trkorr
iv_type = 'TASK'
iv_command = 'DELE'.
ENDIF.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
gv_err = 'X'.
RETURN.
ENDIF.
ENDFORM.
**********************************************************************
***TRINT_DOCU_INTERFACE
***DOKHL