*&---------------------------------------------------------------------* *& 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