*&---------------------------------------------------------------------* *& Include ZSOFTCOPY_DDIC * *& * *&---------------------------------------------------------------------* *& * *& 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 * *& * *&---------------------------------------------------------------------* *----------------------------------------------------------------------- * ddic *----------------------------------------------------------------------- FORM ddic. *DOMA PERFORM ddic_r3tr_doma. *DTEL PERFORM ddic_r3tr_dtel. *ENQU: AGGTYPE = E PERFORM ddic_r3tr_enqu. *SHLP PERFORM ddic_r3tr_shlp. *TABL: TABCLASS = APPEND, INTTAB, VIEW PERFORM ddic_r3tr_tabl_1. *TABL: TABCLASS = CLUSTER, POOL, TRANSP PERFORM ddic_r3tr_tabl_2. *TTYP PERFORM ddic_r3tr_ttyp. *TYPE PERFORM ddic_r3tr_type. *VIEW PERFORM ddic_r3tr_view. ENDFORM. "ddic *----------------------------------------------------------------------- * ddic_r3tr_doma Domänen *----------------------------------------------------------------------- FORM ddic_r3tr_doma. DATA: lt_html TYPE it_string, lt_tabstrip TYPE it_tabstrip, l_domname TYPE domname, ls_attributes TYPE st_attributes, ls_definition TYPE st_definition_1, ls_value_range TYPE st_value_range, lt_value_range TYPE it_value_range, ls_dd01v TYPE dd01v, ls_dd01v_n TYPE dd01v, lt_dd07v TYPE STANDARD TABLE OF dd07v, lt_dd07v_n TYPE STANDARD TABLE OF dd07v, l_state TYPE dcdomaget, lt_doc TYPE it_string. FIELD-SYMBOLS: TYPE st_ztadir, TYPE dd07v, TYPE st_tabstrip. PERFORM get_tabstrip USING 'DDIC_R3TR_DOMA' space CHANGING lt_tabstrip. LOOP AT gt_ztadir ASSIGNING WHERE pgmid = 'R3TR' AND object = 'DOMA' AND downloaded = abap_false. -downloaded = abap_true. CLEAR: ls_attributes. REFRESH: lt_html, lt_value_range, lt_dd07v, lt_dd07v_n, lt_doc. l_domname = -obj_name. CALL FUNCTION 'DD_DOMA_GET' EXPORTING domain_name = l_domname langu = sy-langu withtext = abap_true IMPORTING dd01v_wa_a = ls_dd01v dd01v_wa_n = ls_dd01v_n got_state = l_state TABLES dd07v_tab_a = lt_dd07v dd07v_tab_n = lt_dd07v_n EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0. -subrc = sy-subrc. CONTINUE. ENDIF. ls_attributes-bname = ls_dd01v-as4user. PERFORM get_date USING ls_dd01v-as4date CHANGING ls_attributes-date_last_changed. ls_attributes-devclass = -devclass. PERFORM get_devclass USING -devclass CHANGING ls_attributes-devclass_descr. IF ls_dd01v-dommaster IS INITIAL. SELECT SINGLE masterlang FROM tadir INTO ls_dd01v-dommaster WHERE pgmid = 'R3TR' AND object = 'DOMA' AND obj_name = l_domname. ENDIF. PERFORM get_spras USING ls_dd01v-dommaster CHANGING ls_attributes-laiso ls_attributes-sptxt. PERFORM get_user USING ls_dd01v-as4user CHANGING ls_attributes-name_text. ls_definition-datatype = ls_dd01v-datatype. PERFORM get_dom_value_text USING 'DATATYPE' ls_dd01v-datatype CHANGING ls_definition-datadescr. ls_definition-dataleng = ls_dd01v-leng. ls_definition-datadeci = ls_dd01v-decimals. ls_definition-outputlen = ls_dd01v-outputlen. ls_definition-convexit = ls_dd01v-convexit. ls_definition-signflag = ls_dd01v-signflag. ls_definition-lowercase = ls_dd01v-lowercase. SORT lt_dd07v BY valpos. LOOP AT lt_dd07v ASSIGNING . ls_value_range-ddtext = -ddtext. IF -domval_ld IS INITIAL. ls_value_range-domvalue_l = -domvalue_l. ELSE. ls_value_range-domvalue_l = -domval_ld. ENDIF. IF -domval_hd IS INITIAL. ls_value_range-domvalue_h = -domval_hd. ELSE. ls_value_range-domvalue_h = -domvalue_h. ENDIF. APPEND ls_value_range TO lt_value_range. ENDLOOP. *doma documentation PERFORM get_docu USING 'DO' -obj_name 'T' CHANGING lt_doc. *** LOOP AT lt_tabstrip ASSIGNING . -empty = abap_false. CASE -id. WHEN 'DOC'. IF lt_doc IS INITIAL. -empty = abap_true. ENDIF. ENDCASE. ENDLOOP. *HTML header PERFORM html_main_header USING tpt_ddic_doma txt_domain -obj_name txt_active___1 txt_short_text___2 -descript space lt_tabstrip gt_link CHANGING lt_html. *HTML documentation IF NOT lt_doc IS INITIAL OR g_empty_tab = gc_empty_tab_display. PERFORM html_add_doc USING lt_doc 'DOC' abap_false CHANGING lt_html. ENDIF. *HTML attributes PERFORM html_add_attributes_1 USING ls_attributes 'ATTRIBUTES' abap_false CHANGING lt_html. *HTML definition PERFORM html_add_definition_1 USING ls_definition 'DEFINITION' abap_true CHANGING lt_html. *HTML value range PERFORM html_add_value_range USING lt_value_range 'VALUERANGE' abap_false CHANGING lt_html. *HTML footer PERFORM html_main_footer USING lt_html. * PERFORM download USING lt_html -pgmid -object -obj_name gc_extension_htm abap_true. ENDLOOP. ENDFORM. "r3tr_doma *----------------------------------------------------------------------- * ddic_r3tr_dtel Datenelemente *----------------------------------------------------------------------- FORM ddic_r3tr_dtel. DATA: lt_html TYPE it_string, lt_tabstrip TYPE it_tabstrip, ls_tabstrip TYPE st_tabstrip, l_rollname TYPE rollname, ls_attributes TYPE st_attributes, ls_data_type TYPE st_data_type, ls_further_char TYPE st_further_char, ls_field_label TYPE st_field_label, lt_para TYPE tpara, ls_dd01l TYPE dd01l, lt_dd03p TYPE STANDARD TABLE OF dd03p, ls_dd04l TYPE dd04l, ls_dd04l_n TYPE dd04l, lt_dd04t TYPE STANDARD TABLE OF dd04t, ls_dd04t TYPE dd04t, lt_dd04t_n TYPE STANDARD TABLE OF dd04t, l_state TYPE ddrefstruc-state, lt_doc TYPE it_string, lt_docdz TYPE STANDARD TABLE OF docdz, l_tab_nr TYPE i, l_tab_id TYPE string, l_doc_obj TYPE doku_obj, l_active TYPE flag. FIELD-SYMBOLS: TYPE ANY, TYPE ANY, TYPE ANY, TYPE ANY, TYPE ANY, TYPE st_ztadir, TYPE dd03p, TYPE st_tabstrip, TYPE docdz. LOOP AT gt_ztadir ASSIGNING WHERE pgmid = 'R3TR' AND object = 'DTEL' AND downloaded = abap_false. -downloaded = abap_true. CLEAR: ls_attributes. REFRESH: lt_html, lt_tabstrip, lt_dd04t, lt_dd04t_n, lt_doc, lt_docdz. l_rollname = -obj_name. CALL FUNCTION 'DD_DTEL_GET' EXPORTING roll_name = l_rollname langu = sy-langu withtext = abap_true IMPORTING got_state = l_state dd04l_wa_a = ls_dd04l dd04l_wa_n = ls_dd04l_n dd01l_wa = ls_dd01l tpara_wa = lt_para TABLES dd04t_tab_a = lt_dd04t dd04t_tab_n = lt_dd04t_n EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0. -subrc = sy-subrc. CONTINUE. ENDIF. READ TABLE lt_dd04t INTO ls_dd04t INDEX 1. *attributes ls_attributes-bname = ls_dd04l-as4user. PERFORM get_date USING ls_dd04l-as4date CHANGING ls_attributes-date_last_changed. ls_attributes-devclass = -devclass. PERFORM get_devclass USING -devclass CHANGING ls_attributes-devclass_descr. IF ls_dd04l-dtelmaster IS INITIAL. SELECT SINGLE masterlang FROM tadir INTO ls_dd04l-dtelmaster WHERE pgmid = 'R3TR' AND object = 'DTEL' AND obj_name = l_rollname. ENDIF. PERFORM get_spras USING ls_dd04l-dtelmaster CHANGING ls_attributes-laiso ls_attributes-sptxt. PERFORM get_user USING ls_dd04l-as4user CHANGING ls_attributes-name_text. *data type ls_data_type-domname = ls_dd04l-domname. PERFORM get_dom USING ls_data_type-domname CHANGING ls_data_type-domdescr. ASSIGN COMPONENT 'DATATYPE' OF STRUCTURE ls_dd04l TO . IF IS ASSIGNED. ls_data_type-datatype = . UNASSIGN . ENDIF. PERFORM get_dom_value_text USING 'DATATYPE' ls_dd04l-domname CHANGING ls_data_type-datadescr. ASSIGN COMPONENT 'LENG' OF STRUCTURE ls_dd04l TO . IF IS ASSIGNED. ls_data_type-dataleng = . UNASSIGN . ENDIF. ASSIGN COMPONENT 'DECIMALS' OF STRUCTURE ls_dd04l TO . IF IS ASSIGNED. ls_data_type-datadeci = . UNASSIGN . ENDIF. ASSIGN COMPONENT 'REFKIND' OF STRUCTURE ls_dd04l TO . IF IS ASSIGNED. ls_data_type-refkind = . UNASSIGN . ENDIF. ASSIGN COMPONENT 'REFTYPE' OF STRUCTURE ls_dd04l TO . IF IS ASSIGNED. ls_data_type-reftype = . UNASSIGN . ELSE. ls_data_type-reftype = '#'. "R/3 4.6 does not know ref type ENDIF. *further char ls_further_char-shlpname = ls_dd04l-shlpname. ls_further_char-shlpfield = ls_dd04l-shlpfield. ls_further_char-memoryid = ls_dd04l-memoryid. ls_further_char-deffdname = ls_dd04l-deffdname. ls_further_char-logflag = ls_dd04l-logflag. *field label ls_field_label-scrlen_s = ls_dd04l-scrlen1. ls_field_label-scrtext_s = ls_dd04t-scrtext_s. ls_field_label-scrlen_m = ls_dd04l-scrlen2. ls_field_label-scrtext_m = ls_dd04t-scrtext_m. ls_field_label-scrlen_l = ls_dd04l-scrlen3. ls_field_label-scrtext_l = ls_dd04t-scrtext_l. ls_field_label-headlen = ls_dd04l-headlen. ls_field_label-reptext = ls_dd04t-reptext. *dtel documentation PERFORM get_docu USING 'DE' -obj_name 'E' CHANGING lt_doc. *supplementary documentation CALL FUNCTION 'DOCU_GET_DZ' EXPORTING langu = sy-langu rollname = l_rollname TABLES dz_list = lt_docdz EXCEPTIONS OTHERS = 1. SORT lt_docdz BY addition. *** PERFORM get_tabstrip USING 'DDIC_R3TR_DTEL' space CHANGING lt_tabstrip. SORT lt_tabstrip BY tab_nr DESCENDING. READ TABLE lt_tabstrip ASSIGNING INDEX 1. l_tab_nr = -tab_nr. SORT lt_tabstrip BY tab_nr. CLEAR ls_tabstrip. ls_tabstrip-active_order = 1. LOOP AT lt_docdz ASSIGNING . l_tab_nr = l_tab_nr + 1. ls_tabstrip-form = 'DDIC_R3TR_DTEL'. CONCATENATE 'DOCDZ_' -addition INTO ls_tabstrip-id. ls_tabstrip-parent_id = 'DOCDZ'. ls_tabstrip-tab_nr = l_tab_nr. ls_tabstrip-text = -addition. APPEND ls_tabstrip TO lt_tabstrip. CLEAR ls_tabstrip. ENDLOOP. LOOP AT lt_tabstrip ASSIGNING . -empty = abap_false. CASE -id. WHEN 'DOC'. IF lt_doc IS INITIAL. -empty = abap_true. ENDIF. WHEN 'DOCDZ'. IF lt_docdz IS INITIAL. -empty = abap_true. ENDIF. ENDCASE. ENDLOOP. *HTML header PERFORM html_main_header USING tpt_ddic_dtel txt_data_element___1 -obj_name txt_active___1 txt_short_text___2 -descript space lt_tabstrip gt_link CHANGING lt_html. *HTML documentation IF NOT lt_doc IS INITIAL OR g_empty_tab = gc_empty_tab_display. PERFORM html_add_doc USING lt_doc 'DOC' abap_false CHANGING lt_html. ENDIF. *HTML supplementary documentation IF NOT lt_docdz IS INITIAL OR g_empty_tab = gc_empty_tab_display. PERFORM html_add_container_begin USING lt_tabstrip 'DOCDZ' abap_false CHANGING lt_html. l_active = abap_true. LOOP AT lt_docdz ASSIGNING . CLEAR: l_tab_id, l_doc_obj. REFRESH lt_doc. CONCATENATE 'DOCDZ_' -addition INTO l_tab_id. CALL FUNCTION 'DOCU_OBJECT_NAME_CONCATENATE' EXPORTING docu_id = 'DZ' element = -rollname addition = -addition IMPORTING object = l_doc_obj. PERFORM get_docu USING 'DZ' l_doc_obj 'E' CHANGING lt_doc. PERFORM html_add_doc USING lt_doc l_tab_id l_active CHANGING lt_html. l_active = abap_false. ENDLOOP. PERFORM html_add_container_end CHANGING lt_html. ENDIF. *HTML attributes PERFORM html_add_attributes_1 USING ls_attributes 'ATTRIBUTES' abap_false CHANGING lt_html. *HTML data type PERFORM html_add_data_type USING ls_data_type 'DATATYPE' abap_true CHANGING lt_html. *HTML further char PERFORM html_add_further_char USING ls_further_char 'FURTHERCHAR' abap_false CHANGING lt_html. *HTML field label PERFORM html_add_field_label USING ls_field_label 'FIELDLABEL' abap_false CHANGING lt_html. *HTML footer PERFORM html_main_footer USING lt_html. *download PERFORM download USING lt_html -pgmid -object -obj_name gc_extension_htm abap_true. ENDLOOP. ENDFORM. "r3tr_dtel *----------------------------------------------------------------------- * ddic_r3tr_enqu Aggregat-Header * (Sperrobjekte) *----------------------------------------------------------------------- FORM ddic_r3tr_enqu. DATA: lt_html TYPE it_string, lt_tabstrip TYPE it_tabstrip, l_viewname TYPE viewname, ls_attributes TYPE st_attributes, lt_tables TYPE it_tables, ls_tables TYPE st_tables, ls_dd25v TYPE dd25v, ls_dd25v_n TYPE dd25v, lt_dd26v TYPE STANDARD TABLE OF dd26v, lt_dd26v_n TYPE STANDARD TABLE OF dd26v, lt_dd27p TYPE STANDARD TABLE OF dd27p, lt_dd27p_n TYPE STANDARD TABLE OF dd27p, l_state TYPE dcenquget. FIELD-SYMBOLS: TYPE st_ztadir, TYPE dd27p. PERFORM get_tabstrip USING 'DDIC_R3TR_ENQU' space CHANGING lt_tabstrip. LOOP AT gt_ztadir ASSIGNING WHERE pgmid = 'R3TR' AND object = 'ENQU' AND aggtype = 'E' AND downloaded = abap_false. -downloaded = abap_true. CLEAR: ls_attributes. REFRESH: lt_html, lt_dd26v, lt_dd26v_n, lt_dd27p, lt_dd27p_n. l_viewname = -obj_name. CALL FUNCTION 'DD_ENQU_GET' EXPORTING enqu_name = l_viewname langu = sy-langu withtext = abap_true IMPORTING dd25v_wa_a = ls_dd25v dd25v_wa_n = ls_dd25v_n got_state = l_state TABLES dd26v_tab_a = lt_dd26v dd26v_tab_n = lt_dd26v_n dd27p_tab_a = lt_dd27p dd27p_tab_n = lt_dd27p_n EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0. -subrc = sy-subrc. CONTINUE. ENDIF. *attributes ls_attributes-bname = ls_dd25v-as4user. PERFORM get_date USING ls_dd25v-as4date CHANGING ls_attributes-date_last_changed. ls_attributes-devclass = -devclass. PERFORM get_devclass USING -devclass CHANGING ls_attributes-devclass_descr. IF ls_dd25v-masterlang IS INITIAL. SELECT SINGLE masterlang FROM tadir INTO ls_dd25v-masterlang WHERE pgmid = 'R3TR' AND object = 'ENQU' AND obj_name = l_viewname. ENDIF. PERFORM get_spras USING ls_dd25v-masterlang CHANGING ls_attributes-laiso ls_attributes-sptxt. PERFORM get_user USING ls_dd25v-as4user CHANGING ls_attributes-name_text. ls_attributes-display_rfcenable = abap_true. ls_attributes-rfcenable = ls_dd25v-globalflag. SORT lt_dd27p BY viewname objpos. LOOP AT lt_dd27p ASSIGNING WHERE fieldname = '*'. CLEAR ls_tables. IF -tabname = ls_dd25v-roottab. ls_tables-primary = abap_true. ENDIF. ls_tables-tabname = -tabname. PERFORM get_dom_value_text USING 'ENQMODE' -enqmode CHANGING ls_tables-enqmode. APPEND ls_tables TO lt_tables. ENDLOOP. PERFORM html_main_header USING tpt_ddic_enqu txt_lock_object___1 -obj_name txt_active___1 txt_short_text___2 -descript space lt_tabstrip gt_link CHANGING lt_html. PERFORM html_add_attributes_1 USING ls_attributes 'ATTRIBUTES' abap_false CHANGING lt_html. PERFORM html_add_tables USING lt_tables 'TABLES' abap_true CHANGING lt_html. DELETE lt_dd27p WHERE fieldname = '*'. PERFORM html_add_table USING 'ENQU_PARAM' lt_dd27p lt_dd27p 'LOCKPARAMETER' abap_false CHANGING lt_html. PERFORM html_main_footer USING lt_html. PERFORM download USING lt_html -pgmid -object -obj_name gc_extension_htm abap_true. ENDLOOP. ENDFORM. "r3tr_enqu_e *----------------------------------------------------------------------- * ddic_r3tr_shlp Suchhilfen *----------------------------------------------------------------------- FORM ddic_r3tr_shlp. DATA: lt_html TYPE it_string, l_shlpname TYPE shlpname, ls_dd30v TYPE dd30v, ls_dd30v_n TYPE dd30v, lt_dd31v TYPE STANDARD TABLE OF dd31v, lt_dd31v_n TYPE STANDARD TABLE OF dd31v, lt_dd32p TYPE STANDARD TABLE OF dd32p, lt_dd32p_n TYPE STANDARD TABLE OF dd32p, lt_dd33v TYPE STANDARD TABLE OF dd33v, lt_dd33v_n TYPE STANDARD TABLE OF dd33v, ls_attributes TYPE st_attributes, lt_tabstrip TYPE it_tabstrip, ls_definition TYPE st_definition_2, l_state TYPE dcshlpget. FIELD-SYMBOLS: TYPE st_ztadir, TYPE dd07v. PERFORM get_tabstrip USING 'DDIC_R3TR_SHLP' space CHANGING lt_tabstrip. LOOP AT gt_ztadir ASSIGNING WHERE pgmid = 'R3TR' AND object = 'SHLP' AND downloaded = abap_false. -downloaded = abap_true. CLEAR: ls_attributes, ls_definition. REFRESH: lt_html, lt_dd31v, lt_dd31v_n, lt_dd32p, lt_dd32p_n, lt_dd33v, lt_dd33v_n. l_shlpname = -obj_name. CALL FUNCTION 'DD_SHLP_GET' EXPORTING shlp_name = l_shlpname langu = sy-langu withtext = abap_true add_typeinfo = abap_true IMPORTING dd30v_wa_a = ls_dd30v dd30v_wa_n = ls_dd30v_n got_state = l_state TABLES dd31v_tab_a = lt_dd31v dd31v_tab_n = lt_dd31v_n dd32p_tab_a = lt_dd32p dd32p_tab_n = lt_dd32p_n dd33v_tab_a = lt_dd33v dd33v_tab_n = lt_dd33v_n EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0. -subrc = sy-subrc. CONTINUE. ENDIF. ls_attributes-bname = ls_dd30v-as4user. PERFORM get_date USING ls_dd30v-as4date CHANGING ls_attributes-date_last_changed. ls_attributes-devclass = -devclass. PERFORM get_devclass USING -devclass CHANGING ls_attributes-devclass_descr. IF ls_dd30v-ddlanguage IS INITIAL. SELECT SINGLE masterlang FROM tadir INTO ls_dd30v-ddlanguage WHERE pgmid = 'R3TR' AND object = 'SHLP' AND obj_name = l_shlpname. ENDIF. PERFORM get_spras USING ls_dd30v-ddlanguage CHANGING ls_attributes-laiso ls_attributes-sptxt. PERFORM get_user USING ls_dd30v-as4user CHANGING ls_attributes-name_text. ls_definition-selmethod = ls_dd30v-selmethod. ls_definition-texttab = ls_dd30v-texttab. ls_definition-dialogtype = ls_dd30v-dialogtype. ls_definition-hotkey = ls_dd30v-hotkey. ls_definition-selmexit = ls_dd30v-selmexit. PERFORM html_main_header USING tpt_ddic_shlp txt_elementary_srch_hlp -obj_name txt_active___1 txt_short_text___2 -descript space lt_tabstrip gt_link CHANGING lt_html. PERFORM html_add_attributes_1 USING ls_attributes 'ATTRIBUTES' abap_false CHANGING lt_html. PERFORM html_add_definition_2 USING ls_definition 'SHLP_PARAM' lt_dd32p 'DEFINITION' abap_true CHANGING lt_html. PERFORM html_main_footer USING lt_html. PERFORM download USING lt_html -pgmid -object -obj_name gc_extension_htm abap_true. ENDLOOP. ENDFORM. "r3tr_shlp *----------------------------------------------------------------------- * ddic_r3tr_tabl_1 SAP-Tabellen * (Strukturen) *----------------------------------------------------------------------- FORM ddic_r3tr_tabl_1. DATA: lt_html TYPE it_string, lt_tabstrip TYPE it_tabstrip, ls_attributes TYPE st_attributes, ls_deliv_maint TYPE st_deliv_maint, ls_dd02v TYPE dd02v, lt_dd03p TYPE STANDARD TABLE OF dd03p, ls_dd09l TYPE dd09l, lt_zdd03p_ext TYPE it_zdd03p_ext, l_state TYPE dctablget, lt_doc TYPE it_string, lt_ddranking TYPE it_dom_value, lt_exclass TYPE it_access, ls_exclass TYPE st_access. FIELD-SYMBOLS: TYPE st_ztadir, TYPE st_dom_value, TYPE st_tabstrip, TYPE ANY. PERFORM get_tabstrip USING 'DDIC_R3TR_TABL_1' space CHANGING lt_tabstrip. PERFORM get_dom_value_texts USING 'DDRANKING' CHANGING lt_ddranking. SORT lt_ddranking BY value DESCENDING. LOOP AT gt_ztadir ASSIGNING WHERE pgmid = 'R3TR' AND object = 'TABL' AND ( tabclass = 'INTTAB' OR tabclass = 'VIEW' OR tabclass = 'APPEND' ) AND downloaded = abap_false. -downloaded = abap_true. CLEAR: ls_attributes. REFRESH: lt_html, lt_dd03p, lt_doc, lt_exclass. PERFORM ddic_r3tr_tabl_get CHANGING ls_dd02v lt_dd03p lt_zdd03p_ext ls_dd09l. ls_attributes-bname = ls_dd02v-as4user. PERFORM get_date USING ls_dd02v-as4date CHANGING ls_attributes-date_last_changed. ls_attributes-devclass = -devclass. PERFORM get_devclass USING -devclass CHANGING ls_attributes-devclass_descr. PERFORM get_spras USING ls_dd02v-masterlang CHANGING ls_attributes-laiso ls_attributes-sptxt. PERFORM get_user USING ls_dd02v-as4user CHANGING ls_attributes-name_text. ls_deliv_maint-contflag = ls_dd02v-contflag. PERFORM get_dom_value_text USING 'CONTFLAG' ls_dd02v-contflag CHANGING ls_deliv_maint-contflag_text. PERFORM get_dom_value_text USING 'MAINTFLAG' ls_dd02v-mainflag CHANGING ls_deliv_maint-mainflag_text. *enhancement category ASSIGN COMPONENT 'EXCLASS' OF STRUCTURE ls_dd02v TO . IF IS ASSIGNED. LOOP AT lt_ddranking ASSIGNING . ls_exclass-ddtext = -text. ls_exclass-checked = abap_false. IF -value = . ls_exclass-checked = abap_true. ENDIF. APPEND ls_exclass TO lt_exclass. ENDLOOP. ENDIF. *documentation PERFORM get_docu USING 'TB' -obj_name 'E' CHANGING lt_doc. *** LOOP AT lt_tabstrip ASSIGNING . -empty = abap_false. CASE -id. WHEN 'DOC'. IF lt_doc IS INITIAL. -empty = abap_true. ENDIF. WHEN 'EXCLASS'. IF lt_exclass IS INITIAL. -hidden = abap_true. ENDIF. ENDCASE. ENDLOOP. *HTML header PERFORM html_main_header USING tpt_ddic_stru txt_structure -obj_name txt_active___1 txt_short_text___2 -descript space lt_tabstrip gt_link CHANGING lt_html. *HTML enhancement category IF NOT lt_exclass IS INITIAL. PERFORM html_add_box_radiobuttons USING txt_enhancement_category_for_s 'EXCLASS' lt_exclass 'EXCLASS' abap_false CHANGING lt_html. ENDIF. *HTML documentation IF NOT lt_doc IS INITIAL OR g_empty_tab = gc_empty_tab_display. PERFORM html_add_doc USING lt_doc 'DOC' abap_false CHANGING lt_html. ENDIF. *HTML attributes PERFORM html_add_attributes_1 USING ls_attributes 'ATTRIBUTES' abap_false CHANGING lt_html. *HTML components PERFORM html_add_table USING 'TABL1COMPO' lt_dd03p lt_zdd03p_ext 'COMPONENTS' abap_true CHANGING lt_html. *HTML entry help check PERFORM html_add_table USING 'TABL1ENTRY' lt_dd03p lt_zdd03p_ext 'ENTRY_HELP_CHECK' abap_false CHANGING lt_html. *HTML curr quant fields PERFORM html_add_table USING 'TABL1CURRQ' lt_dd03p lt_zdd03p_ext 'CURR_QUANT_FIELDS' abap_false CHANGING lt_html. *HTML footer PERFORM html_main_footer USING lt_html. * PERFORM download USING lt_html -pgmid -object -obj_name gc_extension_htm abap_true. ENDLOOP. ENDFORM. "r3tr_tabl_1 *----------------------------------------------------------------------- * ddic_r3tr_tabl_2 SAP-Tabellen * (Datenbanktabellen) *----------------------------------------------------------------------- FORM ddic_r3tr_tabl_2. DATA: lt_html TYPE it_string, lt_tabstrip TYPE it_tabstrip, l_name_value TYPE string, ls_attributes TYPE st_attributes, ls_deliv_maint TYPE st_deliv_maint, lt_access TYPE it_access, ls_dd02v TYPE dd02v, lt_dd03p TYPE STANDARD TABLE OF dd03p, ls_dd09l TYPE dd09l, lt_zdd03p_ext TYPE it_zdd03p_ext, l_state TYPE dctablget, lt_doc TYPE it_string, lt_ddranking TYPE it_dom_value, lt_exclass TYPE it_access, ls_exclass TYPE st_access, l_texttabname TYPE tabname, l_text_obj_name TYPE sobj_name, l_text_devclass TYPE devclass, lt_link TYPE it_link, ls_link TYPE st_link, lt_csv TYPE it_string, lt_xml TYPE it_string, lt_ts_params TYPE it_textinput, lt_ts_buffer TYPE it_access, lt_ts_buffer_type_l TYPE it_textinput, lt_ts_buffer_type_r TYPE it_textinput, lt_ts_bottom TYPE it_textinput, ls_textinput TYPE st_textinput, ls_access TYPE st_access, l_ddtext TYPE ddtext, lt_dom_value TYPE it_dom_value, lt_tmg_tech_details TYPE it_textinput, ls_tddat TYPE tddat, ls_tbrgt TYPE tbrgt, ls_tvdir TYPE tvdir, ls_objh TYPE objh, l_compare_flag TYPE string, lt_str TYPE it_string. FIELD-SYMBOLS: TYPE st_ztadir, TYPE st_dom_value, TYPE st_tabstrip, TYPE ANY, TYPE st_dom_value. PERFORM get_tabstrip USING 'DDIC_R3TR_TABL_2' space CHANGING lt_tabstrip. PERFORM get_dom_value_texts USING 'DDRANKING' CHANGING lt_ddranking. SORT lt_ddranking BY value DESCENDING. LOOP AT gt_ztadir ASSIGNING WHERE pgmid = 'R3TR' AND object = 'TABL' AND ( tabclass = 'CLUSTER' OR tabclass = 'POOL' OR tabclass = 'TRANSP' ) AND downloaded = abap_false. -downloaded = abap_true. CLEAR: ls_attributes, l_state, l_texttabname, l_text_obj_name, l_text_devclass, ls_textinput, l_ddtext, ls_tddat, ls_tbrgt, ls_tvdir, ls_objh, l_compare_flag. REFRESH: lt_html, lt_doc, lt_exclass, lt_link, lt_csv, lt_xml, lt_ts_params, lt_ts_buffer, lt_ts_buffer_type_l, lt_ts_buffer_type_r, lt_ts_bottom, lt_tmg_tech_details. PERFORM ddic_r3tr_tabl_get CHANGING ls_dd02v lt_dd03p lt_zdd03p_ext ls_dd09l. l_tabname = -obj_name. *attributes ls_attributes-bname = ls_dd02v-as4user. PERFORM get_date USING ls_dd02v-as4date CHANGING ls_attributes-date_last_changed. ls_attributes-devclass = -devclass. PERFORM get_devclass USING -devclass CHANGING ls_attributes-devclass_descr. PERFORM get_spras USING ls_dd02v-masterlang CHANGING ls_attributes-laiso ls_attributes-sptxt. PERFORM get_user USING ls_dd02v-as4user CHANGING ls_attributes-name_text. *deliv maint ls_deliv_maint-sqltab = ls_dd02v-sqltab. ls_deliv_maint-display_cont = abap_true. ls_deliv_maint-contflag = ls_dd02v-contflag. PERFORM get_dom_value_text USING 'CONTFLAG' ls_dd02v-contflag CHANGING ls_deliv_maint-contflag_text. ls_deliv_maint-display_main = abap_true. PERFORM get_dom_value_text USING 'MAINTFLAG' ls_dd02v-mainflag CHANGING ls_deliv_maint-mainflag_text. *technical settings * logical storage parameters CLEAR ls_textinput. ls_textinput-name = txt_data_class. ls_textinput-value = ls_dd09l-tabart. SELECT SINGLE darttext FROM dartt INTO l_ddtext WHERE tabart = ls_dd09l-tabart AND ddlangu = sy-langu. ls_textinput-description = l_ddtext. ls_textinput-input = abap_true. APPEND ls_textinput TO lt_ts_params. CLEAR ls_textinput. ls_textinput-name = txt_size_category. ls_textinput-value = ls_dd09l-tabkat. ls_textinput-input = abap_true. APPEND ls_textinput TO lt_ts_params. * buffering PERFORM get_dom_value_texts USING 'BUFALLOW' CHANGING lt_dom_value. LOOP AT lt_dom_value ASSIGNING . CLEAR ls_access. ls_access-ddtext = -text. IF -value = ls_dd09l-bufallow. ls_access-checked = abap_true. ENDIF. APPEND ls_access TO lt_ts_buffer. ENDLOOP. * buffering type CLEAR ls_textinput. ls_textinput-name = txt_single_records_buff. IF ls_dd09l-pufferung = 'P'. ls_textinput-value = abap_true. ENDIF. ls_textinput-flag = abap_true. APPEND ls_textinput TO lt_ts_buffer_type_l. CLEAR ls_textinput. ls_textinput-name = txt_generic_area_buffered. IF ls_dd09l-pufferung = 'G'. ls_textinput-value = abap_true. ENDIF. ls_textinput-flag = abap_true. APPEND ls_textinput TO lt_ts_buffer_type_l. CLEAR ls_textinput. ls_textinput-name = txt_fully_buffered. IF ls_dd09l-pufferung = 'X'. ls_textinput-value = abap_true. ENDIF. ls_textinput-flag = abap_true. APPEND ls_textinput TO lt_ts_buffer_type_l. CLEAR ls_textinput. ls_textinput-space = abap_true. APPEND ls_textinput TO lt_ts_buffer_type_r. CLEAR ls_textinput. ls_textinput-name = txt_no_of_key_fields. PERFORM get_unpacked USING ls_dd09l-schfeldanz CHANGING ls_textinput-value. ls_textinput-input = abap_true. APPEND ls_textinput TO lt_ts_buffer_type_r. CLEAR ls_textinput. ls_textinput-space = abap_true. APPEND ls_textinput TO lt_ts_buffer_type_r. * bottom CLEAR ls_textinput. ls_textinput-name = txt_log_data_changes. ls_textinput-value = ls_dd09l-protokoll. ls_textinput-flag = abap_true. APPEND ls_textinput TO lt_ts_bottom. *enhancement category ASSIGN COMPONENT 'EXCLASS' OF STRUCTURE ls_dd02v TO . IF IS ASSIGNED. LOOP AT lt_ddranking ASSIGNING . ls_exclass-ddtext = -text. ls_exclass-checked = abap_false. IF -value = . ls_exclass-checked = abap_true. ENDIF. APPEND ls_exclass TO lt_exclass. ENDLOOP. ENDIF. *Table Maintenance Generator SELECT SINGLE * FROM tvdir INTO ls_tvdir WHERE tabname = l_tabname. SELECT SINGLE * FROM objh INTO ls_objh WHERE objectname = l_tabname AND objecttype = 'S'. * technical dialog details SELECT SINGLE * FROM tddat INTO ls_tddat WHERE tabname = l_tabname. SELECT SINGLE * FROM tbrgt INTO ls_tbrgt WHERE brgru = ls_tddat-cclass AND spras = sy-langu. * CLEAR ls_textinput. ls_textinput-name = txt_authorization_group. ls_textinput-value = ls_tddat-cclass. PERFORM encode_html CHANGING ls_textinput-value. ls_textinput-input = abap_true. ls_textinput-description = ls_tbrgt-bezei. PERFORM encode_html CHANGING ls_textinput-description. APPEND ls_textinput TO lt_tmg_tech_details. * CLEAR ls_textinput. ls_textinput-name = txt_authorization_object___1. ls_textinput-value = ls_tbrgt-brobj. APPEND ls_textinput TO lt_tmg_tech_details. * CLEAR ls_textinput. ls_textinput-name = txt_function_group. ls_textinput-value = ls_tvdir-area. ls_textinput-input = abap_true. APPEND ls_textinput TO lt_tmg_tech_details. * CLEAR ls_textinput. ls_textinput-name = txt_package. ls_textinput-value = ls_tvdir-devclass. ls_textinput-input = abap_true. APPEND ls_textinput TO lt_tmg_tech_details. * dialog data transport details PERFORM get_dom_value_text USING 'OBJIMP' ls_objh-importable CHANGING l_compare_flag. *Table Documentation PERFORM get_docu USING 'TB' -obj_name 'E' CHANGING lt_doc. *Text table CLEAR ls_link. CALL FUNCTION 'TABLE_GET_TEXTTABLE' EXPORTING checktable = l_tabname IMPORTING tabname = l_texttabname EXCEPTIONS OTHERS = 1. IF sy-subrc = 0. l_text_obj_name = l_texttabname. SELECT SINGLE devclass FROM tadir INTO l_text_devclass WHERE pgmid = -pgmid AND object = -object AND obj_name = l_text_obj_name. IF l_text_devclass = g_pack. CONCATENATE l_texttabname '.' gc_extension_htm INTO ls_link-href. ls_link-onclick = 'window.location=this.href'. ENDIF. ls_link-descript = txt_text_table. ls_link-title = l_texttabname. APPEND ls_link TO lt_link. ENDIF. *Content CLEAR ls_link. READ TABLE gt_tadir TRANSPORTING NO FIELDS WITH KEY obj_name = -obj_name. IF sy-subrc = 0. * csv IF g_add_db_format_csv = abap_true. PERFORM data2csv USING l_tabname CHANGING lt_csv. PERFORM download USING lt_csv -pgmid -object -obj_name gc_extension_csv abap_false. ls_link-href = -obj_name. SPLIT ls_link-href AT '/' INTO TABLE lt_str. LOOP AT lt_str INTO ls_link-href. ENDLOOP. CONCATENATE ls_link-href '.' gc_extension_csv INTO ls_link-href. ls_link-onclick = 'window.open(this.href)'. ls_link-descript = gc_extension_csv. APPEND ls_link TO lt_link. ENDIF. * xml IF g_add_db_format_xml = abap_true. PERFORM data2xml USING l_tabname CHANGING lt_xml. PERFORM download USING lt_xml -pgmid -object -obj_name gc_extension_xml abap_false. ls_link-href = -obj_name. SPLIT ls_link-href AT '/' INTO TABLE lt_str. LOOP AT lt_str INTO ls_link-href. ENDLOOP. CONCATENATE ls_link-href '.' gc_extension_xml INTO ls_link-href. ls_link-onclick = 'window.open(this.href)'. ls_link-descript = gc_extension_xml. APPEND ls_link TO lt_link. ENDIF. ENDIF. *** LOOP AT lt_tabstrip ASSIGNING . -empty = abap_false. CASE -id. WHEN 'DOC'. IF lt_doc IS INITIAL. -empty = abap_true. ENDIF. WHEN 'EXCLASS'. IF lt_exclass IS INITIAL. -hidden = abap_true. ENDIF. ENDCASE. ENDLOOP. CASE -tabclass. WHEN 'CLUSTER'. l_name_value = txt_cluster_table. WHEN 'POOL'. l_name_value = txt_pooled_table. WHEN 'TRANSP'. l_name_value = txt_transp_table. WHEN OTHERS. l_name_value = txt_table. ENDCASE. *HTML header PERFORM html_main_header USING tpt_ddic_tabl l_name_value -obj_name txt_active___1 txt_short_text___2 -descript space lt_tabstrip lt_link CHANGING lt_html. *HTML technical settings PERFORM html_add_tech_settings USING txt_logical_storage_parameters lt_ts_params txt_buffering lt_ts_buffer txt_buffering_type lt_ts_buffer_type_l lt_ts_buffer_type_r lt_ts_bottom 'TECH_SETTINGS' abap_false CHANGING lt_html. *HTML enhancement category IF NOT lt_exclass IS INITIAL. PERFORM html_add_box_radiobuttons USING txt_enhancement_category_for_s 'EXCLASS' lt_exclass 'EXCLASS' abap_false CHANGING lt_html. ENDIF. *HTML table maintenance generator PERFORM html_add_tablemaintgenerator USING txt_technical_dialog_details lt_tmg_tech_details txt_maintenance_screens ls_tvdir-type ls_tvdir-liste ls_tvdir-detail txt_dialog_data_transport_deta ls_tvdir-flag l_compare_flag 'TABLE_MAINT_GEN' abap_false CHANGING lt_html. *HTML documentation IF NOT lt_doc IS INITIAL OR g_empty_tab = gc_empty_tab_display. PERFORM html_add_doc USING lt_doc 'DOC' abap_false CHANGING lt_html. ENDIF. *HTML attributes PERFORM html_add_attributes_1 USING ls_attributes 'ATTRIBUTES' abap_false CHANGING lt_html. PERFORM html_add_deliv_maint USING ls_deliv_maint lt_access 'DELIVMAINT' abap_false CHANGING lt_html. *HTML fields PERFORM html_add_table USING 'TABL2FIELD' lt_dd03p lt_zdd03p_ext 'FIELDS' abap_true CHANGING lt_html. *HTML entry help check PERFORM html_add_table USING 'TABL2ENTRY' lt_dd03p lt_zdd03p_ext 'ENTRY_HELP_CHECK' abap_false CHANGING lt_html. *HTML curr quant fields PERFORM html_add_table USING 'TABL2CURRQ' lt_dd03p lt_zdd03p_ext 'CURR_QUANT_FIELDS' abap_false CHANGING lt_html. *HTML footer PERFORM html_main_footer USING lt_html. PERFORM download USING lt_html -pgmid -object -obj_name gc_extension_htm abap_true. ENDLOOP. ENDFORM. "r3tr_tabl_2 *----------------------------------------------------------------------- * ddic_r3tr_tabl_get SAP-Tabellen *----------------------------------------------------------------------- FORM ddic_r3tr_tabl_get CHANGING cs_ztadir TYPE st_ztadir cs_dd02v TYPE dd02v ct_dd03p TYPE dd03ttyp ct_zdd03p_ext TYPE it_zdd03p_ext cs_dd09l TYPE dd09l. CLEAR: cs_dd02v, cs_dd09l. REFRESH: ct_dd03p, ct_zdd03p_ext. DATA: l_strukname TYPE strukname, ls_dd02v_n TYPE dd02v, lt_dd03p_n TYPE STANDARD TABLE OF dd03p, lt_dd05m TYPE STANDARD TABLE OF dd05m, lt_dd05m_n TYPE STANDARD TABLE OF dd05m, lt_dd08v TYPE STANDARD TABLE OF dd08v, lt_dd08v_n TYPE STANDARD TABLE OF dd08v, ls_dd09v_n TYPE dd09v, lt_dd12v TYPE STANDARD TABLE OF dd12v, lt_dd12v_n TYPE STANDARD TABLE OF dd12v, lt_dd17v TYPE STANDARD TABLE OF dd17v, lt_dd17v_n TYPE STANDARD TABLE OF dd17v, lt_dd35v TYPE STANDARD TABLE OF dd35v, lt_dd35v_n TYPE STANDARD TABLE OF dd35v, lt_dd36m TYPE STANDARD TABLE OF dd36m, lt_dd36m_n TYPE STANDARD TABLE OF dd36m, ls_zdd03p_ext TYPE st_zdd03p_ext, l_state TYPE dctablget. FIELD-SYMBOLS: TYPE dd03p. l_strukname = cs_ztadir-obj_name. CALL FUNCTION 'DD_TABL_GET' EXPORTING tabl_name = l_strukname withtext = abap_true add_typeinfo = abap_true IMPORTING dd02v_wa_a = cs_dd02v dd02v_wa_n = ls_dd02v_n dd09l_wa_a = cs_dd09l dd09l_wa_n = ls_dd09v_n got_state = l_state TABLES dd03p_tab_a = ct_dd03p dd03p_tab_n = lt_dd03p_n dd05m_tab_a = lt_dd05m dd05m_tab_n = lt_dd05m_n dd08v_tab_a = lt_dd08v dd08v_tab_n = lt_dd08v_n dd12v_tab_a = lt_dd12v dd12v_tab_n = lt_dd12v_n dd17v_tab_a = lt_dd17v dd17v_tab_n = lt_dd17v_n dd35v_tab_a = lt_dd35v dd35v_tab_n = lt_dd35v_n dd36m_tab_a = lt_dd36m dd36m_tab_n = lt_dd36m_n EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0. cs_ztadir-subrc = sy-subrc. RETURN. ENDIF. IF cs_dd02v-masterlang IS INITIAL. SELECT SINGLE masterlang FROM tadir INTO cs_dd02v-masterlang WHERE pgmid = 'R3TR' AND object = 'TABL' AND obj_name = l_strukname. ENDIF. LOOP AT ct_dd03p ASSIGNING . IF -fieldname = '.INCLU--AP'. -fieldname = '.APPEND'. ENDIF. IF -rollname IS INITIAL AND NOT -precfield IS INITIAL. SELECT SINGLE tabname FROM dd02l INTO -rollname WHERE tabname = -precfield AND as4local = 'A'. IF sy-subrc = 0. -datatype = 'STRU'. ELSE. SELECT SINGLE typename FROM dd40l INTO -rollname WHERE typename = -precfield AND as4local = 'A'. IF sy-subrc = 0. -datatype = 'TTYP'. ENDIF. ENDIF. ENDIF. CLEAR ls_zdd03p_ext. CASE -shlporigin. WHEN 'F'. ls_zdd03p_ext-shlporigin_f = abap_true. WHEN 'P'. ls_zdd03p_ext-shlporigin_p = abap_true. ENDCASE. IF NOT -shlporigin IS INITIAL. PERFORM get_dom_value_text USING 'SHLPORIGIN' -shlporigin CHANGING ls_zdd03p_ext-shlporigin_ddtext. ENDIF. APPEND ls_zdd03p_ext TO ct_zdd03p_ext. ENDLOOP. ENDFORM. "r3tr_tabl_get *----------------------------------------------------------------------- * ddic_r3tr_ttyp Tabellentypen *----------------------------------------------------------------------- FORM ddic_r3tr_ttyp. DATA: lt_html TYPE it_string, lt_tabstrip TYPE it_tabstrip, l_typename TYPE typename, lt_dom_value_accessmode TYPE it_dom_value, lt_dom_value_keydef TYPE it_dom_value, lt_dom_value_keykind TYPE it_dom_value, ls_access TYPE st_access, ls_attributes TYPE st_attributes, ls_line_type TYPE st_line_type, ls_init_access TYPE st_init_access, ls_key TYPE st_key, lt_accessmode TYPE it_access, lt_keykind TYPE it_access, lt_keydef TYPE it_access, ls_dd40v TYPE dd40v, ls_dd40v_n TYPE dd40v, ls_dd42v TYPE dd42v, lt_dd42v TYPE STANDARD TABLE OF dd42v, lt_dd42v_n TYPE STANDARD TABLE OF dd42v, l_state TYPE dcttypget, l_ttypkind TYPE c. FIELD-SYMBOLS: TYPE ANY, TYPE ANY, TYPE ANY, TYPE ANY, TYPE ANY, TYPE ANY, TYPE ANY, TYPE ANY, TYPE ANY, TYPE st_ztadir, TYPE st_dom_value. PERFORM get_tabstrip USING 'DDIC_R3TR_TTYP' space CHANGING lt_tabstrip. PERFORM get_dom_value_texts USING 'ACCESSMODE' CHANGING lt_dom_value_accessmode. PERFORM get_dom_value_texts USING 'TTYPKEYDEF' CHANGING lt_dom_value_keydef. PERFORM get_dom_value_texts USING 'KEYKIND' CHANGING lt_dom_value_keykind. LOOP AT gt_ztadir ASSIGNING WHERE pgmid = 'R3TR' AND object = 'TTYP' AND downloaded = abap_false. -downloaded = abap_true. CLEAR: ls_attributes, ls_line_type, ls_init_access, ls_key, l_ttypkind. REFRESH: lt_html, lt_dd42v, lt_dd42v_n. l_typename = -obj_name. CALL FUNCTION 'DD_TTYP_GET' EXPORTING ttyp_name = l_typename langu = sy-langu withtext = abap_true IMPORTING got_state = l_state dd40v_wa_a = ls_dd40v dd40v_wa_n = ls_dd40v_n TABLES dd42v_tab_a = lt_dd42v dd42v_tab_n = lt_dd42v_n EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0. -subrc = sy-subrc. CONTINUE. ENDIF. ASSIGN COMPONENT 'TTYPKIND' OF STRUCTURE ls_dd40v TO . IF IS ASSIGNED. l_ttypkind = . UNASSIGN . ENDIF. *attributes ls_attributes-bname = ls_dd40v-as4user. PERFORM get_date USING ls_dd40v-as4date CHANGING ls_attributes-date_last_changed. ls_attributes-devclass = -devclass. PERFORM get_devclass USING -devclass CHANGING ls_attributes-devclass_descr. IF ls_dd40v-ddlanguage IS INITIAL. SELECT SINGLE masterlang FROM tadir INTO ls_dd40v-ddlanguage WHERE pgmid = 'R3TR' AND object = 'TTYP' AND obj_name = l_typename. ENDIF. PERFORM get_spras USING ls_dd40v-ddlanguage CHANGING ls_attributes-laiso ls_attributes-sptxt. PERFORM get_user USING ls_dd40v-as4user CHANGING ls_attributes-name_text. *linetype ls_line_type-rowkind = ls_dd40v-rowkind. ASSIGN COMPONENT 'ROWKIND' OF STRUCTURE ls_dd40v TO . IF IS ASSIGNED. ls_line_type-rowkind = . UNASSIGN . ENDIF. ASSIGN COMPONENT 'ROWTYPE' OF STRUCTURE ls_dd40v TO . IF IS ASSIGNED. ls_line_type-rowtype = . UNASSIGN . ENDIF. PERFORM get_dom_value_text USING 'TYPEKIND' ls_dd40v-rowtype CHANGING ls_line_type-rowdescr. ASSIGN COMPONENT 'DATATYPE' OF STRUCTURE ls_dd40v TO . IF IS ASSIGNED. ls_line_type-datatype = . UNASSIGN . ENDIF. ASSIGN COMPONENT 'LENG' OF STRUCTURE ls_dd40v TO . IF IS ASSIGNED. ls_line_type-dataleng = . UNASSIGN . ENDIF. ASSIGN COMPONENT 'DECIMALS' OF STRUCTURE ls_dd40v TO . IF IS ASSIGNED. ls_line_type-datadeci = . UNASSIGN . ENDIF. ls_line_type-datadeci = ls_dd40v-decimals. ASSIGN COMPONENT 'REFTYPE' OF STRUCTURE ls_dd40v TO . IF IS ASSIGNED. ls_line_type-reftype = . PERFORM get_dom_value_text USING 'DDREFTYPE' CHANGING ls_line_type-refdescr. UNASSIGN . ELSE. ls_line_type-reftype = '#'. " R/3 4.6 does not know ref type ENDIF. ASSIGN COMPONENT 'RANGE_CTYP' OF STRUCTURE ls_dd40v TO . IF IS ASSIGNED. ls_line_type-range_ctyp = . UNASSIGN . ENDIF. ASSIGN COMPONENT 'CTDATATYPE' OF STRUCTURE ls_dd40v TO . IF IS ASSIGNED. ls_line_type-ctdatatype = . UNASSIGN . ENDIF. ASSIGN COMPONENT 'CTLENG' OF STRUCTURE ls_dd40v TO . IF IS ASSIGNED. ls_line_type-ctleng = . UNASSIGN . ENDIF. ASSIGN COMPONENT 'CTDECIMALS' OF STRUCTURE ls_dd40v TO . IF IS ASSIGNED. ls_line_type-ctdecimals = . UNASSIGN . ENDIF. *initaccess ASSIGN COMPONENT 'OCCURS' OF STRUCTURE ls_dd40v TO . IF IS ASSIGNED. ls_init_access-occurs = . UNASSIGN . ELSE. ls_init_access-unknown = abap_true. ENDIF. REFRESH lt_accessmode. LOOP AT lt_dom_value_accessmode ASSIGNING . CLEAR ls_access. ls_access-ddtext = -text. IF ls_dd40v-accessmode = -value. ls_access-checked = abap_true. ENDIF. APPEND ls_access TO lt_accessmode. ENDLOOP. *key REFRESH lt_keydef. LOOP AT lt_dom_value_keydef ASSIGNING . CLEAR ls_access. ls_access-ddtext = -text. IF ls_dd40v-keydef = -value. ls_access-checked = abap_true. ENDIF. APPEND ls_access TO lt_keydef. ENDLOOP. REFRESH lt_keykind. LOOP AT lt_dom_value_keykind ASSIGNING . CLEAR ls_access. ls_access-ddtext = -text. IF ls_dd40v-keykind = -value. ls_access-checked = abap_true. ENDIF. APPEND ls_access TO lt_keykind. ENDLOOP. *** IF ls_dd40v-generic = abap_true. ls_line_type-info = txt_type_is_generic. ls_init_access-info1 = txt_type_is_generic. ls_key-info = txt_type_is_generic. ENDIF. IF l_ttypkind = 'R'. ls_init_access-info2 = txt_access_type_is_given_for_a. CONCATENATE txt_key_attribute_defined_for1 txt_key_attribute_defined_for2 INTO ls_key-info SEPARATED BY space. ENDIF. ************** PERFORM html_main_header USING tpt_ddic_ttyp txt_table_type -obj_name txt_active___1 txt_short_text___2 -descript space lt_tabstrip gt_link CHANGING lt_html. *HTML attributes PERFORM html_add_attributes_1 USING ls_attributes 'ATTRIBUTES' abap_false CHANGING lt_html. *HTML line type IF l_ttypkind = 'R'. PERFORM html_add_line_type_2 USING ls_line_type 'LINETYPE' abap_true CHANGING lt_html. ELSE. PERFORM html_add_line_type_1 USING ls_line_type 'LINETYPE' abap_true CHANGING lt_html. ENDIF. *HTML init access PERFORM html_add_init_access USING ls_init_access lt_accessmode 'INITACCESS' abap_false CHANGING lt_html. *HTML key PERFORM html_add_key USING ls_key lt_keydef lt_keykind 'TTYP_DD42V' lt_dd42v 'KEY' abap_false CHANGING lt_html. * PERFORM html_main_footer USING lt_html. PERFORM download USING lt_html -pgmid -object -obj_name gc_extension_htm abap_true. ENDLOOP. ENDFORM. "r3tr_ttyp *----------------------------------------------------------------------- * ddic_r3tr_type Suchhilfen *----------------------------------------------------------------------- FORM ddic_r3tr_type. DATA: lt_html TYPE it_string, l_progname TYPE progname, ls_trdir TYPE trdir, lt_source TYPE it_string, ls_attributes TYPE st_attributes, lt_tabstrip TYPE it_tabstrip. FIELD-SYMBOLS: TYPE st_ztadir. PERFORM get_tabstrip USING 'DDIC_R3TR_TYPE' space CHANGING lt_tabstrip. LOOP AT gt_ztadir ASSIGNING WHERE pgmid = 'R3TR' AND object = 'TYPE' AND downloaded = abap_false. -downloaded = abap_true. CLEAR: ls_attributes. REFRESH: lt_html. CALL FUNCTION 'RS_TADIR_TO_PROGNAME' EXPORTING object = 'TYPE' obj_name = -obj_name IMPORTING progname = l_progname. SELECT SINGLE * FROM trdir INTO ls_trdir WHERE name = l_progname. IF sy-subrc <> 0. -subrc = sy-subrc. CONTINUE. ENDIF. ls_attributes-bname = ls_trdir-unam. PERFORM get_date USING ls_trdir-udat CHANGING ls_attributes-date_last_changed. ls_attributes-devclass = -devclass. PERFORM get_devclass USING -devclass CHANGING ls_attributes-devclass_descr. IF ls_trdir-rload IS INITIAL. SELECT SINGLE masterlang FROM tadir INTO ls_trdir-rload WHERE pgmid = 'R3TR' AND object = 'TYPE' AND obj_name = -obj_name. ENDIF. PERFORM get_spras USING ls_trdir-rload CHANGING ls_attributes-laiso ls_attributes-sptxt. PERFORM get_user USING ls_trdir-unam CHANGING ls_attributes-name_text. PERFORM try_read_report USING l_progname CHANGING lt_source. *HTML PERFORM html_main_header USING tpt_ddic_type txt_type_group -obj_name txt_active___1 txt_short_text___2 -descript 'makeDivSize(''SOURCECODE'')' lt_tabstrip gt_link CHANGING lt_html. PERFORM html_add_attributes_1 USING ls_attributes 'ATTRIBUTES' abap_false CHANGING lt_html. PERFORM html_add_sourcecode USING lt_source -obj_name space space gc_extension_txt 'SOURCECODE' abap_true CHANGING lt_html. PERFORM html_main_footer USING lt_html. PERFORM download USING lt_html -pgmid -object -obj_name gc_extension_htm abap_true. IF g_add_sourcecode = abap_true. PERFORM download USING lt_source -pgmid -object -obj_name gc_extension_txt abap_false. ENDIF. ENDLOOP. ENDFORM. "r3tr_type *----------------------------------------------------------------------- * ddic_r3tr_view Aggregat-Header * (Views, Matchcode-Objekte, Sperrobjekte) *----------------------------------------------------------------------- FORM ddic_r3tr_view. DATA: lt_html TYPE it_string, lt_tabstrip TYPE it_tabstrip, l_viewname TYPE viewname, ls_attributes TYPE st_attributes, ls_tabname TYPE st_tabname, lt_tabname TYPE it_tabname, ls_join_conditions TYPE st_join_conditions, lt_join_conditions TYPE it_join_conditions, lt_tables TYPE it_tables, ls_table TYPE st_table_structure, ls_deliv_maint TYPE st_deliv_maint, lt_dom_value_viewgrant TYPE it_dom_value, lt_access TYPE it_access, ls_access TYPE st_access, ls_dd09v TYPE dd09v, ls_dd09v_n TYPE dd09v, ls_dd25v TYPE dd25v, ls_dd25v_n TYPE dd25v, lt_dd26v TYPE STANDARD TABLE OF dd26v, lt_dd26v_n TYPE STANDARD TABLE OF dd26v, lt_dd27p TYPE STANDARD TABLE OF dd27p, lt_dd27p_n TYPE STANDARD TABLE OF dd27p, lt_dd28v TYPE STANDARD TABLE OF dd28v, lt_dd28v_n TYPE STANDARD TABLE OF dd28v, l_state TYPE dcviewget, l_id TYPE string, l_txt_viewclass TYPE as4text, lt_ts_buffer TYPE it_access, lt_ts_buffer_type_l TYPE it_textinput, lt_ts_buffer_type_r TYPE it_textinput, ls_textinput TYPE st_textinput, l_ddtext TYPE ddtext, lt_dom_value TYPE it_dom_value, lt_create TYPE it_string, l_filename TYPE string. FIELD-SYMBOLS: TYPE st_ztadir, TYPE st_dom_value, TYPE dd26v, TYPE dd27p, TYPE dd28v, TYPE st_tabstrip. PERFORM get_dom_value_texts USING 'VIEWGRANT' CHANGING lt_dom_value_viewgrant. LOOP AT gt_ztadir ASSIGNING WHERE pgmid = 'R3TR' AND object = 'VIEW' AND downloaded = abap_false. -downloaded = abap_true. CLEAR: ls_attributes, l_txt_viewclass, ls_textinput, l_ddtext, l_filename. REFRESH: lt_html, lt_dd26v, lt_dd26v_n, lt_dd27p, lt_dd27p_n, lt_dd28v, lt_dd28v_n, lt_ts_buffer, lt_ts_buffer_type_l, lt_ts_buffer_type_r, lt_create. l_viewname = -obj_name. CALL FUNCTION 'DD_VIEW_GET' EXPORTING view_name = l_viewname langu = sy-langu withtext = abap_true IMPORTING dd25v_wa_a = ls_dd25v dd25v_wa_n = ls_dd25v_n dd09l_wa_a = ls_dd09v dd09l_wa_n = ls_dd09v_n got_state = l_state TABLES dd26v_tab_a = lt_dd26v dd26v_tab_n = lt_dd26v_n dd27p_tab_a = lt_dd27p dd27p_tab_n = lt_dd27p_n dd28v_tab_a = lt_dd28v dd28v_tab_n = lt_dd28v_n EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0. -subrc = sy-subrc. CONTINUE. ENDIF. *attributes ls_attributes-bname = ls_dd25v-as4user. PERFORM get_date USING ls_dd25v-as4date CHANGING ls_attributes-date_last_changed. ls_attributes-devclass = -devclass. PERFORM get_devclass USING -devclass CHANGING ls_attributes-devclass_descr. IF ls_dd25v-masterlang IS INITIAL. SELECT SINGLE masterlang FROM tadir INTO ls_dd25v-masterlang WHERE pgmid = 'R3TR' AND object = 'VIEW' AND obj_name = l_viewname. ENDIF. PERFORM get_spras USING ls_dd25v-masterlang CHANGING ls_attributes-laiso ls_attributes-sptxt. PERFORM get_user USING ls_dd25v-as4user CHANGING ls_attributes-name_text. IF ls_dd25v-viewclass CO 'A'. ls_attributes-display_appview = abap_true. ls_attributes-appview = ls_dd25v-roottab. ENDIF. *technical settings IF NOT ls_dd09v-tabname IS INITIAL. * buffering PERFORM get_dom_value_texts USING 'BUFALLOW' CHANGING lt_dom_value. LOOP AT lt_dom_value ASSIGNING . CLEAR ls_access. ls_access-ddtext = -text. IF -value = ls_dd09v-bufallow. ls_access-checked = abap_true. ENDIF. APPEND ls_access TO lt_ts_buffer. ENDLOOP. * buffering type CLEAR ls_textinput. ls_textinput-name = txt_single_records_buff. IF ls_dd09v-pufferung = 'P'. ls_textinput-value = abap_true. ENDIF. ls_textinput-flag = abap_true. APPEND ls_textinput TO lt_ts_buffer_type_l. CLEAR ls_textinput. ls_textinput-name = txt_generic_area_buffered. IF ls_dd09v-pufferung = 'G'. ls_textinput-value = abap_true. ENDIF. ls_textinput-flag = abap_true. APPEND ls_textinput TO lt_ts_buffer_type_l. CLEAR ls_textinput. ls_textinput-name = txt_fully_buffered. IF ls_dd09v-pufferung = 'X'. ls_textinput-value = abap_true. ENDIF. ls_textinput-flag = abap_true. APPEND ls_textinput TO lt_ts_buffer_type_l. CLEAR ls_textinput. ls_textinput-space = abap_true. APPEND ls_textinput TO lt_ts_buffer_type_r. CLEAR ls_textinput. ls_textinput-name = txt_no_of_key_fields. PERFORM get_unpacked USING ls_dd09v-schfeldanz CHANGING ls_textinput-value. ls_textinput-input = abap_true. APPEND ls_textinput TO lt_ts_buffer_type_r. CLEAR ls_textinput. ls_textinput-space = abap_true. APPEND ls_textinput TO lt_ts_buffer_type_r. ENDIF. *CREATE Statement CALL FUNCTION 'DB_GET_VIEW_DEFINITION_RAW' EXPORTING viewname = l_viewname TABLES text_tab = lt_create EXCEPTIONS OTHERS = 1. *tables for joining REFRESH lt_tabname. * data LOOP AT lt_dd26v ASSIGNING . ls_tabname-tabname = -tabname. APPEND ls_tabname TO lt_tabname. ENDLOOP. SORT lt_tabname BY tabname. DELETE ADJACENT DUPLICATES FROM lt_tabname. *join conditions - data REFRESH lt_join_conditions. IF ls_dd25v-viewclass CO 'HDCV'. * data REFRESH lt_join_conditions. SORT lt_dd28v BY position. LOOP AT lt_dd28v ASSIGNING . IF -negation = 'JL'. ls_join_conditions-tabname_l = -tabname. ls_join_conditions-fieldname_l = -fieldname. PERFORM get_gui_operator USING -operator CHANGING ls_join_conditions-operator. ELSE. ls_join_conditions-tabname_r = -tabname. ls_join_conditions-fieldname_r = -fieldname. APPEND ls_join_conditions TO lt_join_conditions. ENDIF. ENDLOOP. ENDIF. *selection condition IF ls_dd25v-viewclass CO 'HDCV'. DELETE lt_dd28v WHERE constants = space. ENDIF. *maint status - access REFRESH lt_access. LOOP AT lt_dom_value_viewgrant ASSIGNING . CLEAR ls_access. IF ls_dd25v-viewclass CO 'HCV' OR -value NA 'MU'. ls_access-ddtext = -text. IF ls_dd25v-viewgrant = -value. ls_access-checked = abap_true. ENDIF. APPEND ls_access TO lt_access. ENDIF. ENDLOOP. *maint status - others CLEAR ls_deliv_maint. ls_deliv_maint-display_cont = abap_false. ls_deliv_maint-display_main = abap_false. IF ls_dd25v-viewclass CO 'CV'. ls_deliv_maint-display_cont = abap_true. ls_deliv_maint-contflag = ls_dd25v-customauth. PERFORM get_dom_value_text USING 'CONTFLAG' ls_dd25v-customauth CHANGING ls_deliv_maint-contflag_text. ENDIF. IF ls_dd25v-viewclass CO 'DPCV'. ls_deliv_maint-display_main = abap_true. PERFORM get_dom_value_text USING 'MAINTFLAG' ls_dd25v-globalflag CHANGING ls_deliv_maint-mainflag_text. ENDIF. ***Tabstrip PERFORM get_tabstrip USING 'DDIC_R3TR_VIEW' ls_dd25v-viewclass CHANGING lt_tabstrip. LOOP AT lt_tabstrip ASSIGNING . -empty = abap_false. CASE -id. WHEN 'CREATE'. IF lt_create IS INITIAL. -empty = abap_true. ENDIF. WHEN 'SELECTIONCONDITIONS'. IF lt_dd28v IS INITIAL. -empty = abap_true. ENDIF. ENDCASE. ENDLOOP. *HTML header PERFORM get_dom_value_text USING 'VIEWCLASS' ls_dd25v-viewclass CHANGING l_txt_viewclass. PERFORM html_main_header USING tpt_ddic_view l_txt_viewclass -obj_name txt_active___1 txt_short_text___2 -descript space lt_tabstrip gt_link CHANGING lt_html. *HTML technical settings IF ls_dd25v-viewclass CO 'HDPSCV'. PERFORM html_add_box1rb_subbox2ti USING txt_buffering lt_ts_buffer txt_buffering_type lt_ts_buffer_type_l lt_ts_buffer_type_r 'TECH_SETTINGS' abap_false CHANGING lt_html. ENDIF. *HTML CREATE Statement IF ls_dd25v-viewclass CO 'HDPSCV'. IF NOT lt_create IS INITIAL OR g_empty_tab = gc_empty_tab_display. CONCATENATE l_viewname '_CREATE' INTO l_filename. PERFORM html_add_sourcecode USING lt_create l_filename space space gc_extension_txt 'CREATE' abap_false CHANGING lt_html. IF NOT lt_create IS INITIAL AND g_add_sourcecode = abap_true. PERFORM download USING lt_create -pgmid -object l_filename gc_extension_txt abap_false. ENDIF. ENDIF. ENDIF. *HTML attributes PERFORM html_add_attributes_1 USING ls_attributes 'ATTRIBUTES' abap_false CHANGING lt_html. *HTML table/join conditions IF ls_dd25v-viewclass CO 'HDCV'. PERFORM html_add_table2hor USING 'VIEW_JOINT' lt_tabname lt_tabname 'VIEW_JOINC' lt_join_conditions lt_join_conditions 'TABJOINCONDITIONS' abap_false CHANGING lt_html. ENDIF. *HTML view fields PERFORM get_id USING 'VIEW_FIELD|' ls_dd25v-viewclass CHANGING l_id. IF ls_dd25v-viewclass CO 'HDPCV'. PERFORM html_add_table USING l_id lt_dd27p lt_dd27p 'VIEWFIELDS' abap_true CHANGING lt_html. ELSEIF ls_dd25v-viewclass CO 'AS'. PERFORM html_add_table2hor USING 'VIEW_JOINT' lt_tabname lt_tabname l_id lt_dd27p lt_dd27p 'VIEWFIELDS' abap_true CHANGING lt_html. ENDIF. *HTML selection conditions IF ls_dd25v-viewclass CO 'HDCV'. IF NOT lt_dd28v IS INITIAL OR g_empty_tab = gc_empty_tab_display. PERFORM html_add_table USING 'VIEW_SELEC' lt_dd28v lt_dd28v 'SELECTIONCONDITIONS' abap_false CHANGING lt_html. ENDIF. ENDIF. *HTML maint status IF ls_dd25v-viewclass CO 'HDCV'. PERFORM html_add_deliv_maint USING ls_deliv_maint lt_access 'DELIVMAINT' abap_false CHANGING lt_html. ENDIF. *HTML footer PERFORM html_main_footer USING lt_html. *download PERFORM download USING lt_html -pgmid -object -obj_name gc_extension_htm abap_true. ENDLOOP. ENDFORM. "r3tr_view