*&---------------------------------------------------------------------*
*& Include ZSOFTCOPY_FUGR *
*& *
*&---------------------------------------------------------------------*
*& *
*& This file is part of ZSOFTCOPY. *
*& *
*& ZSOFTCOPY is free software: you can redistribute it and/or modify *
*& it under the terms of the GNU General Public License as published *
*& by the Free Software Foundation, either version 3 of the License, *
*& or any later version. *
*& *
*& ZSOFTCOPY is distributed in the hope that it will be useful, *
*& but WITHOUT ANY WARRANTY; without even the implied warranty of *
*& MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
*& GNU General Public License for more details. *
*& *
*& You should have received a copy of the GNU General Public License *
*& along with ZDOWNLOAD. If not, see . *
*& *
*&---------------------------------------------------------------------*
*& *
*& Author: Ruediger von Creytz ruediger.creytz@globalbit.net *
*& Copyright: globalBIT, LLC http://www.globalbit.net *
*& *
*&---------------------------------------------------------------------*
*-----------------------------------------------------------------------
* fugr
*-----------------------------------------------------------------------
FORM fugr.
*FUGR
PERFORM fugr_r3tr_fugr.
*INCL
PERFORM fugr_r3tr_includes.
*MOD
PERFORM fugr_r3tr_modules.
*Screen
PERFORM fugr_r3tr_screen.
ENDFORM. "fugr
*-----------------------------------------------------------------------
* fugr_get_feldtab
*-----------------------------------------------------------------------
FORM fugr_get_feldtab
USING
is_d020s TYPE d020s
it_d021s TYPE it_d021s
it_d023x TYPE d023s_xtab
is_dynpro_release TYPE st_dynpro_release
CHANGING
ct_feld TYPE it_feld
ct_feld_redef TYPE it_feld_redef.
DATA:
ls_d021s_res1 LIKE d021s_res1,
ls_feld TYPE feld,
ls_feld_redef TYPE st_feld_redef,
ls_func_old TYPE st_dynpro_function_old,
ls_func_new TYPE st_dynpro_function_new,
l_length TYPE i,
l_strlen TYPE i.
FIELD-SYMBOLS:
TYPE d021s,
TYPE d023s_xh,
TYPE ANY.
CONSTANTS:
lc_flg1ddf TYPE x VALUE '20',
lc_flg1ddm TYPE x VALUE '10',
lc_flg1edt TYPE x VALUE '80',
lc_flg1scr TYPE x VALUE '01',
lc_flg3obl TYPE x VALUE '20',
lc_fmb1ges TYPE x VALUE '20',
lc_fmb1out TYPE x VALUE '01',
lcs_dynpro_rel_400 TYPE st_dynpro_release VALUE '4.00',
lcs_dynpro_rel_401 TYPE st_dynpro_release VALUE '4.01',
lcs_dynpro_rel_402 TYPE st_dynpro_release VALUE '4.02',
lcs_dynpro_rel_46a TYPE st_dynpro_release VALUE '4.60',
lcs_dynpro_rel_610 TYPE st_dynpro_release VALUE '6.10'.
REFRESH:
ct_feld,
ct_feld_redef.
LOOP AT it_d021s ASSIGNING .
CLEAR ls_d021s_res1.
CLEAR ls_feld.
CLEAR ls_feld_redef.
CLEAR ls_func_new.
CLEAR ls_func_old.
ls_d021s_res1 = -res1.
ls_feld-name = -fnam.
ls_feld-dynnr = is_d020s-dnum.
ls_feld-line = -line.
IF ( -lanf <> 0 AND -ltyp = 'T' )
OR ( -ltyp = 'I' AND -fill = 'P' )
OR -ltyp = 'S'.
ls_feld-coln = -coln.
ELSE.
ls_feld-coln = -coln - 1.
ENDIF.
ls_feld-leng = -leng.
ls_feld-vleng = 1.
IF -didx <= 0.
IF -stxt(1) = '@'.
IF -leng > 2.
ls_feld-vleng = -leng - 2.
ENDIF.
ELSE.
IF -leng > 1.
ls_feld-vleng = -leng.
ENDIF.
ENDIF.
ELSE.
IF -fill CA 'TBSUIR'.
ls_feld-vleng = -leng.
ELSE.
IF -flg1 Z lc_flg1edt.
IF -ltyp CA 'TP'.
ls_feld-vleng = -didx.
ELSE.
IF -didx > 0.
ls_feld-vleng = -didx.
ELSE.
ls_feld-vleng = -leng.
ENDIF.
ENDIF.
ELSE.
ls_feld-vleng = -didx.
ENDIF.
ENDIF.
ENDIF.
ls_feld-high = 1.
IF -didx > 0
AND -fill CA 'TBSUIR'.
ls_feld-high = -didx.
ENDIF.
IF -flg1 O lc_flg1edt
AND -flg1 O lc_flg1scr
AND -fill NA 'TSI'.
ls_feld-scroll = abap_true.
ELSE.
ls_feld-scroll = abap_false.
ENDIF.
IF -type = 'STRG'
OR -type = 'RSTR'
OR -type = 'SSTR'.
ls_feld-scroll = abap_true.
ENDIF.
IF -flg1 O lc_flg1ddf.
ls_feld-dict = abap_true.
ELSE.
ls_feld-dict = abap_false.
ENDIF.
IF -flg1 O lc_flg1edt.
IF -flg1 O lc_flg1ddf
AND -flg1 O lc_flg1ddm.
ls_feld-dmod = abap_true.
ENDIF.
ELSE.
IF -flg1 O lc_flg1ddf.
IF -ityp = '4'.
ls_feld-dmod = '4'.
ELSE.
IF -ityp = '1'
OR -ityp = '2'
OR -ityp = '3'.
IF -flg1 O lc_flg1ddm.
ls_feld-dmod = -ityp.
ELSE.
ls_feld-dmod = 'V'.
ENDIF.
ELSEIF -ityp = '0'.
IF -flg1 O lc_flg1ddm.
ls_feld-dmod = 'F'.
ELSE.
ls_feld-dmod = 'V'.
ENDIF.
ELSE.
ls_feld-dmod = 'F'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ls_feld-grp1 = -grp1.
ls_feld-grp2 = -grp2.
ls_feld-grp3 = -grp3.
ls_feld-grp4 = -grp4.
IF -ltyp = 'L'.
ls_feld-loop = -lrep.
IF is_d020s-valp = -lanf.
ls_feld-ltyp = 'Var'.
ELSE.
ls_feld-ltyp = 'Fix'.
ENDIF.
ENDIF.
IF -fmb1 O lc_fmb1ges.
ls_feld-fobl = 'N'.
ELSEIF -flg3 O lc_flg3obl.
ls_feld-fobl = 'O'.
ls_feld-fein = abap_true.
ELSE.
ls_feld-fein = abap_true.
ASSIGN COMPONENT 'RECENTRY' OF STRUCTURE ls_d021s_res1
TO .
IF IS ASSIGNED AND NOT IS INITIAL.
ls_feld-fobl = 'R'.
ENDIF.
UNASSIGN .
ENDIF.
PERFORM get_dom_value_text
USING 'SCRPFOBL' ls_feld-fobl
CHANGING ls_feld_redef-fobl.
IF -fill <> 'R'.
ls_feld-fout = abap_true.
ENDIF.
PERFORM fugr_get_feld_fill_na_btisu
USING is_dynpro_release
CHANGING ls_feld.
ls_feld-colr = -colr.
ls_feld-mtch = -dmac.
ls_feld-waer = -wnam.
IF is_dynpro_release <= lcs_dynpro_rel_400.
ls_func_old = -dmac.
ls_feld-fcod = ls_func_old-code.
ls_feld-ptype = ls_func_old-type.
ELSEIF is_dynpro_release <= lcs_dynpro_rel_402.
ls_func_new = -dmac.
ls_feld-fcod = ls_func_new-code.
ls_feld-ptype = ls_func_new-type.
ELSE.
ls_feld-fcod = ls_d021s_res1-funccode.
ls_feld-ptype = ls_d021s_res1-functype.
ENDIF.
IF ls_d021s_res1-ctmenuflg = abap_true.
ls_feld-ctmenust = abap_true.
ls_feld-ctmenuprog = ls_d021s_res1-ctmenuprog.
ls_feld-ctmenustat = ls_d021s_res1-ctmenustat.
ELSE.
ls_feld-ctmenudy = abap_true.
ls_feld-ctmenuonct = ls_d021s_res1-ctmenustat.
ENDIF.
READ TABLE it_d023x ASSIGNING
WITH KEY cccustom = -fnam.
IF sy-subrc = 0.
ls_feld-ccname = -ccname.
ENDIF.
CALL FUNCTION 'RS_SCRP_GET_FIELD_TYPE_TEXT'
EXPORTING
field =
text_kind = 'SHORT'
IMPORTING
field_type_without_modif = ls_feld-gtyp
EXCEPTIONS
OTHERS = 1.
ls_feld-stxt = -stxt.
ls_feld-dropfrom = ls_d021s_res1-dropval.
IF ls_d021s_res1-dropdown = 'D'.
CASE ls_d021s_res1-dropstyle.
WHEN 'K'.
ls_feld-dropdown = ls_d021s_res1-dropstyle.
WHEN OTHERS.
ls_feld-dropdown = ls_d021s_res1-droptyp.
ENDCASE.
PERFORM get_dom_value_text
USING 'SCRPCOTYPE' ls_feld-dropdown
CHANGING ls_feld_redef-dropdown.
ENDIF.
IF -colr = '8'.
ls_feld-extend = 'N'.
ELSEIF -colr = '7'.
ls_feld-extend = 'C'.
ENDIF.
IF -fill CA 'BTSUI'.
ls_feld-hierarchy = '+ '.
ENDIF.
IF -ltyp CA 'TSI'.
ls_feld-hierarchy = ' -'.
ENDIF.
PERFORM fugr_get_feld_icon
USING
CHANGING
ls_feld.
ls_feld-prog = is_d020s-prog.
ls_feld-dnum = is_d020s-dnum.
*post processing
CASE -ltyp.
WHEN 'O'. "OK-Code
ls_feld-type = ' OK '.
ls_feld-line = '0'.
ls_feld-coln = '0'.
ls_feld-leng = ls_feld-vleng.
ls_feld-fein = abap_undefined.
ls_feld-fout = abap_undefined.
ls_feld-oout = abap_undefined.
ls_feld_redef-fobl = space.
ls_feld-fixf = abap_false.
WHEN OTHERS.
ls_feld-type = -type.
ENDCASE.
CASE -fill.
WHEN 'C'. "Checkbutton
ls_feld-scroll = abap_undefined.
ls_feld-icon_x = abap_undefined.
ls_feld_redef-fobl = space.
ls_feld-fixf = abap_false.
WHEN 'P'. "Pushbutton
ls_feld-scroll = abap_undefined.
ls_feld_redef-fobl = space.
WHEN 'R'. "Frame
ls_feld-fout = abap_true.
ls_feld-scroll = abap_undefined.
ls_feld_redef-fobl = space.
WHEN 'T'.
ls_feld_redef-fobl = space.
ENDCASE.
CASE ls_feld-gtyp.
WHEN 'Check'.
IF -ityp = '0'.
ls_feld-scroll = abap_undefined.
ls_feld-fein = abap_false.
ls_feld-fout = abap_false.
ls_feld-oout = abap_false.
ls_feld-type = space.
ls_feld-icon_x = abap_undefined.
ls_feld_redef-fobl = space.
ls_feld-paid = space.
ls_feld-cmbfoc = abap_false.
ls_feld-ucnv = space.
ENDIF.
WHEN 'CuCtr'.
ls_feld-scroll = abap_undefined.
ls_feld-fein = abap_false.
ls_feld-fout = abap_false.
ls_feld-oout = abap_false.
ls_feld-type = space.
ls_feld-icon_x = abap_undefined.
ls_feld_redef-fobl = space.
ls_feld-paid = space.
ls_feld-cmbfoc = abap_false.
ls_feld-ucnv = space.
WHEN 'Frame'.
ls_feld-scroll = abap_undefined.
ls_feld-icon_x = abap_undefined.
IF ls_feld-stxt CN ' _'.
ls_feld-fein = abap_false.
ls_feld-fout = abap_false.
ls_feld-oout = abap_false.
ls_feld-type = space.
ls_feld_redef-fobl = space.
ls_feld-paid = space.
ls_feld-cmbfoc = abap_false.
ls_feld-ucnv = space.
ENDIF.
WHEN 'I/O'.
IF is_dynpro_release <= lcs_dynpro_rel_402.
ls_feld-fixf = abap_false.
ENDIF.
WHEN 'Push'.
ls_feld-scroll = abap_undefined.
ls_feld-mtch = space.
IF -flg1 Z lc_flg1edt.
ls_feld-fein = abap_false.
ls_feld-fout = abap_false.
ls_feld-oout = abap_false.
ls_feld-type = space.
ls_feld-icon_x = abap_undefined.
ls_feld_redef-fobl = space.
ls_feld-paid = space.
ls_feld-cmbfoc = abap_false.
ls_feld-ucnv = space.
ENDIF.
WHEN 'Radio'.
ls_feld-scroll = abap_undefined.
ls_feld-icon_x = abap_undefined.
ls_feld_redef-fobl = space.
IF ls_feld-fcod IS INITIAL.
ls_feld-fein = abap_false.
ls_feld-fout = abap_false.
ls_feld-oout = abap_false.
ls_feld-type = space.
ls_feld-icon_x = abap_undefined.
ls_feld_redef-fobl = space.
ls_feld-paid = space.
ls_feld-cmbfoc = abap_false.
ls_feld-ucnv = space.
ENDIF.
WHEN 'SubSc'.
ls_feld-scroll = abap_undefined.
ls_feld-icon_x = abap_undefined.
ls_feld_redef-fobl = space.
IF ls_feld-fcod IS INITIAL.
ls_feld-fein = abap_false.
ls_feld-fout = abap_false.
ls_feld-oout = abap_false.
ls_feld-type = space.
ls_feld-icon_x = abap_undefined.
ls_feld_redef-fobl = space.
ls_feld-paid = space.
ls_feld-cmbfoc = abap_false.
ls_feld-ucnv = space.
ENDIF.
WHEN 'Table'.
ls_feld-fein = abap_false.
ls_feld-fout = abap_false.
ls_feld-oout = abap_false.
ls_feld-type = space.
ls_feld-dict = abap_false.
ls_feld-dmod = abap_false.
WHEN 'TbStr'.
ls_feld-scroll = abap_undefined.
ls_feld-fein = abap_false.
ls_feld-fout = abap_false.
ls_feld-oout = abap_false.
ls_feld-type = space.
ls_feld-icon_x = abap_undefined.
ls_feld_redef-fobl = space.
ls_feld-paid = space.
ls_feld-cmbfoc = abap_false.
ls_feld-ucnv = space.
WHEN 'Text'.
ls_feld-scroll = abap_undefined.
ls_feld-fein = abap_false.
ls_feld-fout = abap_false.
ls_feld-oout = abap_false.
ls_feld-type = space.
ls_feld-icon_x = abap_undefined.
ls_feld_redef-fobl = space.
ls_feld-paid = space.
ls_feld-cmbfoc = abap_false.
ls_feld-ucnv = space.
IF ls_feld-fixf = abap_false
AND ls_feld-hell = abap_false
AND ls_feld-unsi = abap_false
AND -ltyp = space
AND ls_feld-labelright = abap_false
AND -flg1 <> '00'.
ls_feld-labelleft = abap_true.
ENDIF.
ENDCASE.
IF NOT ls_feld-stxt IS INITIAL.
IF ls_feld-stxt NA '_'.
l_length = -leng.
IF l_length > 132.
l_length = 132.
ENDIF.
l_strlen = strlen( ls_feld-stxt ).
WHILE l_strlen < l_length.
CONCATENATE ls_feld-stxt '_' INTO ls_feld-stxt.
l_strlen = strlen( ls_feld-stxt ).
ENDWHILE.
ENDIF.
IF -fill = 'R'.
l_strlen = strlen( ls_feld-stxt ).
l_length = l_strlen - 2.
IF l_length > 0.
ls_feld-stxt = ls_feld-stxt+0(l_length).
ENDIF.
ENDIF.
ENDIF.
APPEND ls_feld TO ct_feld.
APPEND ls_feld_redef TO ct_feld_redef.
ENDLOOP.
ENDFORM. "get_feldtab
*-----------------------------------------------------------------------
* fugr_get_feld_fill_na_btisu
*-----------------------------------------------------------------------
FORM fugr_get_feld_fill_na_btisu
USING
is_d021s TYPE d021s
is_dynpro_release TYPE st_dynpro_release
CHANGING
cs_feld TYPE feld.
DATA:
ls_d021s_res1 LIKE d021s_res1.
CONSTANTS:
lc_flg1ddf TYPE x VALUE '20',
lc_flg1edt TYPE x VALUE '80',
lc_flg1osb TYPE x VALUE '04',
lc_flg2gks TYPE x VALUE '02',
lc_flg2gpa TYPE x VALUE '08',
lc_flg2jus TYPE x VALUE '20',
lc_flg2nrs TYPE x VALUE '40',
lc_flg2spa TYPE x VALUE '04',
lc_flg2str TYPE x VALUE '80',
lc_flg3fdu TYPE x VALUE '02',
lc_flg3fix TYPE x VALUE '40',
lc_flg3fku TYPE x VALUE '08',
lc_flg3for TYPE x VALUE '04',
lc_flg3out TYPE x VALUE '80',
lc_fmb1d23 TYPE x VALUE '02',
lc_fmb1dnk TYPE x VALUE '04',
lc_fmb1fix TYPE x VALUE '40',
lc_fmb1ges TYPE x VALUE '20',
lc_fmb1hll TYPE x VALUE '08',
lc_fmb1out TYPE x VALUE '01',
lc_fmb2cmb TYPE x VALUE '08',
lc_fmb2cmi TYPE x VALUE '04',
lc_fmb2cmu TYPE x VALUE '10',
lcs_dynpro_rel_400 TYPE st_dynpro_release VALUE '4.00',
lcs_dynpro_rel_401 TYPE st_dynpro_release VALUE '4.01',
lcs_dynpro_rel_402 TYPE st_dynpro_release VALUE '4.02',
lcs_dynpro_rel_46a TYPE st_dynpro_release VALUE '4.60',
lcs_dynpro_rel_610 TYPE st_dynpro_release VALUE '6.10'.
CHECK is_d021s-fill NA 'BTISU'.
ls_d021s_res1 = is_d021s-res1.
IF is_d021s-flg2 O lc_flg2str.
cs_feld-fstr = abap_true.
ENDIF.
IF is_d021s-flg2 O lc_flg2nrs.
cs_feld-fnrs = abap_true.
ENDIF.
IF is_d021s-flg2 O lc_flg2gks.
cs_feld-fgks = abap_true.
ENDIF.
IF is_d021s-flg3 O lc_flg3fix.
cs_feld-ffix = abap_true.
ENDIF.
IF is_d021s-flg1 O lc_flg1osb.
cs_feld-fosb = abap_true.
ENDIF.
IF is_d021s-flg2 O lc_flg2jus.
cs_feld-fjus = abap_true.
ENDIF.
IF is_d021s-fill = '0'.
cs_feld-fill = abap_true.
ENDIF.
IF is_d021s-flg2 O lc_flg2gpa.
cs_feld-fgpa = abap_true.
ENDIF.
IF is_d021s-flg2 O lc_flg2spa.
cs_feld-fspa = abap_true.
ENDIF.
IF is_d021s-flg1 O lc_flg1ddf
AND is_d021s-flg3 O lc_flg3for
AND is_d021s-flg3 Z lc_flg3fdu
AND is_d021s-flg3 Z lc_flg3fku.
cs_feld-ffky = 'X'.
ENDIF.
IF is_d021s-flg1 O lc_flg1edt.
IF is_d021s-fmb1 Z lc_fmb1ges.
cs_feld-fein = abap_true.
ELSE.
cs_feld-fein = abap_false.
ENDIF.
IF is_d021s-flg3 O lc_flg3out.
cs_feld-fout = abap_true.
ELSE.
cs_feld-fout = abap_false.
ENDIF.
IF is_d021s-fmb1 O lc_fmb1out.
cs_feld-oout = abap_true.
ELSE.
cs_feld-oout = abap_false.
ENDIF.
ENDIF.
cs_feld-paid = is_d021s-paid.
cs_feld-ucnv = is_d021s-ucnv.
IF is_d021s-fmb1 O lc_fmb1hll.
cs_feld-hell = abap_true.
ENDIF.
IF is_d021s-fmb1 O lc_fmb1dnk.
cs_feld-unsi = abap_true.
ENDIF.
IF is_d021s-fmb1 O lc_fmb1d23.
cs_feld-no3d = abap_true.
ENDIF.
IF is_dynpro_release <= lcs_dynpro_rel_402.
IF cs_feld-oout = abap_true
AND cs_feld-fout = abap_true
AND is_d021s-flg3 Z lc_flg3out.
cs_feld-fixf = abap_true.
ELSEIF cs_feld-oout = abap_false
AND is_d021s-fmb1 O lc_fmb1out.
cs_feld-fixf = abap_true.
ENDIF.
ENDIF.
IF is_d021s-fmb1 O lc_fmb1fix.
cs_feld-fixf = abap_true.
ENDIF.
cs_feld-labelleft = ls_d021s_res1-labelleft.
cs_feld-labelright = ls_d021s_res1-labelright.
cs_feld-dblclick = ls_d021s_res1-dblclick.
IF is_d021s-fill <> 'P'
AND is_d021s-dmac <> space.
cs_feld-cmbfoc = abap_true.
ENDIF.
IF is_d021s-fmb2 Z lc_fmb2cmb.
cs_feld-cmbfoc = abap_false.
ELSE.
cs_feld-cmbfoc = abap_true.
ENDIF.
IF is_d021s-fmb2 Z lc_fmb2cmu
AND is_d021s-fmb2 Z lc_fmb2cmi.
cs_feld-cmbtast = space.
ELSEIF is_d021s-fmb2 O lc_fmb2cmu
AND is_d021s-fmb2 O lc_fmb2cmi.
cs_feld-cmbtast = '0'.
ELSEIF is_d021s-fmb2 O lc_fmb2cmu
AND is_d021s-fmb2 Z lc_fmb2cmi.
cs_feld-cmbtast = '1'.
ELSEIF is_d021s-fmb2 Z lc_fmb2cmu
AND is_d021s-fmb2 O lc_fmb2cmi.
cs_feld-cmbtast = '2'.
ENDIF.
ENDFORM. "get_feld_fill_na_btisu
*-----------------------------------------------------------------------
* fugr_get_feld_icon
*-----------------------------------------------------------------------
FORM fugr_get_feld_icon
USING
is_d021s TYPE d021s
CHANGING
cs_feld TYPE feld.
DATA:
l_icon_id_pure(2) TYPE c,
ls_icon TYPE icon,
ls_icont TYPE icont,
l_id_and_param(132) TYPE c,
l_is_non_icon TYPE flag,
l_pos_at TYPE i,
l_quick_is TYPE flag,
l_strlen TYPE i.
FIELD-SYMBOLS:
TYPE ANY.
CONSTANTS:
lc_flg1edt TYPE x VALUE '80'.
CHECK is_d021s-stxt(1) = '@'.
ASSIGN is_d021s-stxt+1(*) TO .
IF CA '@'.
l_pos_at = sy-fdpos + 1.
l_id_and_param = (sy-fdpos).
IF l_id_and_param CS '\Q'.
l_quick_is = abap_true.
SPLIT l_id_and_param AT '\Q'
INTO l_icon_id_pure
cs_feld-icon_q.
CONCATENATE '@' l_icon_id_pure '@'
INTO cs_feld-icon.
ELSE.
l_quick_is = abap_false.
CONCATENATE '@' l_id_and_param '@'
INTO cs_feld-icon.
ENDIF.
IF cs_feld-icon = '@@'.
CLEAR cs_feld-icon.
l_is_non_icon = abap_true.
ENDIF.
SELECT SINGLE * FROM icon INTO ls_icon
WHERE id = cs_feld-icon.
IF sy-subrc = 0.
SELECT SINGLE * FROM icont INTO ls_icont
WHERE id = cs_feld-icon
AND langu = sy-langu.
cs_feld-icon_n = ls_icon-name.
ELSE.
cs_feld-icon_n = space.
ENDIF.
IF cs_feld-icon_q IS INITIAL
AND l_quick_is = abap_false.
cs_feld-icon_q = ls_icont-quickinfo.
ENDIF.
l_pos_at = l_pos_at + 1.
ASSIGN is_d021s-stxt+l_pos_at(*) TO .
l_strlen = strlen( ).
IF l_strlen > 0.
IF l_is_non_icon = abap_true.
ELSE.
l_pos_at = l_pos_at + 1.
ENDIF.
cs_feld-stxt = is_d021s-stxt+l_pos_at.
ELSE.
cs_feld-stxt = space.
ENDIF.
ENDIF.
UNASSIGN .
IF cs_feld-icon = '@00@'
AND is_d021s-flg1 O lc_flg1edt.
cs_feld-icon_x = abap_true.
ENDIF.
ENDFORM. "get_feld_icon
*-----------------------------------------------------------------------
* fugr_r3tr_fugr Function group
*-----------------------------------------------------------------------
FORM fugr_r3tr_fugr.
DATA:
l_progname TYPE progname,
lt_tabstrip TYPE it_tabstrip,
ls_ti TYPE st_textinput,
lt_attributes TYPE it_textinput,
lt_documentation TYPE it_string,
ls_progdir TYPE progdir,
ls_tadir TYPE tadir,
l_name TYPE ad_namtext,
lt_html TYPE it_string.
FIELD-SYMBOLS:
TYPE st_ztadir,
TYPE st_tabstrip.
*Tabstrip
PERFORM get_tabstrip
USING 'FUGR_R3TR_FUGR' space
CHANGING lt_tabstrip.
LOOP AT gt_ztadir ASSIGNING
WHERE pgmid = 'R3TR'
AND object = 'FUGR'
AND futype = gc_futype_group
AND downloaded = abap_false.
-downloaded = abap_true.
CLEAR:
l_name,
l_progname,
ls_progdir,
ls_tadir.
REFRESH:
lt_attributes,
lt_documentation,
lt_html.
CALL FUNCTION 'RS_TADIR_TO_PROGNAME'
EXPORTING
object = -object
obj_name = -obj_name
IMPORTING
progname = l_progname.
SELECT SINGLE * FROM progdir INTO ls_progdir
WHERE name = l_progname.
SELECT SINGLE * FROM tadir INTO ls_tadir
WHERE pgmid = 'R3TR'
AND object = 'FUGR'
AND obj_name = -obj_name.
*Attributes
* Function group
CLEAR ls_ti.
ls_ti-name = txt_function_group.
ls_ti-input = abap_true.
ls_ti-value = -obj_name.
APPEND ls_ti TO lt_attributes.
* Description
CLEAR ls_ti.
ls_ti-name = txt_short_text___1.
ls_ti-input = abap_true.
ls_ti-value = -descript.
APPEND ls_ti TO lt_attributes.
* Empty row
CLEAR ls_ti.
ls_ti-space = abap_true.
APPEND ls_ti TO lt_attributes.
* Person responsible
CLEAR ls_ti.
ls_ti-name = txt_person_responsible___1.
ls_ti-input = abap_true.
ls_ti-value = ls_tadir-author.
PERFORM get_user
USING
ls_tadir-author
CHANGING
l_name.
ls_ti-value_text = l_name.
APPEND ls_ti TO lt_attributes.
* Package
CLEAR ls_ti.
ls_ti-name = txt_package.
ls_ti-input = abap_true.
ls_ti-value = ls_tadir-devclass.
APPEND ls_ti TO lt_attributes.
* Application
CLEAR ls_ti.
ls_ti-name = txt_application.
ls_ti-input = abap_true.
ls_ti-value = ls_progdir-appl.
APPEND ls_ti TO lt_attributes.
* Status
CLEAR ls_ti.
ls_ti-name = txt_status.
ls_ti-input = abap_true.
IF ls_progdir-state = 'A'.
ls_ti-value = txt_activated.
ELSE.
ls_ti-value = txt_inactive.
ENDIF.
APPEND ls_ti TO lt_attributes.
* Program status
CLEAR ls_ti.
ls_ti-name = txt_program_status.
ls_ti-input = abap_true.
ls_ti-value = ls_progdir-rstat.
PERFORM get_dom_value_text
USING 'RSTAT' ls_progdir-rstat
CHANGING ls_ti-value_text.
APPEND ls_ti TO lt_attributes.
* Editor lock
CLEAR ls_ti.
ls_ti-name = txt_editor_lock.
ls_ti-flag = abap_true.
ls_ti-value = ls_progdir-edtx.
APPEND ls_ti TO lt_attributes.
* Fixed point arithmetic
CLEAR ls_ti.
ls_ti-name = txt_fixed_point_arithmetic.
ls_ti-flag = abap_true.
ls_ti-value = ls_progdir-fixpt.
APPEND ls_ti TO lt_attributes.
* Unicode checks active
CLEAR ls_ti.
ls_ti-name = txtt_unicode_checks_active.
ls_ti-flag = abap_true.
ls_ti-value = ls_progdir-uccheck.
APPEND ls_ti TO lt_attributes.
*Documentation
PERFORM get_docu
USING
'RE'
l_progname
'E'
CHANGING
lt_documentation.
***Tabstrip
LOOP AT lt_tabstrip ASSIGNING .
-empty = abap_false.
CASE -id.
WHEN 'DOCUMENTATION'.
IF lt_documentation IS INITIAL.
-empty = abap_true.
ENDIF.
ENDCASE.
ENDLOOP.
*** HTML
PERFORM html_main_header
USING
tpt_fugr_fugr
space
-obj_name
space
space
space
'makeDivSize(''MAIN_PROG'');makeDivSize(''DOCUMENTATION'');'
lt_tabstrip
gt_link
CHANGING
lt_html.
* Attributes
PERFORM html_add_textinput
USING
lt_attributes
'ATTRIBUTES'
abap_true
CHANGING
lt_html.
*Main program
PERFORM add_report_sourcecode
USING
l_progname
l_progname
gc_extension_txt
abap_true
'MAIN_PROG'
abap_false
CHANGING
lt_html.
*Documentation
IF NOT lt_documentation IS INITIAL
OR g_empty_tab = gc_empty_tab_display.
PERFORM html_add_doc
USING
lt_documentation
'DOCUMENTATION'
abap_false
CHANGING
lt_html.
ENDIF.
*
PERFORM html_main_footer
USING
lt_html.
PERFORM download
USING
lt_html
-pgmid
-object
l_progname
gc_extension_htm
abap_true.
ENDLOOP.
ENDFORM. "r3tr_fugr
*-----------------------------------------------------------------------
* fugr_r3tr_includes Includes
*-----------------------------------------------------------------------
FORM fugr_r3tr_includes.
DATA:
lt_tabstrip TYPE it_tabstrip,
lt_html TYPE it_string,
ls_attributes TYPE st_attributes,
lt_ti TYPE it_textinput,
lt_ti_box TYPE it_textinput,
ls_ti TYPE st_textinput,
l_masterlang TYPE masterlang,
l_filename TYPE string,
ls_trdir TYPE trdir,
l_laiso TYPE laiso,
l_sptxt TYPE sptxt,
l_name TYPE ad_namtext,
l_text TYPE as4text,
l_atext TYPE appltxt.
FIELD-SYMBOLS:
TYPE st_ztadir.
*Tabstrip
PERFORM get_tabstrip
USING 'FUGR_R3TR_INCLUDES' space
CHANGING lt_tabstrip.
LOOP AT gt_ztadir ASSIGNING
WHERE pgmid = 'R3TR'
AND object = 'FUGR'
AND futype = gc_futype_include
AND downloaded = abap_false.
CLEAR:
ls_attributes,
ls_trdir,
l_text,
l_atext.
REFRESH:
lt_html,
lt_ti,
lt_ti_box.
SELECT SINGLE * FROM trdir INTO ls_trdir
WHERE name = -progname.
IF sy-subrc <> 0.
-subrc = sy-subrc.
CONTINUE.
ENDIF.
*Attributes
* Title
CLEAR ls_ti.
ls_ti-name = txt_title.
ls_ti-value = -descript.
ls_ti-value_double_length = abap_true.
ls_ti-input = abap_true.
APPEND ls_ti TO lt_ti.
* Original Language
CLEAR ls_ti.
ls_ti-name = txt_original_language.
l_masterlang = ls_trdir-rload.
IF l_masterlang IS INITIAL.
l_masterlang = -masterlang.
ENDIF.
PERFORM get_spras
USING
l_masterlang
CHANGING
l_laiso
l_sptxt.
ls_ti-value = l_laiso.
ls_ti-description = l_sptxt.
ls_ti-input = abap_true.
APPEND ls_ti TO lt_ti.
* Space
CLEAR ls_ti.
ls_ti-space = abap_true.
APPEND ls_ti TO lt_ti.
* Created
CLEAR ls_ti.
ls_ti-name = txt_created.
PERFORM get_date
USING
ls_trdir-cdat
CHANGING
ls_ti-value.
ls_ti-value_ext = ls_trdir-cnam.
PERFORM get_user
USING
ls_trdir-cnam
CHANGING
l_name.
ls_ti-value_ext_text = l_name.
ls_ti-has_value_ext = abap_true.
ls_ti-input = abap_true.
APPEND ls_ti TO lt_ti.
* Last changed by
CLEAR ls_ti.
ls_ti-name = txt_last_changed_by___1.
PERFORM get_date
USING
ls_trdir-udat
CHANGING
ls_ti-value.
ls_ti-value_ext = ls_trdir-unam.
PERFORM get_user
USING
ls_trdir-unam
CHANGING
l_name.
ls_ti-value_ext_text = l_name.
ls_ti-input = abap_true.
ls_ti-has_value_ext = abap_true.
APPEND ls_ti TO lt_ti.
* Status
CLEAR ls_ti.
ls_ti-name = txt_status.
ls_ti-value = txt_active___1.
APPEND ls_ti TO lt_ti.
*Attributes - Box
* Type
CLEAR ls_ti.
ls_ti-name = txt_type___1.
PERFORM get_dom_value_text
USING
'SUBC'
ls_trdir-subc
CHANGING
ls_ti-value.
ls_ti-input = abap_true.
APPEND ls_ti TO lt_ti_box.
* Status
CLEAR ls_ti.
ls_ti-name = txt_status.
PERFORM get_dom_value_text
USING
'RSTAT'
ls_trdir-rstat
CHANGING
ls_ti-value.
ls_ti-input = abap_true.
APPEND ls_ti TO lt_ti_box.
* Application
CLEAR ls_ti.
ls_ti-name = txt_application.
SELECT SINGLE atext FROM taplt INTO l_atext
WHERE appl = ls_trdir-appl
AND sprsl = sy-langu.
ls_ti-value = l_atext.
ls_ti-input = abap_true.
APPEND ls_ti TO lt_ti_box.
* Space
CLEAR ls_ti.
ls_ti-space = abap_true.
APPEND ls_ti TO lt_ti_box.
* Package
CLEAR ls_ti.
ls_ti-name = txt_package.
ls_ti-value = -devclass.
PERFORM get_devclass
USING
-devclass
CHANGING
l_text.
ls_ti-description = l_text.
ls_ti-input = abap_true.
APPEND ls_ti TO lt_ti_box.
* Space
CLEAR ls_ti.
ls_ti-space = abap_true.
APPEND ls_ti TO lt_ti_box.
* Editor lock
CLEAR ls_ti.
ls_ti-name = txt_editor_lock.
ls_ti-value = ls_trdir-edtx.
ls_ti-flag = abap_true.
APPEND ls_ti TO lt_ti_box.
*** HTML
PERFORM html_main_header
USING
tpt_fugr_incl
space "l_name_field
-progname
txt_active___1
space
space
'makeDivSize(''SOURCECODE'');'
lt_tabstrip
gt_link
CHANGING
lt_html.
* Attributes
PERFORM html_add_textinput_subbox
USING
lt_ti
txt_attributes___2
lt_ti_box
'ATTRIBUTES'
abap_false
CHANGING
lt_html.
* Source code
PERFORM add_report_sourcecode
USING
-progname
-progname
gc_extension_txt
abap_false
'SOURCECODE'
abap_true
CHANGING
lt_html.
*
PERFORM html_main_footer
USING
lt_html.
PERFORM download
USING
lt_html
-pgmid
-object
-progname
gc_extension_htm
abap_true.
-downloaded = abap_true.
ENDLOOP.
ENDFORM. "r3tr_incl
*-----------------------------------------------------------------------
* fugr_r3tr_modules Funktionsbausteine
*-----------------------------------------------------------------------
FORM fugr_r3tr_modules.
DATA:
ls_tabstrip TYPE st_tabstrip,
lt_tabstrip TYPE it_tabstrip,
lt_classification TYPE it_textinput,
ls_classification TYPE st_textinput,
lt_processing_type TYPE it_access,
ls_processing_type TYPE st_access,
lt_general_data TYPE it_textinput,
ls_general_data TYPE st_textinput,
lt_html TYPE it_string,
lt_ptfdir TYPE STANDARD TABLE OF tfdir,
ls_ptfdir TYPE tfdir,
lt_ptftit TYPE STANDARD TABLE OF tftit,
ls_ptftit TYPE tftit,
lt_pfunct TYPE STANDARD TABLE OF funct,
ls_pfunct TYPE funct,
lt_penlfdir TYPE STANDARD TABLE OF enlfdir,
ls_penlfdir TYPE enlfdir,
lt_ptrdir TYPE STANDARD TABLE OF trdir,
ls_ptrdir TYPE trdir,
lt_pfupararef TYPE STANDARD TABLE OF sfupararef,
lt_uincl TYPE it_abaptxt255,
lt_vsmodisrc TYPE STANDARD TABLE OF smodisrc,
lt_vsmodilog TYPE STANDARD TABLE OF smodilog,
lt_parameter TYPE it_parameter,
ls_parameter TYPE st_parameter,
lt_importing TYPE it_parameter,
lt_exporting TYPE it_parameter,
lt_changing TYPE it_parameter,
lt_table TYPE it_parameter,
lt_exception TYPE it_parameter,
l_kind TYPE char1,
lt_doku TYPE it_string,
lt_documentation TYPE it_string,
lt_sourcecode TYPE it_string,
l_sourcecode TYPE string,
l_namtext TYPE ad_namtext,
l_javascript TYPE string,
l_id TYPE string,
l_filename TYPE string,
l_on TYPE flag,
l_areat TYPE areat.
FIELD-SYMBOLS:
TYPE st_tabstrip,
TYPE st_ztadir,
TYPE st_parameter,
TYPE sfupararef,
TYPE st_abaptxt255.
LOOP AT gt_ztadir ASSIGNING
WHERE pgmid = 'R3TR'
AND object = 'FUGR'
AND futype = gc_futype_module
AND downloaded = abap_false.
-downloaded = abap_true.
CLEAR:
ls_classification,
ls_general_data,
l_javascript,
ls_parameter,
ls_penlfdir,
ls_pfunct,
ls_processing_type,
ls_ptfdir,
ls_ptftit,
ls_ptrdir,
l_sourcecode,
l_areat.
REFRESH:
lt_changing,
lt_classification,
lt_exception,
lt_exporting,
lt_general_data,
lt_html,
lt_importing,
lt_parameter,
lt_processing_type,
lt_sourcecode,
lt_table,
lt_uincl.
CALL FUNCTION 'FUNC_GET_OBJECT'
EXPORTING
funcname = -funcname
r3state = 'A'
TABLES
ptfdir = lt_ptfdir
ptftit = lt_ptftit
pfunct = lt_pfunct
penlfdir = lt_penlfdir
ptrdir = lt_ptrdir
pfupararef = lt_pfupararef
uincl = lt_uincl
vsmodisrc = lt_vsmodisrc
vsmodilog = lt_vsmodilog
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
-subrc = sy-subrc.
CONTINUE.
ENDIF.
IF NOT lt_ptfdir IS INITIAL.
READ TABLE lt_ptfdir INTO ls_ptfdir INDEX 1.
ENDIF.
IF NOT lt_ptftit IS INITIAL.
READ TABLE lt_ptftit INTO ls_ptftit INDEX 1.
ENDIF.
IF NOT lt_penlfdir IS INITIAL.
READ TABLE lt_penlfdir INTO ls_penlfdir INDEX 1.
ENDIF.
IF NOT lt_ptrdir IS INITIAL.
READ TABLE lt_ptrdir INTO ls_ptrdir INDEX 1.
ENDIF.
*Attributes - Classification
ls_classification-name = txt_function_group.
ls_classification-value = ls_penlfdir-area.
ls_classification-input = abap_true.
ls_classification-has_value_ext = abap_true.
SELECT SINGLE areat FROM tlibt INTO l_areat
WHERE area = -obj_name
AND spras = sy-langu.
ls_classification-value_ext = l_areat.
APPEND ls_classification TO lt_classification.
CLEAR ls_classification.
ls_classification-name = txt_short_text___1.
ls_classification-value = ls_ptftit-stext.
ls_classification-input = abap_true.
APPEND ls_classification TO lt_classification.
*Attributes - Processing type
ls_processing_type-ddtext = txt_normal_function_module.
IF ls_ptfdir-fmode IS INITIAL AND ls_ptfdir-utask IS INITIAL.
ls_processing_type-checked = abap_true.
ELSE.
ls_processing_type-checked = abap_true.
ENDIF.
APPEND ls_processing_type TO lt_processing_type.
ls_processing_type-ddtext = txt_remote_enabled_module.
IF NOT ls_ptfdir-fmode IS INITIAL.
ls_processing_type-checked = abap_true.
ELSE.
ls_processing_type-checked = abap_true.
ENDIF.
APPEND ls_processing_type TO lt_processing_type.
ls_processing_type-ddtext = txt_update_module.
IF NOT ls_ptfdir-utask IS INITIAL.
ls_processing_type-checked = abap_true.
ELSE.
ls_processing_type-checked = abap_true.
ENDIF.
APPEND ls_processing_type TO lt_processing_type.
ls_processing_type-ddtext = txt_start_immed.
ls_processing_type-sub = '1'.
IF ls_ptfdir-utask IS INITIAL OR ls_ptfdir-utask = '1'.
ls_processing_type-checked = abap_true.
ELSE.
ls_processing_type-checked = abap_false.
ENDIF.
APPEND ls_processing_type TO lt_processing_type.
ls_processing_type-ddtext = txt_immediate_start_no_restart.
ls_processing_type-sub = '1'.
IF ls_ptfdir-utask = '3'.
ls_processing_type-checked = abap_true.
ELSE.
ls_processing_type-checked = abap_false.
ENDIF.
APPEND ls_processing_type TO lt_processing_type.
ls_processing_type-ddtext = txt_start_delayed.
ls_processing_type-sub = '1'.
IF ls_ptfdir-utask = '2'.
ls_processing_type-checked = abap_true.
ELSE.
ls_processing_type-checked = abap_false.
ENDIF.
APPEND ls_processing_type TO lt_processing_type.
ls_processing_type-ddtext = txt_coll_run.
ls_processing_type-sub = '1'.
IF ls_ptfdir-utask = '5'.
ls_processing_type-checked = abap_true.
ELSE.
ls_processing_type-checked = abap_false.
ENDIF.
APPEND ls_processing_type TO lt_processing_type.
*Attributes - General Data
ls_general_data-name = txt_person_responsible___1.
ls_general_data-input = abap_true.
ls_general_data-value = ls_ptrdir-cnam.
PERFORM get_user
USING
ls_ptrdir-cnam
CHANGING
l_namtext.
ls_general_data-value_text = l_namtext.
APPEND ls_general_data TO lt_general_data.
CLEAR ls_general_data.
ls_general_data-name = txt_last_changed_by___2.
ls_general_data-input = abap_true.
ls_general_data-value = ls_ptrdir-unam.
PERFORM get_user
USING
ls_ptrdir-unam
CHANGING
l_namtext.
ls_general_data-value_text = l_namtext.
APPEND ls_general_data TO lt_general_data.
CLEAR ls_general_data.
ls_general_data-name = txt_changed_on.
ls_general_data-input = abap_true.
PERFORM get_date USING ls_ptrdir-udat
CHANGING ls_general_data-value.
APPEND ls_general_data TO lt_general_data.
ls_general_data-name = txt_package.
ls_general_data-input = abap_true.
ls_general_data-value = -devclass.
APPEND ls_general_data TO lt_general_data.
ls_general_data-name = txt_program_name.
ls_general_data-input = abap_true.
ls_general_data-value = ls_ptfdir-pname.
APPEND ls_general_data TO lt_general_data.
ls_general_data-name = txt_include_name.
ls_general_data-input = abap_true.
ls_general_data-value = ls_ptrdir-name.
APPEND ls_general_data TO lt_general_data.
ls_general_data-name = txt_original_language.
ls_general_data-input = abap_true.
ls_general_data-value = ls_ptftit-spras.
APPEND ls_general_data TO lt_general_data.
IF NOT ls_ptfdir-freedate IS INITIAL
AND ls_ptfdir-freedate > 19000101.
ls_general_data-name = txt_internally_released_on.
PERFORM get_date USING ls_ptfdir-freedate
CHANGING ls_general_data-value.
ls_general_data-input = abap_true.
ELSE.
ls_general_data-name = txt_not_released.
ls_general_data-value = space.
ls_general_data-input = abap_false.
ENDIF.
APPEND ls_general_data TO lt_general_data.
CLEAR ls_general_data.
ls_general_data-name = txt_edit_lock.
ls_general_data-flag = abap_true.
ls_general_data-value = ls_ptrdir-edtx.
APPEND ls_general_data TO lt_general_data.
ls_general_data-name = txt_global.
ls_general_data-flag = abap_true.
ls_general_data-value = ls_penlfdir-global.
APPEND ls_general_data TO lt_general_data.
*Parameter
SORT lt_pfupararef BY pposition.
LOOP AT lt_pfupararef ASSIGNING .
CLEAR ls_parameter.
l_kind = 'P'.
IF -paramtype = 'X'.
l_kind = 'X'.
ENDIF.
ls_parameter-name = -parameter.
IF -type = abap_true.
ls_parameter-typing = 'TYPE'.
ELSEIF -ref_class = abap_true.
ls_parameter-typing = 'TYPE REF TO'.
ELSE.
ls_parameter-typing = 'LIKE'.
ENDIF.
ls_parameter-structure = -structure.
ls_parameter-defvalue = -defaultval.
ls_parameter-optional = -optional.
IF -reference = abap_false.
ls_parameter-passvalue = abap_true.
ENDIF.
READ TABLE lt_pfunct INTO ls_pfunct
WITH KEY parameter = -parameter
kind = l_kind
spras = sy-langu.
IF sy-subrc <> 0.
READ TABLE lt_pfunct INTO ls_pfunct
WITH KEY parameter = -parameter
kind = l_kind
spras = sy-langu.
ENDIF.
ls_parameter-stext = ls_pfunct-stext.
* Long Text
ls_parameter-ltext_doku_obj = -funcname.
ls_parameter-ltext_doku_obj+30 = -parameter.
SELECT SINGLE object FROM dokhl INTO ls_parameter-ltext_doku_obj
WHERE id = 'FU'
AND object = ls_parameter-ltext_doku_obj
AND langu = sy-langu.
IF sy-subrc = 0.
ls_parameter-ltext = '-->'.
CONCATENATE 'switchContent(''LTEXT_'
-parameter ''')'
INTO ls_parameter-ltext_onclick.
ELSE.
CLEAR ls_parameter-ltext_doku_obj.
ENDIF.
* Append
APPEND ls_parameter TO lt_parameter.
CASE -paramtype.
WHEN 'I'. "Importing
APPEND ls_parameter TO lt_importing.
WHEN 'E'. "Exporting
APPEND ls_parameter TO lt_exporting.
WHEN 'C'. "Changing
APPEND ls_parameter TO lt_changing.
WHEN 'T'. "Tables
APPEND ls_parameter TO lt_table.
WHEN 'X'. "Exceptions
APPEND ls_parameter TO lt_exception.
ENDCASE.
ENDLOOP.
*Documentation
PERFORM get_docu
USING
'FU'
-funcname
'T'
CHANGING
lt_documentation.
*SourceCode
LOOP AT lt_uincl ASSIGNING .
l_sourcecode = -line.
APPEND l_sourcecode TO lt_sourcecode.
ENDLOOP.
***Tabstrip
PERFORM get_tabstrip
USING 'FUGR_R3TR_MODULES' space
CHANGING lt_tabstrip.
LOOP AT lt_tabstrip ASSIGNING .
-empty = abap_false.
CASE -id.
WHEN 'DOCUMENTATION'.
IF lt_documentation IS INITIAL.
-empty = abap_true.
ENDIF.
WHEN 'IMPORT'.
IF lt_importing IS INITIAL.
-empty = abap_true.
ENDIF.
WHEN 'EXPORT'.
IF lt_exporting IS INITIAL.
-empty = abap_true.
ENDIF.
WHEN 'CHANGING'.
IF lt_changing IS INITIAL.
-empty = abap_true.
ENDIF.
WHEN 'TABLES'.
IF lt_table IS INITIAL.
-empty = abap_true.
ENDIF.
WHEN 'EXCEPTIONS'.
IF lt_exception IS INITIAL.
-empty = abap_true.
ENDIF.
WHEN 'SOURCECODE'.
IF lt_sourcecode IS INITIAL.
-empty = abap_true.
ENDIF.
ENDCASE.
ENDLOOP.
* Long text
CONCATENATE
'makeDivSize(''DOCUMENTATION'');'
'makeDivSize(''SOURCECODE'');'
INTO l_javascript.
LOOP AT lt_parameter ASSIGNING
WHERE ltext = '-->'.
CLEAR ls_tabstrip.
CONCATENATE 'LTEXT_' -name
INTO ls_tabstrip-id.
ls_tabstrip-hidden = abap_true.
APPEND ls_tabstrip TO lt_tabstrip.
CONCATENATE
l_javascript
'makeDivSize(''' ls_tabstrip-id ''');'
INTO l_javascript.
ENDLOOP.
*** HTML
PERFORM html_main_header
USING
tpt_fugr_fuba
txt_function_module
-funcname
txt_active___1
space
space
l_javascript
lt_tabstrip
gt_link
CHANGING
lt_html.
* Attributes
IF lt_sourcecode IS INITIAL
AND g_empty_tab <> gc_empty_tab_display.
l_on = abap_true.
ELSE.
l_on = abap_false.
ENDIF.
PERFORM html_add_box1ti_2rb_ti
USING
txt_classification
lt_classification
txt_processing_type
'PTYPE'
lt_processing_type
txt_general_data
lt_general_data
'ATTRIBUTES'
l_on
CHANGING
lt_html.
* Importing
IF NOT lt_importing IS INITIAL
OR g_empty_tab = gc_empty_tab_display.
PERFORM html_add_table
USING
'MODU_IMPOR'
lt_importing
lt_importing
'IMPORT'
abap_false
CHANGING
lt_html.
ENDIF.
* Exporting
IF NOT lt_exporting IS INITIAL
OR g_empty_tab = gc_empty_tab_display.
PERFORM html_add_table
USING
'MODU_EXPOR'
lt_exporting
lt_exporting
'EXPORT'
abap_false
CHANGING
lt_html.
ENDIF.
* Changing
IF NOT lt_changing IS INITIAL
OR g_empty_tab = gc_empty_tab_display.
PERFORM html_add_table
USING
'MODU_IMPOR'
lt_changing
lt_changing
'CHANGING'
abap_false
CHANGING
lt_html.
ENDIF.
* Tables
IF NOT lt_table IS INITIAL
OR g_empty_tab = gc_empty_tab_display.
PERFORM html_add_table
USING
'MODU_TABLE'
lt_table
lt_table
'TABLES'
abap_false
CHANGING
lt_html.
ENDIF.
* Exceptions
IF NOT lt_exception IS INITIAL
OR g_empty_tab = gc_empty_tab_display.
PERFORM html_add_table
USING
'MODU_EXCEP'
lt_exception
lt_exception
'EXCEPTIONS'
abap_false
CHANGING
lt_html.
ENDIF.
* SourceCode
IF NOT lt_sourcecode IS INITIAL
OR g_empty_tab = gc_empty_tab_display.
IF g_add_sourcecode = abap_true.
l_filename = -funcname.
PERFORM download
USING
lt_sourcecode
-pgmid
-object
l_filename
gc_extension_txt
abap_false.
ENDIF.
PERFORM html_add_sourcecode
USING
lt_sourcecode
l_filename
space
space
gc_extension_txt
'SOURCECODE'
abap_true
CHANGING
lt_html.
ENDIF.
* Documentation
IF NOT lt_documentation IS INITIAL
OR g_empty_tab = gc_empty_tab_display.
PERFORM html_add_doc
USING
lt_documentation
'DOCUMENTATION'
abap_false
CHANGING
lt_html.
ENDIF.
* Long texts
LOOP AT lt_parameter ASSIGNING
WHERE ltext = '-->'.
REFRESH lt_doku.
PERFORM get_docu
USING
'FU'
-ltext_doku_obj
'T'
CHANGING
lt_doku.
PERFORM get_id
USING 'LTEXT_' -name
CHANGING l_id.
PERFORM html_add_doc
USING
lt_doku
l_id
abap_false
CHANGING
lt_html.
ENDLOOP.
*
PERFORM html_main_footer
USING
lt_html.
PERFORM download
USING
lt_html
-pgmid
-object
-progname
gc_extension_htm
abap_true.
ENDLOOP.
ENDFORM. "fugr_r3tr_modules
*-----------------------------------------------------------------------
* fugr_r3tr_screen Screens
*-----------------------------------------------------------------------
FORM fugr_r3tr_screen.
DATA:
lt_tabstrip TYPE it_tabstrip,
ls_dynpro_name TYPE st_dynpro_name,
ls_d020s TYPE d020s, "screen header
lt_d021s TYPE STANDARD TABLE OF d021s, "field list
lt_d022s TYPE STANDARD TABLE OF d022s, "flow logic
lt_d023s TYPE d023s_tab, "matchcode information
ls_d023sx TYPE d023s_x,
lt_d023x TYPE d023s_xtab,
lt_feld TYPE STANDARD TABLE OF feld,
lt_feld_redef TYPE it_feld_redef,
lt_source TYPE it_string,
lt_html TYPE it_string,
ls_attributes TYPE st_attributes,
lt_access_screen_type TYPE it_access,
ls_access TYPE st_access,
lt_ti_settings TYPE it_textinput,
lt_ti_other TYPE it_textinput,
ls_ti TYPE st_textinput,
l_date_last_generation TYPE d,
l_time_last_generation TYPE t,
l_lines TYPE sycurow,
l_cols TYPE sycucol,
l_filename TYPE string,
ls_dynpro_release TYPE st_dynpro_release,
l_dynpro_release(4) TYPE c,
l_title TYPE string.
FIELD-SYMBOLS:
TYPE d022s,
TYPE d023s,
TYPE st_ztadir,
TYPE x.
CONSTANTS:
lc_type_cntcmp TYPE scrpdytype VALUE 'CNTCMP ',
lc_milikmp TYPE x VALUE '40',
lc_miliksc TYPE x VALUE '08',
lc_milinog TYPE x VALUE '20',
lc_milinot TYPE x VALUE '04'.
*Tabstrip
PERFORM get_tabstrip
USING 'FUGR_R3TR_SCREEN' space
CHANGING lt_tabstrip.
LOOP AT gt_ztadir ASSIGNING
WHERE pgmid = 'R3TR'
AND object = 'FUGR'
AND futype = gc_futype_screen
AND downloaded = abap_false.
CLEAR:
ls_access,
ls_attributes,
ls_d020s,
ls_d023sx,
l_dynpro_release,
ls_ti.
REFRESH:
lt_access_screen_type,
lt_d021s,
lt_d022s,
lt_d023s,
lt_d023x,
lt_feld,
lt_feld_redef,
lt_html,
lt_source,
lt_ti_settings,
lt_ti_other.
ls_dynpro_name-prog = -progname.
ls_dynpro_name-dnum = -dynpronr.
IMPORT DYNPRO ls_d020s lt_d021s lt_d022s lt_d023s
ID ls_dynpro_name.
IF sy-subrc <> 0.
-subrc = sy-subrc.
CONTINUE.
ENDIF.
CALL FUNCTION 'RS_DYNPRO_RELEASE_GET'
EXPORTING
dynpro_header = ls_d020s
IMPORTING
dynpro_release = l_dynpro_release
EXCEPTIONS
OTHERS = 1.
ls_dynpro_release = l_dynpro_release.
LOOP AT lt_d023s ASSIGNING WHERE type = lc_type_cntcmp.
ls_d023sx = -content.
APPEND ls_d023sx-cccont TO lt_d023x.
ENDLOOP.
*Attributes
ls_attributes-descript = -descript.
ls_attributes-devclass = -devclass.
PERFORM get_devclass
USING
-devclass
CHANGING
ls_attributes-devclass_descr.
PERFORM get_spras
USING
ls_d020s-spra
CHANGING
ls_attributes-laiso
ls_attributes-sptxt.
PERFORM get_date
USING
ls_d020s-dgen
CHANGING
ls_attributes-date_last_changed.
PERFORM get_time
USING
ls_d020s-tgen
CHANGING
ls_attributes-time_last_changed.
CALL FUNCTION 'RS_SCRP_GET_GEN_DATA'
EXPORTING
progname = ls_d020s-prog
dynnr = ls_d020s-dnum
IMPORTING
gen_date = l_date_last_generation
gen_time = l_time_last_generation
EXCEPTIONS
OTHERS = 1.
PERFORM get_date
USING
l_date_last_generation
CHANGING
ls_attributes-date_last_generation.
PERFORM get_time
USING
l_time_last_generation
CHANGING
ls_attributes-time_last_generation.
*Attributes - Screen type
CLEAR ls_access.
ls_access-ddtext = txt_normal.
ls_access-checked = abap_false.
IF ls_d020s-type NA 'IMSWJ'.
ls_access-checked = abap_true.
ENDIF.
APPEND ls_access TO lt_access_screen_type.
ls_access-ddtext = txt_subscreen.
ls_access-checked = abap_false.
IF ls_d020s-type = 'I'.
ls_access-checked = abap_true.
ENDIF.
APPEND ls_access TO lt_access_screen_type.
ls_access-ddtext = txt_modal_dialog_box.
ls_access-checked = abap_false.
IF ls_d020s-type = 'M'.
ls_access-checked = abap_true.
ENDIF.
APPEND ls_access TO lt_access_screen_type.
ls_access-ddtext = txt_selection_screen.
ls_access-checked = abap_false.
IF ls_d020s-type CA 'SWJ'.
ls_access-checked = abap_true.
ENDIF.
APPEND ls_access TO lt_access_screen_type.
*Attributes - Settings
CLEAR ls_ti.
IF ls_d020s-type <> 'I'.
ls_ti-name = txt_hold_data.
ls_ti-flag = abap_true.
ls_ti-value = ls_d020s-hdat.
APPEND ls_ti TO lt_ti_settings.
ENDIF.
ASSIGN ls_d020s-mili TO CASTING.
ls_ti-name = txt_switch_off_runtime_compres.
ls_ti-flag = abap_true.
IF O lc_milikmp.
ls_ti-value = abap_false.
ELSE.
ls_ti-value = abap_true.
ENDIF.
APPEND ls_ti TO lt_ti_settings.
ls_ti-name = txt_template_non_executable.
ls_ti-flag = abap_true.
IF O lc_milinog.
ls_ti-value = abap_true.
ELSE.
ls_ti-value = abap_false.
ENDIF.
APPEND ls_ti TO lt_ti_settings.
ls_ti-name = txt_hold_scroll_position.
ls_ti-flag = abap_true.
IF O lc_miliksc.
ls_ti-value = abap_true.
ELSE.
ls_ti-value = abap_false.
ENDIF.
APPEND ls_ti TO lt_ti_settings.
ls_ti-name = txt_without_application_toolba.
ls_ti-flag = abap_true.
IF O lc_milinot.
ls_ti-value = abap_true.
ELSE.
ls_ti-value = abap_false.
ENDIF.
APPEND ls_ti TO lt_ti_settings.
*Attributes - Other attributes
CLEAR ls_ti.
ls_ti-name = txt_next_screen.
ls_ti-value = ls_d020s-fnum.
ls_ti-input = abap_true.
APPEND ls_ti TO lt_ti_other.
ls_ti-name = txt_cursor_position.
ls_ti-value = ls_d020s-cupo.
ls_ti-input = abap_true.
APPEND ls_ti TO lt_ti_other.
ls_ti-name = txt_screen_group.
ls_ti-value = ls_d020s-dgrp.
ls_ti-input = abap_true.
APPEND ls_ti TO lt_ti_other.
ls_ti-name = txtt_lines_columns.
ls_ti-name_suffix = txt_occupied.
CALL FUNCTION 'RS_SCRP_GET_SCREEN_INFOS'
EXPORTING
progname = ls_d020s-prog
dynnr = ls_d020s-dnum
IMPORTING
lines = l_lines
columns = l_cols
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0 OR l_lines > 999 OR l_cols > 999.
l_lines = 0.
l_cols = 0.
ENDIF.
ls_ti-value = l_lines.
ls_ti-value_ext = l_cols.
ls_ti-input = abap_true.
ls_ti-has_value_ext = abap_true.
APPEND ls_ti TO lt_ti_other.
ls_ti-name = space.
ls_ti-name_suffix = txt_maintenance.
ls_ti-value = ls_d020s-noli.
ls_ti-value_ext = ls_d020s-noco.
ls_ti-input = abap_true.
ls_ti-has_value_ext = abap_true.
APPEND ls_ti TO lt_ti_other.
CLEAR ls_ti.
ls_ti-name = txtt_context_menu_form_on_ctme.
READ TABLE lt_d023s ASSIGNING
WITH KEY type = 'CTMENU'.
IF sy-subrc = 0.
ls_ti-value = -content.
ENDIF.
ls_ti-input = abap_true.
UNASSIGN .
APPEND ls_ti TO lt_ti_other.
* Element list
PERFORM fugr_get_feldtab
USING
ls_d020s
lt_d021s
lt_d023x
ls_dynpro_release
CHANGING
lt_feld
lt_feld_redef.
*SourceCode
LOOP AT lt_d022s ASSIGNING .
APPEND -line TO lt_source.
ENDLOOP.
*** HTML
l_title = tpt_fugr_scr.
PERFORM replace_single
USING '#NAME_VALUE#' -progname
CHANGING l_title.
PERFORM html_main_header
USING
l_title
txt_screen_number
-dynpronr
txt_active___1
space
space
'makeDivSize(''FLOW_LOGIC'');'
lt_tabstrip
gt_link
CHANGING
lt_html.
* Attributes
PERFORM html_add_attributes_3
USING
ls_attributes
txt_screen_type
'scrType'
lt_access_screen_type
txt_settings
lt_ti_settings
txt_other_attributes
lt_ti_other
'ATTRIBUTES'
abap_false
CHANGING
lt_html.
* Element list - begin
PERFORM html_add_container_begin
USING
lt_tabstrip
'ELEMENT_LIST'
abap_false
CHANGING
lt_html.
PERFORM html_add_table
USING
* lt_table_general_attr
'SCRN_GENER'
lt_feld_redef
lt_feld
'GENERAL_ATTR'
abap_true
CHANGING
lt_html.
PERFORM html_add_table
USING
* lt_table_texts_io_templates
'SCRN_IOTEM'
lt_feld_redef
lt_feld
'TEXTS_IO_TEMPLATES'
abap_false
CHANGING
lt_html.
PERFORM html_add_table
USING
* lt_table_special_attr
'SCRN_SPECI'
lt_feld_redef
lt_feld
'SPECIAL_ATTR'
abap_false
CHANGING
lt_html.
PERFORM html_add_table
USING
* lt_table_display_attr
'SCRN_DISPL'
lt_feld_redef
lt_feld
'DISPLAY_ATTR'
abap_false
CHANGING
lt_html.
PERFORM html_add_table
USING
* lt_table_mod_groups_func
'SCRN_MODGR'
lt_feld_redef
lt_feld
'MOD_GROUPS_FUNCTIONS'
abap_false
CHANGING
lt_html.
PERFORM html_add_table
USING
* lt_table_references
'SCRN_REFER'
lt_feld_redef
lt_feld
'REFERENCES'
abap_false
CHANGING
lt_html.
PERFORM html_add_container_end
CHANGING
lt_html.
* Element list - end
* Flow logic
CONCATENATE -progname '-' -dynpronr
INTO l_filename.
PERFORM html_add_sourcecode
USING
lt_source
l_filename
space
space
gc_extension_txt
'FLOW_LOGIC'
abap_true
CHANGING
lt_html.
IF g_add_sourcecode = abap_true.
PERFORM download
USING
lt_source
-pgmid
-object
l_filename
gc_extension_txt
abap_false.
ENDIF.
*
PERFORM html_main_footer
USING
lt_html.
PERFORM download
USING
lt_html
-pgmid
-object
l_filename
gc_extension_htm
abap_true.
-downloaded = abap_true.
ENDLOOP.
ENDFORM. "r3tr_screen