Properties | SourceCde
Title | SoftCopy - seo |
Original language | DE | Englisch
Created | 04.01.2013 |  | CREYTZ |
Last changed by | 23.02.2021 |  | CREYTZ |
Status | Active |
Attributes
Type | INCLUDE program |
Status | Customer production program |
Application |  |
Authorization Group |  |
Package | ZSOFTCOPY | SoftCopy
| Editor lock
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