Properties SourceCde
txt
1
*&---------------------------------------------------------------------*
2
*&  Include           ZSOFTCOPY_SEO                                    *
3
*&                                                                     *
4
*&---------------------------------------------------------------------*
5
*&                                                                     *
6
*& This file is part of ZSOFTCOPY.                                     *
7
*&                                                                     *
8
*& ZSOFTCOPY is free software: you can redistribute it and/or modify   *
9
*& it under the terms of the GNU General Public License as published   *
10
*& by the Free Software Foundation, either version 3 of the License,   *
11
*& or any later version.                                               *
12
*&                                                                     *
13
*& ZSOFTCOPY is distributed in the hope that it will be useful,        *
14
*& but WITHOUT ANY WARRANTY; without even the implied warranty of      *
15
*& MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       *
16
*& GNU General Public License for more details.                        *
17
*&                                                                     *
18
*& You should have received a copy of the GNU General Public License   *
19
*& along with ZDOWNLOAD. If not, see <http://www.gnu.org/licenses/>.   *
20
*&                                                                     *
21
*&---------------------------------------------------------------------*
22
*&                                                                     *
23
*&  Author:     Ruediger von Creytz     ruediger.creytz@globalbit.net  *
24
*&  Copyright:  globalBIT, LLC          http://www.globalbit.net       *
25
*&                                                                     *
26
*&---------------------------------------------------------------------*
27
 
28
 
29
*-----------------------------------------------------------------------
30
* seo
31
*-----------------------------------------------------------------------
32
FORM seo.
33
*INTF
34
  PERFORM seo_r3tr_intf.
35
*CLAS
36
  PERFORM seo_r3tr_clas.
37
*CLAS methods
38
  PERFORM seo_r3tr_clas_methods.
39
 
40
ENDFORM.                    "seo
41
 
42
 
43
*-----------------------------------------------------------------------
44
* seo_clas_get_attribs
45
*-----------------------------------------------------------------------
46
FORM seo_clas_get_attribs
47
  USING
48
    value(i_clsname)
49
    it_super_class TYPE it_seo_super_class
50
    it_ref_interface TYPE it_ref_seointerface
51
  CHANGING
52
    ct_ref_attrib TYPE it_ref_seoattrib.
53
 
54
  REFRESH ct_ref_attrib.
55
 
56
*Attributes - from Interfaces
57
  PERFORM seo_clas_get_attribs_from_intf
58
    USING
59
      i_clsname
60
      it_super_class
61
      it_ref_interface
62
    CHANGING
63
      ct_ref_attrib.
64
*Attributes - from Classes
65
  PERFORM seo_clas_get_attribs_from_clas
66
    USING
67
      i_clsname
68
      it_super_class
69
    CHANGING
70
      ct_ref_attrib.
71
ENDFORM.                    "seo_clas_get_attribs
72
 
73
 
74
*-----------------------------------------------------------------------
75
* seo_clas_get_aliases
76
*-----------------------------------------------------------------------
77
FORM seo_clas_get_aliases
78
  USING
79
    value(i_clsname)
80
    it_ref_attrib TYPE it_ref_seoattrib
81
    it_ref_method TYPE it_ref_seomethod
82
    it_ref_event TYPE it_ref_seoevent
83
    it_ref_type TYPE it_ref_seotype
84
  CHANGING
85
    ct_ref_alias TYPE it_ref_seoalias.
86
 
87
  DATA:
88
  ls_ref_alias TYPE st_ref_seoalias,
89
  lt_ref_alias_tmp TYPE it_ref_seoalias,
90
  ls_clskey TYPE seoclskey,
91
  lt_seoalias TYPE seo_aliases,
92
  l_clsname TYPE seoclsname,
93
  l_cmpname TYPE seocmpname.
94
 
95
  FIELD-SYMBOLS:
96
  <ls_ref_attrib> TYPE st_ref_seoattrib,
97
  <ls_ref_method> TYPE st_ref_seomethod,
98
  <ls_ref_event> TYPE st_ref_seoevent,
99
  <ls_ref_type> TYPE st_ref_seotype,
100
  <ls_ref_alias> TYPE st_ref_seoalias,
101
  <ls_alias> TYPE seoaliases.
102
 
103
  REFRESH:
104
  ct_ref_alias.
105
 
106
  ls_ref_alias-type = txt_attribute.
107
  LOOP AT it_ref_attrib ASSIGNING <ls_ref_attrib>
108
    WHERE cpdname CP '*~*'.
109
    ls_ref_alias-cpdname = <ls_ref_attrib>-cpdname.
110
    ls_ref_alias-owner = <ls_ref_attrib>-owner.
111
    APPEND ls_ref_alias TO lt_ref_alias_tmp.
112
  ENDLOOP.
113
  ls_ref_alias-type = txt_method.
114
  LOOP AT it_ref_method ASSIGNING <ls_ref_method>
115
    WHERE cpdname CP '*~*'.
116
    ls_ref_alias-cpdname = <ls_ref_method>-cpdname.
117
    ls_ref_alias-owner = <ls_ref_method>-owner.
118
    APPEND ls_ref_alias TO lt_ref_alias_tmp.
119
  ENDLOOP.
120
  ls_ref_alias-type = txt_event.
121
  LOOP AT it_ref_event ASSIGNING <ls_ref_event>
122
    WHERE cpdname CP '*~*'.
123
    ls_ref_alias-cpdname = <ls_ref_event>-cpdname.
124
    ls_ref_alias-owner = <ls_ref_event>-owner.
125
    APPEND ls_ref_alias TO lt_ref_alias_tmp.
126
  ENDLOOP.
127
  ls_ref_alias-type = txt_type___1.
128
  LOOP AT it_ref_type ASSIGNING <ls_ref_type>
129
    WHERE cpdname CP '*~*'.
130
    ls_ref_alias-cpdname = <ls_ref_type>-cpdname.
131
    ls_ref_alias-owner = <ls_ref_type>-owner.
132
    APPEND ls_ref_alias TO lt_ref_alias_tmp.
133
  ENDLOOP.
134
*
135
  ls_clskey-clsname = i_clsname.
136
  CALL FUNCTION 'SEO_ALIASES_GET'
137
    EXPORTING
138
      cifkey  = ls_clskey
139
    CHANGING
140
      aliases = lt_seoalias.
141
  l_clsname = i_clsname.
142
  LOOP AT lt_ref_alias_tmp ASSIGNING <ls_ref_alias>
143
    WHERE cpdname CP '*~*'
144
    AND owner = i_clsname.
145
    SPLIT <ls_ref_alias>-cpdname AT '~'
146
      INTO l_clsname l_cmpname.
147
    READ TABLE lt_seoalias ASSIGNING <ls_alias>
148
      WITH KEY cmpname = l_cmpname.
149
    IF sy-subrc = 0.
150
      <ls_ref_alias>-refcmpname = <ls_alias>-cmpname.
151
      PERFORM get_dom_value_text
152
        USING
153
          'SEOEXPOSE'
154
          <ls_alias>-exposure
155
        CHANGING
156
          <ls_ref_alias>-exposure.
157
      IF NOT <ls_ref_alias>-refcmpname IS INITIAL
158
           AND <ls_alias>-exposure > 0.
159
        APPEND <ls_ref_alias> TO ct_ref_alias.
160
      ENDIF.
161
    ELSE.
162
      APPEND <ls_ref_alias> TO ct_ref_alias.
163
    ENDIF.
164
  ENDLOOP.
165
  SORT ct_ref_alias BY cpdname.
166
ENDFORM.                    "seo_clas_get_aliases
167
 
168
 
169
*-----------------------------------------------------------------------
170
* seo_clas_get_attribs_from_clas
171
*-----------------------------------------------------------------------
172
FORM seo_clas_get_attribs_from_clas
173
  USING
174
    value(i_clsname)
175
    it_super_class TYPE it_seo_super_class
176
  CHANGING
177
    ct_ref_attrib TYPE it_ref_seoattrib.
178
 
179
  DATA:
180
  lt_attrib TYPE STANDARD TABLE OF vseoattrib,
181
  l_cpdname TYPE seocpdname,
182
  ls_ref_attrib TYPE st_ref_seoattrib,
183
  l_str TYPE string,
184
  l_id TYPE string.
185
 
186
  FIELD-SYMBOLS:
187
  <ls_super_class> TYPE st_seo_super_class,
188
  <ls_attrib> TYPE vseoattrib,
189
  <ls_ref_attrib> TYPE st_ref_seoattrib.
190
 
191
  LOOP AT it_super_class ASSIGNING <ls_super_class>.
192
    SELECT * FROM vseoattrib INTO TABLE lt_attrib
193
      WHERE clsname = <ls_super_class>-clsname
194
      AND alias = abap_false
195
      AND langu = sy-langu
196
      AND version = '1'
197
      ORDER BY editorder.
198
    LOOP AT lt_attrib ASSIGNING <ls_attrib>.
199
      l_cpdname = <ls_attrib>-cmpname.
200
      READ TABLE ct_ref_attrib ASSIGNING <ls_ref_attrib>
201
        WITH KEY cpdname = l_cpdname.
202
      IF sy-subrc = 0.
203
        IF <ls_super_class>-clsname = i_clsname.
204
          <ls_ref_attrib>-inherited = abap_false.
205
        ENDIF.
206
      ELSEIF <ls_super_class>-clsname = i_clsname
207
      OR <ls_attrib>-exposure > 0.
208
        ls_ref_attrib-cpdname = l_cpdname.
209
        IF <ls_super_class>-clsname = i_clsname.
210
          ls_ref_attrib-inherited = abap_false.
211
        ELSE.
212
          ls_ref_attrib-inherited = abap_true.
213
        ENDIF.
214
        PERFORM get_dom_value_text
215
          USING
216
            'SEOEXPOSE'
217
            <ls_attrib>-exposure
218
          CHANGING
219
            ls_ref_attrib-exposure.
220
        PERFORM seo_get_check_model
221
          USING <ls_attrib>
222
          CHANGING ls_ref_attrib.
223
        PERFORM get_dom_value_text
224
          USING
225
            'SEOATTDECL'
226
            <ls_attrib>-attdecltyp
227
          CHANGING
228
            ls_ref_attrib-decltype.
229
        ls_ref_attrib-attrdonly = <ls_attrib>-attrdonly.
230
        PERFORM get_dom_value_text
231
          USING
232
            'SEOTYPTYPE'
233
            <ls_attrib>-typtype
234
          CHANGING
235
            ls_ref_attrib-typtype.
236
        ls_ref_attrib-type = <ls_attrib>-type.
237
        l_str = <ls_attrib>-exposure.
238
        CONDENSE l_str.
239
        CONCATENATE 'COMPONENTS_' l_str '_' INTO l_str.
240
        PERFORM get_id
241
          USING l_str <ls_super_class>-clsname
242
          CHANGING l_id.
