-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathZJK_REPO_OBJ_DIFF
More file actions
3493 lines (2876 loc) · 107 KB
/
Copy pathZJK_REPO_OBJ_DIFF
File metadata and controls
3493 lines (2876 loc) · 107 KB
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
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
*---------------------------------------------------------------------*
* *
* Report ZJK_REPO_OBJ_DIFF *
* *
*---------------------------------------------------------------------*
* *
* Remote comparison of repository objects *
* *
* Author: Jacek Kopcinski *
* LinkedIn: pl.linkedin.com/in/jkopcinski *
* Date: 04.02.2015 *
* *
*---------------------------------------------------------------------*
REPORT zjk_repo_obj_diff.
"$. Region DEFINITIONS (CLASSES, TYPES, GLOBAL VARS)
CLASS gcl_obj_checker DEFINITION DEFERRED.
*----------------------------------------------------------------------*
* TABLES *
*----------------------------------------------------------------------*
TABLES:
sci_dynp.
*----------------------------------------------------------------------*
* TYPES *
*----------------------------------------------------------------------*
TYPE-POOLS:
svrs2.
TYPES:
ygv_repo_obj_status TYPE i,
BEGIN OF ygs_object,
pgmid TYPE e071-pgmid,
object TYPE e071-object,
obj_name TYPE e071-obj_name,
devclass TYPE tadir-devclass,
author TYPE tadir-author,
parent_object TYPE tadir-object,
parent_obj_name TYPE tadir-obj_name,
END OF ygs_object,
BEGIN OF ygs_outtab.
INCLUDE TYPE ygs_object.
TYPES:
status TYPE ygv_repo_obj_status,
status_icon TYPE icon_l2,
status_txt TYPE char20,
log_link TYPE text10,
checker TYPE REF TO gcl_obj_checker,
END OF ygs_outtab,
ygt_request_task TYPE STANDARD TABLE OF e070,
ygt_tr_objects TYPE STANDARD TABLE OF e071,
ygt_objects TYPE STANDARD TABLE OF ygs_object,
ygt_outtab TYPE STANDARD TABLE OF ygs_outtab.
*----------------------------------------------------------------------*
* CLASS DEFINITIONS *
*----------------------------------------------------------------------*
CLASS gcl_system DEFINITION CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS:
get_system
IMPORTING iv_name TYPE tmssysnam
RETURNING VALUE(oo_sys) TYPE REF TO gcl_system,
class_constructor.
METHODS:
get_name RETURNING VALUE(ov_name) TYPE tmssysnam,
get_rfc_dest RETURNING VALUE(ov_dest) TYPE rfcdest.
PRIVATE SECTION.
CLASS-DATA:
lt_systems TYPE tmscsyslst_typ.
DATA:
lv_name TYPE tmssysnam,
lv_rfc_dest TYPE rfc_dest.
ENDCLASS. "gcl_system DEFINITION
*----------------------------------------------------------------------*
* CLASS gcl_logger DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_logger DEFINITION.
PUBLIC SECTION.
METHODS:
show_log,
add_info IMPORTING iv_msg TYPE clike,
add_warning IMPORTING iv_msg TYPE clike,
add_error IMPORTING iv_msg TYPE clike.
PRIVATE SECTION.
TYPE-POOLS:
slis, icon.
TYPES:
BEGIN OF yls_log,
type TYPE bapiret2-type,
icon TYPE balimsgty,
message TYPE baltmsg,
END OF yls_log,
ylt_log TYPE STANDARD TABLE OF yls_log WITH DEFAULT KEY.
DATA:
lt_log TYPE ylt_log.
METHODS:
add_log
IMPORTING iv_type TYPE msgty iv_msg TYPE clike,
get_icon
IMPORTING iv_type TYPE msgty
RETURNING VALUE(ov_icon) TYPE balimsgty,
prepare_fieldcat CHANGING ct_fieldcat TYPE slis_t_fieldcat_alv.
ENDCLASS. "gcl_logger DEFINITION
*----------------------------------------------------------------------*
* CLASS gcl_obj_checker DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_obj_checker DEFINITION ABSTRACT.
PUBLIC SECTION.
CONSTANTS:
aco_status_unknown TYPE i VALUE 0,
aco_status_equal TYPE i VALUE 1,
aco_status_missing TYPE i VALUE 2,
aco_status_changed TYPE i VALUE 3.
CLASS-METHODS:
get_status_txt
IMPORTING iv_status TYPE ygv_repo_obj_status
RETURNING VALUE(ov_txt) TYPE string.
METHODS:
constructor,
check RETURNING VALUE(ov_status) TYPE ygv_repo_obj_status,
show_object,
show_diff ABSTRACT,
show_log,
set_object IMPORTING is_obj TYPE ygs_object,
set_target_sys IMPORTING io_sys TYPE REF TO gcl_system,
get_target_sys RETURNING VALUE(oo_sys) TYPE REF TO gcl_system,
clone ABSTRACT RETURNING VALUE(oo_checker) TYPE REF TO gcl_obj_checker.
PROTECTED SECTION.
DATA:
as_logger TYPE REF TO gcl_logger,
as_obj TYPE ygs_object,
as_obj_loc TYPE svrs2_versionable_object,
as_obj_rem TYPE svrs2_versionable_object,
as_delta TYPE svrs2_xversionable_object,
ao_target_sys TYPE REF TO gcl_system.
METHODS:
read_object
IMPORTING
iv_remote TYPE boolean OPTIONAL
EXPORTING
ov_missing TYPE boolean
os_obj TYPE svrs2_versionable_object,
clear_technical_fields
IMPORTING it_tech_fields TYPE fieldname_tab
CHANGING ct_tab TYPE STANDARD TABLE,
clear_irrelevant_data
CHANGING os_obj TYPE svrs2_versionable_object,
replace_texts
CHANGING os_obj TYPE svrs2_versionable_object,
evaluate_delta ABSTRACT
RETURNING VALUE(ov_status) TYPE ygv_repo_obj_status.
ENDCLASS. "gcl_obj_checker DEFINITION
*----------------------------------------------------------------------*
* CLASS gcl_dflt_checker DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_dflt_checker DEFINITION
INHERITING FROM gcl_obj_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION,
check REDEFINITION,
show_diff REDEFINITION.
PROTECTED SECTION.
METHODS:
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_dflt_checker DEFINITION
*----------------------------------------------------------------------*
* CLASS gcl_code_checker DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_code_checker DEFINITION
INHERITING FROM gcl_obj_checker ABSTRACT.
PUBLIC SECTION.
METHODS:
show_diff REDEFINITION,
set_ignore_comments IMPORTING iv_value TYPE boolean,
set_ignore_indents IMPORTING iv_value TYPE boolean,
get_ignore_comments RETURNING VALUE(ov_value) TYPE boolean,
get_ignore_indents RETURNING VALUE(ov_value) TYPE boolean.
PROTECTED SECTION.
METHODS:
normalize_code CHANGING ot_code TYPE abaptxt255_tab.
DATA:
lv_ignore_indents TYPE boolean,
lv_ignore_comments TYPE boolean.
ENDCLASS. "gcl_code_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_generic_code_checker DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_generic_code_checker DEFINITION
INHERITING FROM gcl_code_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION.
PROTECTED SECTION.
METHODS:
evaluate_delta REDEFINITION,
clear_irrelevant_data REDEFINITION.
ENDCLASS. "gcl_generic_code_checker DEFINITION
*----------------------------------------------------------------------*
* CLASS gcl_class_section_checker ABSTRACT DEFIN
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_class_section_checker DEFINITION ABSTRACT
INHERITING FROM gcl_code_checker.
PROTECTED SECTION.
TYPES:
ylt_methods TYPE STANDARD TABLE OF vseomethod,
ylt_attributes TYPE STANDARD TABLE OF vseoattrib,
ylt_parameters TYPE STANDARD TABLE OF vseoparam.
METHODS:
clear_irrelevant_meth_data
CHANGING ct_meth TYPE ylt_methods,
clear_irrelevant_attr_data
CHANGING ct_attr TYPE ylt_attributes,
clear_irrelevant_param_data
CHANGING ct_param TYPE ylt_parameters.
ENDCLASS. "gcl_class_section_checker ABSTRACT DEFIN
*----------------------------------------------------------------------*
* CLASS gcl_cpub_checker DEFINITIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_cpub_checker DEFINITION
INHERITING FROM gcl_class_section_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION.
PROTECTED SECTION.
METHODS:
clear_irrelevant_data REDEFINITION,
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_cpub_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_cpro_checker DEFINITIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_cpro_checker DEFINITION
INHERITING FROM gcl_class_section_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION.
PROTECTED SECTION.
METHODS:
clear_irrelevant_data REDEFINITION,
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_cpro_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_cpri_checker DEFINITIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_cpri_checker DEFINITION
INHERITING FROM gcl_class_section_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION.
PROTECTED SECTION.
METHODS:
clear_irrelevant_data REDEFINITION,
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_cpri_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_clsd_checker DEFINITIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_clsd_checker DEFINITION
INHERITING FROM gcl_code_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION.
PROTECTED SECTION.
METHODS:
clear_irrelevant_data REDEFINITION,
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_clsd_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_intf_checker DEFINITIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_intf_checker DEFINITION
INHERITING FROM gcl_code_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION.
PROTECTED SECTION.
METHODS:
clear_irrelevant_data REDEFINITION,
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_intf_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_func_checker DEFINITIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_func_checker DEFINITION
INHERITING FROM gcl_generic_code_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION,
show_diff REDEFINITION.
PROTECTED SECTION.
METHODS:
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_func_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_rept_checker DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_rept_checker DEFINITION
INHERITING FROM gcl_obj_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION,
show_diff REDEFINITION.
PROTECTED SECTION.
METHODS:
clear_irrelevant_data REDEFINITION,
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_rept_checker DEFINITION
*----------------------------------------------------------------------*
* CLASS gcl_dynp_checker DEFINITIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_dynp_checker DEFINITION
INHERITING FROM gcl_obj_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION,
show_diff REDEFINITION.
PROTECTED SECTION.
METHODS:
clear_irrelevant_data REDEFINITION,
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_dynp_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_cuad_checker DEFINITIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_cuad_checker DEFINITION
INHERITING FROM gcl_obj_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION,
show_diff REDEFINITION.
PROTECTED SECTION.
METHODS:
clear_irrelevant_data REDEFINITION,
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_cuad_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_tabt_checker DEFINITIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_tabt_checker DEFINITION
INHERITING FROM gcl_obj_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION,
show_diff REDEFINITION.
PROTECTED SECTION.
METHODS:
clear_irrelevant_data REDEFINITION,
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_tabt_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_dted_checker DEFINITIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_dted_checker DEFINITION
INHERITING FROM gcl_obj_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION,
show_diff REDEFINITION.
PROTECTED SECTION.
METHODS:
clear_irrelevant_data REDEFINITION,
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_dted_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_domd_checker DEFINITIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_domd_checker DEFINITION
INHERITING FROM gcl_obj_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION,
show_diff REDEFINITION.
PROTECTED SECTION.
METHODS:
clear_irrelevant_data REDEFINITION,
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_domd_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_vied_checker DEFINITIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_vied_checker DEFINITION
INHERITING FROM gcl_obj_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION,
show_diff REDEFINITION.
PROTECTED SECTION.
METHODS:
clear_irrelevant_data REDEFINITION,
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_vied_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_ttyd_checker DEFINITIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_ttyd_checker DEFINITION
INHERITING FROM gcl_obj_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION,
show_diff REDEFINITION.
PROTECTED SECTION.
METHODS:
clear_irrelevant_data REDEFINITION,
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_ttyd_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_tabd_checker DEFINITIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_tabd_checker DEFINITION
INHERITING FROM gcl_obj_checker.
PUBLIC SECTION.
METHODS:
clone REDEFINITION,
show_diff REDEFINITION.
PROTECTED SECTION.
METHODS:
clear_irrelevant_data REDEFINITION,
replace_texts REDEFINITION,
evaluate_delta REDEFINITION.
ENDCLASS. "gcl_tabd_checker DEFINITIO
*----------------------------------------------------------------------*
* CLASS gcl_checker_manager DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_checker_manager DEFINITION.
PUBLIC SECTION.
TYPES:
BEGIN OF yls_obj_checker,
object TYPE tadir-object,
prototype TYPE REF TO gcl_obj_checker,
END OF yls_obj_checker,
ylt_obj_checker TYPE HASHED TABLE OF yls_obj_checker
WITH UNIQUE KEY object.
METHODS:
register_checker
IMPORTING
iv_object TYPE tadir-object
io_prototype TYPE REF TO gcl_obj_checker,
get_checker_instance
IMPORTING
iv_object TYPE tadir-object
RETURNING VALUE(oo_checker) TYPE REF TO gcl_obj_checker,
get_registered_types
RETURNING VALUE(ot_types) TYPE devtyrange.
PRIVATE SECTION.
DATA:
at_obj_checker TYPE ylt_obj_checker.
ENDCLASS. "gcl_checker_manager DEFINITION
*----------------------------------------------------------------------*
* CLASS gcl_main DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_main DEFINITION.
PUBLIC SECTION.
CLASS-DATA:
at_objects TYPE ygt_objects,
ar_progs TYPE scit_prgnm,
ar_fugrs TYPE scit_fugr,
ar_pckg TYPE scit_devc,
ar_clas TYPE scit_clas,
ar_fpckg TYPE scit_devc,
ar_fresp TYPE scit_resp,
ar_tran TYPE RANGE OF trkorr,
ar_ddics TYPE scit_tabl,
ar_typps TYPE scit_typp,
av_only_diffs TYPE boolean,
av_syst TYPE tmssysnam,
av_ignore_indents TYPE boolean,
av_ignore_comments TYPE boolean,
av_show_unsupported TYPE boolean.
CLASS-METHODS:
show_object IMPORTING iv_index TYPE i,
show_diff IMPORTING iv_index TYPE i,
show_log IMPORTING iv_index TYPE i,
start.
PRIVATE SECTION.
TYPE-POOLS:
slis, icon.
CLASS-METHODS:
show_progress
IMPORTING iv_value TYPE i iv_max TYPE i is_obj TYPE ygs_object,
register_checkers,
build_object_set,
build_dictionary_set,
build_obj_set_for_type_group,
build_obj_set_for_program,
build_obj_set_for_package,
build_obj_set_for_func_group,
build_obj_set_for_class,
build_obj_set_for_request,
expand_objects,
get_transport_tasks
EXPORTING ot_tasks TYPE ygt_request_task,
get_task_objects
IMPORTING it_tasks TYPE ygt_request_task
EXPORTING ot_tr_objects TYPE ygt_tr_objects,
get_responsible
IMPORTING iv_author TYPE tadir-author iv_cnam TYPE trdir-cnam iv_unam TYPE trdir-unam
RETURNING VALUE(ov_resp) TYPE tadir-author,
fill_prog_responsible
CHANGING ot_progs TYPE ygt_objects,
check_objects,
fill_status_icons,
show_results,
prepare_fieldcat CHANGING ct_fieldcat TYPE slis_t_fieldcat_alv.
CLASS-DATA:
ao_manager TYPE REF TO gcl_checker_manager,
at_outtab TYPE ygt_outtab.
ENDCLASS. "gcl_main DEFINITION
*----------------------------------------------------------------------*
* CONSTANTS *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* FIELD SYMBOLS *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* GLOBAL DATA *
*----------------------------------------------------------------------*
"$. Endregion TOP
"$. Region CLASSES IMPLEMENTATIONS
*----------------------------------------------------------------------*
* CLASS gcl_system IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_system IMPLEMENTATION.
METHOD class_constructor.
CALL FUNCTION 'TMS_CI_GET_SYSTEMLIST'
EXPORTING
iv_only_active = 'X'
TABLES
tt_syslst = lt_systems.
ENDMETHOD. "constructor
METHOD get_system.
DATA:
ls_sys TYPE tmscsyslst.
READ TABLE lt_systems INTO ls_sys
WITH KEY sysnam = iv_name.
CHECK sy-subrc = 0.
CREATE OBJECT oo_sys.
oo_sys->lv_name = iv_name.
CONCATENATE 'TMSADM@' ls_sys-sysnam '.'
ls_sys-domnam
INTO oo_sys->lv_rfc_dest.
ENDMETHOD. "constructor
METHOD get_name.
ov_name = lv_name.
ENDMETHOD. "get_name
METHOD get_rfc_dest.
ov_dest = lv_rfc_dest.
ENDMETHOD. "get_rfc_dest
ENDCLASS. "gcl_system IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS gcl_logger IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_logger IMPLEMENTATION.
METHOD add_log.
DATA:
ls_log TYPE yls_log.
ls_log-type = iv_type.
ls_log-icon = get_icon( iv_type ).
ls_log-message = iv_msg.
APPEND ls_log TO lt_log.
ENDMETHOD. "add_log
METHOD add_info.
add_log( iv_type = 'I' iv_msg = iv_msg ).
ENDMETHOD. "add_info
METHOD add_warning.
add_log( iv_type = 'W' iv_msg = iv_msg ).
ENDMETHOD. "add_warning
METHOD add_error.
add_log( iv_type = 'E' iv_msg = iv_msg ).
ENDMETHOD. "add_error
METHOD get_icon.
CASE iv_type.
WHEN 'E'.
ov_icon = icon_led_red.
WHEN 'I' OR 'S'.
ov_icon = icon_led_green.
WHEN 'W'.
ov_icon = icon_led_yellow.
WHEN OTHERS.
ov_icon = icon_status.
ENDCASE.
ENDMETHOD. "get_icon
METHOD show_log.
DATA:
ls_layout TYPE slis_layout_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv.
ls_layout-colwidth_optimize = 'X'.
ls_layout-zebra = 'X'.
prepare_fieldcat( CHANGING ct_fieldcat = lt_fieldcat ).
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'ZJK_REPO_OBJ_DIFF'
is_layout = ls_layout
it_fieldcat = lt_fieldcat
TABLES
t_outtab = lt_log.
ENDMETHOD. "show_log
METHOD prepare_fieldcat.
DATA:
ls_fieldcat TYPE slis_fieldcat_alv.
CLEAR ls_fieldcat.
ls_fieldcat-ref_tabname = 'BAL_S_SHOW'.
ls_fieldcat-ref_fieldname = 'ICON_MSGTY'.
ls_fieldcat-fieldname = 'ICON'.
ls_fieldcat-outputlen = 3.
ls_fieldcat-icon = 'X'.
APPEND ls_fieldcat TO ct_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-ref_tabname = 'BAL_S_SHOW'.
ls_fieldcat-ref_fieldname = 'T_MSG'.
ls_fieldcat-fieldname = 'MESSAGE'.
APPEND ls_fieldcat TO ct_fieldcat.
ENDMETHOD. "prepare_fieldcat
ENDCLASS. "gcl_logger IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS gcl_obj_checker IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_obj_checker IMPLEMENTATION.
METHOD constructor.
CREATE OBJECT as_logger.
ENDMETHOD. "constructor
METHOD set_object.
as_obj = is_obj.
ENDMETHOD. "set_object
METHOD set_target_sys.
ao_target_sys = io_sys.
ENDMETHOD. "set_target_sys
METHOD get_target_sys.
oo_sys = ao_target_sys.
ENDMETHOD. "get_target_sys
METHOD read_object.
CLEAR: os_obj, ov_missing.
os_obj-objtype = as_obj-object.
os_obj-objname = as_obj-obj_name.
os_obj-versno = '00000'.
IF iv_remote = 'X'.
os_obj-destination = ao_target_sys->get_rfc_dest( ).
ENDIF.
CALL FUNCTION 'SVRS_GET_VERSION'
CHANGING
object = os_obj
EXCEPTIONS
communication_error = 1
system_error = 2
no_version = 3
version_unreadable = 4
OTHERS = 5.
IF sy-subrc <> 0.
ov_missing = 'X'.
ENDIF.
ENDMETHOD. "read_object
METHOD clear_technical_fields.
DATA:
ls_tech_field TYPE fieldname.
FIELD-SYMBOLS:
<row> TYPE any,
<field> TYPE any.
LOOP AT it_tech_fields INTO ls_tech_field.
LOOP AT ct_tab ASSIGNING <row>.
ASSIGN COMPONENT ls_tech_field OF STRUCTURE <row> TO <field>.
IF sy-subrc = 0.
CLEAR <field>.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDMETHOD. "clear_technical_fields
METHOD clear_irrelevant_data.
DATA:
lv_type TYPE c,
lv_count TYPE i.
FIELD-SYMBOLS:
<ls_part> TYPE any,
<ls_row> TYPE any,
<lt_table> TYPE table,
<lv_value> TYPE any.
ASSIGN COMPONENT os_obj-objtype OF STRUCTURE os_obj TO <ls_part>.
CHECK sy-subrc = 0.
ASSIGN COMPONENT 'MDLOG' OF STRUCTURE <ls_part> TO <lt_table>.
IF sy-subrc = 0.
REFRESH <lt_table>.
ENDIF.
DESCRIBE FIELD <ls_part> TYPE lv_type COMPONENTS lv_count.
DO lv_count TIMES.
ASSIGN COMPONENT sy-index OF STRUCTURE <ls_part> TO <lt_table>.
CHECK sy-subrc = 0.
LOOP AT <lt_table> ASSIGNING <ls_row>.
ASSIGN COMPONENT 'AUTHOR' OF STRUCTURE <ls_row> TO <lv_value>.
IF sy-subrc = 0.
CLEAR <lv_value>.
ENDIF.
ASSIGN COMPONENT 'CREATEDON' OF STRUCTURE <ls_row> TO <lv_value>.
IF sy-subrc = 0.
CLEAR <lv_value>.
ENDIF.
ASSIGN COMPONENT 'CHANGEDBY' OF STRUCTURE <ls_row> TO <lv_value>.
IF sy-subrc = 0.
CLEAR <lv_value>.
ENDIF.
ASSIGN COMPONENT 'CHANGEDON' OF STRUCTURE <ls_row> TO <lv_value>.
IF sy-subrc = 0.
CLEAR <lv_value>.
ENDIF.
ENDLOOP.
ENDDO.
ENDMETHOD. "clear_irrelevant_data
METHOD replace_texts.
ENDMETHOD. "replace_texts
METHOD check.
DATA:
lv_missing TYPE boolean.
read_object( IMPORTING os_obj = as_obj_loc ).
read_object(
EXPORTING iv_remote = 'X'
IMPORTING os_obj = as_obj_rem
ov_missing = lv_missing
).
IF lv_missing = 'X'.
ov_status = aco_status_missing.
RETURN.
ENDIF.
clear_irrelevant_data( CHANGING os_obj = as_obj_loc ).
clear_irrelevant_data( CHANGING os_obj = as_obj_rem ).
replace_texts( CHANGING os_obj = as_obj_loc ).
replace_texts( CHANGING os_obj = as_obj_rem ).
CALL FUNCTION 'SVRS_MAKE_OBJECT_DELTA'
EXPORTING
obj_old = as_obj_loc
obj_new = as_obj_rem
CHANGING
delta = as_delta
EXCEPTIONS
OTHERS = 2.
ov_status = evaluate_delta( ).
ENDMETHOD. "check
METHOD get_status_txt.
CASE iv_status.
WHEN aco_status_equal.
ov_txt = 'Same'.
WHEN aco_status_missing.
ov_txt = 'Missing'.
WHEN aco_status_changed.
ov_txt = 'Changed'.
WHEN OTHERS.
ov_txt = 'Unknown'.
ENDCASE.
ENDMETHOD. "get_status_txt
METHOD show_log.
as_logger->show_log( ).
ENDMETHOD. "show_log
METHOD show_object.
CALL FUNCTION 'TR_OBJECT_JUMP_TO_TOOL'
EXPORTING
iv_pgmid = as_obj-pgmid
iv_object = as_obj-object
iv_obj_name = as_obj-obj_name
iv_action = 'SHOW'
EXCEPTIONS
jump_not_possible = 1
OTHERS = 2.
ENDMETHOD. "show_object
ENDCLASS. "gcl_obj_checker IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS gcl_dflt_checker IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_dflt_checker IMPLEMENTATION.
METHOD clone.
DATA:
lo_checker TYPE REF TO gcl_dflt_checker.
CREATE OBJECT lo_checker.
lo_checker->ao_target_sys = ao_target_sys.
oo_checker = lo_checker.
ENDMETHOD. "clone
METHOD check.
ov_status = aco_status_unknown.
ENDMETHOD. "check
METHOD evaluate_delta.
ov_status = aco_status_unknown.
ENDMETHOD. "evaluate_delta
METHOD show_diff.
MESSAGE 'Comparison not available for this type of object' TYPE 'I'.
ENDMETHOD. "show_diff
ENDCLASS. "gcl_dflt_checker IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS gcl_main IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS gcl_main IMPLEMENTATION.
METHOD register_checkers.
DATA:
lo_syst TYPE REF TO gcl_system,
lo_code_checker TYPE REF TO gcl_code_checker,
lo_checker TYPE REF TO gcl_obj_checker.
lo_syst = gcl_system=>get_system( av_syst ).
CREATE OBJECT ao_manager.
CREATE OBJECT lo_code_checker TYPE gcl_generic_code_checker.
lo_code_checker->set_target_sys( lo_syst ).