/
zcl_aoc_check_83.clas.abap
120 lines (94 loc) · 2.81 KB
/
zcl_aoc_check_83.clas.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
CLASS zcl_aoc_check_83 DEFINITION
PUBLIC
INHERITING FROM zcl_aoc_super_root
CREATE PUBLIC .
PUBLIC SECTION.
METHODS constructor .
METHODS get_message_text
REDEFINITION .
METHODS run
REDEFINITION .
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS ZCL_AOC_CHECK_83 IMPLEMENTATION.
METHOD constructor.
super->constructor( ).
version = '001'.
position = '083'.
has_documentation = c_true.
has_attributes = abap_true.
attributes_ok = abap_true.
mv_errty = c_error.
add_obj_type( 'DOMA' ).
add_obj_type( 'DTEL' ).
add_obj_type( 'TABL' ).
ENDMETHOD.
METHOD get_message_text.
CLEAR p_text.
CASE p_code.
WHEN '001'.
p_text = 'Unreferenced DDIC object'. "#EC NOTEXT
WHEN OTHERS.
super->get_message_text( EXPORTING p_test = p_test
p_code = p_code
IMPORTING p_text = p_text ).
ENDCASE.
ENDMETHOD.
METHOD run.
* abapOpenChecks
* https://github.com/larshp/abapOpenChecks
* MIT License
DATA: ls_dd02l TYPE dd02l,
ls_dd03l TYPE dd03l,
ls_dd04l TYPE dd04l,
ls_dd25l TYPE dd25l,
ls_dd40l TYPE dd40l,
ls_edisdef TYPE edisdef,
ls_wbcrossgt TYPE wbcrossgt.
CASE object_type.
WHEN 'DOMA'.
SELECT SINGLE * FROM dd04l INTO ls_dd04l WHERE domname = object_name.
IF sy-subrc = 0.
RETURN.
ENDIF.
WHEN 'DTEL'.
SELECT SINGLE * FROM dd03l INTO ls_dd03l WHERE rollname = object_name.
IF sy-subrc = 0.
RETURN.
ENDIF.
WHEN 'TABL'.
SELECT SINGLE * FROM dd02l INTO ls_dd02l WHERE tabname = object_name. "#EC CI_NOORDER
IF ( sy-subrc = 0 AND ls_dd02l-tabclass = 'APPEND' ) OR sy-subrc <> 0.
RETURN.
ENDIF.
SELECT SINGLE * FROM dd40l INTO ls_dd40l WHERE rowtype = object_name.
IF sy-subrc = 0.
RETURN.
ENDIF.
SELECT SINGLE * FROM dd03l INTO ls_dd03l
WHERE ( fieldname = '.INCLUDE' AND precfield = object_name )
OR ( rollname = object_name AND datatype = 'STRU' ).
IF sy-subrc = 0.
RETURN.
ENDIF.
SELECT SINGLE * FROM dd25l INTO ls_dd25l WHERE roottab = object_name. "#EC CI_NOFIRST
IF sy-subrc = 0.
RETURN.
ENDIF.
SELECT SINGLE * FROM edisdef INTO ls_edisdef WHERE segtyp = object_name.
IF sy-subrc = 0.
RETURN.
ENDIF.
ENDCASE.
SELECT SINGLE * FROM wbcrossgt
INTO ls_wbcrossgt
WHERE name = object_name
AND otype = 'TY'.
IF sy-subrc <> 0.
inform( p_test = myname
p_kind = mv_errty
p_code = '001' ).
ENDIF.
ENDMETHOD.
ENDCLASS.