243
        CONCATENATE 'switchContent(''' l_id ''')'
244
            INTO ls_ref_attrib-onclick.
245
        ls_ref_attrib-typelink = '->'.
246
        ls_ref_attrib-descript = <ls_attrib>-descript.
247
        ls_ref_attrib-attvalue = <ls_attrib>-attvalue.
248
        ls_ref_attrib-owner = <ls_super_class>-clsname.
249
        APPEND ls_ref_attrib TO ct_ref_attrib.
250
      ENDIF.
251
    ENDLOOP.
252
  ENDLOOP.
253
ENDFORM.                    "seo_clas_get_attribs_from_clas
254
 
255
 
256
*-----------------------------------------------------------------------
257
* seo_clas_get_attribs_from_intf
258
*-----------------------------------------------------------------------
259
FORM seo_clas_get_attribs_from_intf
260
  USING
261
    value(i_clsname)
262
    it_super_class TYPE it_seo_super_class
263
    it_ref_interface TYPE it_ref_seointerface
264
  CHANGING
265
    ct_ref_attrib TYPE it_ref_seoattrib.
266
 
267
  DATA:
268
  lt_attrib TYPE STANDARD TABLE OF vseoattrib,
269
  l_cpdname TYPE seocpdname,
270
  ls_ref_attrib TYPE st_ref_seoattrib,
271
  l_str TYPE string,
272
  l_id TYPE string.
273
 
274
  FIELD-SYMBOLS:
275
  <ls_super_class> TYPE st_seo_super_class,
276
  <ls_ref_interface> TYPE st_ref_seointerface,
277
  <ls_attrib> TYPE vseoattrib,
278
  <ls_ref_attrib> TYPE st_ref_seoattrib.
279
 
280
  LOOP AT it_super_class ASSIGNING <ls_super_class>.
281
    LOOP AT it_ref_interface ASSIGNING <ls_ref_interface>
282
      WHERE owner = <ls_super_class>-clsname.
283
      SELECT * FROM vseoattrib INTO TABLE lt_attrib
284
        WHERE clsname = <ls_ref_interface>-refclsname
285
        AND alias = abap_false
286
        AND langu = sy-langu
287
        AND version = '1'
288
        ORDER BY editorder.
289
      LOOP AT lt_attrib ASSIGNING <ls_attrib>.
290
        CONCATENATE
291
          <ls_attrib>-clsname '~' <ls_attrib>-cmpname
292
          INTO l_cpdname.
293
        READ TABLE ct_ref_attrib ASSIGNING <ls_ref_attrib>
294
          WITH KEY cpdname = l_cpdname.
295
        IF sy-subrc <> 0
296
        AND ( <ls_super_class>-clsname = i_clsname
297
        OR <ls_attrib>-exposure > 0 ).
298
          ls_ref_attrib-cpdname = l_cpdname.
299
          IF <ls_super_class>-clsname = i_clsname.
300
            ls_ref_attrib-inherited = abap_false.
301
          ELSE.
302
            ls_ref_attrib-inherited = abap_true.
303
          ENDIF.
304
          PERFORM get_dom_value_text
305
            USING
306
              'SEOEXPOSE'
307
              <ls_attrib>-exposure
308
            CHANGING
309
              ls_ref_attrib-exposure.
310
          PERFORM seo_get_check_model
311
            USING <ls_attrib>
312
            CHANGING ls_ref_attrib.
313
          PERFORM get_dom_value_text
314
            USING
315
              'SEOATTDECL'
316
              <ls_attrib>-attdecltyp
317
            CHANGING
318
              ls_ref_attrib-decltype.
319
          ls_ref_attrib-attrdonly = <ls_attrib>-attrdonly.
320
          PERFORM get_dom_value_text
321
            USING
322
              'SEOTYPTYPE'
323
              <ls_attrib>-typtype
324
            CHANGING
325
              ls_ref_attrib-typtype.
326
          ls_ref_attrib-type = <ls_attrib>-type.
327
          l_str = <ls_attrib>-exposure.
328
          CONDENSE l_str.
329
          CONCATENATE 'COMPONENTS_' l_str '_' INTO l_str.
330
          PERFORM get_id
331
            USING l_str <ls_super_class>-clsname
332
            CHANGING l_id.
333
          CONCATENATE 'switchContent(''' l_id ''')'
334
            INTO ls_ref_attrib-onclick.
335
          ls_ref_attrib-typelink = '->'.
336
          ls_ref_attrib-descript = <ls_attrib>-descript.
337
          ls_ref_attrib-attvalue = <ls_attrib>-attvalue.
338
          ls_ref_attrib-owner = <ls_super_class>-clsname.
339
          APPEND ls_ref_attrib TO ct_ref_attrib.
340
        ENDIF.
341
      ENDLOOP.
342
    ENDLOOP.
343
  ENDLOOP.
344
ENDFORM.                    "seo_clas_get_attribs_from_intf
345
 
346
 
347
*-----------------------------------------------------------------------
348
* seo_clas_get_events
349
*-----------------------------------------------------------------------
350
FORM seo_clas_get_events
351
  USING
352
    value(i_clsname)
353
    it_super_class TYPE it_seo_super_class
354
    it_ref_interface TYPE it_ref_seointerface
355
  CHANGING
356
    ct_ref_event TYPE it_ref_seoevent.
357
 
358
  REFRESH:
359
  ct_ref_event.
360
 
361
*Events - from Interfaces
362
  PERFORM seo_clas_get_events_from_intf
363
    USING
364
      i_clsname
365
      it_super_class
366
      it_ref_interface
367
    CHANGING
368
      ct_ref_event.
369
*Events - from Classes
370
  PERFORM seo_clas_get_events_from_clas
371
    USING
372
      i_clsname
373
      it_super_class
374
    CHANGING
375
      ct_ref_event.
376
 
377
ENDFORM.                    "seo_clas_get_events
378
 
379
 
380
*-----------------------------------------------------------------------
381
* seo_clas_get_events_from_clas
382
*-----------------------------------------------------------------------
383
FORM seo_clas_get_events_from_clas
384
  USING
385
    value(i_clsname)
386
    it_super_class TYPE it_seo_super_class
387
  CHANGING
388
    ct_ref_event TYPE it_ref_seoevent.
389
 
390
  DATA:
391
  lt_event TYPE STANDARD TABLE OF vseoevent,
392
  ls_ref_event TYPE st_ref_seoevent,
393
  ls_cmpkey TYPE seocmpkey.
394
 
395
  FIELD-SYMBOLS:
396
  <ls_super_class> TYPE st_seo_super_class,
397
  <ls_event> TYPE vseoevent.
398
 
399
  LOOP AT it_super_class ASSIGNING <ls_super_class>.
400
    SELECT * FROM vseoevent INTO TABLE lt_event
401
      WHERE clsname = <ls_super_class>-clsname
402
      AND langu = sy-langu
403
      AND alias = abap_false
404
      AND version = '1'
405
      ORDER BY editorder.
406
    LOOP AT lt_event ASSIGNING <ls_event>.
407
      CLEAR ls_ref_event.
408
      ls_cmpkey-clsname = <ls_super_class>-clsname.
409
      ls_cmpkey-cmpname = <ls_event>-cmpname.
410
      CALL FUNCTION 'SEO_EVENT_GET'
411
        EXPORTING
412
          evtkey  = ls_cmpkey
413
          version = 1
414
        IMPORTING
415
          event   = <ls_event>
416
        EXCEPTIONS
417
          OTHERS  = 1.
418
      IF sy-subrc = 0 AND <ls_event>-alias = abap_false.
419
        ls_ref_event-owner = <ls_super_class>-clsname.
420
        IF <ls_super_class>-clsname <> i_clsname.
421
          ls_ref_event-inherited = abap_true.
422
        ENDIF.
423
        ls_ref_event-cpdname = <ls_event>-cmpname.
424
        PERFORM get_dom_value_text
425
          USING
426
            'SEOEVTDECL'
427
            <ls_event>-evtdecltyp
428
          CHANGING
429
            ls_ref_event-type.
430
        PERFORM get_dom_value_text
431
          USING
432
            'SEOEXPOSE'
433
            <ls_event>-exposure
434
          CHANGING
435
            ls_ref_event-exposure.
436
        PERFORM seo_get_check_model
437
          USING <ls_event>
438
          CHANGING ls_ref_event.
439
        ls_ref_event-descript = <ls_event>-descript.
440
        APPEND ls_ref_event TO ct_ref_event.
441
      ENDIF.
442
    ENDLOOP.
443
  ENDLOOP.
444
ENDFORM.                    "seo_clas_get_events_from_clas
445
 
446
 
447
*-----------------------------------------------------------------------
448
* seo_clas_get_events_from_intf
449
*-----------------------------------------------------------------------
450
FORM seo_clas_get_events_from_intf
451
  USING
452
    value(i_clsname)
453
    it_super_class TYPE it_seo_super_class
454
    it_ref_interface TYPE it_ref_seointerface
455
  CHANGING
456
    ct_ref_event TYPE it_ref_seoevent.
457
 
458
  DATA:
459
  lt_event TYPE STANDARD TABLE OF vseoevent,
460
  ls_ref_event TYPE st_ref_seoevent,
461
  ls_cmpkey TYPE seocmpkey.
462
 
463
  FIELD-SYMBOLS:
464
  <ls_super_class> TYPE st_seo_super_class,
465
  <ls_ref_interface> TYPE st_ref_seointerface,
466
  <ls_event> TYPE vseoevent.
467
 
468
  LOOP AT it_super_class ASSIGNING <ls_super_class>.
469
    LOOP AT it_ref_interface ASSIGNING <ls_ref_interface>
470
      WHERE owner = <ls_super_class>-clsname.
471
      SELECT * FROM vseoevent INTO TABLE lt_event
472
        WHERE clsname = <ls_ref_interface>-refclsname
473
        AND langu = sy-langu
474
        AND alias = abap_false
475
        AND version = '1'
476
        ORDER BY editorder.
477
      LOOP AT lt_event ASSIGNING <ls_event>.
478
        CLEAR ls_ref_event.
479
        ls_cmpkey-clsname = <ls_ref_interface>-refclsname.
480
        IF <ls_super_class>-clsname <> i_clsname.
481
          ls_ref_event-inherited = abap_true.
482
        ENDIF.
483
        ls_cmpkey-cmpname = <ls_event>-cmpname.
484
        CALL FUNCTION 'SEO_EVENT_GET'
485
          EXPORTING
486
            evtkey  = ls_cmpkey
487
            version = 1
488
          IMPORTING
489
            event   = <ls_event>
490
          EXCEPTIONS
491
            OTHERS  = 1.
492
        IF sy-subrc = 0 AND <ls_event>-alias = abap_false.
493
          ls_ref_event-owner = <ls_super_class>-clsname.
494
          CONCATENATE <ls_ref_interface>-refclsname '~'
495
              <ls_event>-cmpname INTO ls_ref_event-cpdname.
496
          PERFORM get_dom_value_text
497
            USING
498
              'SEOEVTDECL'
499
              <ls_event>-evtdecltyp
500
            CHANGING
501
              ls_ref_event-type.
502
          PERFORM get_dom_value_text
503
            USING
504
              'SEOEXPOSE'
505
              <ls_event>-exposure
506
            CHANGING
507
              ls_ref_event-exposure.
508
          PERFORM seo_get_check_model
509
            USING <ls_event>
510
            CHANGING ls_ref_event.
511
          ls_ref_event-descript = <ls_event>-descript.
512
          APPEND ls_ref_event TO ct_ref_event.
513
        ENDIF.
514
      ENDLOOP.
515
    ENDLOOP.
516
  ENDLOOP.
517
 
518
ENDFORM.                    "seo_clas_get_events_from_intf
519
 
520
 
521
*-----------------------------------------------------------------------
522
* seo_clas_get_friends
523
*-----------------------------------------------------------------------
524
FORM seo_clas_get_friends
525
  USING
526
    value(i_clsname)
527
  CHANGING
528
    ct_ref_friends TYPE it_ref_seofriends.
529
 
530
  DATA:
531
  lt_friends TYPE STANDARD TABLE OF seofriends,
532
  ls_ref_friends TYPE st_ref_seofriends.
533
 
534
  FIELD-SYMBOLS:
535
  <ls_friends> TYPE seofriends.
536
 
537
  REFRESH:
538
  ct_ref_friends.
539
 
540
  SELECT * FROM seofriends INTO TABLE lt_friends
541
    WHERE clsname = i_clsname
542
    AND version = '1'
543
    ORDER BY refclsname.
544
  LOOP AT lt_friends ASSIGNING <ls_friends>.
545
    CLEAR ls_ref_friends.
546
    READ TABLE ct_ref_friends TRANSPORTING NO FIELDS
547
      WITH KEY refclsname = <ls_friends>-refclsname.
548
    IF sy-subrc <> 0.
549
      ls_ref_friends-refclsname = <ls_friends>-refclsname.
550
      PERFORM seo_get_check_model
551
        USING <ls_friends>
552
        CHANGING ls_ref_friends.
553
      SELECT SINGLE descript FROM seoclasstx
554
        INTO ls_ref_friends-descript
555
        WHERE clsname = <ls_friends>-refclsname
556
        AND langu = sy-langu.
557
      APPEND ls_ref_friends TO ct_ref_friends.
558
    ENDIF.
559
  ENDLOOP.
560
ENDFORM.                    "seo_clas_get_friends
561
 
562
 
563
*-----------------------------------------------------------------------
564
* seo_clas_get_interfaces
565
*-----------------------------------------------------------------------
566
FORM seo_clas_get_interfaces
567
  USING
568
    value(i_clsname)
569
    it_super_class TYPE it_seo_super_class
570
  CHANGING
571
    ct_ref_interface TYPE it_ref_seointerface
572
    ct_ref_interface_all TYPE it_ref_seointerface.
573
 
574
  DATA:
575
  lt_ref_interface_tmp TYPE it_ref_seointerface,
576
  lt_ref_interface_all_tmp TYPE it_ref_seointerface.
577
 
578
  FIELD-SYMBOLS:
579
  <ls_super_class> TYPE st_seo_super_class,
580
  <ls_ref_interface> TYPE st_ref_seointerface.
581
 
582
  REFRESH:
583
  ct_ref_interface,
584
  ct_ref_interface_all.
585
 
586
  LOOP AT it_super_class ASSIGNING <ls_super_class>.
587
    REFRESH lt_ref_interface_tmp.
588
    PERFORM seo_get_interfaces
589
      USING
590
        <ls_super_class>-clsname
591
        0
592
      CHANGING
593
        lt_ref_interface_tmp
594
        lt_ref_interface_all_tmp.
595
    LOOP AT lt_ref_interface_tmp ASSIGNING <ls_ref_interface>.
596
      <ls_ref_interface>-owner = <ls_super_class>.
597
      IF <ls_super_class>-clsname <> i_clsname.
598
        <ls_ref_interface>-inherited = abap_true.
599
      ENDIF.
600
      APPEND <ls_ref_interface> TO ct_ref_interface.
601
    ENDLOOP.
602
    LOOP AT lt_ref_interface_all_tmp
603
        ASSIGNING <ls_ref_interface>.
604
      <ls_ref_interface>-owner = <ls_super_class>.
605
      IF <ls_super_class>-clsname <> i_clsname.
606
        <ls_ref_interface>-inherited = abap_true.
607
      ENDIF.
608
      APPEND <ls_ref_interface> TO ct_ref_interface_all.
609
    ENDLOOP.
610
  ENDLOOP.
611
ENDFORM.                    "seo_clas_get_interfaces
612
 
613
 
614
*-----------------------------------------------------------------------
615
* seo_clas_get_methods
616
*-----------------------------------------------------------------------
617
FORM seo_clas_get_methods
618
  USING
619
    is_ztadir TYPE st_ztadir
620
    it_super_class TYPE it_seo_super_class
621
    it_ref_interface TYPE it_ref_seointerface
622
  CHANGING
623
    ct_ref_method TYPE it_ref_seomethod.
624
 
625
  DATA:
626
  ls_zseomethod TYPE st_zseomethod,
627
  l_cpdname TYPE seocpdname.
628
 
629
  FIELD-SYMBOLS:
630
  <ls_ref_method> TYPE st_ref_seomethod.
631
 
632
  REFRESH:
633
  ct_ref_method.
634
 
635
*Methods - from Interfaces
636
  PERFORM seo_clas_get_methods_from_intf
637
    USING
638
      is_ztadir-obj_name
639
      it_super_class
640
      it_ref_interface
641
    CHANGING
642
      ct_ref_method.
643
*Methods - from Classes
644
  PERFORM seo_clas_get_methods_from_clas
645
    USING
646
      is_ztadir-obj_name
647
      it_super_class
648
    CHANGING
649
      ct_ref_method.
650
*Methods - check redefinitions
651
  PERFORM seo_clas_get_methods_redef
652
    USING
653
      is_ztadir-obj_name
654
      it_super_class
655
    CHANGING
656
      ct_ref_method.
657
*  select mtdname from seoredef into l_cpdname
658
*    where clsname = is_ztadir-obj_name
659
*    and version = '1'.
660
*    read table ct_ref_method assigning <ls_ref_method>
661
*      with key cpdname = l_cpdname.
662
*    if sy-subrc = 0.
663
*      <ls_ref_method>-inherited = abap_false.
664
*      <ls_ref_method>-redefin = abap_true.
665
*    endif.
666
*  endselect.
667
*Methods - add to global methods' table
668
  LOOP AT ct_ref_method ASSIGNING <ls_ref_method>.
669
    READ TABLE gt_zseomethod TRANSPORTING NO FIELDS
670
      WITH KEY devclass = is_ztadir-devclass
671
      pgmid = is_ztadir-pgmid
672
      object = is_ztadir-object
673
      clsname = <ls_ref_method>-owner
674
      cpdname = <ls_ref_method>-cpdname.
675
    IF sy-subrc <> 0.
676
      CLEAR ls_zseomethod.
677
      ls_zseomethod-pgmid = is_ztadir-pgmid.
678
      ls_zseomethod-object = is_ztadir-object.
679
      ls_zseomethod-devclass = is_ztadir-devclass.
680
      ls_zseomethod-clsname = <ls_ref_method>-owner.
681
      ls_zseomethod-cpdname = <ls_ref_method>-cpdname.
682
      ls_zseomethod-active = <ls_ref_method>-active.
683
      APPEND ls_zseomethod TO gt_zseomethod.
684
    ENDIF.
685
  ENDLOOP.
686
ENDFORM.                    "seo_clas_get_methods
687
 
688
 
689
*-----------------------------------------------------------------------
690
* seo_clas_get_methods_from_clas
691
*-----------------------------------------------------------------------
692
FORM seo_clas_get_methods_from_clas
693
  USING
694
    value(i_clsname)
695
    it_super_class TYPE it_seo_super_class
696
  CHANGING
697
    ct_ref_method TYPE it_ref_seomethod.
698
 
699
  DATA:
700
  lt_method TYPE STANDARD TABLE OF vseomethod,
701
  l_cpdname TYPE seocpdname,
702
  ls_ref_method TYPE st_ref_seomethod,
703
  lt_str TYPE it_string,
704
  lt_redef TYPE STANDARD TABLE OF seoredef.
705
 
706
  FIELD-SYMBOLS:
707
  <ls_super_class> TYPE st_seo_super_class,
708
  <ls_method> TYPE vseomethod,
709
  <ls_ref_method> TYPE st_ref_seomethod,
710
  <ls_redef> TYPE seoredef.
711
 
712
  LOOP AT it_super_class ASSIGNING <ls_super_class>.
713
    SELECT * FROM vseomethod INTO TABLE lt_method
714
      WHERE clsname = <ls_super_class>-clsname
715
      AND langu = sy-langu
716
      AND alias = abap_false
717
      AND version = '1'
718
      ORDER BY editorder.
719
    IF <ls_super_class>-clsname <> i_clsname.
720
      DELETE lt_method WHERE cmpname = 'CLASS_CONSTRUCTOR'
721
      OR cmpname = 'DESTRUCTOR'.
722
    ENDIF.
723
    LOOP AT lt_method ASSIGNING <ls_method>.
724
      l_cpdname = <ls_method>-cmpname.
725
      READ TABLE ct_ref_method ASSIGNING <ls_ref_method>
726
        WITH KEY cpdname = l_cpdname.
727
      IF sy-subrc = 0
728
      AND l_cpdname <> 'CONSTRUCTOR'.
729
        IF <ls_super_class>-clsname = i_clsname.
730
          <ls_ref_method>-inherited = abap_false.
731
          UNASSIGN <ls_ref_method>.
732
        ENDIF.
733
      ELSEIF <ls_super_class>-clsname = i_clsname
734
      OR <ls_method>-exposure > 0.
735
        CLEAR ls_ref_method.
736
        ls_ref_method-cpdname = l_cpdname.
737
        IF <ls_super_class>-clsname <> i_clsname.
738
          ls_ref_method-inherited = abap_true.
739
        ENDIF.
740
        PERFORM get_dom_value_text
741
          USING
742
            'SEOVERSION'
743
            <ls_method>-version
744
          CHANGING
745
            ls_ref_method-active.
746
        PERFORM get_dom_value_text
747
          USING
748
            'SEOMTDDECL'
749
            <ls_method>-mtddecltyp
750
          CHANGING
751
            ls_ref_method-type.
752
        PERFORM get_dom_value_text
753
          USING
754
            'SEOEXPOSE'
755
            <ls_method>-exposure
756
          CHANGING
757
            ls_ref_method-exposure.
758
        PERFORM seo_get_check_model
759
          USING <ls_method>
760
          CHANGING ls_ref_method.
761
        PERFORM get_dom_value_text
762
          USING
763
            'SEOMTDTYPE'
764
            <ls_method>-mtdtype
765
          CHANGING
766
            ls_ref_method-methodtype.
767
        ls_ref_method-descript = <ls_method>-descript.
768
        ls_ref_method-owner = <ls_super_class>-clsname.
769
        CONCATENATE
770
          ls_ref_method-owner '-'
771
          ls_ref_method-cpdname
772
          INTO ls_ref_method-onclick.
773
        SPLIT ls_ref_method-onclick AT '/' INTO TABLE lt_str.
774
        LOOP AT lt_str INTO ls_ref_method-onclick.
775
        ENDLOOP.
776
        CONCATENATE
777
          'loadIFrame(''IFRAME'', '''
