Properties | SourceCde
Title | SoftCopy - fugr |
Original language | DE | Englisch
Created | 03.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_FUGR                                   *
    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
    * fugr
    31
    *-----------------------------------------------------------------------
    32
    FORM fugr.
    33
    *FUGR
    34
      PERFORM fugr_r3tr_fugr.
    35
    *INCL
    36
      PERFORM fugr_r3tr_includes.
    37
    *MOD
    38
      PERFORM fugr_r3tr_modules.
    39
    *Screen
    40
      PERFORM fugr_r3tr_screen.
    41
    42
    ENDFORM.                    "fugr
    43
    44
    45
    *-----------------------------------------------------------------------
    46
    * fugr_get_feldtab
    47
    *-----------------------------------------------------------------------
    48
    FORM fugr_get_feldtab
    49
      USING
    50
        is_d020s TYPE d020s
    51
        it_d021s TYPE it_d021s
    52
        it_d023x TYPE d023s_xtab
    53
        is_dynpro_release TYPE st_dynpro_release
    54
      CHANGING
    55
        ct_feld TYPE it_feld
    56
        ct_feld_redef TYPE it_feld_redef.
    57
    58
      DATA:
    59
      ls_d021s_res1 LIKE d021s_res1,
    60
      ls_feld TYPE feld,
    61
      ls_feld_redef TYPE st_feld_redef,
    62
      ls_func_old TYPE st_dynpro_function_old,
    63
      ls_func_new TYPE st_dynpro_function_new,
    64
      l_length TYPE i,
    65
      l_strlen TYPE i.
    66
    67
      FIELD-SYMBOLS:
    68
      <ls_d021s> TYPE d021s,
    69
      <ls_d023x> TYPE d023s_xh,
    70
      <l_recentry> TYPE ANY.
    71
    72
      CONSTANTS:
    73
      lc_flg1ddf TYPE x VALUE '20',
    74
      lc_flg1ddm TYPE x VALUE '10',
    75
      lc_flg1edt TYPE x VALUE '80',
    76
      lc_flg1scr TYPE x VALUE '01',
    77
      lc_flg3obl TYPE x VALUE '20',
    78
      lc_fmb1ges TYPE x VALUE '20',
    79
      lc_fmb1out TYPE x VALUE '01',
    80
      lcs_dynpro_rel_400 TYPE st_dynpro_release VALUE '4.00',
    81
      lcs_dynpro_rel_401 TYPE st_dynpro_release VALUE '4.01',
    82
      lcs_dynpro_rel_402 TYPE st_dynpro_release VALUE '4.02',
    83
      lcs_dynpro_rel_46a TYPE st_dynpro_release VALUE '4.60',
    84
      lcs_dynpro_rel_610 TYPE st_dynpro_release VALUE '6.10'.
    85
    86
    87
      REFRESH:
    88
      ct_feld,
    89
      ct_feld_redef.
    90
    91
    92
      LOOP AT it_d021s ASSIGNING <ls_d021s>.
    93
        CLEAR ls_d021s_res1.
    94
        CLEAR ls_feld.
    95
        CLEAR ls_feld_redef.
    96
        CLEAR ls_func_new.
    97
        CLEAR ls_func_old.
    98
    99
        ls_d021s_res1 = <ls_d021s>-res1.
    100
    101
        ls_feld-name = <ls_d021s>-fnam.
    102
        ls_feld-dynnr = is_d020s-dnum.
    103
        ls_feld-line = <ls_d021s>-line.
    104
    105
        IF ( <ls_d021s>-lanf <> 0 AND <ls_d021s>-ltyp = 'T' )
    106
        OR ( <ls_d021s>-ltyp = 'I' AND <ls_d021s>-fill = 'P' )
    107
        OR <ls_d021s>-ltyp = 'S'.
    108
          ls_feld-coln = <ls_d021s>-coln.
    109
        ELSE.
    110
          ls_feld-coln = <ls_d021s>-coln - 1.
    111
        ENDIF.
    112
    113
        ls_feld-leng = <ls_d021s>-leng.
    114
    115
        ls_feld-vleng = 1.
    116
        IF <ls_d021s>-didx <= 0.
    117
          IF <ls_d021s>-stxt(1) = '@'.
    118
            IF <ls_d021s>-leng > 2.
    119
              ls_feld-vleng = <ls_d021s>-leng - 2.
    120
            ENDIF.
    121
          ELSE.
    122
            IF <ls_d021s>-leng > 1.
    123
              ls_feld-vleng = <ls_d021s>-leng.
    124
            ENDIF.
    125
          ENDIF.
    126
        ELSE.
    127
          IF <ls_d021s>-fill CA 'TBSUIR'.
    128
            ls_feld-vleng = <ls_d021s>-leng.
    129
          ELSE.
    130
            IF <ls_d021s>-flg1 Z lc_flg1edt.
    131
              IF <ls_d021s>-ltyp CA 'TP'.
    132
                ls_feld-vleng = <ls_d021s>-didx.
    133
              ELSE.
    134
                IF <ls_d021s>-didx > 0.
    135
                  ls_feld-vleng = <ls_d021s>-didx.
    136
                ELSE.
    137
                  ls_feld-vleng = <ls_d021s>-leng.
    138
                ENDIF.
    139
              ENDIF.
    140
            ELSE.
    141
              ls_feld-vleng = <ls_d021s>-didx.
    142
            ENDIF.
    143
          ENDIF.
    144
        ENDIF.
    145
    146
        ls_feld-high = 1.
    147
        IF <ls_d021s>-didx > 0
    148
        AND <ls_d021s>-fill CA 'TBSUIR'.
    149
          ls_feld-high = <ls_d021s>-didx.
    150
        ENDIF.
    151
    152
        IF <ls_d021s>-flg1 O lc_flg1edt
    153
        AND <ls_d021s>-flg1 O lc_flg1scr
    154
        AND <ls_d021s>-fill NA 'TSI'.
    155
          ls_feld-scroll = abap_true.
    156
        ELSE.
    157
          ls_feld-scroll = abap_false.
    158
        ENDIF.
    159
        IF <ls_d021s>-type = 'STRG'
    160
        OR <ls_d021s>-type = 'RSTR'
    161
        OR <ls_d021s>-type = 'SSTR'.
    162
          ls_feld-scroll = abap_true.
    163
        ENDIF.
    164
    165
        IF <ls_d021s>-flg1 O lc_flg1ddf.
    166
          ls_feld-dict = abap_true.
    167
        ELSE.
    168
          ls_feld-dict = abap_false.
    169
        ENDIF.
    170
    171
        IF <ls_d021s>-flg1 O lc_flg1edt.
    172
          IF <ls_d021s>-flg1 O lc_flg1ddf
    173
          AND <ls_d021s>-flg1 O lc_flg1ddm.
    174
            ls_feld-dmod = abap_true.
    175
          ENDIF.
    176
        ELSE.
    177
          IF <ls_d021s>-flg1 O lc_flg1ddf.
    178
            IF <ls_d021s>-ityp = '4'.
    179
              ls_feld-dmod = '4'.
    180
            ELSE.
    181
              IF <ls_d021s>-ityp = '1'
    182
              OR <ls_d021s>-ityp = '2'
    183
              OR <ls_d021s>-ityp = '3'.
    184
                IF <ls_d021s>-flg1 O lc_flg1ddm.
    185
                  ls_feld-dmod = <ls_d021s>-ityp.
    186
                ELSE.
    187
                  ls_feld-dmod = 'V'.
    188
                ENDIF.
    189
              ELSEIF <ls_d021s>-ityp = '0'.
    190
                IF <ls_d021s>-flg1 O lc_flg1ddm.
    191
                  ls_feld-dmod = 'F'.
    192
                ELSE.
    193
                  ls_feld-dmod = 'V'.
    194
                ENDIF.
    195
              ELSE.
    196
                ls_feld-dmod = 'F'.
    197
              ENDIF.
    198
            ENDIF.
    199
          ENDIF.
    200
        ENDIF.
    201
    202
        ls_feld-grp1 = <ls_d021s>-grp1.
    203
        ls_feld-grp2 = <ls_d021s>-grp2.
    204
        ls_feld-grp3 = <ls_d021s>-grp3.
    205
        ls_feld-grp4 = <ls_d021s>-grp4.
    206
    207
        IF <ls_d021s>-ltyp = 'L'.
    208
          ls_feld-loop = <ls_d021s>-lrep.
    209
          IF is_d020s-valp = <ls_d021s>-lanf.
    210
            ls_feld-ltyp = 'Var'.
    211
          ELSE.
    212
            ls_feld-ltyp = 'Fix'.
    213
          ENDIF.
    214
        ENDIF.
    215
    216
        IF <ls_d021s>-fmb1 O lc_fmb1ges.
    217
          ls_feld-fobl = 'N'.
    218
        ELSEIF <ls_d021s>-flg3 O lc_flg3obl.
    219
          ls_feld-fobl = 'O'.
    220
          ls_feld-fein = abap_true.
    221
        ELSE.
    222
          ls_feld-fein = abap_true.
    223
          ASSIGN COMPONENT 'RECENTRY' OF STRUCTURE ls_d021s_res1
    224
            TO <l_recentry>.
    225
          IF <l_recentry> IS ASSIGNED AND NOT <l_recentry> IS INITIAL.
    226
            ls_feld-fobl = 'R'.
    227
          ENDIF.
    228
          UNASSIGN <l_recentry>.
    229
        ENDIF.
    230
        PERFORM get_dom_value_text
    231
          USING 'SCRPFOBL' ls_feld-fobl
    232
          CHANGING ls_feld_redef-fobl.
    233
    234
        IF <ls_d021s>-fill <> 'R'.
    235
          ls_feld-fout = abap_true.
    236
        ENDIF.
    237
    238
        PERFORM fugr_get_feld_fill_na_btisu
    239
          USING <ls_d021s> is_dynpro_release
    240
          CHANGING ls_feld.
    241
    242
        ls_feld-colr = <ls_d021s>-colr.
    243
        ls_feld-mtch = <ls_d021s>-dmac.
    244
        ls_feld-waer = <ls_d021s>-wnam.
    245
    246
        IF is_dynpro_release <= lcs_dynpro_rel_400.
    247
          ls_func_old = <ls_d021s>-dmac.
    248
          ls_feld-fcod  = ls_func_old-code.
    249
          ls_feld-ptype = ls_func_old-type.
    250
        ELSEIF is_dynpro_release <= lcs_dynpro_rel_402.
    251
          ls_func_new  = <ls_d021s>-dmac.
    252
          ls_feld-fcod  = ls_func_new-code.
    253
          ls_feld-ptype = ls_func_new-type.
    254
        ELSE.
    255
          ls_feld-fcod  = ls_d021s_res1-funccode.
    256
          ls_feld-ptype = ls_d021s_res1-functype.
    257
        ENDIF.
    258
    259
        IF ls_d021s_res1-ctmenuflg = abap_true.
    260
          ls_feld-ctmenust = abap_true.
    261
          ls_feld-ctmenuprog = ls_d021s_res1-ctmenuprog.
    262
          ls_feld-ctmenustat = ls_d021s_res1-ctmenustat.
    263
        ELSE.
    264
          ls_feld-ctmenudy = abap_true.
    265
          ls_feld-ctmenuonct = ls_d021s_res1-ctmenustat.
    266
        ENDIF.
    267
    268
        READ TABLE it_d023x ASSIGNING <ls_d023x>
    269
            WITH KEY cccustom = <ls_d021s>-fnam.
    270
        IF sy-subrc = 0.
    271
          ls_feld-ccname = <ls_d023x>-ccname.
    272
        ENDIF.
    273
    274
        CALL FUNCTION 'RS_SCRP_GET_FIELD_TYPE_TEXT'
    275
          EXPORTING
    276
            field                    = <ls_d021s>
    277
            text_kind                = 'SHORT'
    278
          IMPORTING
    279
            field_type_without_modif = ls_feld-gtyp
    280
          EXCEPTIONS
    281
            OTHERS                   = 1.
    282
    283
        ls_feld-stxt = <ls_d021s>-stxt.
    284
        ls_feld-dropfrom = ls_d021s_res1-dropval.
    285
        IF ls_d021s_res1-dropdown = 'D'.
    286
          CASE ls_d021s_res1-dropstyle.
    287
            WHEN 'K'.
    288
              ls_feld-dropdown = ls_d021s_res1-dropstyle.
    289
            WHEN OTHERS.
    290
              ls_feld-dropdown = ls_d021s_res1-droptyp.
    291
          ENDCASE.
    292
          PERFORM get_dom_value_text
    293
              USING 'SCRPCOTYPE' ls_feld-dropdown
    294
              CHANGING ls_feld_redef-dropdown.
    295
        ENDIF.
    296
    297
        IF <ls_d021s>-colr = '8'.
    298
          ls_feld-extend = 'N'.
    299
        ELSEIF <ls_d021s>-colr = '7'.
    300
          ls_feld-extend = 'C'.
    301
        ENDIF.
    302
    303
        IF <ls_d021s>-fill CA 'BTSUI'.
    304
          ls_feld-hierarchy = '+ '.
    305
        ENDIF.
    306
        IF <ls_d021s>-ltyp CA 'TSI'.
    307
          ls_feld-hierarchy = ' -'.
    308
        ENDIF.
    309
    310
        PERFORM fugr_get_feld_icon
    311
          USING
    312
            <ls_d021s>
    313
          CHANGING
    314
            ls_feld.
    315
    316
        ls_feld-prog = is_d020s-prog.
    317
        ls_feld-dnum = is_d020s-dnum.
    318
    319
    *post processing
    320
        CASE <ls_d021s>-ltyp.
    321
          WHEN 'O'.  "OK-Code
    322
            ls_feld-type = ' OK '.
    323
            ls_feld-line = '0'.
    324
            ls_feld-coln = '0'.
    325
            ls_feld-leng = ls_feld-vleng.
    326
            ls_feld-fein = abap_undefined.
    327
            ls_feld-fout = abap_undefined.
    328
            ls_feld-oout = abap_undefined.
    329
            ls_feld_redef-fobl = space.
    330
            ls_feld-fixf = abap_false.
    331
          WHEN OTHERS.
    332
            ls_feld-type = <ls_d021s>-type.
    333
        ENDCASE.
    334
    335
        CASE <ls_d021s>-fill.
    336
          WHEN 'C'.  "Checkbutton
    337
            ls_feld-scroll = abap_undefined.
    338
            ls_feld-icon_x = abap_undefined.
    339
            ls_feld_redef-fobl = space.
    340
            ls_feld-fixf = abap_false.
    341
          WHEN 'P'.  "Pushbutton
    342
            ls_feld-scroll = abap_undefined.
    343
            ls_feld_redef-fobl = space.
    344
          WHEN 'R'.  "Frame
    345
            ls_feld-fout = abap_true.
    346
            ls_feld-scroll = abap_undefined.
    347
            ls_feld_redef-fobl = space.
    348
          WHEN 'T'.
    349
            ls_feld_redef-fobl = space.
    350
        ENDCASE.
    351
    352
        CASE ls_feld-gtyp.
    353
          WHEN 'Check'.
    354
            IF <ls_d021s>-ityp = '0'.
    355
              ls_feld-scroll = abap_undefined.
    356
              ls_feld-fein = abap_false.
    357
              ls_feld-fout = abap_false.
    358
              ls_feld-oout = abap_false.
    359
              ls_feld-type = space.
    360
              ls_feld-icon_x = abap_undefined.
    361
              ls_feld_redef-fobl = space.
    362
              ls_feld-paid = space.
    363
              ls_feld-cmbfoc = abap_false.
    364
              ls_feld-ucnv = space.
    365
            ENDIF.
    366
          WHEN 'CuCtr'.
    367
            ls_feld-scroll = abap_undefined.
    368
            ls_feld-fein = abap_false.
    369
            ls_feld-fout = abap_false.
    370
            ls_feld-oout = abap_false.
    371
            ls_feld-type = space.
    372
            ls_feld-icon_x = abap_undefined.
    373
            ls_feld_redef-fobl = space.
    374
            ls_feld-paid = space.
    375
            ls_feld-cmbfoc = abap_false.
    376
            ls_feld-ucnv = space.
    377
          WHEN 'Frame'.
    378
            ls_feld-scroll = abap_undefined.
    379
            ls_feld-icon_x = abap_undefined.
    380
            IF ls_feld-stxt CN ' _'.
    381
              ls_feld-fein = abap_false.
    382
              ls_feld-fout = abap_false.
    383
              ls_feld-oout = abap_false.
    384
              ls_feld-type = space.
    385
              ls_feld_redef-fobl = space.
    386
              ls_feld-paid = space.
    387
              ls_feld-cmbfoc = abap_false.
    388
              ls_feld-ucnv = space.
    389
            ENDIF.
    390
          WHEN 'I/O'.
    391
            IF is_dynpro_release <= lcs_dynpro_rel_402.
    392
              ls_feld-fixf = abap_false.
    393
            ENDIF.
    394
          WHEN 'Push'.
    395
            ls_feld-scroll = abap_undefined.
    396
            ls_feld-mtch = space.
    397
            IF <ls_d021s>-flg1 Z lc_flg1edt.
    398
              ls_feld-fein = abap_false.
    399
              ls_feld-fout = abap_false.
    400
              ls_feld-oout = abap_false.
    401
              ls_feld-type = space.
    402
              ls_feld-icon_x = abap_undefined.
    403
              ls_feld_redef-fobl = space.
    404
              ls_feld-paid = space.
    405
              ls_feld-cmbfoc = abap_false.
    406
              ls_feld-ucnv = space.
    407
            ENDIF.
    408
          WHEN 'Radio'.
    409
            ls_feld-scroll = abap_undefined.
    410
            ls_feld-icon_x = abap_undefined.
    411
            ls_feld_redef-fobl = space.
    412
            IF ls_feld-fcod IS INITIAL.
    413
              ls_feld-fein = abap_false.
    414
              ls_feld-fout = abap_false.
    415
              ls_feld-oout = abap_false.
    416
              ls_feld-type = space.
    417
              ls_feld-icon_x = abap_undefined.
    418
              ls_feld_redef-fobl = space.
    419
              ls_feld-paid = space.
    420
              ls_feld-cmbfoc = abap_false.
    421
              ls_feld-ucnv = space.
    422
            ENDIF.
    423
          WHEN 'SubSc'.
    424
            ls_feld-scroll = abap_undefined.
    425
            ls_feld-icon_x = abap_undefined.
    426
            ls_feld_redef-fobl = space.
    427
            IF ls_feld-fcod IS INITIAL.
    428
              ls_feld-fein = abap_false.
    429
              ls_feld-fout = abap_false.
    430
              ls_feld-oout = abap_false.
    431
              ls_feld-type = space.
    432
              ls_feld-icon_x = abap_undefined.
    433
              ls_feld_redef-fobl = space.
    434
              ls_feld-paid = space.
    435
              ls_feld-cmbfoc = abap_false.
    436
              ls_feld-ucnv = space.
    437
            ENDIF.
    438
          WHEN 'Table'.
    439
            ls_feld-fein = abap_false.
    440
            ls_feld-fout = abap_false.
    441
            ls_feld-oout = abap_false.
    442
            ls_feld-type = space.
    443
            ls_feld-dict = abap_false.
    444
            ls_feld-dmod = abap_false.
    445
          WHEN 'TbStr'.
    446
            ls_feld-scroll = abap_undefined.
    447
            ls_feld-fein = abap_false.
    448
            ls_feld-fout = abap_false.
    449
            ls_feld-oout = abap_false.
    450
            ls_feld-type = space.
    451
            ls_feld-icon_x = abap_undefined.
    452
            ls_feld_redef-fobl = space.
    453
            ls_feld-paid = space.
    454
            ls_feld-cmbfoc = abap_false.
    455
            ls_feld-ucnv = space.
    456
          WHEN 'Text'.
    457
            ls_feld-scroll = abap_undefined.
    458
            ls_feld-fein = abap_false.
    459
            ls_feld-fout = abap_false.
    460
            ls_feld-oout = abap_false.
    461
            ls_feld-type = space.
    462
            ls_feld-icon_x = abap_undefined.
    463
            ls_feld_redef-fobl = space.
    464
            ls_feld-paid = space.
    465
            ls_feld-cmbfoc = abap_false.
    466
            ls_feld-ucnv = space.
    467
            IF ls_feld-fixf = abap_false
    468
            AND ls_feld-hell = abap_false
    469
            AND ls_feld-unsi = abap_false
    470
            AND <ls_d021s>-ltyp = space
    471
            AND ls_feld-labelright = abap_false
    472
            AND <ls_d021s>-flg1 <> '00'.
    473
              ls_feld-labelleft = abap_true.
    474
            ENDIF.
    475
        ENDCASE.
    476
    477
        IF NOT ls_feld-stxt IS INITIAL.
    478
          IF ls_feld-stxt NA '_'.
    479
            l_length = <ls_d021s>-leng.
    480
            IF l_length > 132.
    481
              l_length = 132.
    482
            ENDIF.
    483
            l_strlen = strlen( ls_feld-stxt ).
    484
            WHILE l_strlen < l_length.
    485
              CONCATENATE ls_feld-stxt '_' INTO ls_feld-stxt.
    486
              l_strlen = strlen( ls_feld-stxt ).
    487
            ENDWHILE.
    488
          ENDIF.
    489
          IF <ls_d021s>-fill = 'R'.
    490
            l_strlen = strlen( ls_feld-stxt ).
    491
            l_length = l_strlen - 2.
    492
            IF l_length > 0.
    493
              ls_feld-stxt = ls_feld-stxt+0(l_length).
    494
            ENDIF.
    495
          ENDIF.
    496
        ENDIF.
    497
    498
        APPEND ls_feld TO ct_feld.
    499
        APPEND ls_feld_redef TO ct_feld_redef.
    500
      ENDLOOP.
    501
    ENDFORM.                    "get_feldtab
    502
    503
    504
    *-----------------------------------------------------------------------
    505
    * fugr_get_feld_fill_na_btisu
    506
    *-----------------------------------------------------------------------
    507
    FORM fugr_get_feld_fill_na_btisu
    508
      USING
    509
        is_d021s TYPE d021s
    510
        is_dynpro_release TYPE st_dynpro_release
    511
      CHANGING
    512
        cs_feld TYPE feld.
    513
    514
      DATA:
    515
      ls_d021s_res1 LIKE d021s_res1.
    516
    517
      CONSTANTS:
    518
      lc_flg1ddf TYPE x VALUE '20',
    519
      lc_flg1edt TYPE x VALUE '80',
    520
      lc_flg1osb TYPE x VALUE '04',
    521
      lc_flg2gks TYPE x VALUE '02',
    522
      lc_flg2gpa TYPE x VALUE '08',
    523
      lc_flg2jus TYPE x VALUE '20',
    524
      lc_flg2nrs TYPE x VALUE '40',
    525
      lc_flg2spa TYPE x VALUE '04',
    526
      lc_flg2str TYPE x VALUE '80',
    527
      lc_flg3fdu TYPE x VALUE '02',
    528
      lc_flg3fix TYPE x VALUE '40',
    529
      lc_flg3fku TYPE x VALUE '08',
    530
      lc_flg3for TYPE x VALUE '04',
    531
      lc_flg3out TYPE x VALUE '80',
    532
      lc_fmb1d23 TYPE x VALUE '02',
    533
      lc_fmb1dnk TYPE x VALUE '04',
    534
      lc_fmb1fix TYPE x VALUE '40',
    535
      lc_fmb1ges TYPE x VALUE '20',
    536
      lc_fmb1hll TYPE x VALUE '08',
    537
      lc_fmb1out TYPE x VALUE '01',
    538
      lc_fmb2cmb TYPE x VALUE '08',
    539
      lc_fmb2cmi TYPE x VALUE '04',
    540
      lc_fmb2cmu TYPE x VALUE '10',
    541
      lcs_dynpro_rel_400 TYPE st_dynpro_release VALUE '4.00',
    542
      lcs_dynpro_rel_401 TYPE st_dynpro_release VALUE '4.01',
    543
      lcs_dynpro_rel_402 TYPE st_dynpro_release VALUE '4.02',
    544
      lcs_dynpro_rel_46a TYPE st_dynpro_release VALUE '4.60',
    545
      lcs_dynpro_rel_610 TYPE st_dynpro_release VALUE '6.10'.
    546
    547
    548
      CHECK is_d021s-fill NA 'BTISU'.
    549
    550
      ls_d021s_res1 = is_d021s-res1.
    551
    552
      IF is_d021s-flg2 O lc_flg2str.
    553
        cs_feld-fstr = abap_true.
    554
      ENDIF.
    555
      IF is_d021s-flg2 O lc_flg2nrs.
    556
        cs_feld-fnrs = abap_true.
    557
      ENDIF.
    558
      IF is_d021s-flg2 O lc_flg2gks.
    559
        cs_feld-fgks = abap_true.
    560
      ENDIF.
    561
      IF is_d021s-flg3 O lc_flg3fix.
    562
        cs_feld-ffix = abap_true.
    563
      ENDIF.
    564
      IF is_d021s-flg1 O lc_flg1osb.
    565
        cs_feld-fosb = abap_true.
    566
      ENDIF.
    567
      IF is_d021s-flg2 O lc_flg2jus.
    568
        cs_feld-fjus = abap_true.
    569
      ENDIF.
    570
      IF is_d021s-fill = '0'.
    571
        cs_feld-fill = abap_true.
    572
      ENDIF.
    573
      IF is_d021s-flg2 O lc_flg2gpa.
    574
        cs_feld-fgpa = abap_true.
    575
      ENDIF.
    576
      IF is_d021s-flg2 O lc_flg2spa.
    577
        cs_feld-fspa = abap_true.
    578
      ENDIF.
    579
      IF is_d021s-flg1 O lc_flg1ddf
    580
      AND is_d021s-flg3 O lc_flg3for
    581
      AND is_d021s-flg3 Z lc_flg3fdu
    582
      AND is_d021s-flg3 Z lc_flg3fku.
    583
        cs_feld-ffky = 'X'.
    584
      ENDIF.
    585
      IF is_d021s-flg1 O lc_flg1edt.
    586
        IF is_d021s-fmb1 Z lc_fmb1ges.
    587
          cs_feld-fein = abap_true.
    588
        ELSE.
    589
          cs_feld-fein = abap_false.
    590
        ENDIF.
    591
        IF is_d021s-flg3 O lc_flg3out.
    592
          cs_feld-fout = abap_true.
    593
        ELSE.
    594
          cs_feld-fout = abap_false.
    595
        ENDIF.
    596
        IF is_d021s-fmb1 O lc_fmb1out.
    597
          cs_feld-oout = abap_true.
    598
        ELSE.
    599
          cs_feld-oout = abap_false.
    600
        ENDIF.
    601
      ENDIF.
    602
      cs_feld-paid = is_d021s-paid.
    603
      cs_feld-ucnv = is_d021s-ucnv.
    604
      IF is_d021s-fmb1 O lc_fmb1hll.
    605
        cs_feld-hell = abap_true.
    606
      ENDIF.
    607
      IF is_d021s-fmb1 O lc_fmb1dnk.
    608
        cs_feld-unsi = abap_true.
    609
      ENDIF.
    610
      IF is_d021s-fmb1 O lc_fmb1d23.
    611
        cs_feld-no3d = abap_true.
    612
      ENDIF.
    613
      IF is_dynpro_release <= lcs_dynpro_rel_402.
    614
        IF cs_feld-oout = abap_true
    615
        AND cs_feld-fout = abap_true
    616
        AND is_d021s-flg3 Z lc_flg3out.
    617
          cs_feld-fixf = abap_true.
    618
        ELSEIF cs_feld-oout = abap_false
    619
        AND is_d021s-fmb1 O lc_fmb1out.
    620
          cs_feld-fixf = abap_true.
    621
        ENDIF.
    622
      ENDIF.
    623
      IF is_d021s-fmb1 O lc_fmb1fix.
    624
        cs_feld-fixf = abap_true.
    625
      ENDIF.
    626
      cs_feld-labelleft = ls_d021s_res1-labelleft.
    627
      cs_feld-labelright = ls_d021s_res1-labelright.
    628
      cs_feld-dblclick = ls_d021s_res1-dblclick.
    629
    630
      IF is_d021s-fill <> 'P'
    631
      AND is_d021s-dmac <> space.
    632
        cs_feld-cmbfoc = abap_true.
    633
      ENDIF.
    634
    635
      IF is_d021s-fmb2 Z lc_fmb2cmb.
    636
        cs_feld-cmbfoc = abap_false.
    637
      ELSE.
    638
        cs_feld-cmbfoc  = abap_true.
    639
      ENDIF.
    640
      IF is_d021s-fmb2 Z lc_fmb2cmu
    641
      AND is_d021s-fmb2 Z lc_fmb2cmi.
    642
        cs_feld-cmbtast = space.
    643
      ELSEIF is_d021s-fmb2 O lc_fmb2cmu
    644
      AND is_d021s-fmb2 O lc_fmb2cmi.
    645
        cs_feld-cmbtast = '0'.
    646
      ELSEIF is_d021s-fmb2 O lc_fmb2cmu
    647
      AND is_d021s-fmb2 Z lc_fmb2cmi.
    648
        cs_feld-cmbtast = '1'.
    649
      ELSEIF is_d021s-fmb2 Z lc_fmb2cmu
    650
      AND is_d021s-fmb2 O lc_fmb2cmi.
    651
        cs_feld-cmbtast = '2'.
    652
      ENDIF.
    653
    ENDFORM.                    "get_feld_fill_na_btisu
    654
    655
    656
    *-----------------------------------------------------------------------
    657
    * fugr_get_feld_icon
    658
    *-----------------------------------------------------------------------
    659
    FORM fugr_get_feld_icon
    660
      USING
    661
        is_d021s TYPE d021s
    662
      CHANGING
    663
        cs_feld TYPE feld.
    664
    665
      DATA:
    666
      l_icon_id_pure(2) TYPE c,
    667
      ls_icon TYPE icon,
    668
      ls_icont TYPE icont,
    669
      l_id_and_param(132) TYPE c,
    670
      l_is_non_icon TYPE flag,
    671
      l_pos_at TYPE i,
    672
      l_quick_is TYPE flag,
    673
      l_strlen TYPE i.
    674
    675
      FIELD-SYMBOLS:
    676
      <l_fs> TYPE ANY.
    677
    678
      CONSTANTS:
    679
      lc_flg1edt TYPE x VALUE '80'.
    680
    681
    682
      CHECK is_d021s-stxt(1) = '@'.
    683
    684
      ASSIGN is_d021s-stxt+1(*) TO <l_fs>.
    685
      IF <l_fs> CA '@'.
    686
        l_pos_at = sy-fdpos + 1.
    687
        l_id_and_param = <l_fs>(sy-fdpos).
    688
        IF l_id_and_param CS '\Q'.
    689
          l_quick_is = abap_true.
    690
          SPLIT l_id_and_param AT '\Q'
    691
                INTO l_icon_id_pure
    692
                     cs_feld-icon_q.
    693
          CONCATENATE '@' l_icon_id_pure '@'
    694
                INTO cs_feld-icon.
    695
        ELSE.
    696
          l_quick_is = abap_false.
    697
          CONCATENATE '@' l_id_and_param '@'
    698
                INTO cs_feld-icon.
    699
        ENDIF.
    700
        IF cs_feld-icon = '@@'.
    701
          CLEAR cs_feld-icon.
    702
          l_is_non_icon = abap_true.
    703
        ENDIF.
    704
        SELECT SINGLE * FROM icon INTO ls_icon
    705
            WHERE id = cs_feld-icon.
    706
        IF sy-subrc = 0.
    707
          SELECT SINGLE * FROM icont INTO ls_icont
    708
              WHERE id = cs_feld-icon
    709
              AND langu = sy-langu.
    710
          cs_feld-icon_n = ls_icon-name.
    711
        ELSE.
    712
          cs_feld-icon_n = space.
    713
        ENDIF.
    714
        IF cs_feld-icon_q IS INITIAL
    715
        AND l_quick_is = abap_false.
    716
          cs_feld-icon_q = ls_icont-quickinfo.
    717
        ENDIF.
    718
        l_pos_at = l_pos_at + 1.
    719
        ASSIGN is_d021s-stxt+l_pos_at(*) TO <l_fs>.
    720
        l_strlen = strlen( <l_fs> ).
    721
        IF l_strlen > 0.
    722
          IF l_is_non_icon = abap_true.
    723
          ELSE.
    724
            l_pos_at = l_pos_at + 1.
    725
          ENDIF.
    726
          cs_feld-stxt = is_d021s-stxt+l_pos_at.
    727
        ELSE.
    728
          cs_feld-stxt = space.
    729
        ENDIF.
    730
      ENDIF.
    731
      UNASSIGN <l_fs>.
    732
    733
      IF cs_feld-icon = '@00@'
    734
      AND is_d021s-flg1 O lc_flg1edt.
    735
        cs_feld-icon_x = abap_true.
    736
      ENDIF.
    737
    ENDFORM.                    "get_feld_icon
    738
    739
    740
    *-----------------------------------------------------------------------
    741
    * fugr_r3tr_fugr                                Function group
    742
    *-----------------------------------------------------------------------
    743
    FORM fugr_r3tr_fugr.
    744
    745
      DATA:
    746
      l_progname TYPE progname,
    747
      lt_tabstrip TYPE it_tabstrip,
    748
      ls_ti TYPE st_textinput,
    749
      lt_attributes TYPE it_textinput,
    750
      lt_documentation TYPE it_string,
    751
      ls_progdir TYPE progdir,
    752
      ls_tadir TYPE tadir,
    753
      l_name TYPE ad_namtext,
    754
      lt_html TYPE it_string.
    755
    756
      FIELD-SYMBOLS:
    757
      <ls_ztadir> TYPE st_ztadir,
    758
      <ls_tabstrip> TYPE st_tabstrip.
    759
    760
    *Tabstrip
    761
      PERFORM get_tabstrip
    762
        USING 'FUGR_R3TR_FUGR' space
    763
        CHANGING lt_tabstrip.
    764
    765
      LOOP AT gt_ztadir ASSIGNING <ls_ztadir>
    766
          WHERE pgmid = 'R3TR'
    767
          AND object = 'FUGR'
    768
          AND futype = gc_futype_group
    769
          AND downloaded = abap_false.
    770
        <ls_ztadir>-downloaded = abap_true.
    771
    772
        CLEAR:
    773
        l_name,
    774
        l_progname,
    775
        ls_progdir,
    776
        ls_tadir.
    777
    778
        REFRESH:
    779
        lt_attributes,
    780
        lt_documentation,
    781
        lt_html.
    782
    783
        CALL FUNCTION 'RS_TADIR_TO_PROGNAME'
    784
          EXPORTING
    785
            object   = <ls_ztadir>-object
    786
            obj_name = <ls_ztadir>-obj_name
    787
          IMPORTING
    788
            progname = l_progname.
    789
    790
        SELECT SINGLE * FROM progdir INTO ls_progdir
    791
          WHERE name = l_progname.
    792
        SELECT SINGLE * FROM tadir INTO ls_tadir
    793
          WHERE pgmid = 'R3TR'
    794
          AND object = 'FUGR'
    795
          AND obj_name = <ls_ztadir>-obj_name.
    796
    797
    *Attributes
    798
    *   Function group
    799
        CLEAR ls_ti.
    800
        ls_ti-name = txt_function_group.
    801
        ls_ti-input = abap_true.
    802
        ls_ti-value = <ls_ztadir>-obj_name.
    803
        APPEND ls_ti TO lt_attributes.
    804
    *   Description
    805
        CLEAR ls_ti.
    806
        ls_ti-name = txt_short_text___1.
    807
        ls_ti-input = abap_true.
    808
        ls_ti-value = <ls_ztadir>-descript.
    809
        APPEND ls_ti TO lt_attributes.
    810
    *   Empty row
    811
        CLEAR ls_ti.
    812
        ls_ti-space = abap_true.
    813
        APPEND ls_ti TO lt_attributes.
    814
    *   Person responsible
    815
        CLEAR ls_ti.
    816
        ls_ti-name = txt_person_responsible___1.
    817
        ls_ti-input = abap_true.
    818
        ls_ti-value = ls_tadir-author.
    819
        PERFORM get_user
    820
          USING
    821
            ls_tadir-author
    822
          CHANGING
    823
            l_name.
    824
        ls_ti-value_text = l_name.
    825
        APPEND ls_ti TO lt_attributes.
    826
    *   Package
    827
        CLEAR ls_ti.
    828
        ls_ti-name = txt_package.
    829
        ls_ti-input = abap_true.
    830
        ls_ti-value = ls_tadir-devclass.
    831
        APPEND ls_ti TO lt_attributes.
    832
    *   Application
    833
        CLEAR ls_ti.
    834
        ls_ti-name = txt_application.
    835
        ls_ti-input = abap_true.
    836
        ls_ti-value = ls_progdir-appl.
    837
        APPEND ls_ti TO lt_attributes.
    838
    *   Status
    839
        CLEAR ls_ti.
    840
        ls_ti-name = txt_status.
    841
        ls_ti-input = abap_true.
    842
        IF ls_progdir-state = 'A'.
    843
          ls_ti-value = txt_activated.
    844
        ELSE.
    845
          ls_ti-value = txt_inactive.
    846
        ENDIF.
    847
        APPEND ls_ti TO lt_attributes.
    848
    *   Program status
    849
        CLEAR ls_ti.
    850
        ls_ti-name = txt_program_status.
    851
        ls_ti-input = abap_true.
    852
        ls_ti-value = ls_progdir-rstat.
    853
        PERFORM get_dom_value_text
    854
          USING 'RSTAT' ls_progdir-rstat
    855
          CHANGING ls_ti-value_text.
    856
        APPEND ls_ti TO lt_attributes.
    857
    *   Editor lock
    858
        CLEAR ls_ti.
    859
        ls_ti-name = txt_editor_lock.
    860
        ls_ti-flag = abap_true.
    861
        ls_ti-value = ls_progdir-edtx.
    862
        APPEND ls_ti TO lt_attributes.
    863
    *   Fixed point arithmetic
    864
        CLEAR ls_ti.
    865
        ls_ti-name = txt_fixed_point_arithmetic.
    866
        ls_ti-flag = abap_true.
    867
        ls_ti-value = ls_progdir-fixpt.
    868
        APPEND ls_ti TO lt_attributes.
    869
    *   Unicode checks active
    870
        CLEAR ls_ti.
    871
        ls_ti-name = txtt_unicode_checks_active.
    872
        ls_ti-flag = abap_true.
    873
        ls_ti-value = ls_progdir-uccheck.
    874
        APPEND ls_ti TO lt_attributes.
    875
    *Documentation
    876
        PERFORM get_docu
    877
          USING
    878
            'RE'
    879
            l_progname
    880
            'E'
    881
          CHANGING
    882
            lt_documentation.
    883
    ***Tabstrip
    884
        LOOP AT lt_tabstrip ASSIGNING <ls_tabstrip>.
    885
          <ls_tabstrip>-empty = abap_false.
    886
          CASE <ls_tabstrip>-id.
    887
            WHEN 'DOCUMENTATION'.
    888
              IF lt_documentation IS INITIAL.
    889
                <ls_tabstrip>-empty = abap_true.
    890
              ENDIF.
    891
          ENDCASE.
    892
        ENDLOOP.
    893
    894
    *** HTML
    895
        PERFORM html_main_header
    896
          USING
    897
            tpt_fugr_fugr
    898
            space
    899
            <ls_ztadir>-obj_name
    900
            space
    901
            space
    902
            space
    903
            'makeDivSize(''MAIN_PROG'');makeDivSize(''DOCUMENTATION'');'
    904
            lt_tabstrip
    905
            gt_link
    906
          CHANGING
    907
            lt_html.
    908
    *   Attributes
    909
        PERFORM html_add_textinput
    910
          USING
    911
            lt_attributes
    912
            'ATTRIBUTES'
    913
            abap_true
    914
          CHANGING
    915
            lt_html.
    916
    *Main program
    917
        PERFORM add_report_sourcecode
    918
          USING
    919
            l_progname
    920
            l_progname
    921
            gc_extension_txt
    922
            abap_true
    923
            <ls_ztadir>
    924
            'MAIN_PROG'
    925
            abap_false
    926
          CHANGING
    927
            lt_html.
    928
    *Documentation
    929
        IF NOT lt_documentation IS INITIAL
    930
        OR g_empty_tab = gc_empty_tab_display.
    931
          PERFORM html_add_doc
    932
            USING
    933
              lt_documentation
    934
              'DOCUMENTATION'
    935
              abap_false
    936
            CHANGING
    937
              lt_html.
    938
        ENDIF.
    939
    *
    940
        PERFORM html_main_footer
    941
          USING
    942
            lt_html.
    943
    944
        PERFORM download
    945
          USING
    946
            lt_html
    947
            <ls_ztadir>-pgmid
    948
            <ls_ztadir>-object
    949
            l_progname
    950
            gc_extension_htm
    951
            abap_true.
    952
      ENDLOOP.
    953
    954
    ENDFORM.                                                    "r3tr_fugr
    955
    956
    957
    *-----------------------------------------------------------------------
    958
    * fugr_r3tr_includes                            Includes
    959
    *-----------------------------------------------------------------------
    960
    FORM fugr_r3tr_includes.
    961
    962
      DATA:
    963
      lt_tabstrip TYPE it_tabstrip,
    964
      lt_html TYPE it_string,
    965
      ls_attributes TYPE st_attributes,
    966
      lt_ti TYPE it_textinput,
    967
      lt_ti_box TYPE it_textinput,
    968
      ls_ti TYPE st_textinput,
    969
      l_masterlang TYPE masterlang,
    970
      l_filename TYPE string,
    971
      ls_trdir TYPE trdir,
    972
      l_laiso TYPE laiso,
    973
      l_sptxt TYPE sptxt,
    974
      l_name TYPE ad_namtext,
    975
      l_text TYPE as4text,
    976
      l_atext TYPE appltxt.
    977
    978
      FIELD-SYMBOLS:
    979
      <ls_ztadir> TYPE st_ztadir.
    980
    981
    *Tabstrip
    982
      PERFORM get_tabstrip
    983
        USING 'FUGR_R3TR_INCLUDES' space
    984
        CHANGING lt_tabstrip.
    985
    986
      LOOP AT gt_ztadir ASSIGNING <ls_ztadir>
    987
          WHERE pgmid = 'R3TR'
    988
          AND object = 'FUGR'
    989
          AND futype = gc_futype_include
    990
          AND downloaded = abap_false.
    991
    992
        CLEAR:
    993
        ls_attributes,
    994
        ls_trdir,
    995
        l_text,
    996
        l_atext.
    997
    998
        REFRESH:
    999
        lt_html,
    1000
        lt_ti,
    1001
        lt_ti_box.
    1002
    1003
        SELECT SINGLE * FROM trdir INTO ls_trdir
    1004
            WHERE name = <ls_ztadir>-progname.
    1005
        IF sy-subrc <> 0.
    1006
          <ls_ztadir>-subrc = sy-subrc.
    1007
          CONTINUE.
    1008
        ENDIF.
    1009
    1010
    *Attributes
    1011
    *   Title
    1012
        CLEAR ls_ti.
    1013
        ls_ti-name = txt_title.
    1014
        ls_ti-value = <ls_ztadir>-descript.
    1015
        ls_ti-value_double_length = abap_true.
    1016
        ls_ti-input = abap_true.
    1017
        APPEND ls_ti TO lt_ti.
    1018
    *   Original Language
    1019
        CLEAR ls_ti.
    1020
        ls_ti-name = txt_original_language.
    1021
        l_masterlang = ls_trdir-rload.
    1022
        IF l_masterlang IS INITIAL.
    1023
          l_masterlang = <ls_ztadir>-masterlang.
    1024
        ENDIF.
    1025
        PERFORM get_spras
    1026
          USING
    1027
            l_masterlang
    1028
          CHANGING
    1029
            l_laiso
    1030
            l_sptxt.
    1031
        ls_ti-value = l_laiso.
    1032
        ls_ti-description = l_sptxt.
    1033
        ls_ti-input = abap_true.
    1034
        APPEND ls_ti TO lt_ti.
    1035
    *   Space
    1036
        CLEAR ls_ti.
    1037
        ls_ti-space = abap_true.
    1038
        APPEND ls_ti TO lt_ti.
    1039
    *   Created
    1040
        CLEAR ls_ti.
    1041
        ls_ti-name = txt_created.
    1042
        PERFORM get_date
    1043
          USING
    1044
            ls_trdir-cdat
    1045
          CHANGING
    1046
            ls_ti-value.
    1047
        ls_ti-value_ext = ls_trdir-cnam.
    1048
        PERFORM get_user
    1049
          USING
    1050
            ls_trdir-cnam
    1051
          CHANGING
    1052
            l_name.
    1053
        ls_ti-value_ext_text = l_name.
    1054
        ls_ti-has_value_ext = abap_true.
    1055
        ls_ti-input = abap_true.
    1056
        APPEND ls_ti TO lt_ti.
    1057
    *   Last changed by
    1058
        CLEAR ls_ti.
    1059
        ls_ti-name = txt_last_changed_by___1.
    1060
        PERFORM get_date
    1061
          USING
    1062
            ls_trdir-udat
    1063
          CHANGING
    1064
            ls_ti-value.
    1065
        ls_ti-value_ext = ls_trdir-unam.
    1066
        PERFORM get_user
    1067
          USING
    1068
            ls_trdir-unam
    1069
          CHANGING
    1070
            l_name.
    1071
        ls_ti-value_ext_text = l_name.
    1072
        ls_ti-input = abap_true.
    1073
        ls_ti-has_value_ext = abap_true.
    1074
        APPEND ls_ti TO lt_ti.
    1075
    *   Status
    1076
        CLEAR ls_ti.
    1077
        ls_ti-name = txt_status.
    1078
        ls_ti-value = txt_active___1.
    1079
        APPEND ls_ti TO lt_ti.
    1080
    *Attributes - Box
    1081
    *   Type
    1082
        CLEAR ls_ti.
    1083
        ls_ti-name = txt_type___1.
    1084
        PERFORM get_dom_value_text
    1085
          USING
    1086
            'SUBC'
    1087
            ls_trdir-subc
    1088
          CHANGING
    1089
            ls_ti-value.
    1090
        ls_ti-input = abap_true.
    1091
        APPEND ls_ti TO lt_ti_box.
    1092
    *   Status
    1093
        CLEAR ls_ti.
    1094
        ls_ti-name = txt_status.
    1095
        PERFORM get_dom_value_text
    1096
          USING
    1097
            'RSTAT'
    1098
            ls_trdir-rstat
    1099
          CHANGING
    1100
            ls_ti-value.
    1101
        ls_ti-input = abap_true.
    1102
        APPEND ls_ti TO lt_ti_box.
    1103
    *   Application
    1104
        CLEAR ls_ti.
    1105
        ls_ti-name = txt_application.
    1106
        SELECT SINGLE atext FROM taplt INTO l_atext
    1107
          WHERE appl = ls_trdir-appl
    1108
          AND sprsl = sy-langu.
    1109
        ls_ti-value = l_atext.
    1110
        ls_ti-input = abap_true.
    1111
        APPEND ls_ti TO lt_ti_box.
    1112
    *   Space
    1113
        CLEAR ls_ti.
    1114
        ls_ti-space = abap_true.
    1115
        APPEND ls_ti TO lt_ti_box.
    1116
    *   Package
    1117
        CLEAR ls_ti.
    1118
        ls_ti-name = txt_package.
    1119
        ls_ti-value = <ls_ztadir>-devclass.
    1120
        PERFORM get_devclass
    1121
          USING
    1122
            <ls_ztadir>-devclass
    1123
          CHANGING
    1124
            l_text.
    1125
        ls_ti-description = l_text.
    1126
        ls_ti-input = abap_true.
    1127
        APPEND ls_ti TO lt_ti_box.
    1128
    *   Space
    1129
        CLEAR ls_ti.
    1130
        ls_ti-space = abap_true.
    1131
        APPEND ls_ti TO lt_ti_box.
    1132
    *   Editor lock
    1133
        CLEAR ls_ti.
    1134
        ls_ti-name = txt_editor_lock.
    1135
        ls_ti-value = ls_trdir-edtx.
    1136
        ls_ti-flag = abap_true.
    1137
        APPEND ls_ti TO lt_ti_box.
    1138
    *** HTML
    1139
        PERFORM html_main_header
    1140
          USING
    1141
            tpt_fugr_incl
    1142
            space "l_name_field
    1143
            <ls_ztadir>-progname
    1144
            txt_active___1
    1145
            space
    1146
            space
    1147
            'makeDivSize(''SOURCECODE'');'
    1148
            lt_tabstrip
    1149
            gt_link
    1150
          CHANGING
    1151
            lt_html.
    1152
    *   Attributes
    1153
        PERFORM html_add_textinput_subbox
    1154
          USING
    1155
            lt_ti
    1156
            txt_attributes___2
    1157
            lt_ti_box
    1158
            'ATTRIBUTES'
    1159
            abap_false
    1160
          CHANGING
    1161
            lt_html.
    1162
    *  Source code
    1163
        PERFORM add_report_sourcecode
    1164
          USING
    1165
            <ls_ztadir>-progname
    1166
            <ls_ztadir>-progname
    1167
            gc_extension_txt
    1168
            abap_false
    1169
            <ls_ztadir>
    1170
            'SOURCECODE'
    1171
            abap_true
    1172
          CHANGING
    1173
            lt_html.
    1174
    *
    1175
        PERFORM html_main_footer
    1176
          USING
    1177
            lt_html.
    1178
    1179
        PERFORM download
    1180
          USING
    1181
            lt_html
    1182
            <ls_ztadir>-pgmid
    1183
            <ls_ztadir>-object
    1184
            <ls_ztadir>-progname
    1185
            gc_extension_htm
    1186
            abap_true.
    1187
        <ls_ztadir>-downloaded = abap_true.
    1188
      ENDLOOP.
    1189
    ENDFORM.                                                    "r3tr_incl
    1190
    1191
    1192
    *-----------------------------------------------------------------------
    1193
    * fugr_r3tr_modules                             Funktionsbausteine
    1194
    *-----------------------------------------------------------------------
    1195
    FORM fugr_r3tr_modules.
    1196
    1197
      DATA:
    1198
      ls_tabstrip TYPE st_tabstrip,
    1199
      lt_tabstrip TYPE it_tabstrip,
    1200
      lt_classification TYPE it_textinput,
    1201
      ls_classification TYPE st_textinput,
    1202
      lt_processing_type TYPE it_access,
    1203
      ls_processing_type TYPE st_access,
    1204
      lt_general_data TYPE it_textinput,
    1205
      ls_general_data TYPE st_textinput,
    1206
      lt_html TYPE it_string,
    1207
      lt_ptfdir TYPE STANDARD TABLE OF tfdir,
    1208
      ls_ptfdir TYPE tfdir,
    1209
      lt_ptftit TYPE STANDARD TABLE OF tftit,
    1210
      ls_ptftit TYPE tftit,
    1211
      lt_pfunct TYPE STANDARD TABLE OF funct,
    1212
      ls_pfunct TYPE funct,
    1213
      lt_penlfdir TYPE STANDARD TABLE OF enlfdir,
    1214
      ls_penlfdir TYPE enlfdir,
    1215
      lt_ptrdir TYPE STANDARD TABLE OF trdir,
    1216
      ls_ptrdir TYPE trdir,
    1217
      lt_pfupararef TYPE STANDARD TABLE OF sfupararef,
    1218
      lt_uincl TYPE it_abaptxt255,
    1219
      lt_vsmodisrc TYPE STANDARD TABLE OF smodisrc,
    1220
      lt_vsmodilog TYPE STANDARD TABLE OF smodilog,
    1221
      lt_parameter TYPE it_parameter,
    1222
      ls_parameter TYPE st_parameter,
    1223
      lt_importing TYPE it_parameter,
    1224
      lt_exporting TYPE it_parameter,
    1225
      lt_changing TYPE it_parameter,
    1226
      lt_table TYPE it_parameter,
    1227
      lt_exception TYPE it_parameter,
    1228
      l_kind TYPE char1,
    1229
      lt_doku TYPE it_string,
    1230
      lt_documentation TYPE it_string,
    1231
      lt_sourcecode TYPE it_string,
    1232
      l_sourcecode TYPE string,
    1233
      l_namtext TYPE ad_namtext,
    1234
      l_javascript TYPE string,
    1235
      l_id TYPE string,
    1236
      l_filename TYPE string,
    1237
      l_on TYPE flag,
    1238
      l_areat TYPE areat.
    1239
    1240
      FIELD-SYMBOLS:
    1241
      <ls_tabstrip> TYPE st_tabstrip,
    1242
      <ls_ztadir> TYPE st_ztadir,
    1243
      <ls_parameter> TYPE st_parameter,
    1244
      <ls_pfupararef> TYPE sfupararef,
    1245
      <ls_uincl> TYPE st_abaptxt255.
    1246
    1247
    1248
      LOOP AT gt_ztadir ASSIGNING <ls_ztadir>
    1249
          WHERE pgmid = 'R3TR'
    1250
          AND object = 'FUGR'
    1251
          AND futype = gc_futype_module
    1252
          AND downloaded = abap_false.
    1253
        <ls_ztadir>-downloaded = abap_true.
    1254
    1255
        CLEAR:
    1256
        ls_classification,
    1257
        ls_general_data,
    1258
        l_javascript,
    1259
        ls_parameter,
    1260
        ls_penlfdir,
    1261
        ls_pfunct,
    1262
        ls_processing_type,
    1263
        ls_ptfdir,
    1264
        ls_ptftit,
    1265
        ls_ptrdir,
    1266
        l_sourcecode,
    1267
        l_areat.
    1268
    1269
        REFRESH:
    1270
        lt_changing,
    1271
        lt_classification,
    1272
        lt_exception,
    1273
        lt_exporting,
    1274
        lt_general_data,
    1275
        lt_html,
    1276
        lt_importing,
    1277
        lt_parameter,
    1278
        lt_processing_type,
    1279
        lt_sourcecode,
    1280
        lt_table,
    1281
        lt_uincl.
    1282
    1283
        CALL FUNCTION 'FUNC_GET_OBJECT'
    1284
          EXPORTING
    1285
            funcname   = <ls_ztadir>-funcname
    1286
            r3state    = 'A'
    1287
          TABLES
    1288
            ptfdir     = lt_ptfdir
    1289
            ptftit     = lt_ptftit
    1290
            pfunct     = lt_pfunct
    1291
            penlfdir   = lt_penlfdir
    1292
            ptrdir     = lt_ptrdir
    1293
            pfupararef = lt_pfupararef
    1294
            uincl      = lt_uincl
    1295
            vsmodisrc  = lt_vsmodisrc
    1296
            vsmodilog  = lt_vsmodilog
    1297
          EXCEPTIONS
    1298
            OTHERS     = 1.
    1299
        IF sy-subrc <> 0.
    1300
          <ls_ztadir>-subrc = sy-subrc.
    1301
          CONTINUE.
    1302
        ENDIF.
    1303
    1304
        IF NOT lt_ptfdir IS INITIAL.
    1305
          READ TABLE lt_ptfdir INTO ls_ptfdir INDEX 1.
    1306
        ENDIF.
    1307
        IF NOT lt_ptftit IS INITIAL.
    1308
          READ TABLE lt_ptftit INTO ls_ptftit INDEX 1.
    1309
        ENDIF.
    1310
        IF NOT lt_penlfdir IS INITIAL.
    1311
          READ TABLE lt_penlfdir INTO ls_penlfdir INDEX 1.
    1312
        ENDIF.
    1313
        IF NOT lt_ptrdir IS INITIAL.
    1314
          READ TABLE lt_ptrdir INTO ls_ptrdir INDEX 1.
    1315
        ENDIF.
    1316
    1317
    *Attributes - Classification
    1318
        ls_classification-name = txt_function_group.
    1319
        ls_classification-value = ls_penlfdir-area.
    1320
        ls_classification-input = abap_true.
    1321
        ls_classification-has_value_ext = abap_true.
    1322
        SELECT SINGLE areat FROM tlibt INTO l_areat
    1323
            WHERE area = <ls_ztadir>-obj_name
    1324
            AND spras = sy-langu.
    1325
        ls_classification-value_ext = l_areat.
    1326
        APPEND ls_classification TO lt_classification.
    1327
        CLEAR ls_classification.
    1328
        ls_classification-name = txt_short_text___1.
    1329
        ls_classification-value = ls_ptftit-stext.
    1330
        ls_classification-input = abap_true.
    1331
        APPEND ls_classification TO lt_classification.
    1332
    1333
    *Attributes - Processing type
    1334
        ls_processing_type-ddtext = txt_normal_function_module.
    1335
        IF ls_ptfdir-fmode IS INITIAL AND ls_ptfdir-utask IS INITIAL.
    1336
          ls_processing_type-checked = abap_true.
    1337
        ELSE.
    1338
          ls_processing_type-checked = abap_true.
    1339
        ENDIF.
    1340
        APPEND ls_processing_type TO lt_processing_type.
    1341
        ls_processing_type-ddtext = txt_remote_enabled_module.
    1342
        IF NOT ls_ptfdir-fmode IS INITIAL.
    1343
          ls_processing_type-checked = abap_true.
    1344
        ELSE.
    1345
          ls_processing_type-checked = abap_true.
    1346
        ENDIF.
    1347
        APPEND ls_processing_type TO lt_processing_type.
    1348
        ls_processing_type-ddtext = txt_update_module.
    1349
        IF NOT ls_ptfdir-utask IS INITIAL.
    1350
          ls_processing_type-checked = abap_true.
    1351
        ELSE.
    1352
          ls_processing_type-checked = abap_true.
    1353
        ENDIF.
    1354
        APPEND ls_processing_type TO lt_processing_type.
    1355
    1356
        ls_processing_type-ddtext = txt_start_immed.
    1357
        ls_processing_type-sub = '1'.
    1358
        IF ls_ptfdir-utask IS INITIAL OR ls_ptfdir-utask = '1'.
    1359
          ls_processing_type-checked = abap_true.
    1360
        ELSE.
    1361
          ls_processing_type-checked = abap_false.
    1362
        ENDIF.
    1363
        APPEND ls_processing_type TO lt_processing_type.
    1364
        ls_processing_type-ddtext = txt_immediate_start_no_restart.
    1365
        ls_processing_type-sub = '1'.
    1366
        IF ls_ptfdir-utask = '3'.
    1367
          ls_processing_type-checked = abap_true.
    1368
        ELSE.
    1369
          ls_processing_type-checked = abap_false.
    1370
        ENDIF.
    1371
        APPEND ls_processing_type TO lt_processing_type.
    1372
        ls_processing_type-ddtext = txt_start_delayed.
    1373
        ls_processing_type-sub = '1'.
    1374
        IF ls_ptfdir-utask = '2'.
    1375
          ls_processing_type-checked = abap_true.
    1376
        ELSE.
    1377
          ls_processing_type-checked = abap_false.
    1378
        ENDIF.
    1379
        APPEND ls_processing_type TO lt_processing_type.
    1380
        ls_processing_type-ddtext = txt_coll_run.
    1381
        ls_processing_type-sub = '1'.
    1382
        IF ls_ptfdir-utask = '5'.
    1383
          ls_processing_type-checked = abap_true.
    1384
        ELSE.
    1385
          ls_processing_type-checked = abap_false.
    1386
        ENDIF.
    1387
        APPEND ls_processing_type TO lt_processing_type.
    1388
    1389
    *Attributes - General Data
    1390
        ls_general_data-name = txt_person_responsible___1.
    1391
        ls_general_data-input = abap_true.
    1392
        ls_general_data-value = ls_ptrdir-cnam.
    1393
        PERFORM get_user
    1394
          USING
    1395
            ls_ptrdir-cnam
    1396
          CHANGING
    1397
            l_namtext.
    1398
        ls_general_data-value_text = l_namtext.
    1399
        APPEND ls_general_data TO lt_general_data.
    1400
        CLEAR ls_general_data.
    1401
        ls_general_data-name = txt_last_changed_by___2.
    1402
        ls_general_data-input = abap_true.
    1403
        ls_general_data-value = ls_ptrdir-unam.
    1404
        PERFORM get_user
    1405
          USING
    1406
            ls_ptrdir-unam
    1407
          CHANGING
    1408
            l_namtext.
    1409
        ls_general_data-value_text = l_namtext.
    1410
        APPEND ls_general_data TO lt_general_data.
    1411
        CLEAR ls_general_data.
    1412
        ls_general_data-name = txt_changed_on.
    1413
        ls_general_data-input = abap_true.
    1414
        PERFORM get_date USING ls_ptrdir-udat
    1415
                        CHANGING ls_general_data-value.
    1416
        APPEND ls_general_data TO lt_general_data.
    1417
        ls_general_data-name = txt_package.
    1418
        ls_general_data-input = abap_true.
    1419
        ls_general_data-value = <ls_ztadir>-devclass.
    1420
        APPEND ls_general_data TO lt_general_data.
    1421
        ls_general_data-name = txt_program_name.
    1422
        ls_general_data-input = abap_true.
    1423
        ls_general_data-value = ls_ptfdir-pname.
    1424
        APPEND ls_general_data TO lt_general_data.
    1425
        ls_general_data-name = txt_include_name.
    1426
        ls_general_data-input = abap_true.
    1427
        ls_general_data-value = ls_ptrdir-name.
    1428
        APPEND ls_general_data TO lt_general_data.
    1429
        ls_general_data-name = txt_original_language.
    1430
        ls_general_data-input = abap_true.
    1431
        ls_general_data-value = ls_ptftit-spras.
    1432
        APPEND ls_general_data TO lt_general_data.
    1433
        IF NOT ls_ptfdir-freedate IS INITIAL
    1434
        AND ls_ptfdir-freedate > 19000101.
    1435
          ls_general_data-name = txt_internally_released_on.
    1436
          PERFORM get_date USING ls_ptfdir-freedate
    1437
                          CHANGING ls_general_data-value.
    1438
          ls_general_data-input = abap_true.
    1439
        ELSE.
    1440
          ls_general_data-name = txt_not_released.
    1441
          ls_general_data-value = space.
    1442
          ls_general_data-input = abap_false.
    1443
        ENDIF.
    1444
        APPEND ls_general_data TO lt_general_data.
    1445
        CLEAR ls_general_data.
    1446
        ls_general_data-name = txt_edit_lock.
    1447
        ls_general_data-flag = abap_true.
    1448
        ls_general_data-value = ls_ptrdir-edtx.
    1449
        APPEND ls_general_data TO lt_general_data.
    1450
        ls_general_data-name = txt_global.
    1451
        ls_general_data-flag = abap_true.
    1452
        ls_general_data-value = ls_penlfdir-global.
    1453
        APPEND ls_general_data TO lt_general_data.
    1454
    1455
    *Parameter
    1456
        SORT lt_pfupararef BY pposition.
    1457
        LOOP AT lt_pfupararef ASSIGNING <ls_pfupararef>.
    1458
          CLEAR ls_parameter.
    1459
          l_kind = 'P'.
    1460
          IF <ls_pfupararef>-paramtype = 'X'.
    1461
            l_kind = 'X'.
    1462
          ENDIF.
    1463
          ls_parameter-name = <ls_pfupararef>-parameter.
    1464
          IF <ls_pfupararef>-type = abap_true.
    1465
            ls_parameter-typing = 'TYPE'.
    1466
          ELSEIF <ls_pfupararef>-ref_class = abap_true.
    1467
            ls_parameter-typing = 'TYPE REF TO'.
    1468
          ELSE.
    1469
            ls_parameter-typing = 'LIKE'.
    1470
          ENDIF.
    1471
          ls_parameter-structure = <ls_pfupararef>-structure.
    1472
          ls_parameter-defvalue = <ls_pfupararef>-defaultval.
    1473
          ls_parameter-optional = <ls_pfupararef>-optional.
    1474
          IF <ls_pfupararef>-reference = abap_false.
    1475
            ls_parameter-passvalue = abap_true.
    1476
          ENDIF.
    1477
          READ TABLE lt_pfunct INTO ls_pfunct
    1478
              WITH KEY parameter = <ls_pfupararef>-parameter
    1479
                       kind = l_kind
    1480
                       spras = sy-langu.
    1481
          IF sy-subrc <> 0.
    1482
            READ TABLE lt_pfunct INTO ls_pfunct
    1483
                WITH KEY parameter = <ls_pfupararef>-parameter
    1484
                         kind = l_kind
    1485
                         spras = sy-langu.
    1486
          ENDIF.
    1487
          ls_parameter-stext = ls_pfunct-stext.
    1488
    *     Long Text
    1489
          ls_parameter-ltext_doku_obj = <ls_ztadir>-funcname.
    1490
          ls_parameter-ltext_doku_obj+30 = <ls_pfupararef>-parameter.
    1491
    1492
          SELECT SINGLE object FROM dokhl INTO ls_parameter-ltext_doku_obj
    1493
            WHERE id = 'FU'
    1494
            AND object = ls_parameter-ltext_doku_obj
    1495
            AND langu = sy-langu.
    1496
          IF sy-subrc = 0.
    1497
            ls_parameter-ltext = '-->'.
    1498
            CONCATENATE 'switchContent(''LTEXT_'
    1499
                    <ls_pfupararef>-parameter ''')'
    1500
                    INTO ls_parameter-ltext_onclick.
    1501
          ELSE.
    1502
            CLEAR ls_parameter-ltext_doku_obj.
    1503
          ENDIF.
    1504
    *     Append
    1505
          APPEND ls_parameter TO lt_parameter.
    1506
          CASE <ls_pfupararef>-paramtype.
    1507
            WHEN 'I'.  "Importing
    1508
              APPEND ls_parameter TO lt_importing.
    1509
            WHEN 'E'.  "Exporting
    1510
              APPEND ls_parameter TO lt_exporting.
    1511
            WHEN 'C'.  "Changing
    1512
              APPEND ls_parameter TO lt_changing.
    1513
            WHEN 'T'.  "Tables
    1514
              APPEND ls_parameter TO lt_table.
    1515
            WHEN 'X'.  "Exceptions
    1516
              APPEND ls_parameter TO lt_exception.
    1517
          ENDCASE.
    1518
        ENDLOOP.
    1519
    1520
    *Documentation
    1521
        PERFORM get_docu
    1522
          USING
    1523
            'FU'
    1524
            <ls_ztadir>-funcname
    1525
            'T'
    1526
          CHANGING
    1527
            lt_documentation.
    1528
    1529
    *SourceCode
    1530
        LOOP AT lt_uincl ASSIGNING <ls_uincl>.
    1531
          l_sourcecode = <ls_uincl>-line.
    1532
          APPEND l_sourcecode TO lt_sourcecode.
    1533
        ENDLOOP.
    1534
    1535
    ***Tabstrip
    1536
        PERFORM get_tabstrip
    1537
          USING 'FUGR_R3TR_MODULES' space
    1538
          CHANGING lt_tabstrip.
    1539
    1540
        LOOP AT lt_tabstrip ASSIGNING <ls_tabstrip>.
    1541
          <ls_tabstrip>-empty = abap_false.
    1542
          CASE <ls_tabstrip>-id.
    1543
            WHEN 'DOCUMENTATION'.
    1544
              IF lt_documentation IS INITIAL.
    1545
                <ls_tabstrip>-empty = abap_true.
    1546
              ENDIF.
    1547
            WHEN 'IMPORT'.
    1548
              IF lt_importing IS INITIAL.
    1549
                <ls_tabstrip>-empty = abap_true.
    1550
              ENDIF.
    1551
            WHEN 'EXPORT'.
    1552
              IF lt_exporting IS INITIAL.
    1553
                <ls_tabstrip>-empty = abap_true.
    1554
              ENDIF.
    1555
            WHEN 'CHANGING'.
    1556
              IF lt_changing IS INITIAL.
    1557
                <ls_tabstrip>-empty = abap_true.
    1558
              ENDIF.
    1559
            WHEN 'TABLES'.
    1560
              IF lt_table IS INITIAL.
    1561
                <ls_tabstrip>-empty = abap_true.
    1562
              ENDIF.
    1563
            WHEN 'EXCEPTIONS'.
    1564
              IF lt_exception IS INITIAL.
    1565
                <ls_tabstrip>-empty = abap_true.
    1566
              ENDIF.
    1567
            WHEN 'SOURCECODE'.
    1568
              IF lt_sourcecode IS INITIAL.
    1569
                <ls_tabstrip>-empty = abap_true.
    1570
              ENDIF.
    1571
          ENDCASE.
    1572
        ENDLOOP.
    1573
    1574
    *     Long text
    1575
        CONCATENATE
    1576
            'makeDivSize(''DOCUMENTATION'');'
    1577
            'makeDivSize(''SOURCECODE'');'
    1578
            INTO l_javascript.
    1579
        LOOP AT lt_parameter ASSIGNING <ls_parameter>
    1580
            WHERE ltext = '-->'.
    1581
          CLEAR ls_tabstrip.
    1582
          CONCATENATE 'LTEXT_' <ls_parameter>-name
    1583
              INTO ls_tabstrip-id.
    1584
          ls_tabstrip-hidden = abap_true.
    1585
          APPEND ls_tabstrip TO lt_tabstrip.
    1586
          CONCATENATE
    1587
              l_javascript
    1588
              'makeDivSize(''' ls_tabstrip-id ''');'
    1589
              INTO l_javascript.
    1590
        ENDLOOP.
    1591
    1592
    *** HTML
    1593
        PERFORM html_main_header
    1594
          USING
    1595
            tpt_fugr_fuba
    1596
            txt_function_module
    1597
            <ls_ztadir>-funcname
    1598
            txt_active___1
    1599
            space
    1600
            space
    1601
            l_javascript
    1602
            lt_tabstrip
    1603
            gt_link
    1604
          CHANGING
    1605
            lt_html.
    1606
    *   Attributes
    1607
        IF lt_sourcecode IS INITIAL
    1608
          AND g_empty_tab <> gc_empty_tab_display.
    1609
          l_on = abap_true.
    1610
        ELSE.
    1611
          l_on = abap_false.
    1612
        ENDIF.
    1613
        PERFORM html_add_box1ti_2rb_ti
    1614
          USING
    1615
            txt_classification
    1616
            lt_classification
    1617
            txt_processing_type
    1618
            'PTYPE'
    1619
            lt_processing_type
    1620
            txt_general_data
    1621
            lt_general_data
    1622
            'ATTRIBUTES'
    1623
            l_on
    1624
          CHANGING
    1625
            lt_html.
    1626
    *   Importing
    1627
        IF NOT lt_importing IS INITIAL
    1628
        OR g_empty_tab = gc_empty_tab_display.
    1629
          PERFORM html_add_table
    1630
            USING
    1631
              'MODU_IMPOR'
    1632
              lt_importing
    1633
              lt_importing
    1634
              'IMPORT'
    1635
              abap_false
    1636
            CHANGING
    1637
              lt_html.
    1638
        ENDIF.
    1639
    *   Exporting
    1640
        IF NOT lt_exporting IS INITIAL
    1641
        OR g_empty_tab = gc_empty_tab_display.
    1642
          PERFORM html_add_table
    1643
            USING
    1644
              'MODU_EXPOR'
    1645
              lt_exporting
    1646
              lt_exporting
    1647
              'EXPORT'
    1648
              abap_false
    1649
            CHANGING
    1650
              lt_html.
    1651
        ENDIF.
    1652
    *   Changing
    1653
        IF NOT lt_changing IS INITIAL
    1654
        OR g_empty_tab = gc_empty_tab_display.
    1655
          PERFORM html_add_table
    1656
            USING
    1657
              'MODU_IMPOR'
    1658
              lt_changing
    1659
              lt_changing
    1660
              'CHANGING'
    1661
              abap_false
    1662
            CHANGING
    1663
              lt_html.
    1664
        ENDIF.
    1665
    *   Tables
    1666
        IF NOT lt_table IS INITIAL
    1667
        OR g_empty_tab = gc_empty_tab_display.
    1668
          PERFORM html_add_table
    1669
            USING
    1670
              'MODU_TABLE'
    1671
              lt_table
    1672
              lt_table
    1673
              'TABLES'
    1674
              abap_false
    1675
            CHANGING
    1676
              lt_html.
    1677
        ENDIF.
    1678
    *   Exceptions
    1679
        IF NOT lt_exception IS INITIAL
    1680
        OR g_empty_tab = gc_empty_tab_display.
    1681
          PERFORM html_add_table
    1682
            USING
    1683
              'MODU_EXCEP'
    1684
              lt_exception
    1685
              lt_exception
    1686
              'EXCEPTIONS'
    1687
              abap_false
    1688
            CHANGING
    1689
              lt_html.
    1690
        ENDIF.
    1691
    *   SourceCode
    1692
        IF NOT lt_sourcecode IS INITIAL
    1693
        OR g_empty_tab = gc_empty_tab_display.
    1694
          IF g_add_sourcecode = abap_true.
    1695
            l_filename = <ls_ztadir>-funcname.
    1696
            PERFORM download
    1697
              USING
    1698
                lt_sourcecode
    1699
                <ls_ztadir>-pgmid
    1700
                <ls_ztadir>-object
    1701
                l_filename
    1702
                gc_extension_txt
    1703
                abap_false.
    1704
          ENDIF.
    1705
          PERFORM html_add_sourcecode
    1706
            USING
    1707
              lt_sourcecode
    1708
              l_filename
    1709
              space
    1710
              space
    1711
              gc_extension_txt
    1712
              'SOURCECODE'
    1713
              abap_true
    1714
            CHANGING
    1715
              lt_html.
    1716
        ENDIF.
    1717
    *   Documentation
    1718
        IF NOT lt_documentation IS INITIAL
    1719
        OR g_empty_tab = gc_empty_tab_display.
    1720
          PERFORM html_add_doc
    1721
            USING
    1722
              lt_documentation
    1723
              'DOCUMENTATION'
    1724
              abap_false
    1725
            CHANGING
    1726
              lt_html.
    1727
        ENDIF.
    1728
    *   Long texts
    1729
        LOOP AT lt_parameter ASSIGNING <ls_parameter>
    1730
            WHERE ltext = '-->'.
    1731
          REFRESH lt_doku.
    1732
          PERFORM get_docu
    1733
            USING
    1734
              'FU'
    1735
              <ls_parameter>-ltext_doku_obj
    1736
              'T'
    1737
            CHANGING
    1738
              lt_doku.
    1739
          PERFORM get_id
    1740
            USING 'LTEXT_' <ls_parameter>-name
    1741
            CHANGING l_id.
    1742
          PERFORM html_add_doc
    1743
          USING
    1744
            lt_doku
    1745
            l_id
    1746
            abap_false
    1747
          CHANGING
    1748
            lt_html.
    1749
        ENDLOOP.
    1750
    *
    1751
        PERFORM html_main_footer
    1752
          USING
    1753
            lt_html.
    1754
    1755
        PERFORM download
    1756
          USING
    1757
            lt_html
    1758
            <ls_ztadir>-pgmid
    1759
            <ls_ztadir>-object
    1760
            <ls_ztadir>-progname
    1761
            gc_extension_htm
    1762
            abap_true.
    1763
      ENDLOOP.
    1764
    ENDFORM.                    "fugr_r3tr_modules
    1765
    1766
    1767
    *-----------------------------------------------------------------------
    1768
    * fugr_r3tr_screen                              Screens
    1769
    *-----------------------------------------------------------------------
    1770
    FORM fugr_r3tr_screen.
    1771
    1772
      DATA:
    1773
      lt_tabstrip TYPE it_tabstrip,
    1774
      ls_dynpro_name TYPE st_dynpro_name,
    1775
      ls_d020s TYPE d020s,                    "screen header
    1776
      lt_d021s TYPE STANDARD TABLE OF d021s,  "field list
    1777
      lt_d022s TYPE STANDARD TABLE OF d022s,  "flow logic
    1778
      lt_d023s TYPE d023s_tab,                "matchcode information
    1779
      ls_d023sx TYPE d023s_x,
    1780
      lt_d023x TYPE d023s_xtab,
    1781
      lt_feld TYPE STANDARD TABLE OF feld,
    1782
      lt_feld_redef TYPE it_feld_redef,
    1783
      lt_source TYPE it_string,
    1784
      lt_html TYPE it_string,
    1785
      ls_attributes TYPE st_attributes,
    1786
      lt_access_screen_type TYPE it_access,
    1787
      ls_access TYPE st_access,
    1788
      lt_ti_settings TYPE it_textinput,
    1789
      lt_ti_other TYPE it_textinput,
    1790
      ls_ti TYPE st_textinput,
    1791
      l_date_last_generation TYPE d,
    1792
      l_time_last_generation TYPE t,
    1793
      l_lines TYPE sycurow,
    1794
      l_cols TYPE sycucol,
    1795
      l_filename TYPE string,
    1796
      ls_dynpro_release TYPE st_dynpro_release,
    1797
      l_dynpro_release(4) TYPE c,
    1798
      l_title TYPE string.
    1799
    1800
      FIELD-SYMBOLS:
    1801
      <ls_d022s> TYPE d022s,
    1802
      <ls_d023s> TYPE d023s,
    1803
      <ls_ztadir> TYPE st_ztadir,
    1804
      <l_x> TYPE x.
    1805
    1806
      CONSTANTS:
    1807
      lc_type_cntcmp TYPE scrpdytype VALUE 'CNTCMP    ',
    1808
      lc_milikmp TYPE x VALUE '40',
    1809
      lc_miliksc TYPE x VALUE '08',
    1810
      lc_milinog TYPE x VALUE '20',
    1811
      lc_milinot TYPE x VALUE '04'.
    1812
    1813
    1814
    *Tabstrip
    1815
      PERFORM get_tabstrip
    1816
        USING 'FUGR_R3TR_SCREEN' space
    1817
        CHANGING lt_tabstrip.
    1818
    1819
      LOOP AT gt_ztadir ASSIGNING <ls_ztadir>
    1820
          WHERE pgmid = 'R3TR'
    1821
          AND object = 'FUGR'
    1822
          AND futype = gc_futype_screen
    1823
          AND downloaded = abap_false.
    1824
    1825
        CLEAR:
    1826
        ls_access,
    1827
        ls_attributes,
    1828
        ls_d020s,
    1829
        ls_d023sx,
    1830
        l_dynpro_release,
    1831
        ls_ti.
    1832
    1833
        REFRESH:
    1834
        lt_access_screen_type,
    1835
        lt_d021s,
    1836
        lt_d022s,
    1837
        lt_d023s,
    1838
        lt_d023x,
    1839
        lt_feld,
    1840
        lt_feld_redef,
    1841
        lt_html,
    1842
        lt_source,
    1843
        lt_ti_settings,
    1844
        lt_ti_other.
    1845
    1846
        ls_dynpro_name-prog = <ls_ztadir>-progname.
    1847
        ls_dynpro_name-dnum = <ls_ztadir>-dynpronr.
    1848
        IMPORT DYNPRO ls_d020s lt_d021s lt_d022s lt_d023s
    1849
            ID ls_dynpro_name.
    1850
        IF sy-subrc <> 0.
    1851
          <ls_ztadir>-subrc = sy-subrc.
    1852
          CONTINUE.
    1853
        ENDIF.
    1854
    1855
        CALL FUNCTION 'RS_DYNPRO_RELEASE_GET'
    1856
          EXPORTING
    1857
            dynpro_header  = ls_d020s
    1858
          IMPORTING
    1859
            dynpro_release = l_dynpro_release
    1860
          EXCEPTIONS
    1861
            OTHERS         = 1.
    1862
        ls_dynpro_release = l_dynpro_release.
    1863
    1864
        LOOP AT lt_d023s ASSIGNING <ls_d023s> WHERE type = lc_type_cntcmp.
    1865
          ls_d023sx = <ls_d023s>-content.
    1866
          APPEND ls_d023sx-cccont TO lt_d023x.
    1867
        ENDLOOP.
    1868
    1869
    *Attributes
    1870
        ls_attributes-descript = <ls_ztadir>-descript.
    1871
        ls_attributes-devclass = <ls_ztadir>-devclass.
    1872
        PERFORM get_devclass
    1873
          USING
    1874
            <ls_ztadir>-devclass
    1875
          CHANGING
    1876
            ls_attributes-devclass_descr.
    1877
        PERFORM get_spras
    1878
          USING
    1879
            ls_d020s-spra
    1880
          CHANGING
    1881
            ls_attributes-laiso
    1882
            ls_attributes-sptxt.
    1883
        PERFORM get_date
    1884
          USING
    1885
            ls_d020s-dgen
    1886
          CHANGING
    1887
            ls_attributes-date_last_changed.
    1888
        PERFORM get_time
    1889
          USING
    1890
            ls_d020s-tgen
    1891
          CHANGING
    1892
            ls_attributes-time_last_changed.
    1893
    1894
        CALL FUNCTION 'RS_SCRP_GET_GEN_DATA'
    1895
          EXPORTING
    1896
            progname = ls_d020s-prog
    1897
            dynnr    = ls_d020s-dnum
    1898
          IMPORTING
    1899
            gen_date = l_date_last_generation
    1900
            gen_time = l_time_last_generation
    1901
          EXCEPTIONS
    1902
            OTHERS   = 1.
    1903
        PERFORM get_date
    1904
          USING
    1905
            l_date_last_generation
    1906
          CHANGING
    1907
            ls_attributes-date_last_generation.
    1908
        PERFORM get_time
    1909
          USING
    1910
            l_time_last_generation
    1911
          CHANGING
    1912
            ls_attributes-time_last_generation.
    1913
    *Attributes - Screen type
    1914
        CLEAR ls_access.
    1915
        ls_access-ddtext = txt_normal.
    1916
        ls_access-checked = abap_false.
    1917
        IF ls_d020s-type NA 'IMSWJ'.
    1918
          ls_access-checked = abap_true.
    1919
        ENDIF.
    1920
        APPEND ls_access TO lt_access_screen_type.
    1921
        ls_access-ddtext = txt_subscreen.
    1922
        ls_access-checked = abap_false.
    1923
        IF ls_d020s-type = 'I'.
    1924
          ls_access-checked = abap_true.
    1925
        ENDIF.
    1926
        APPEND ls_access TO lt_access_screen_type.
    1927
        ls_access-ddtext = txt_modal_dialog_box.
    1928
        ls_access-checked = abap_false.
    1929
        IF ls_d020s-type = 'M'.
    1930
          ls_access-checked = abap_true.
    1931
        ENDIF.
    1932
        APPEND ls_access TO lt_access_screen_type.
    1933
        ls_access-ddtext = txt_selection_screen.
    1934
        ls_access-checked = abap_false.
    1935
        IF ls_d020s-type CA 'SWJ'.
    1936
          ls_access-checked = abap_true.
    1937
        ENDIF.
    1938
        APPEND ls_access TO lt_access_screen_type.
    1939
    *Attributes - Settings
    1940
        CLEAR ls_ti.
    1941
        IF ls_d020s-type <> 'I'.
    1942
          ls_ti-name = txt_hold_data.
    1943
          ls_ti-flag = abap_true.
    1944
          ls_ti-value = ls_d020s-hdat.
    1945
          APPEND ls_ti TO lt_ti_settings.
    1946
        ENDIF.
    1947
        ASSIGN ls_d020s-mili TO <l_x> CASTING.
    1948
        ls_ti-name = txt_switch_off_runtime_compres.
    1949
        ls_ti-flag = abap_true.
    1950
        IF <l_x> O lc_milikmp.
    1951
          ls_ti-value = abap_false.
    1952
        ELSE.
    1953
          ls_ti-value = abap_true.
    1954
        ENDIF.
    1955
        APPEND ls_ti TO lt_ti_settings.
    1956
        ls_ti-name = txt_template_non_executable.
    1957
        ls_ti-flag = abap_true.
    1958
        IF <l_x> O lc_milinog.
    1959
          ls_ti-value = abap_true.
    1960
        ELSE.
    1961
          ls_ti-value = abap_false.
    1962
        ENDIF.
    1963
        APPEND ls_ti TO lt_ti_settings.
    1964
        ls_ti-name = txt_hold_scroll_position.
    1965
        ls_ti-flag = abap_true.
    1966
        IF <l_x> O lc_miliksc.
    1967
          ls_ti-value = abap_true.
    1968
        ELSE.
    1969
          ls_ti-value = abap_false.
    1970
        ENDIF.
    1971
        APPEND ls_ti TO lt_ti_settings.
    1972
        ls_ti-name = txt_without_application_toolba.
    1973
        ls_ti-flag = abap_true.
    1974
        IF <l_x> O lc_milinot.
    1975
          ls_ti-value = abap_true.
    1976
        ELSE.
    1977
          ls_ti-value = abap_false.
    1978
        ENDIF.
    1979
        APPEND ls_ti TO lt_ti_settings.
    1980
    *Attributes - Other attributes
    1981
        CLEAR ls_ti.
    1982
        ls_ti-name = txt_next_screen.
    1983
        ls_ti-value = ls_d020s-fnum.
    1984
        ls_ti-input = abap_true.
    1985
        APPEND ls_ti TO lt_ti_other.
    1986
        ls_ti-name = txt_cursor_position.
    1987
        ls_ti-value = ls_d020s-cupo.
    1988
        ls_ti-input = abap_true.
    1989
        APPEND ls_ti TO lt_ti_other.
    1990
        ls_ti-name = txt_screen_group.
    1991
        ls_ti-value = ls_d020s-dgrp.
    1992
        ls_ti-input = abap_true.
    1993
        APPEND ls_ti TO lt_ti_other.
    1994
        ls_ti-name = txtt_lines_columns.
    1995
        ls_ti-name_suffix = txt_occupied.
    1996
        CALL FUNCTION 'RS_SCRP_GET_SCREEN_INFOS'
    1997
          EXPORTING
    1998
            progname = ls_d020s-prog
    1999
            dynnr    = ls_d020s-dnum
    2000
          IMPORTING
    2001
            lines    = l_lines
    2002
            columns  = l_cols
    2003
          EXCEPTIONS
    2004
            OTHERS   = 1.
    2005
        IF sy-subrc <> 0 OR l_lines > 999 OR l_cols > 999.
    2006
          l_lines = 0.
    2007
          l_cols = 0.
    2008
        ENDIF.
    2009
        ls_ti-value = l_lines.
    2010
        ls_ti-value_ext = l_cols.
    2011
        ls_ti-input = abap_true.
    2012
        ls_ti-has_value_ext = abap_true.
    2013
        APPEND ls_ti TO lt_ti_other.
    2014
        ls_ti-name = space.
    2015
        ls_ti-name_suffix = txt_maintenance.
    2016
        ls_ti-value = ls_d020s-noli.
    2017
        ls_ti-value_ext = ls_d020s-noco.
    2018
        ls_ti-input = abap_true.
    2019
        ls_ti-has_value_ext = abap_true.
    2020
        APPEND ls_ti TO lt_ti_other.
    2021
        CLEAR ls_ti.
    2022
        ls_ti-name = txtt_context_menu_form_on_ctme.
    2023
        READ TABLE lt_d023s ASSIGNING <ls_d023s>
    2024
            WITH KEY type = 'CTMENU'.
    2025
        IF sy-subrc = 0.
    2026
          ls_ti-value = <ls_d023s>-content.
    2027
        ENDIF.
    2028
        ls_ti-input = abap_true.
    2029
        UNASSIGN <ls_d023s>.
    2030
        APPEND ls_ti TO lt_ti_other.
    2031
    *   Element list
    2032
        PERFORM fugr_get_feldtab
    2033
          USING
    2034
            ls_d020s
    2035
            lt_d021s
    2036
            lt_d023x
    2037
            ls_dynpro_release
    2038
          CHANGING
    2039
            lt_feld
    2040
            lt_feld_redef.
    2041
    2042
    *SourceCode
    2043
        LOOP AT lt_d022s ASSIGNING <ls_d022s>.
    2044
          APPEND <ls_d022s>-line TO lt_source.
    2045
        ENDLOOP.
    2046
    2047
    *** HTML
    2048
        l_title = tpt_fugr_scr.
    2049
        PERFORM replace_single
    2050
          USING '#NAME_VALUE#' <ls_ztadir>-progname
    2051
          CHANGING l_title.
    2052
        PERFORM html_main_header
    2053
          USING
    2054
            l_title
    2055
            txt_screen_number
    2056
            <ls_ztadir>-dynpronr
    2057
            txt_active___1
    2058
            space
    2059
            space
    2060
            'makeDivSize(''FLOW_LOGIC'');'
    2061
            lt_tabstrip
    2062
            gt_link
    2063
          CHANGING
    2064
            lt_html.
    2065
    *   Attributes
    2066
        PERFORM html_add_attributes_3
    2067
          USING
    2068
            ls_attributes
    2069
            txt_screen_type
    2070
            'scrType'
    2071
            lt_access_screen_type
    2072
            txt_settings
    2073
            lt_ti_settings
    2074
            txt_other_attributes
    2075
            lt_ti_other
    2076
            'ATTRIBUTES'
    2077
            abap_false
    2078
          CHANGING
    2079
            lt_html.
    2080
    *   Element list - begin
    2081
        PERFORM html_add_container_begin
    2082
          USING
    2083
            lt_tabstrip
    2084
            'ELEMENT_LIST'
    2085
            abap_false
    2086
          CHANGING
    2087
            lt_html.
    2088
        PERFORM html_add_table
    2089
          USING
    2090
    *        lt_table_general_attr
    2091
            'SCRN_GENER'
    2092
            lt_feld_redef
    2093
            lt_feld
    2094
            'GENERAL_ATTR'
    2095
            abap_true
    2096
          CHANGING
    2097
            lt_html.
    2098
        PERFORM html_add_table
    2099
          USING
    2100
    *        lt_table_texts_io_templates
    2101
            'SCRN_IOTEM'
    2102
            lt_feld_redef
    2103
            lt_feld
    2104
            'TEXTS_IO_TEMPLATES'
    2105
            abap_false
    2106
          CHANGING
    2107
            lt_html.
    2108
        PERFORM html_add_table
    2109
          USING
    2110
    *        lt_table_special_attr
    2111
            'SCRN_SPECI'
    2112
            lt_feld_redef
    2113
            lt_feld
    2114
            'SPECIAL_ATTR'
    2115
            abap_false
    2116
          CHANGING
    2117
            lt_html.
    2118
        PERFORM html_add_table
    2119
          USING
    2120
    *        lt_table_display_attr
    2121
            'SCRN_DISPL'
    2122
            lt_feld_redef
    2123
            lt_feld
    2124
            'DISPLAY_ATTR'
    2125
            abap_false
    2126
          CHANGING
    2127
            lt_html.
    2128
        PERFORM html_add_table
    2129
          USING
    2130
    *        lt_table_mod_groups_func
    2131
            'SCRN_MODGR'
    2132
            lt_feld_redef
    2133
            lt_feld
    2134
            'MOD_GROUPS_FUNCTIONS'
    2135
            abap_false
    2136
          CHANGING
    2137
            lt_html.
    2138
        PERFORM html_add_table
    2139
          USING
    2140
    *        lt_table_references
    2141
            'SCRN_REFER'
    2142
            lt_feld_redef
    2143
            lt_feld
    2144
            'REFERENCES'
    2145
            abap_false
    2146
          CHANGING
    2147
            lt_html.
    2148
        PERFORM html_add_container_end
    2149
          CHANGING
    2150
            lt_html.
    2151
    *   Element list - end
    2152
    *   Flow logic
    2153
        CONCATENATE <ls_ztadir>-progname '-' <ls_ztadir>-dynpronr
    2154
            INTO l_filename.
    2155
        PERFORM html_add_sourcecode
    2156
          USING
    2157
            lt_source
    2158
            l_filename
    2159
            space
    2160
            space
    2161
            gc_extension_txt
    2162
            'FLOW_LOGIC'
    2163
            abap_true
    2164
          CHANGING
    2165
            lt_html.
    2166
        IF g_add_sourcecode = abap_true.
    2167
          PERFORM download
    2168
            USING
    2169
              lt_source
    2170
              <ls_ztadir>-pgmid
    2171
              <ls_ztadir>-object
    2172
              l_filename
    2173
              gc_extension_txt
    2174
              abap_false.
    2175
        ENDIF.
    2176
    *
    2177
        PERFORM html_main_footer
    2178
          USING
    2179
            lt_html.
    2180
    2181
        PERFORM download
    2182
          USING
    2183
            lt_html
    2184
            <ls_ztadir>-pgmid
    2185
            <ls_ztadir>-object
    2186
            l_filename
    2187
            gc_extension_htm
    2188
            abap_true.
    2189
        <ls_ztadir>-downloaded = abap_true.
    2190
      ENDLOOP.
    2191
    ENDFORM.                    "r3tr_screen