778
          ls_ref_method-onclick '.'
779
          gc_extension_htm ''');'
780
          'switchContent(''IFRAME'
781
            ''')'
782
          INTO ls_ref_method-onclick.
783
        PERFORM replace_all
784
          USING '~' '-'
785
          CHANGING ls_ref_method-onclick.
786
        IF l_cpdname = 'CONSTRUCTOR'
787
        AND <ls_ref_method> IS ASSIGNED.
788
          DELETE ct_ref_method
789
            WHERE owner = <ls_ref_method>-owner
790
            AND cpdname = <ls_ref_method>-cpdname.
791
        ENDIF.
792
        APPEND ls_ref_method TO ct_ref_method.
793
      ENDIF.
794
    ENDLOOP.
795
  ENDLOOP.
796
ENDFORM.                    "seo_clas_get_methods_from_clas
797
 
798
 
799
*-----------------------------------------------------------------------
800
* seo_clas_get_methods_from_intf
801
*-----------------------------------------------------------------------
802
FORM seo_clas_get_methods_from_intf
803
  USING
804
    value(i_clsname)
805
    it_super_class TYPE it_seo_super_class
806
    it_ref_interface TYPE it_ref_seointerface
807
  CHANGING
808
    ct_ref_method TYPE it_ref_seomethod.
809
 
810
  DATA:
811
  lt_method TYPE STANDARD TABLE OF vseomethod,
812
  l_cpdname TYPE seocpdname,
813
  ls_ref_method TYPE st_ref_seomethod,
814
  lt_str TYPE it_string.
815
 
816
  FIELD-SYMBOLS:
817
  <ls_super_class> TYPE st_seo_super_class,
818
  <ls_ref_interface> TYPE st_ref_seointerface,
819
  <ls_method> TYPE vseomethod,
820
  <ls_ref_method> TYPE st_ref_seomethod.
821
 
822
  LOOP AT it_super_class ASSIGNING <ls_super_class>.
823
    LOOP AT it_ref_interface ASSIGNING <ls_ref_interface>
824
      WHERE owner = <ls_super_class>-clsname.
825
      SELECT * FROM vseomethod INTO TABLE lt_method
826
        WHERE clsname = <ls_ref_interface>-refclsname
827
        AND langu = sy-langu
828
        AND alias = abap_false
829
        AND version = '1'
830
        ORDER BY editorder.
831
      LOOP AT lt_method ASSIGNING <ls_method>.
832
        CONCATENATE
833
          <ls_ref_interface>-refclsname '~'
834
          <ls_method>-cmpname
835
          INTO l_cpdname.
836
        READ TABLE ct_ref_method ASSIGNING <ls_ref_method>
837
          WITH KEY cpdname = l_cpdname.
838
        IF sy-subrc <> 0
839
        AND ( <ls_super_class>-clsname = i_clsname
840
              OR <ls_method>-exposure > 0 ).
841
          CLEAR ls_ref_method.
842
          ls_ref_method-cpdname = l_cpdname.
843
          IF <ls_super_class>-clsname <> i_clsname.
844
            ls_ref_method-inherited = abap_true.
845
          ENDIF.
846
          PERFORM get_dom_value_text
847
            USING
848
              'SEOVERSION'
849
              <ls_method>-version
850
            CHANGING
851
              ls_ref_method-active.
852
          PERFORM get_dom_value_text
853
            USING
854
              'SEOMTDDECL'
855
              <ls_method>-mtddecltyp
856
            CHANGING
857
              ls_ref_method-type.
858
          PERFORM get_dom_value_text
859
            USING
860
              'SEOEXPOSE'
861
              <ls_method>-exposure
862
            CHANGING
863
              ls_ref_method-exposure.
864
          PERFORM seo_get_check_model
865
            USING <ls_method>
866
            CHANGING ls_ref_method.
867
          PERFORM get_dom_value_text
868
            USING
869
              'SEOMTDTYPE'
870
              <ls_method>-mtdtype
871
            CHANGING
872
              ls_ref_method-methodtype.
873
          ls_ref_method-descript = <ls_method>-descript.
874
          ls_ref_method-owner = <ls_super_class>-clsname.
875
          ls_ref_method-onclick = ls_ref_method-owner.
876
          SPLIT ls_ref_method-onclick AT '/' INTO TABLE lt_str.
877
          LOOP AT lt_str INTO ls_ref_method-onclick.
878
          ENDLOOP.
879
          CONCATENATE
880
            ls_ref_method-onclick '-'
881
            ls_ref_method-cpdname
882
            INTO ls_ref_method-onclick.
883
          CONCATENATE
884
            'loadIFrame(''IFRAME'', '''
885
            ls_ref_method-onclick '.'
886
            gc_extension_htm ''');'
887
            'switchContent(''IFRAME'')'
888
            INTO ls_ref_method-onclick.
889
          PERFORM replace_all
890
            USING '~' '-'
891
            CHANGING ls_ref_method-onclick.
892
          APPEND ls_ref_method TO ct_ref_method.
893
        ENDIF.
894
      ENDLOOP.
895
    ENDLOOP.
896
  ENDLOOP.
897
ENDFORM.                    "seo_clas_get_methods_from_intf
898
 
899
 
900
*-----------------------------------------------------------------------
901
* seo_clas_get_methods_redef
902
*-----------------------------------------------------------------------
903
FORM seo_clas_get_methods_redef
904
  USING
905
    value(i_clsname)
906
    it_super_class TYPE it_seo_super_class
907
  CHANGING
908
    ct_ref_method TYPE it_ref_seomethod.
909
 
910
  DATA:
911
  lt_str TYPE it_string,
912
  lt_redef TYPE STANDARD TABLE OF seoredef.
913
 
914
  FIELD-SYMBOLS:
915
  <ls_super_class> TYPE st_seo_super_class,
916
  <ls_ref_method> TYPE st_ref_seomethod,
917
  <ls_redef> TYPE seoredef.
918
 
919
  LOOP AT it_super_class ASSIGNING <ls_super_class>.
920
    SELECT * FROM seoredef INTO TABLE lt_redef
921
      WHERE clsname = <ls_super_class>-clsname
922
      AND version = '1'.
923
    LOOP AT lt_redef ASSIGNING <ls_redef>.
924
      READ TABLE ct_ref_method ASSIGNING <ls_ref_method>
925
        WITH KEY cpdname = <ls_redef>-mtdname.
926
      IF sy-subrc = 0.
927
        IF <ls_super_class>-clsname = i_clsname.
928
          <ls_ref_method>-inherited = abap_false.
929
          <ls_ref_method>-redefin = abap_true.
930
        ENDIF.
931
        <ls_ref_method>-owner = <ls_redef>-clsname.
932
        CONCATENATE
933
          <ls_ref_method>-owner '-'
934
          <ls_ref_method>-cpdname
935
          INTO <ls_ref_method>-onclick.
936
        SPLIT <ls_ref_method>-onclick AT '/' INTO TABLE lt_str.
937
        LOOP AT lt_str INTO <ls_ref_method>-onclick.
938
        ENDLOOP.
939
        CONCATENATE
940
          'loadIFrame(''IFRAME'', '''
941
          <ls_ref_method>-onclick '.'
942
          gc_extension_htm ''');'
943
          'switchContent(''IFRAME'')'
944
          INTO <ls_ref_method>-onclick.
945
        PERFORM replace_all
946
          USING '~' '-'
947
          CHANGING <ls_ref_method>-onclick.
948
      ENDIF.
949
    ENDLOOP.
950
  ENDLOOP.
951
ENDFORM.                    "seo_clas_get_methods_redef
952
 
953
 
954
*-----------------------------------------------------------------------
955
* seo_clas_get_props
956
*-----------------------------------------------------------------------
957
FORM seo_clas_get_props
958
  USING
959
    value(i_clsname)
960
    value(i_devclass)
961
  CHANGING
962
    cs_properties TYPE st_properties
963
    ct_ti TYPE it_textinput
964
    ct_typegroup TYPE it_seotypepls.
965
 
966
  DATA:
967
  ls_clskey TYPE seoclskey,
968
  ls_extend TYPE vseoextend,
969
  lt_redefinition TYPE STANDARD TABLE OF seoredef
970
    WITH KEY clsname refclsname version mtdname,
971
  ls_relkey TYPE seorelkey,
972
  ls_vseoclass TYPE vseoclass,
973
  lt_typegroup TYPE it_seotypepls.
974
 
975
  FIELD-SYMBOLS:
976
  <ls_typegroup> TYPE seotypepls,
977
  <l_explicit> TYPE ANY,
978
  <l_state> TYPE ANY.
979
 
980
  CLEAR:
981
  cs_properties.
982
 
983
  REFRESH:
984
  ct_typegroup.
985
 
986
  ls_clskey-clsname = i_clsname.
987
  CALL FUNCTION 'SEO_CLASS_READ'
988
    EXPORTING
989
      clskey  = ls_clskey
990
      version = '1'
991
    IMPORTING
992
      class   = ls_vseoclass.
993
  IF ls_vseoclass-changedby IS INITIAL
994
  AND ls_vseoclass-changedon IS INITIAL.
995
    ls_vseoclass-changedby = ls_vseoclass-author.
996
    ls_vseoclass-changedon = ls_vseoclass-createdon.
997
  ENDIF.
998
  SELECT * FROM seotypepls INTO TABLE lt_typegroup
999
      WHERE clsname = ls_clskey-clsname
1000
      AND version = '1'
1001
      ORDER BY typegroup.
1002
  LOOP AT lt_typegroup ASSIGNING <ls_typegroup>.
1003
    ASSIGN COMPONENT 'EXPLICIT' OF STRUCTURE <ls_typegroup>
1004
      TO <l_explicit>.
1005
    IF <l_explicit> IS ASSIGNED AND <l_explicit> = abap_true.
1006
      APPEND <ls_typegroup> TO ct_typegroup.
1007
    ENDIF.
1008
  ENDLOOP.
1009
  ls_relkey-clsname = i_clsname.
1010
  CALL FUNCTION 'SEO_INHERITANC_GET'
1011
    EXPORTING
1012
      inhkey        = ls_relkey
1013
      version       = '1'
1014
    IMPORTING
1015
      inheritance   = ls_extend
1016
      redefinitions = lt_redefinition
1017
    EXCEPTIONS
1018
      OTHERS        = 1.
1019
  cs_properties-superclass = ls_extend-refclsname.
1020
  ASSIGN COMPONENT 'STATE' OF STRUCTURE ls_extend TO <l_state>.
1021
  IF <l_state> IS ASSIGNED.
1022
    IF <l_state> = 0.
1023
      cs_properties-check_model_inh = abap_true.
1024
    ENDIF.
1025
  ELSE.
1026
    cs_properties-check_model_inh = abap_undefined.
1027
  ENDIF.
1028
  cs_properties-descript = ls_vseoclass-descript.
1029
  IF ls_vseoclass-clsabstrct = abap_true.
1030
    ls_vseoclass-exposure = 3.
1031
  ENDIF.
1032
  PERFORM get_dom_value_text USING    'SEOCREATE'
1033
                                      ls_vseoclass-exposure
1034
                             CHANGING cs_properties-creatable.
1035
  cs_properties-clsfinal = ls_vseoclass-clsfinal.
1036
  IF ls_vseoclass-langu IS INITIAL.
1037
    SELECT SINGLE masterlang FROM tadir INTO ls_vseoclass-langu
1038
        WHERE pgmid = 'R3TR'
1039
        AND object = 'CLAS'
1040
        AND obj_name = i_clsname.
1041
  ENDIF.
1042
 
1043
  PERFORM seo_clas_get_props_textinput
1044
    USING
1045
      i_clsname
1046
      i_devclass
1047
      ls_vseoclass
1048
    CHANGING
1049
      ct_ti.
1050
ENDFORM.                    "seo_clas_get_props
1051
 
1052
 
1053
*-----------------------------------------------------------------------
1054
* seo_clas_get_props_textInput
1055
*-----------------------------------------------------------------------
1056
FORM seo_clas_get_props_textinput
1057
  USING
1058
    value(i_clsname)
1059
    value(i_devclass)
1060
    is_vseoclass TYPE vseoclass
1061
  CHANGING
1062
    ct_ti TYPE it_textinput.
1063
 
1064
  DATA:
1065
  l_namtext TYPE ad_namtext,
1066
  ls_ti TYPE st_textinput.
1067
 
1068
  FIELD-SYMBOLS:
1069
  <l_clssharedmemory> TYPE ANY,
1070
  <l_msg_id> TYPE ANY,
1071
  <l_unicode> TYPE ANY.
1072
 
1073
  REFRESH:
1074
  ct_ti.
1075
 
1076
  ls_ti-name = txt_released_internally.
1077
  ls_ti-flag = abap_true.
1078
  IF NOT is_vseoclass-release IS INITIAL.
1079
    ls_ti-value = abap_true.
1080
  ENDIF.
1081
  APPEND ls_ti TO ct_ti.
1082
  CLEAR ls_ti.
1083
  ls_ti-name = txt_fixed_point_arithmetic.
1084
  ls_ti-flag = abap_true.
1085
  ls_ti-flag_col = 1.
1086
  ls_ti-value = is_vseoclass-fixpt.
1087
  APPEND ls_ti TO ct_ti.
1088
  ASSIGN COMPONENT 'UNICODE' OF STRUCTURE is_vseoclass TO <l_unicode>.
1089
  IF <l_unicode> IS ASSIGNED.
1090
    CLEAR ls_ti.
1091
    ls_ti-name = txtt_unicode_checks_active.
1092
    ls_ti-flag = abap_true.
1093
    ls_ti-flag_col = 2.
1094
    ls_ti-value = is_vseoclass-unicode.
1095
    APPEND ls_ti TO ct_ti.
1096
  ENDIF.
1097
  ASSIGN COMPONENT 'CLSSHAREDMEMORY' OF STRUCTURE is_vseoclass
1098
    TO <l_clssharedmemory>.
1099
  IF <l_clssharedmemory> IS ASSIGNED.
1100
    CLEAR ls_ti.
1101
    ls_ti-name = txt_shared_memory_enabled.
1102
    ls_ti-flag = abap_true.
1103
    ls_ti-value = <l_clssharedmemory>.
1104
    APPEND ls_ti TO ct_ti.
1105
  ENDIF.
1106
  ASSIGN COMPONENT 'MSG_ID' OF STRUCTURE is_vseoclass TO <l_msg_id>.
1107
  IF <l_msg_id> IS ASSIGNED.
1108
    CLEAR ls_ti.
1109
    ls_ti-name = txt_message_class.
1110
    ls_ti-value = <l_msg_id>.
1111
    ls_ti-input = abap_true.
1112
    APPEND ls_ti TO ct_ti.
1113
  ENDIF.
1114
  CLEAR ls_ti.
1115
  ls_ti-name = txt_program_status.
1116
  PERFORM get_dom_value_text USING    'RSTAT'
1117
                                      is_vseoclass-rstat
1118
                             CHANGING ls_ti-value.
1119
  ls_ti-input = abap_true.
1120
  APPEND ls_ti TO ct_ti.
1121
  CLEAR ls_ti.
1122
  ls_ti-name = txt_category.
1123
  PERFORM get_dom_value_text USING    'SEOCATEGRY'
1124
                                      is_vseoclass-category
1125
                             CHANGING ls_ti-value.
1126
  ls_ti-input = abap_true.
1127
  APPEND ls_ti TO ct_ti.
1128
  CLEAR ls_ti.
1129
  ls_ti-name = txt_package.
1130
  ls_ti-value = i_devclass.
1131
  ls_ti-input = abap_true.
1132
  APPEND ls_ti TO ct_ti.
1133
  CLEAR ls_ti.
1134
  ls_ti-name = txt_original_language.
1135
  ls_ti-value = is_vseoclass-langu.
1136
  ls_ti-input = abap_true.
1137
  APPEND ls_ti TO ct_ti.
1138
  CLEAR ls_ti.
1139
  ls_ti-name = txt_created_by___1.
1140
  ls_ti-value = is_vseoclass-author.
1141
  PERFORM get_user USING    is_vseoclass-author
1142
                   CHANGING l_namtext.
1143
  ls_ti-value_text = l_namtext.
1144
  ls_ti-has_value_ext = abap_true.
1145
  PERFORM get_date USING    is_vseoclass-createdon
1146
                   CHANGING ls_ti-value_ext.
1147
  ls_ti-input = abap_true.
1148
  APPEND ls_ti TO ct_ti.
1149
  CLEAR ls_ti.
1150
  ls_ti-name = txt_last_changed_by___1.
1151
  ls_ti-value = is_vseoclass-changedby.
1152
  PERFORM get_user USING    is_vseoclass-changedby
1153
                   CHANGING l_namtext.
1154
  ls_ti-value_text = l_namtext.
1155
  ls_ti-has_value_ext = abap_true.
1156
  PERFORM get_date USING    is_vseoclass-changedon
1157
                   CHANGING ls_ti-value_ext.
1158
  ls_ti-input = abap_true.
1159
  APPEND ls_ti TO ct_ti.
1160
ENDFORM.                    "seo_clas_get_props_textInput
1161
 
1162
 
1163
*-----------------------------------------------------------------------
1164
* seo_clas_get_text_symbols
1165
*-----------------------------------------------------------------------
1166
FORM seo_clas_get_text_symbols
1167
  USING
1168
    value(i_clsname)
1169
  CHANGING
1170
    ct_text_symbols TYPE it_textpool
1171
    ct_text_symbols_addons TYPE it_textpool_addons.
1172
 
1173
  DATA:
1174
  l_clsname TYPE seoclsname,
1175
  l_progname TYPE progname,
1176
  ls_text_symbols_addons TYPE st_textpool_addons.
1177
 
1178
  FIELD-SYMBOLS:
1179
  <ls_text_symbols> TYPE textpool.
1180
 
1181
  REFRESH:
1182
  ct_text_symbols,
1183
  ct_text_symbols_addons.
1184
 
1185
  l_clsname = i_clsname.
1186
  PERFORM get_trdir_name
1187
    USING l_clsname 'CP'
1188
    CHANGING l_progname.
1189
  READ TEXTPOOL l_progname INTO ct_text_symbols LANGUAGE sy-langu.
1190
  DELETE ct_text_symbols WHERE id <> 'I'.
1191
 
1192
  LOOP AT ct_text_symbols ASSIGNING <ls_text_symbols>.
1193
    ls_text_symbols_addons-strlen = strlen(
1194
      <ls_text_symbols>-entry
1195
    ).
1196
    APPEND ls_text_symbols_addons TO ct_text_symbols_addons.
1197
  ENDLOOP.
1198
ENDFORM.                    "seo_clas_get_text_symbols
1199
 
1200
 
1201
*-----------------------------------------------------------------------
1202
* seo_clas_get_types
1203
*-----------------------------------------------------------------------
1204
FORM seo_clas_get_types
1205
  USING
1206
    value(i_clsname)
1207
    it_super_class TYPE it_seo_super_class
1208
  CHANGING
1209
    ct_ref_type TYPE it_ref_seotype
1210
    ct_ref_type_par TYPE it_ref_seotype.
1211
 
1212
  DATA:
1213
  lt_seotype TYPE STANDARD TABLE OF vseotype,
1214
  ls_ref_type TYPE st_ref_seotype,
1215
  l_str TYPE string,
1216
  l_id TYPE string.
1217
 
1218
  FIELD-SYMBOLS:
1219
  <ls_super_class> TYPE st_seo_super_class,
1220
  <ls_seotype> TYPE vseotype.
1221
 
1222
  REFRESH:
1223
  ct_ref_type,
1224
  ct_ref_type_par.
1225
 
1226
  LOOP AT it_super_class ASSIGNING <ls_super_class>.
1227
    SELECT * FROM vseotype INTO TABLE lt_seotype
1228
      WHERE clsname = <ls_super_class>-clsname
1229
      AND langu = sy-langu
1230
      AND version = '1'
1231
      ORDER BY editorder.
1232
    LOOP AT lt_seotype ASSIGNING <ls_seotype>.
1233
      CLEAR ls_ref_type.
1234
      ls_ref_type-cpdname = <ls_seotype>-cmpname.
1235
      ls_ref_type-owner = <ls_super_class>-clsname.
1236
      IF <ls_super_class>-clsname <> i_clsname.
1237
        ls_ref_type-inherited = abap_true.
1238
      ENDIF.
1239
      PERFORM get_dom_value_text
1240
        USING
1241
          'SEOTYPTYPE'
1242
          <ls_seotype>-typtype
1243
        CHANGING
1244
          ls_ref_type-typtype.
1245
      ls_ref_type-type = <ls_seotype>-type.
1246
      l_str = <ls_seotype>-exposure.
1247
      CONDENSE l_str.
1248
      CONCATENATE 'COMPONENTS_' l_str '_' INTO l_str.
1249
      PERFORM get_id
1250
        USING l_str <ls_super_class>-clsname
1251
        CHANGING l_id.
1252
      CONCATENATE 'switchContent(''' l_id ''')'
1253
        INTO ls_ref_type-onclick.
1254
      ls_ref_type-typelink = '->'.
1255
      ls_ref_type-descript = <ls_seotype>-descript.
1256
      PERFORM get_dom_value_text
1257
        USING
1258
          'SEOEXPOSE'
1259
          <ls_seotype>-exposure
1260
        CHANGING
1261
          ls_ref_type-exposure.
1262
      PERFORM seo_get_check_model
1263
        USING <ls_seotype>
1264
        CHANGING ls_ref_type.
1265
      APPEND ls_ref_type TO ct_ref_type_par.
1266
      IF <ls_super_class>-clsname = i_clsname
1267
      OR <ls_seotype>-exposure <> 0.
1268
        APPEND ls_ref_type TO ct_ref_type.
1269
      ENDIF.
1270
    ENDLOOP.
1271
  ENDLOOP.
1272
 
1273
 
1274
ENDFORM.                    "seo_clas_get_types
1275
 
1276
 
1277
*-----------------------------------------------------------------------
1278
* seo_get_check_model
1279
*-----------------------------------------------------------------------
1280
FORM seo_get_check_model
1281
  USING
1282
    value(is_struc) TYPE any
1283
  CHANGING
1284
    cs_struc TYPE any.
1285
 
1286
  FIELD-SYMBOLS:
1287
  <l_state> TYPE ANY,
1288
  <l_check_model> TYPE ANY.
1289
 
1290
  ASSIGN COMPONENT 'STATE' OF STRUCTURE is_struc TO <l_state>.
1291
  ASSIGN COMPONENT 'CHECK_MODEL' OF STRUCTURE cs_struc
1292
    TO <l_check_model>.
1293
  CHECK <l_check_model> IS ASSIGNED.
1294
  IF <l_state> IS ASSIGNED.
1295
    IF <l_state> = 0.
1296
      <l_check_model> = abap_true.
1297
    ELSE.
1298
      <l_check_model> = abap_false.
1299
    ENDIF.
1300
  ELSE.
1301
    <l_check_model> = abap_undefined.
1302
  ENDIF.
1303
 
1304
ENDFORM.                    "seo_get_check_model
1305
 
1306
 
1307
*-----------------------------------------------------------------------
1308
* seo_get_interfaces
1309
*-----------------------------------------------------------------------
1310
FORM seo_get_interfaces
1311
  USING
1312
    value(i_clsname)
1313
    value(i_hierlevel)
1314
  CHANGING
1315
    ct_ref_interface TYPE it_ref_seointerface
1316
    ct_ref_interface_all TYPE it_ref_seointerface.
1317
 
1318
  DATA:
1319
  l_hierlevel TYPE i,
1320
  lt_metarel TYPE STANDARD TABLE OF seometarel,
1321
  lt_ref_interface TYPE it_ref_seointerface,
1322
  ls_ref_interface TYPE st_ref_seointerface.
1323
 
1324
  FIELD-SYMBOLS:
1325
  <ls_metarel> TYPE seometarel,
1326
  <ls_ref_interface> TYPE st_ref_seointerface,
1327
  <l_impfinal> TYPE ANY,
1328
  <l_impabstrct> TYPE ANY.
1329
 
1330
  l_hierlevel = i_hierlevel + 1.
1331
 
1332
  SELECT * FROM seometarel INTO TABLE lt_metarel
1333
    WHERE clsname = i_clsname
1334
    AND reltype <= 1.
1335
  CLEAR ls_ref_interface.
1336
  LOOP AT lt_metarel ASSIGNING <ls_metarel>.
1337
    READ TABLE ct_ref_interface_all TRANSPORTING NO FIELDS
1338
      WITH KEY refclsname = <ls_metarel>-refclsname.
1339
    IF sy-subrc <> 0.
1340
      ls_ref_interface-refclsname = <ls_metarel>-refclsname.
1341
      ASSIGN COMPONENT 'IMPFINAL' OF STRUCTURE <ls_metarel>
1342
        TO <l_impfinal>.
1343
      IF <l_impfinal> IS ASSIGNED.
1344
        ls_ref_interface-impfinal = <l_impfinal>.
1345
        UNASSIGN <l_impfinal>.
1346
      ELSE.
1347
        ls_ref_interface-impfinal = abap_undefined.
1348
      ENDIF.
1349
      ASSIGN COMPONENT 'IMPABSTRCT' OF STRUCTURE <ls_metarel>
1350
        TO <l_impabstrct>.
1351
      IF <l_impabstrct> IS ASSIGNED.
1352
        ls_ref_interface-impabstrct = <l_impabstrct>.
1353
        UNASSIGN <l_impabstrct>.
1354
      ELSE.
1355
        ls_ref_interface-impabstrct = abap_undefined.
1356
      ENDIF.
1357
      PERFORM seo_get_check_model
1358
        USING <ls_metarel>
1359
        CHANGING ls_ref_interface.
1360
      SELECT SINGLE descript FROM seoclasstx
1361
        INTO ls_ref_interface-descript
1362
        WHERE clsname = ls_ref_interface-refclsname
1363
        AND langu = sy-langu.
1364
 
1365
      APPEND ls_ref_interface TO ct_ref_interface.
1366
      APPEND ls_ref_interface TO ct_ref_interface_all.
1367
 
1368
      PERFORM seo_get_interfaces
1369
        USING
1370
          <ls_metarel>-refclsname
1371
          l_hierlevel
1372
        CHANGING
1373
          lt_ref_interface
1374
          ct_ref_interface_all.
1375
    ENDIF.
1376
  ENDLOOP.
1377
  SORT ct_ref_interface_all BY
1378
    hierlevel DESCENDING
1379
    refclsname ASCENDING.
1380
  SORT ct_ref_interface BY refclsname.
1381
ENDFORM.                    "seo_get_interfaces
1382
 
1383
 
1384
*-----------------------------------------------------------------------
1385
* seo_get_superClasses
1386
*-----------------------------------------------------------------------
1387
FORM seo_get_superclasses
1388
  USING
1389
    value(i_clsname)
1390
  CHANGING
1391
    ct_super_class TYPE it_seo_super_class.
1392
 
1393
  DATA:
1394
  ls_clskey TYPE seoclskey,
1395
  ls_clsref TYPE seoclsref,
1396
  ls_super_class TYPE st_seo_super_class,
1397
  l_lines TYPE i.
1398
 
1399
  FIELD-SYMBOLS:
1400
  <l_class> TYPE seoclsname.
1401
 
1402
  DESCRIBE TABLE ct_super_class LINES l_lines.
1403
  ls_super_class-clsname = i_clsname.
1404
  ls_super_class-hierlevel = l_lines + 1.
1405
  APPEND ls_super_class TO ct_super_class.
1406
 
1407
  ls_clskey-clsname = i_clsname.
1408
  CALL FUNCTION 'SEO_CLASS_GET'
1409
    EXPORTING
1410
      clskey     = ls_clskey
1411
      version    = '1'
1412
      state      = '0'
1413
    IMPORTING
1414
      superclass = ls_clsref
1415
    EXCEPTIONS
1416
      OTHERS     = 1.
1417
  IF sy-subrc = 0 AND NOT ls_clsref-refclsname IS INITIAL.
1418
    PERFORM seo_get_superclasses
1419
      USING
1420
        ls_clsref-refclsname
1421
      CHANGING
1422
        ct_super_class.
1423
  ENDIF.
1424
  SORT ct_super_class BY hierlevel DESCENDING.
1425
ENDFORM.                    "seo_get_superClasses
1426
 
1427
 
1428
*-----------------------------------------------------------------------
1429
* seo_intf_get_aliases
1430
*-----------------------------------------------------------------------
1431
FORM seo_intf_get_aliases
1432
  USING
1433
    value(i_clsname)
1434
    it_ref_attrib TYPE it_ref_seoattrib
1435
    it_ref_method TYPE it_ref_seomethod
1436
    it_ref_event TYPE it_ref_seoevent
1437
    it_ref_type TYPE it_ref_seotype
1438
  CHANGING
1439
    ct_ref_alias TYPE it_ref_seoalias.
1440
 
1441
  DATA:
1442
  ls_ref_alias TYPE st_ref_seoalias,
1443
  ls_clskey TYPE seoclskey,
1444
  lt_seoalias TYPE seo_aliases,
1445
  l_cpdname TYPE seocpdname.
1446
 
1447
  FIELD-SYMBOLS:
1448
  <ls_ref_attrib> TYPE st_ref_seoattrib,
1449
  <ls_ref_method> TYPE st_ref_seomethod,
1450
  <ls_ref_event> TYPE st_ref_seoevent,
1451
  <ls_ref_type> TYPE st_ref_seotype,
1452
  <ls_seoalias> TYPE seoaliases,
1453
  <ls_ref_alias> TYPE st_ref_seoalias.
1454
 
1455
  REFRESH:
1456
  ct_ref_alias.
1457
 
1458
  ls_ref_alias-type = txt_attribute.
1459
  LOOP AT it_ref_attrib ASSIGNING <ls_ref_attrib>
1460
    WHERE cpdname CP '*~*'.
1461
    ls_ref_alias-cpdname = <ls_ref_attrib>-cpdname.
1462
    APPEND ls_ref_alias TO ct_ref_alias.
1463
  ENDLOOP.
1464
  ls_ref_alias-type = txt_method.
1465
  LOOP AT it_ref_method ASSIGNING <ls_ref_method>
1466
    WHERE cpdname CP '*~*'.
1467
    ls_ref_alias-cpdname = <ls_ref_method>-cpdname.
1468
    APPEND ls_ref_alias TO ct_ref_alias.
1469
  ENDLOOP.
1470
  ls_ref_alias-type = txt_event.
1471
  LOOP AT it_ref_event ASSIGNING <ls_ref_event>
1472
    WHERE cpdname CP '*~*'.
1473
    ls_ref_alias-cpdname = <ls_ref_event>-cpdname.
1474
    APPEND ls_ref_alias TO ct_ref_alias.
1475
  ENDLOOP.
1476
  ls_ref_alias-type = txt_type___1.
1477
  LOOP AT it_ref_type ASSIGNING <ls_ref_type>
1478
    WHERE cpdname CP '*~*'.
1479
    ls_ref_alias-cpdname = <ls_ref_type>-cpdname.
1480
    APPEND ls_ref_alias TO ct_ref_alias.
1481
  ENDLOOP.
1482
 
1483
  ls_clskey-clsname = i_clsname.
1484
  CALL FUNCTION 'SEO_ALIASES_GET'
1485
    EXPORTING
1486
      cifkey  = ls_clskey
1487
    CHANGING
1488
      aliases = lt_seoalias.
1489
  LOOP AT lt_seoalias ASSIGNING <ls_seoalias>.
1490
    CONCATENATE
1491
        <ls_seoalias>-refclsname '~'
1492
        <ls_seoalias>-refcmpname
1493
        INTO l_cpdname.
1494
    READ TABLE ct_ref_alias ASSIGNING <ls_ref_alias>
1495
      WITH KEY cpdname = l_cpdname.
1496
    IF sy-subrc = 0.
1497
      <ls_ref_alias>-refcmpname = <ls_seoalias>-cmpname.
1498
    ENDIF.
1499
  ENDLOOP.
1500
  SORT ct_ref_alias BY cpdname.
1501
ENDFORM.                    "seo_intf_get_aliases
1502
 
1503
 
1504
*-----------------------------------------------------------------------
1505
* seo_intf_get_attribs
1506
*-----------------------------------------------------------------------
1507
FORM seo_intf_get_attribs
1508
  USING
1509
    value(i_clsname)
1510
    it_ref_interface TYPE it_ref_seointerface
1511
  CHANGING
1512
    ct_ref_attrib TYPE it_ref_seoattrib.
1513
 
1514
  DATA:
1515
  lt_attrib TYPE STANDARD TABLE OF vseoattrib,
1516
  ls_ref_attrib TYPE st_ref_seoattrib,
1517
  l_id TYPE string.
1518
 
1519
  FIELD-SYMBOLS:
1520
  <ls_ref_interface> TYPE st_ref_seointerface,
1521
  <ls_attrib> TYPE vseoattrib.
1522
 
1523
  REFRESH:
1524
  ct_ref_attrib.
1525
 
1526
  LOOP AT it_ref_interface ASSIGNING <ls_ref_interface>.
1527
    SELECT * FROM vseoattrib INTO TABLE lt_attrib
1528
      WHERE clsname = <ls_ref_interface>-refclsname
1529
      AND langu = sy-langu
1530
      AND version = '1'
1531
      ORDER BY editorder.
1532
    LOOP AT lt_attrib ASSIGNING <ls_attrib>.
1533
      CLEAR ls_ref_attrib.
1534
      IF <ls_attrib>-alias = abap_false.
1535
        ls_ref_attrib-cpdname = <ls_attrib>-cmpname.
1536
        IF <ls_ref_interface>-refclsname <> i_clsname.
1537
          CONCATENATE <ls_ref_interface>-refclsname '~'
1538
            ls_ref_attrib-cpdname INTO ls_ref_attrib-cpdname.
1539
        ENDIF.
1540
        PERFORM seo_get_check_model
1541
          USING <ls_attrib>
1542
          CHANGING ls_ref_attrib.
1543
        PERFORM get_dom_value_text
1544
          USING
1545
            'SEOATTDECL'
1546
            <ls_attrib>-attdecltyp
1547
          CHANGING
1548
            ls_ref_attrib-decltype.
1549
        ls_ref_attrib-attrdonly = <ls_attrib>-attrdonly.
1550
        PERFORM get_dom_value_text
1551
          USING
1552
            'SEOTYPTYPE'
1553
            <ls_attrib>-typtype
1554
          CHANGING
1555
            ls_ref_attrib-typtype.
1556
        ls_ref_attrib-type = <ls_attrib>-type.
1557
        PERFORM get_id
1558
          USING 'COMPONENTS_' <ls_ref_interface>-refclsname
1559
          CHANGING l_id.
1560
        CONCATENATE 'switchContent(''' l_id ''')'
1561
          INTO ls_ref_attrib-onclick.
1562
        ls_ref_attrib-typelink = '->'.
1563
        ls_ref_attrib-descript = <ls_attrib>-descript.
1564
        ls_ref_attrib-attvalue = <ls_attrib>-attvalue.
1565
        APPEND ls_ref_attrib TO ct_ref_attrib.
1566
      ENDIF.
1567
    ENDLOOP.
1568
  ENDLOOP.
1569
ENDFORM.                    "seo_intf_get_attribs
1570
 
1571
 
1572
*-----------------------------------------------------------------------
1573
* seo_intf_get_events
1574
*-----------------------------------------------------------------------
1575
FORM seo_intf_get_events
1576
  USING
1577
    value(i_clsname)
1578
    it_ref_interface TYPE it_ref_seointerface
1579
  CHANGING
1580
    ct_ref_event TYPE it_ref_seoevent.
1581
 
1582
  DATA:
1583
  lt_event TYPE STANDARD TABLE OF vseoevent,
1584
  ls_ref_event TYPE st_ref_seoevent,
1585
  ls_cmpkey TYPE seocmpkey,
1586
  ls_event TYPE vseoevent.
1587
 
1588
  FIELD-SYMBOLS:
1589
  <ls_ref_interface> TYPE st_ref_seointerface,
1590
  <ls_event> TYPE vseoevent.
1591
 
1592
  REFRESH:
1593
  ct_ref_event.
1594
 
1595
  LOOP AT it_ref_interface ASSIGNING <ls_ref_interface>.
1596
    SELECT * FROM vseoevent INTO TABLE lt_event
1597
      WHERE clsname = <ls_ref_interface>-refclsname
1598
      AND langu = sy-langu
1599
      AND version = '1'
1600
      ORDER BY editorder.
1601
    CLEAR ls_ref_event.
1602
    LOOP AT lt_event ASSIGNING <ls_event>.
1603
      ls_cmpkey-clsname = <ls_ref_interface>-refclsname.
1604
      ls_cmpkey-cmpname = <ls_event>-cmpname.
1605
      CALL FUNCTION 'SEO_EVENT_GET'
1606
        EXPORTING
1607
          evtkey  = ls_cmpkey
1608
          version = 1
1609
        IMPORTING
1610
          event   = ls_event
1611
        EXCEPTIONS
1612
          OTHERS  = 1.
1613
      IF sy-subrc = 0 AND ls_event-alias = abap_false.
1614
        ls_ref_event-cpdname = ls_event-cmpname.
1615
        IF <ls_ref_interface>-refclsname <> i_clsname.
1616
          CONCATENATE <ls_ref_interface>-refclsname '~'
1617
            ls_ref_event-cpdname INTO ls_ref_event-cpdname.
1618
        ENDIF.
1619
        PERFORM seo_get_check_model
1620
          USING ls_event
1621
          CHANGING ls_ref_event.
1622
        PERFORM get_dom_value_text
1623
          USING
1624
            'SEOEVTDECL'
1625
            ls_event-evtdecltyp
1626
          CHANGING
1627
            ls_ref_event-type.
1628
        ls_ref_event-descript = ls_event-descript.
1629
        APPEND ls_ref_event TO ct_ref_event.
1630
      ENDIF.
1631
    ENDLOOP.
1632
  ENDLOOP.
1633
ENDFORM.                    "seo_intf_get_events
1634
 
1635
 
1636
*-----------------------------------------------------------------------
1637
* seo_intf_get_methods
1638
*-----------------------------------------------------------------------
1639
FORM seo_intf_get_methods
1640
  USING
1641
    value(i_clsname)
1642
    it_ref_interface TYPE it_ref_seointerface
1643
  CHANGING
1644
    ct_ref_method TYPE it_ref_seomethod.
1645
 
1646
  DATA:
1647
  lt_method TYPE STANDARD TABLE OF vseomethod,
1648
  ls_ref_method TYPE st_ref_seomethod.
1649
 
1650
  FIELD-SYMBOLS:
1651
  <ls_ref_interface> TYPE st_ref_seointerface,
1652
  <ls_method> TYPE vseomethod.
1653
 
1654
  REFRESH:
1655
  ct_ref_method.
1656
 
1657
  LOOP AT it_ref_interface ASSIGNING <ls_ref_interface>.
1658
    SELECT * FROM vseomethod INTO TABLE lt_method
1659
      WHERE clsname = <ls_ref_interface>-refclsname
1660
      AND langu = sy-langu
1661
      AND version = '1'
1662
      ORDER BY editorder.
1663
    LOOP AT lt_method ASSIGNING <ls_method>.
1664
      CLEAR ls_ref_method.
1665
      IF <ls_method>-alias = abap_false.
1666
        ls_ref_method-cpdname = <ls_method>-cmpname.
1667
        IF <ls_ref_interface>-refclsname <> i_clsname.
1668
          CONCATENATE <ls_ref_interface>-refclsname '~'
1669
            ls_ref_method-cpdname INTO ls_ref_method-cpdname.
1670
        ENDIF.
1671
        PERFORM get_dom_value_text
1672
          USING
1673
            'SEOMTDDECL'
1674
            <ls_method>-mtddecltyp
1675
          CHANGING
1676
            ls_ref_method-type.
1677
        PERFORM seo_get_check_model
1678
          USING <ls_method>
1679
          CHANGING ls_ref_method.
1680
        PERFORM get_dom_value_text
1681
          USING
1682
            'SEOMTDTYPE'
1683
            <ls_method>-mtdtype
1684
          CHANGING
1685
            ls_ref_method-methodtype.
1686
        ls_ref_method-descript = <ls_method>-descript.
1687
        APPEND ls_ref_method TO ct_ref_method.
1688
      ENDIF.
1689
    ENDLOOP.
1690
  ENDLOOP.
1691
ENDFORM.                    "seo_intf_get_methods
1692
 
1693
 
1694
*-----------------------------------------------------------------------
1695
* seo_intf_get_props
1696
*-----------------------------------------------------------------------
1697
FORM seo_intf_get_props
1698
  USING
1699
    value(i_clsname)
1700
    value(i_devclass)
1701
  CHANGING
1702
    cs_properties TYPE st_properties
1703
    ct_ti TYPE it_textinput
1704
    ct_typegroup TYPE it_seotypepls.
1705
 
1706
  DATA:
1707
  ls_clskey TYPE seoclskey,
1708
  ls_seointerf TYPE vseointerf,
1709
  lt_typegroup TYPE it_seotypepls.
1710
 
1711
  FIELD-SYMBOLS:
1712
  <ls_typegroup> TYPE seotypepls,
1713
  <l_explicit> TYPE ANY.
1714
 
1715
  CLEAR:
1716
  cs_properties.
1717
 
1718
  REFRESH:
1719
  ct_typegroup.
1720
 
1721
  ls_clskey-clsname = i_clsname.
1722
  CALL FUNCTION 'SEO_INTERFACE_READ'
1723
    EXPORTING
1724
      intkey    = ls_clskey
1725
      version   = 1
1726
    IMPORTING
1727
      interface = ls_seointerf.
1728
  IF ls_seointerf-changedby IS INITIAL
1729
  AND ls_seointerf-changedon IS INITIAL.
1730
    ls_seointerf-changedby = ls_seointerf-author.
1731
    ls_seointerf-changedon = ls_seointerf-createdon.
1732
  ENDIF.
1733
  SELECT * FROM seotypepls INTO TABLE lt_typegroup
1734
      WHERE clsname = ls_clskey-clsname
1735
      AND version = '1'
1736
      ORDER BY typegroup.
1737
  LOOP AT lt_typegroup ASSIGNING <ls_typegroup>.
1738
    ASSIGN COMPONENT 'EXPLICIT' OF STRUCTURE <ls_typegroup>
1739
      TO <l_explicit>.
1740
    IF <l_explicit> IS ASSIGNED AND <l_explicit> = abap_true.
1741
      APPEND <ls_typegroup> TO ct_typegroup.
1742
    ENDIF.
1743
  ENDLOOP.
1744
  cs_properties-descript = ls_seointerf-descript.
1745
  IF ls_seointerf-langu IS INITIAL.
1746
    SELECT SINGLE masterlang FROM tadir INTO ls_seointerf-langu
1747
        WHERE pgmid = 'R3TR'
1748
        AND object = 'INTF'
1749
        AND obj_name = i_clsname.
1750
  ENDIF.
1751
 
1752
  PERFORM seo_intf_get_props_textinput
1753
    USING
1754
      i_clsname
1755
      i_devclass
1756
      ls_seointerf
1757
    CHANGING
1758
      ct_ti.
1759
ENDFORM.                    "seo_clas_get_props
1760
 
1761
 
1762
*-----------------------------------------------------------------------
1763
* seo_intf_get_props_textInput
1764
*-----------------------------------------------------------------------
1765
FORM seo_intf_get_props_textinput
1766
  USING
1767
    value(i_clsname)
1768
    value(i_devclass)
1769
    is_seointerf TYPE vseointerf
1770
  CHANGING
1771
    ct_ti TYPE it_textinput.
1772
 
1773
  DATA:
1774
  l_namtext TYPE ad_namtext,
1775
  ls_ti TYPE st_textinput.
1776
 
1777
  FIELD-SYMBOLS:
1778
  <l_unicode> TYPE ANY.
1779
 
1780
  REFRESH:
1781
  ct_ti.
1782
 
1783
  ls_ti-name = txt_released_internally.
1784
  ls_ti-flag = abap_true.
1785
  ls_ti-flag_col = 1.
1786
  IF NOT is_seointerf-release IS INITIAL.
1787
    ls_ti-value = abap_true.
1788
  ENDIF.
1789
  APPEND ls_ti TO ct_ti.
1790
  ASSIGN COMPONENT 'UNICODE' OF STRUCTURE is_seointerf TO <l_unicode>.
1791
  IF <l_unicode> IS ASSIGNED.
1792
    CLEAR ls_ti.
1793
    ls_ti-name = txtt_unicode_checks_active.
1794
    ls_ti-flag = abap_true.
1795
    ls_ti-flag_col = 2.
1796
    ls_ti-value = <l_unicode>.
1797
    APPEND ls_ti TO ct_ti.
1798
  ENDIF.
1799
  CLEAR ls_ti.
1800
  ls_ti-name = txt_package.
1801
  ls_ti-value = i_devclass.
1802
  ls_ti-input = abap_true.
1803
  APPEND ls_ti TO ct_ti.
1804
  CLEAR ls_ti.
1805
  ls_ti-name = txt_original_language.
1806
  ls_ti-value = is_seointerf-langu.
1807
  ls_ti-input = abap_true.
1808
  APPEND ls_ti TO ct_ti.
1809
  CLEAR ls_ti.
1810
  ls_ti-name = txt_created_by___1.
1811
  ls_ti-value = is_seointerf-author.
1812
  PERFORM get_user
1813
    USING
1814
      is_seointerf-author
1815
    CHANGING
1816
      l_namtext.
1817
  ls_ti-value_text = l_namtext.
1818
  ls_ti-has_value_ext = abap_true.
1819
  PERFORM get_date
1820
    USING
1821
      is_seointerf-createdon
1822
    CHANGING
1823
      ls_ti-value_ext.
1824
  ls_ti-input = abap_true.
1825
  APPEND ls_ti TO ct_ti.
1826
  CLEAR ls_ti.
1827
  ls_ti-name = txt_last_changed_by___1.
1828
  ls_ti-value = is_seointerf-changedby.
1829
  PERFORM get_user
1830
    USING
1831
      is_seointerf-changedby
1832
    CHANGING
1833
      l_namtext.
1834
  ls_ti-value_text = l_namtext.
1835
  ls_ti-has_value_ext = abap_true.
1836
  PERFORM get_date
1837
    USING
1838
      is_seointerf-changedon
1839
    CHANGING
1840
      ls_ti-value_ext.
1841
  ls_ti-input = abap_true.
1842
  APPEND ls_ti TO ct_ti.
1843
ENDFORM.                    "seo_intf_get_props_textInput
1844
 
1845
 
1846
*-----------------------------------------------------------------------
1847
* seo_intf_get_types
1848
*-----------------------------------------------------------------------
1849
FORM seo_intf_get_types
1850
  USING
1851
    value(i_clsname)
1852
    it_ref_interface TYPE it_ref_seointerface
1853
  CHANGING
1854
    ct_ref_type TYPE it_ref_seotype
1855
    ct_ref_type_par TYPE it_ref_seotype.
1856
 
1857
  DATA:
1858
  lt_type TYPE STANDARD TABLE OF vseotype,
1859
  ls_ref_type TYPE st_ref_seotype,
1860
  l_id TYPE string.
1861
 
1862
  FIELD-SYMBOLS:
1863
  <ls_ref_interface> TYPE st_ref_seointerface,
1864
  <ls_type> TYPE vseotype.
1865
 
1866
  REFRESH:
1867
  ct_ref_type.
1868
 
1869
  LOOP AT it_ref_interface ASSIGNING <ls_ref_interface>.
1870
    SELECT * FROM vseotype INTO TABLE lt_type
1871
      WHERE clsname = <ls_ref_interface>-refclsname
1872
      AND langu = sy-langu
1873
      AND version = '1'
1874
      ORDER BY editorder.
1875
    CLEAR ls_ref_type.
1876
    LOOP AT lt_type ASSIGNING <ls_type>.
1877
      ls_ref_type-cpdname = <ls_type>-cmpname.
1878
      IF <ls_ref_interface>-refclsname <> i_clsname.
1879
        CONCATENATE <ls_ref_interface>-refclsname '~'
1880
          ls_ref_type-cpdname INTO ls_ref_type-cpdname.
1881
      ENDIF.
1882
      PERFORM get_dom_value_text
1883
        USING
1884
          'SEOTYPTYPE'
1885
          <ls_type>-typtype
1886
        CHANGING
1887
          ls_ref_type-typtype.
1888
      ls_ref_type-type = <ls_type>-type.
1889
      PERFORM get_id
1890
        USING 'COMPONENTS_' <ls_ref_interface>-refclsname
1891
        CHANGING l_id.
1892
      CONCATENATE 'switchContent(''' l_id ''')'
1893
        INTO ls_ref_type-onclick.
1894
      ls_ref_type-typelink = '->'.
1895
      ls_ref_type-descript = <ls_type>-descript.
1896
      APPEND ls_ref_type TO ct_ref_type_par.
1897
      IF <ls_ref_interface>-refclsname = i_clsname.
1898
        APPEND ls_ref_type TO ct_ref_type.
1899
      ENDIF.
1900
    ENDLOOP.
1901
  ENDLOOP.
1902
ENDFORM.                    "seo_intf_get_types
1903
 
1904
 
1905
*-----------------------------------------------------------------------
1906
* seo_r3tr_clas                                 Classes
1907
*-----------------------------------------------------------------------
1908
FORM seo_r3tr_clas.
1909
 
1910
  DATA:
1911
  lt_html TYPE it_string,
1912
  ls_seoclass TYPE seoclass,
1913
  lt_tabstrip TYPE it_tabstrip,
1914
  ls_tabstrip TYPE st_tabstrip,
1915
  lt_typegroup TYPE STANDARD TABLE OF seotypepls,
1916
  ls_properties TYPE st_properties,
1917
  lt_ti TYPE it_textinput,
1918
  lt_super_class TYPE it_seo_super_class,
1919
  lt_ref_interface TYPE it_ref_seointerface,
1920
  lt_ref_interface_all TYPE it_ref_seointerface,
1921
  lt_ref_attrib TYPE it_ref_seoattrib,
1922
  lt_ref_friends TYPE it_ref_seofriends,
1923
  lt_ref_method TYPE it_ref_seomethod,
1924
  lt_ref_event TYPE it_ref_seoevent,
1925
  lt_ref_type TYPE it_ref_seotype,
1926
  lt_ref_type_par TYPE it_ref_seotype,
1927
  lt_ref_alias TYPE it_ref_seoalias,
1928
  l_clsname TYPE seoclsname,
1929
  l_progname TYPE programm,
1930
  lt_doc TYPE it_string,
1931
  lt_text_symbols TYPE it_textpool,
1932
  lt_text_symbols_addons TYPE it_textpool_addons,
1933
  l_javascript TYPE string,
1934
  l_filename TYPE string,
1935
  l_id TYPE string,
1936
  l_flag TYPE flag,
1937
  l_has_cl_name TYPE flag,
1938
  l_char TYPE c.
1939
 
1940
  FIELD-SYMBOLS:
1941
  <ls_tabstrip> TYPE st_tabstrip,
1942
  <ls_ztadir> TYPE st_ztadir,
1943
  <ls_super_class> TYPE st_seo_super_class.
1944
 
1945
 
1946
  LOOP AT gt_ztadir ASSIGNING <ls_ztadir>
1947
      WHERE pgmid = 'R3TR'
1948
      AND object = 'CLAS'
1949
      AND downloaded = abap_false.
1950
    <ls_ztadir>-downloaded = abap_true.
1951
 
1952
    CLEAR:
1953
    l_javascript,
1954
    ls_tabstrip.
1955
 
1956
    REFRESH:
1957
    lt_html,
1958
    lt_super_class,
1959
    lt_ref_interface,
1960
    lt_ref_interface_all,
1961
    lt_doc.
1962
 
1963
    SELECT SINGLE * FROM seoclass INTO ls_seoclass
1964
      WHERE clsname = <ls_ztadir>-obj_name
1965
      AND clstype = 0.
1966
    IF sy-subrc <> 0.
1967
      <ls_ztadir>-subrc = sy-subrc.
1968
      CONTINUE.
1969
    ENDIF.
1970
*Class Documentation
1971
    PERFORM get_docu
1972
      USING
1973
        'CL'
1974
        <ls_ztadir>-obj_name
1975
        'E'
1976
      CHANGING
1977
        lt_doc.
1978
*Text Symbols
1979
    PERFORM seo_clas_get_text_symbols
1980
      USING
1981
        <ls_ztadir>-obj_name
1982
      CHANGING
1983
        lt_text_symbols
1984
        lt_text_symbols_addons.
1985
*Properties
1986
    PERFORM seo_clas_get_props
1987
      USING
1988
        <ls_ztadir>-obj_name
1989
        <ls_ztadir>-devclass
1990
      CHANGING
1991
        ls_properties
1992
        lt_ti
1993
        lt_typegroup.
1994
*Super classes
1995
    PERFORM seo_get_superclasses
1996
      USING
1997
        <ls_ztadir>-obj_name
1998
      CHANGING
1999
        lt_super_class.
2000
*Interfaces
2001
    PERFORM seo_clas_get_interfaces
2002
      USING
2003
        <ls_ztadir>-obj_name
2004
        lt_super_class
2005
      CHANGING
2006
        lt_ref_interface
2007
        lt_ref_interface_all.
2008
*Friends
2009
    PERFORM seo_clas_get_friends
2010
      USING
2011
        <ls_ztadir>-obj_name
2012
      CHANGING
2013
        lt_ref_friends.
2014
*Attributes
2015
    PERFORM seo_clas_get_attribs
2016
      USING
2017
        <ls_ztadir>-obj_name
2018
        lt_super_class
2019
        lt_ref_interface_all
2020
      CHANGING
2021
        lt_ref_attrib.
2022
*Methods
2023
    PERFORM seo_clas_get_methods
2024
      USING
2025
        <ls_ztadir>
2026
        lt_super_class
2027
        lt_ref_interface_all
2028
      CHANGING
2029
        lt_ref_method.
2030
*Events
2031
    PERFORM seo_clas_get_events
2032
      USING
2033
        <ls_ztadir>-obj_name
2034
        lt_super_class
2035
        lt_ref_interface_all
2036
      CHANGING
2037
        lt_ref_event.
2038
*Types
2039
    PERFORM seo_clas_get_types
2040
      USING
2041
        <ls_ztadir>-obj_name
2042
        lt_super_class
2043
      CHANGING
2044
        lt_ref_type
2045
        lt_ref_type_par.
2046
*Aliases
2047
    PERFORM seo_clas_get_aliases
2048
      USING
2049
        <ls_ztadir>-obj_name
2050
        lt_ref_attrib
2051
        lt_ref_method
2052
        lt_ref_event
2053
        lt_ref_type_par
2054
      CHANGING
2055
        lt_ref_alias.
2056
*   Check CL-name
2057
    l_has_cl_name = abap_false.
2058
    l_clsname = <ls_ztadir>-obj_name.
2059
    PERFORM get_trdir_name
2060
      USING l_clsname 'CL'
2061
      CHANGING l_progname.
2062
    SELECT SINGLE name FROM trdir INTO l_progname
2063
        WHERE name = l_progname.
2064
    IF sy-subrc = 0.
2065
      l_has_cl_name = abap_true.
2066
    ENDIF.
2067
***Tabstrip
2068
    l_char = '-'.
2069
    IF l_has_cl_name = abap_false.
2070
      l_char = 'N'.
2071
    ENDIF.
2072
    PERFORM get_tabstrip
2073
      USING 'SEO_R3TR_CLAS' l_char
2074
      CHANGING lt_tabstrip.
2075
 
2076
    LOOP AT lt_tabstrip ASSIGNING <ls_tabstrip>.
2077
      <ls_tabstrip>-empty = abap_false.
2078
      CASE <ls_tabstrip>-id.
2079
        WHEN 'DOC'.
2080
          IF lt_doc IS INITIAL.
2081
            <ls_tabstrip>-empty = abap_true.
2082
          ENDIF.
2083
        WHEN 'TEXTSYMBOLS'.
2084
          IF lt_text_symbols IS INITIAL.
2085
            <ls_tabstrip>-empty = abap_true.
2086
          ENDIF.
2087
        WHEN 'INTERFACES'.
2088
          IF lt_ref_interface IS INITIAL.
2089
            <ls_tabstrip>-empty = abap_true.
2090
          ENDIF.
2091
        WHEN 'FRIENDS'.
2092
          IF lt_ref_friends IS INITIAL.
2093
            <ls_tabstrip>-empty = abap_true.
2094
          ENDIF.
2095
        WHEN 'ATTRIBUTES'.
2096
          IF lt_ref_attrib IS INITIAL.
2097
            <ls_tabstrip>-empty = abap_true.
2098
          ENDIF.
2099
        WHEN 'METHODS'.
2100
          IF lt_ref_method IS INITIAL.
2101
            <ls_tabstrip>-empty = abap_true.
2102
          ENDIF.
2103
        WHEN 'EVENTS'.
2104
          IF lt_ref_event IS INITIAL.
2105
            <ls_tabstrip>-empty = abap_true.
2106
          ENDIF.
2107
        WHEN 'TYPES'.
2108
          IF lt_ref_type IS INITIAL.
2109
            <ls_tabstrip>-empty = abap_true.
2110
          ENDIF.
2111
        WHEN 'ALIASES'.
2112
          IF lt_ref_alias IS INITIAL.
2113
            <ls_tabstrip>-empty = abap_true.
2114
          ENDIF.
2115
      ENDCASE.
2116
    ENDLOOP.
2117
 
2118
*Komponenten
2119
    LOOP AT lt_super_class ASSIGNING <ls_super_class>.
2120
*** public Komponenten
2121
      PERFORM get_id
2122
        USING 'COMPONENTS_2_' <ls_super_class>-clsname
2123
        CHANGING ls_tabstrip-id.
2124
      ls_tabstrip-text = space.
2125
      ls_tabstrip-active = abap_false.
2126
      ls_tabstrip-hidden = abap_true.
2127
      APPEND ls_tabstrip TO lt_tabstrip.
2128
      CONCATENATE l_javascript
2129
          'makeDivSize(''' ls_tabstrip-id ''');'
2130
        INTO l_javascript.
2131
*** private Komponenten
2132
      PERFORM get_id
2133
        USING 'COMPONENTS_0_' <ls_super_class>-clsname
2134
        CHANGING ls_tabstrip-id.
2135
      ls_tabstrip-text = space.
2136
      ls_tabstrip-active = abap_false.
2137
      ls_tabstrip-hidden = abap_true.
2138
      APPEND ls_tabstrip TO lt_tabstrip.
2139
      CONCATENATE l_javascript
2140
          'makeDivSize(''' ls_tabstrip-id ''');'
2141
        INTO l_javascript.
2142
*** protected Komponenten
2143
      PERFORM get_id
2144
        USING 'COMPONENTS_1_' <ls_super_class>-clsname
2145
        CHANGING ls_tabstrip-id.
2146
      ls_tabstrip-text = space.
2147
      ls_tabstrip-active = abap_false.
2148
      ls_tabstrip-hidden = abap_true.
2149
      APPEND ls_tabstrip TO lt_tabstrip.
2150
      CONCATENATE l_javascript
2151
          'makeDivSize(''' ls_tabstrip-id ''');'
2152
        INTO l_javascript.
2153
    ENDLOOP.
2154
    ls_tabstrip-id = 'IFRAME'.
2155
    ls_tabstrip-text = space.
2156
    ls_tabstrip-active = abap_false.
2157
    ls_tabstrip-hidden = abap_true.
2158
    APPEND ls_tabstrip TO lt_tabstrip.
2159
*** JavaScript
2160
    CONCATENATE l_javascript
2161
        'makeDivSize(''IFRAME'');'
2162
        'makeDivSize(''LOCTYPES'');'
2163
        'makeDivSize(''IMPL'');'
2164
        'makeDivSize(''MACROS'');'
2165
        'makeDivSize(''DOC'');'
2166
      INTO l_javascript.
2167
*** HTML
2168
    PERFORM html_main_header
2169
      USING
2170
        tpt_seo_clas
2171
        txt_class
2172
        <ls_ztadir>-obj_name
2173
        txt_implemented_active
2174
        space
2175
        space
2176
        l_javascript
2177
        lt_tabstrip
2178
        gt_link
2179
      CHANGING
2180
        lt_html.
2181
*  Local Types (CL)
2182
    l_clsname = <ls_ztadir>-obj_name.
2183
    IF l_has_cl_name = abap_true.
2184
      PERFORM get_trdir_name
2185
        USING l_clsname 'CL'
2186
        CHANGING l_progname.
2187
      CONCATENATE <ls_ztadir>-obj_name '.cl' INTO l_filename.
2188
      PERFORM add_report_sourcecode
2189
        USING
2190
          l_progname
2191
          l_filename
2192
          gc_extension_txt
2193
          abap_false
2194
          <ls_ztadir>
2195
          'LOCTYPES'
2196
          abap_false
2197
        CHANGING
2198
          lt_html.
2199
    ELSE.
2200
*  Local Types (CCDEF)
2201
      PERFORM get_trdir_name
2202
        USING l_clsname 'CCDEF'
2203
        CHANGING l_progname.
2204
      CONCATENATE <ls_ztadir>-obj_name '.ccdef' INTO l_filename.
2205
      PERFORM add_report_sourcecode
2206
        USING
2207
          l_progname
2208
          l_filename
2209
          gc_extension_txt
2210
          abap_false
2211
          <ls_ztadir>
2212
          'LOCTYPES'
2213
          abap_false
2214
        CHANGING
2215
          lt_html.
2216
*  Implementation (CCIMP)
2217
      PERFORM get_trdir_name
2218
        USING l_clsname 'CCIMP'
2219
        CHANGING l_progname.
2220
      CONCATENATE <ls_ztadir>-obj_name '.ccimp' INTO l_filename.
2221
      PERFORM add_report_sourcecode
2222
        USING
2223
          l_progname
2224
          l_filename
2225
          gc_extension_txt
2226
          abap_false
2227
          <ls_ztadir>
2228
          'IMPL'
2229
          abap_false
2230
        CHANGING
2231
          lt_html.
2232
*  Macros (CCMAC)
2233
      PERFORM get_trdir_name
2234
        USING l_clsname 'CCMAC'
2235
        CHANGING l_progname.
2236
      CONCATENATE <ls_ztadir>-obj_name '.ccmac' INTO l_filename.
2237
      PERFORM add_report_sourcecode
2238
        USING
2239
          l_progname
2240
          l_filename
2241
          gc_extension_txt
2242
          abap_false
2243
          <ls_ztadir>
2244
          'MACROS'
2245
          abap_false
2246
        CHANGING
2247
          lt_html.
2248
    ENDIF.
2249
*  Class Documentation
2250
    IF NOT lt_doc IS INITIAL
2251
    OR g_empty_tab = gc_empty_tab_display.
2252
      PERFORM html_add_doc
2253
        USING
2254
          lt_doc
2255
          'DOC'
2256
          abap_false
2257
        CHANGING
2258
          lt_html.
2259
    ENDIF.
2260
*Text Symbols
2261
    IF NOT lt_text_symbols IS INITIAL
2262
    OR g_empty_tab = gc_empty_tab_display.
2263
      PERFORM html_add_table
2264
        USING
2265
          'CLAS_SYMBO'
2266
          lt_text_symbols
2267
          lt_text_symbols_addons
2268
          'TEXTSYMBOLS'
2269
          abap_false
2270
        CHANGING
2271
          lt_html.
2272
    ENDIF.
2273
*  Properties
2274
    l_flag = abap_false.
2275
    IF lt_ref_attrib IS INITIAL
2276
    AND lt_ref_method IS INITIAL.
2277
      l_flag = abap_true.
2278
    ENDIF.
2279
    PERFORM html_add_properties
2280
      USING
2281
        ls_properties
2282
        lt_ti
2283
        'CLAS_TYPEG'
2284
        lt_typegroup
2285
        'PROPERTIES'
2286
        l_flag
2287
      CHANGING
2288
        lt_html.
2289
*  Interfaces
2290
    IF NOT lt_ref_interface IS INITIAL
2291
    OR g_empty_tab = gc_empty_tab_display.
2292
      PERFORM html_add_table
2293
        USING
2294
          'CLAS_INTER'
2295
          lt_ref_interface
2296
          lt_ref_interface
2297
          'INTERFACES'
2298
          abap_false
2299
        CHANGING
2300
          lt_html.
2301
    ENDIF.
2302
*  Friends
2303
    IF NOT lt_ref_friends IS INITIAL
2304
    OR g_empty_tab = gc_empty_tab_display.
2305
      PERFORM html_add_table
2306
        USING
2307
          'CLAS_FRIEN'
2308
          lt_ref_friends
2309
          lt_ref_friends
2310
          'FRIENDS'
2311
          abap_false
2312
        CHANGING
2313
          lt_html.
2314
    ENDIF.
2315
*  Attributes
2316
    IF NOT lt_ref_attrib IS INITIAL
2317
    OR g_empty_tab = gc_empty_tab_display.
2318
      l_flag = abap_false.
2319
      IF lt_ref_method IS INITIAL.
2320
        l_flag = abap_true.
2321
      ENDIF.
2322
      PERFORM html_add_table
2323
        USING
2324
          'CLAS_ATTRI'
2325
          lt_ref_attrib
2326
          lt_ref_attrib
2327
          'ATTRIBUTES'
2328
          l_flag
2329
        CHANGING
2330
          lt_html.
2331
    ENDIF.
2332
*  Methods
2333
    IF NOT lt_ref_method IS INITIAL
2334
    OR g_empty_tab = gc_empty_tab_display.
2335
      PERFORM html_add_table
2336
        USING
2337
          'CLAS_METHO'
2338
          lt_ref_method
2339
          lt_ref_method
2340
          'METHODS'
2341
          abap_true
2342
        CHANGING
2343
          lt_html.
2344
    ENDIF.
2345
*  Events
2346
    IF NOT lt_ref_event IS INITIAL
2347
    OR g_empty_tab = gc_empty_tab_display.
2348
      PERFORM html_add_table
2349
        USING
2350
          'CLAS_EVENT'
2351
          lt_ref_event
2352
          lt_ref_event
2353
          'EVENTS'
2354
          abap_false
2355
        CHANGING
2356
          lt_html.
2357
    ENDIF.
2358
*  Types
2359
    IF NOT lt_ref_type IS INITIAL
2360
    OR g_empty_tab = gc_empty_tab_display.
2361
      PERFORM html_add_table
2362
        USING
2363
          'CLAS_TYPES'
2364
          lt_ref_type
2365
          lt_ref_type
2366
          'TYPES'
2367
          abap_false
2368
        CHANGING
2369
          lt_html.
2370
    ENDIF.
2371
* Aliases
2372
    IF NOT lt_ref_alias IS INITIAL
2373
    OR g_empty_tab = gc_empty_tab_display.
2374
      PERFORM html_add_table
2375
        USING
2376
          'CLAS_ALIAS'
2377
          lt_ref_alias
2378
          lt_ref_alias
2379
          'ALIASES'
2380
          abap_false
2381
        CHANGING
2382
          lt_html.
2383
    ENDIF.
2384
*SourceCode der Komponenten lesen und in DIV ausgeben
2385
    LOOP AT lt_super_class ASSIGNING <ls_super_class>.
2386
*** public Komponenten
2387
      PERFORM get_trdir_name
2388
        USING <ls_super_class>-clsname 'CU'
2389
        CHANGING l_progname.
2390
      PERFORM get_id
2391
        USING 'COMPONENTS_2_' <ls_super_class>-clsname
2392
        CHANGING l_id.
2393
      CONCATENATE <ls_super_class>-clsname '.public'
2394
          INTO l_filename.
2395
      PERFORM add_report_sourcecode
2396
        USING
2397
          l_progname
2398
          l_filename
2399
          gc_extension_txt
2400
          abap_false
2401
          <ls_ztadir>
2402
          l_id
2403
          abap_false
2404
        CHANGING
2405
          lt_html.
2406
*** private Komponenten
2407
      PERFORM get_trdir_name
2408
        USING <ls_super_class>-clsname 'CI'
2409
        CHANGING l_progname.
2410
      PERFORM get_id
2411
        USING 'COMPONENTS_0_' <ls_super_class>-clsname
2412
        CHANGING l_id.
2413
      CONCATENATE <ls_super_class>-clsname '.private'
2414
          INTO l_filename.
2415
      PERFORM add_report_sourcecode
2416
        USING
2417
          l_progname
2418
          l_filename
2419
          gc_extension_txt
2420
          abap_false
2421
          <ls_ztadir>
2422
          l_id
2423
          abap_false
2424
        CHANGING
2425
          lt_html.
2426
*** protected Komponenten
2427
      PERFORM get_trdir_name
2428
        USING <ls_super_class>-clsname 'CO'
2429
        CHANGING l_progname.
2430
      PERFORM get_id
2431
        USING 'COMPONENTS_1_' <ls_super_class>-clsname
2432
        CHANGING l_id.
2433
      CONCATENATE <ls_super_class>-clsname '.protected'
2434
          INTO l_filename.
2435
      PERFORM add_report_sourcecode
2436
        USING
2437
          l_progname
2438
          l_filename
2439
          gc_extension_txt
2440
          abap_false
2441
          <ls_ztadir>
2442
          l_id
2443
          abap_false
2444
        CHANGING
2445
          lt_html.
2446
    ENDLOOP.
2447
***IFrame for Methods' Sources
2448
    PERFORM html_add_iframe
2449
        USING
2450
          space
2451
          'IFRAME'
2452
          abap_false
2453
        CHANGING
2454
          lt_html.
2455
*
2456
    PERFORM html_main_footer
2457
      USING
2458
        lt_html.
2459
 
2460
    PERFORM download
2461
      USING
2462
        lt_html
2463
        <ls_ztadir>-pgmid
2464
        <ls_ztadir>-object
2465
        <ls_ztadir>-obj_name
2466
        gc_extension_htm
2467
        abap_true.
2468
  ENDLOOP.
2469
ENDFORM.                                                    "r3tr_clas
2470
 
2471
 
2472
*-----------------------------------------------------------------------
2473
* seo_r3tr_clas_methods                         Classes
2474
*-----------------------------------------------------------------------
2475
FORM seo_r3tr_clas_methods.
2476
 
2477
  DATA:
2478
  lt_ref_signature TYPE it_ref_seosignature,
2479
  ls_ref_signature TYPE st_ref_seosignature,
2480
  ls_cpdkey TYPE seocpdkey,
2481
  lt_vseomepara TYPE STANDARD TABLE OF vseomepara,
2482
  lt_vseoexcep TYPE STANDARD TABLE OF vseoexcep,
2483
  l_progname TYPE program,
2484
  lt_sourcecode TYPE it_string,
2485
  lt_html TYPE it_string,
2486
  l_filename TYPE string,
2487
  l_clsname TYPE seoclsname,
2488
  l_cmpname TYPE seocmpname.
2489
 
2490
  FIELD-SYMBOLS:
2491
  <ls_vseomepara> TYPE vseomepara,
2492
  <ls_vseoexcep> TYPE vseoexcep,
2493
  <ls_zseomethod> TYPE st_zseomethod.
2494
 
2495
 
2496
  LOOP AT gt_zseomethod ASSIGNING <ls_zseomethod>.
2497
    REFRESH lt_html.
2498
    REFRESH lt_ref_signature.
2499
    REFRESH lt_vseomepara.
2500
    REFRESH lt_vseoexcep.
2501
    REFRESH lt_sourcecode.
2502
    CLEAR l_clsname.
2503
    CLEAR l_cmpname.
2504
    CLEAR l_filename.
2505
 
2506
    IF <ls_zseomethod>-cpdname NA '~'.
2507
      l_clsname = <ls_zseomethod>-clsname.
2508
      l_cmpname = <ls_zseomethod>-cpdname.
2509
    ELSE.
2510
      SPLIT <ls_zseomethod>-cpdname AT '~'
2511
        INTO l_clsname l_cmpname.
2512
    ENDIF.
2513
*read Signature - Parameter
2514
    SELECT * FROM vseomepara INTO TABLE lt_vseomepara
2515
      WHERE clsname = l_clsname
2516
      AND cmpname = l_cmpname
2517
      AND langu = sy-langu
2518
      AND version = '1'
2519
      ORDER BY pardecltyp editorder.
2520
    LOOP AT lt_vseomepara ASSIGNING <ls_vseomepara>.
2521
      CLEAR ls_ref_signature.
2522
      PERFORM get_dom_value_text
2523
        USING
2524
          'SEOPARDECL'
2525
          <ls_vseomepara>-pardecltyp
2526
        CHANGING
2527
          ls_ref_signature-declaration.
2528
      IF <ls_vseomepara>-parpasstyp = 0.
2529
        CONCATENATE 'VALUE(' <ls_vseomepara>-sconame ')'
2530
          INTO ls_ref_signature-parameter SEPARATED BY space.
2531
      ELSE.
2532
        ls_ref_signature-parameter = <ls_vseomepara>-sconame.
2533
      ENDIF.
2534
      PERFORM get_dom_value_text
2535
        USING
2536
          'SEOTYPTYPE'
2537
          <ls_vseomepara>-typtype
2538
        CHANGING
2539
          ls_ref_signature-type.
2540
      CONCATENATE ls_ref_signature-type <ls_vseomepara>-type
2541
        INTO ls_ref_signature-type SEPARATED BY space.
2542
      IF <ls_vseomepara>-paroptionl = abap_true.
2543
        CONCATENATE ls_ref_signature-type '(optional)'
2544
          INTO ls_ref_signature-type SEPARATED BY space.
2545
      ENDIF.
2546
      ls_ref_signature-descript = <ls_vseomepara>-descript.
2547
      APPEND ls_ref_signature TO lt_ref_signature.
2548
    ENDLOOP.
2549
*read Signature - Exceptions
2550
    SELECT * FROM vseoexcep INTO TABLE lt_vseoexcep
2551
      WHERE clsname = l_clsname
2552
      AND cmpname = l_cmpname
2553
      AND langu = sy-langu
2554
      AND version = '1'
2555
      ORDER BY editorder.
2556
    LOOP AT lt_vseoexcep ASSIGNING <ls_vseoexcep>.
2557
      CLEAR ls_ref_signature.
2558
      ls_ref_signature-declaration = txt_exception___1.
2559
      ls_ref_signature-parameter = <ls_vseoexcep>-sconame.
2560
      ls_ref_signature-descript = <ls_vseoexcep>-descript.
2561
      APPEND ls_ref_signature TO lt_ref_signature.
2562
    ENDLOOP.
2563
*read SourceCode
2564
    ls_cpdkey-clsname = <ls_zseomethod>-clsname.
2565
    ls_cpdkey-cpdname = <ls_zseomethod>-cpdname.
2566
 
2567
    PERFORM get_trdir_name_method_include
2568
      USING ls_cpdkey
2569
      CHANGING l_progname.
2570
    IF NOT l_progname IS INITIAL.
2571
      PERFORM try_read_report
2572
        USING l_progname
2573
        CHANGING lt_sourcecode.
2574
    ENDIF.
2575
*download SourceCode
2576
    IF g_add_sourcecode = abap_true.
2577
      CONCATENATE <ls_zseomethod>-clsname '-'
2578
        <ls_zseomethod>-cpdname
2579
        INTO l_filename.
2580
      PERFORM replace_all
2581
        USING '~' '-'
2582
        CHANGING l_filename.
2583
      PERFORM download
2584
        USING
2585
          lt_sourcecode
2586
          <ls_zseomethod>-pgmid
2587
          <ls_zseomethod>-object
2588
          l_filename
2589
          gc_extension_txt
2590
          abap_false.
2591
    ENDIF.
2592
*HTML
2593
    PERFORM html_main_iframeheader
2594
      USING
2595
        <ls_zseomethod>-cpdname
2596
      CHANGING
2597
        lt_html.
2598
    PERFORM html_add_methodnodiv
2599
      USING
2600
        <ls_zseomethod>-cpdname
2601
        <ls_zseomethod>-active
2602
        txt_method
2603
        'CLAS_SIGNA'
2604
        lt_ref_signature
2605
        lt_ref_signature
2606
        lt_sourcecode
2607
        l_filename
2608
        space
2609
        space
2610
        gc_extension_txt
2611
        'CONTENT'
2612
      CHANGING
2613
        lt_html.
2614
    PERFORM html_main_iframefooter
2615
      CHANGING
2616
        lt_html.
2617
*Download
2618
    CONCATENATE <ls_zseomethod>-clsname '-' <ls_zseomethod>-cpdname
2619
      INTO l_filename.
2620
    PERFORM replace_all
2621
      USING '~' '-'
2622
      CHANGING l_filename.
2623
    PERFORM download
2624
        USING
2625
          lt_html
2626
          <ls_zseomethod>-pgmid
2627
          <ls_zseomethod>-object
2628
          l_filename
2629
          gc_extension_htm
2630
          abap_false.
2631
  ENDLOOP.
2632
 
2633
ENDFORM.                    "r3tr_clas_methods
2634
 
2635
 
2636
*-----------------------------------------------------------------------
2637
* seo_r3tr_intf                                 Interfaces
2638
*-----------------------------------------------------------------------
2639
FORM seo_r3tr_intf.
2640
 
2641
  DATA:
2642
  lt_html TYPE it_string,
2643
  lt_tabstrip TYPE it_tabstrip,
2644
  ls_tabstrip TYPE st_tabstrip,
2645
  ls_seoclass TYPE seoclass,
2646
  lt_typegroup TYPE STANDARD TABLE OF seotypepls,
2647
  ls_properties TYPE st_properties,
2648
  lt_ti TYPE it_textinput,
2649
  lt_ref_interface TYPE it_ref_seointerface,
2650
  lt_ref_interface_all TYPE it_ref_seointerface,
2651
  ls_ref_interface TYPE st_ref_seointerface,
2652
  lt_ref_attrib TYPE it_ref_seoattrib,
2653
  lt_ref_method TYPE it_ref_seomethod,
2654
  lt_ref_event TYPE it_ref_seoevent,
2655
  lt_ref_type TYPE it_ref_seotype,
2656
  lt_ref_type_par TYPE it_ref_seotype,
2657
  lt_ref_alias TYPE it_ref_seoalias,
2658
  lt_doc TYPE it_string,
2659
  l_progname TYPE programm,
2660
  l_javascript TYPE string,
2661
  l_filename TYPE string,
2662
  l_id TYPE string,
2663
  l_flag.
2664
 
2665
  FIELD-SYMBOLS:
2666
  <ls_tabstrip> TYPE st_tabstrip,
2667
  <ls_ztadir> TYPE st_ztadir,
2668
  <ls_ref_interface_all> TYPE st_ref_seointerface.
2669
 
2670
 
2671
  LOOP AT gt_ztadir ASSIGNING <ls_ztadir>
2672
      WHERE pgmid = 'R3TR'
2673
      AND object = 'INTF'
2674
      AND downloaded = abap_false.
2675
    <ls_ztadir>-downloaded = abap_true.
2676
 
2677
    REFRESH:
2678
    lt_html,
2679
    lt_ref_interface,
2680
    lt_ref_interface_all.
2681
 
2682
    SELECT SINGLE * FROM seoclass INTO ls_seoclass
2683
      WHERE clsname = <ls_ztadir>-obj_name
2684
      AND clstype = 1.
2685
    IF sy-subrc <> 0.
2686
      <ls_ztadir>-subrc = sy-subrc.
2687
      CONTINUE.
2688
    ENDIF.
2689
*Interface Documentation
2690
    PERFORM get_docu
2691
      USING
2692
        'IF'
2693
        <ls_ztadir>-obj_name
2694
        'E'
2695
      CHANGING
2696
        lt_doc.
2697
*Properties
2698
    PERFORM seo_intf_get_props
2699
      USING
2700
        <ls_ztadir>-obj_name
2701
        <ls_ztadir>-devclass
2702
      CHANGING
2703
        ls_properties
2704
        lt_ti
2705
        lt_typegroup.
2706
*Interfaces
2707
    PERFORM seo_get_interfaces
2708
      USING
2709
        <ls_ztadir>-obj_name
2710
        0
2711
      CHANGING
2712
        lt_ref_interface
2713
        lt_ref_interface_all.
2714
    ls_ref_interface-refclsname = <ls_ztadir>-obj_name.
2715
    APPEND ls_ref_interface TO lt_ref_interface_all.
2716
*Attributes
2717
    PERFORM seo_intf_get_attribs
2718
      USING
2719
        <ls_ztadir>-obj_name
2720
        lt_ref_interface_all
2721
      CHANGING
2722
        lt_ref_attrib.
2723
*Methods
2724
    PERFORM seo_intf_get_methods
2725
      USING
2726
        <ls_ztadir>-obj_name
2727
        lt_ref_interface_all
2728
      CHANGING
2729
        lt_ref_method.
2730
*Events
2731
    PERFORM seo_intf_get_events
2732
      USING
2733
        <ls_ztadir>-obj_name
2734
        lt_ref_interface_all
2735
      CHANGING
2736
        lt_ref_event.
2737
*Types
2738
    PERFORM seo_intf_get_types
2739
      USING
2740
        <ls_ztadir>-obj_name
2741
        lt_ref_interface_all
2742
      CHANGING
2743
        lt_ref_type
2744
        lt_ref_type_par.
2745
*Aliases
2746
    PERFORM seo_intf_get_aliases
2747
      USING
2748
        <ls_ztadir>-obj_name
2749
        lt_ref_attrib
2750
        lt_ref_method
2751
        lt_ref_event
2752
        lt_ref_type_par
2753
      CHANGING
2754
        lt_ref_alias.
2755
*** TabStrip
2756
    PERFORM get_tabstrip
2757
      USING 'SEO_R3TR_INTF' space
2758
      CHANGING lt_tabstrip.
2759
 
2760
    LOOP AT lt_tabstrip ASSIGNING <ls_tabstrip>.
2761
      <ls_tabstrip>-empty = abap_false.
2762
      CASE <ls_tabstrip>-id.
2763
        WHEN 'DOC'.
2764
          IF lt_doc IS INITIAL.
2765
            <ls_tabstrip>-empty = abap_true.
2766
          ENDIF.
2767
        WHEN 'INTERFACES'.
2768
          IF lt_ref_interface IS INITIAL.
2769
            <ls_tabstrip>-empty = abap_true.
2770
          ENDIF.
2771
        WHEN 'ATTRIBUTES'.
2772
          IF lt_ref_attrib IS INITIAL.
2773
            <ls_tabstrip>-empty = abap_true.
2774
          ENDIF.
2775
        WHEN 'METHODS'.
2776
          IF lt_ref_method IS INITIAL.
2777
            <ls_tabstrip>-empty = abap_true.
2778
          ENDIF.
2779
        WHEN 'EVENTS'.
2780
          IF lt_ref_event IS INITIAL.
2781
            <ls_tabstrip>-empty = abap_true.
2782
          ENDIF.
2783
        WHEN 'TYPES'.
2784
          IF lt_ref_type IS INITIAL.
2785
            <ls_tabstrip>-empty = abap_true.
2786
          ENDIF.
2787
        WHEN 'ALIASES'.
2788
          IF lt_ref_alias IS INITIAL.
2789
            <ls_tabstrip>-empty = abap_true.
2790
          ENDIF.
2791
      ENDCASE.
2792
    ENDLOOP.
2793
 
2794
    LOOP AT lt_ref_interface_all ASSIGNING <ls_ref_interface_all>.
2795
      CLEAR ls_tabstrip.
2796
      PERFORM get_id
2797
        USING 'COMPONENTS_' <ls_ref_interface_all>-refclsname
2798
        CHANGING ls_tabstrip-id.
2799
      ls_tabstrip-hidden = abap_true.
2800
      APPEND ls_tabstrip TO lt_tabstrip.
2801
      PERFORM get_id
2802
        USING 'COMPONENTS_' <ls_ref_interface_all>-refclsname
2803
        CHANGING l_id.
2804
      CONCATENATE l_javascript 'makeDivSize(''' l_id ''');'
2805
        INTO l_javascript.
2806
    ENDLOOP.
2807
*** HTML
2808
    PERFORM html_main_header
2809
      USING
2810
        tpt_seo_intf
2811
        txt_interface
2812
        <ls_ztadir>-obj_name
2813
        txt_implemented_active
2814
        space
2815
        space
2816
        l_javascript
2817
        lt_tabstrip
2818
        gt_link
2819
      CHANGING
2820
        lt_html.
2821
*  Documentation
2822
    IF NOT lt_doc IS INITIAL
2823
    OR g_empty_tab = gc_empty_tab_display.
2824
      PERFORM html_add_doc
2825
        USING
2826
          lt_doc
2827
          'DOC'
2828
          abap_false
2829
        CHANGING
2830
          lt_html.
2831
    ENDIF.
2832
*  Properties
2833
    l_flag = abap_false.
2834
    IF lt_ref_method IS INITIAL
2835
    AND lt_ref_attrib IS INITIAL.
2836
      l_flag = abap_true.
2837
    ENDIF.
2838
    PERFORM html_add_properties
2839
      USING
2840
        ls_properties
2841
        lt_ti
2842
        'INTF_TYPEG'
2843
        lt_typegroup
2844
        'PROPERTIES'
2845
        l_flag
2846
      CHANGING
2847
        lt_html.
2848
*  Interfaces
2849
    IF NOT lt_ref_interface IS INITIAL
2850
    OR g_empty_tab = gc_empty_tab_display.
2851
      PERFORM html_add_table
2852
        USING
2853
          'INTF_INTER'
2854
          lt_ref_interface
2855
          lt_ref_interface
2856
          'INTERFACES'
2857
          abap_false
2858
        CHANGING
2859
          lt_html.
2860
    ENDIF.
2861
*  Attributes
2862
    IF NOT lt_ref_attrib IS INITIAL
2863
    OR g_empty_tab = gc_empty_tab_display.
2864
      l_flag = abap_false.
2865
      IF lt_ref_method IS INITIAL.
2866
        l_flag = abap_true.
2867
      ENDIF.
2868
      PERFORM html_add_table
2869
        USING
2870
          'INTF_ATTRI'
2871
          lt_ref_attrib
2872
          lt_ref_attrib
2873
          'ATTRIBUTES'
2874
          l_flag
2875
        CHANGING
2876
          lt_html.
2877
    ENDIF.
2878
*  Methods
2879
    IF NOT lt_ref_method IS INITIAL
2880
    OR g_empty_tab = gc_empty_tab_display.
2881
      PERFORM html_add_table
2882
        USING
2883
          'INTF_METHO'
2884
          lt_ref_method
2885
          lt_ref_method
2886
          'METHODS'
2887
          abap_true
2888
        CHANGING
2889
          lt_html.
2890
    ENDIF.
2891
*  Events
2892
    IF NOT lt_ref_event IS INITIAL
2893
    OR g_empty_tab = gc_empty_tab_display.
2894
      PERFORM html_add_table
2895
        USING
2896
          'INTF_EVENT'
2897
          lt_ref_event
2898
          lt_ref_event
2899
          'EVENTS'
2900
          abap_false
2901
        CHANGING
2902
          lt_html.
2903
    ENDIF.
2904
*  Types
2905
    IF NOT lt_ref_type IS INITIAL
2906
    OR g_empty_tab = gc_empty_tab_display.
2907
      PERFORM html_add_table
2908
        USING
2909
          'INTF_TYPES'
2910
          lt_ref_type
2911
          lt_ref_type
2912
          'TYPES'
2913
          abap_false
2914
        CHANGING
2915
          lt_html.
2916
    ENDIF.
2917
*  Aliases
2918
    IF NOT lt_ref_alias IS INITIAL
2919
    OR g_empty_tab = gc_empty_tab_display.
2920
      PERFORM html_add_table
2921
        USING
2922
          'INTF_ALIAS'
2923
          lt_ref_alias
2924
          lt_ref_alias
2925
          'ALIASES'
2926
          abap_false
2927
        CHANGING
2928
          lt_html.
2929
    ENDIF.
2930
    LOOP AT lt_ref_interface_all ASSIGNING <ls_ref_interface_all>.
2931
      PERFORM get_trdir_name
2932
        USING <ls_ref_interface_all>-refclsname 'IU'
2933
        CHANGING l_progname.
2934
      PERFORM get_id
2935
        USING 'COMPONENTS_' <ls_ref_interface_all>-refclsname
2936
        CHANGING l_id.
2937
      CONCATENATE <ls_ref_interface_all>-refclsname '.components'
2938
          INTO l_filename.
2939
      PERFORM add_report_sourcecode
2940
        USING
2941
          l_progname
2942
          l_filename
2943
          gc_extension_txt
2944
          abap_false
2945
          <ls_ztadir>
2946
          l_id
2947
          abap_false
2948
        CHANGING
2949
          lt_html.
2950
    ENDLOOP.
2951
    PERFORM html_main_footer
2952
      USING
2953
        lt_html.
2954
 
2955
    PERFORM download
2956
      USING
2957
        lt_html
2958
        <ls_ztadir>-pgmid
2959
        <ls_ztadir>-object
2960
        <ls_ztadir>-obj_name
2961
        gc_extension_htm
2962
        abap_true.
2963
  ENDLOOP.
2964
ENDFORM.                                                    "r3tr_intf