SAP GUI 8.00 Patch Level 8
!Внимание! Файлы получены не c сайта SAP. На свой страх и риск.
x86
Download from MegaDownload from Mail.ru
Download from Dropbox
x64
Download from MegaDownload from Mail.ru
Download from Dropbox
!Внимание! Файлы получены не c сайта SAP. На свой страх и риск.
!Внимание! Файлы получены не c сайта SAP. На свой страх и риск.
!Внимание! Файлы получены не c сайта SAP. На свой страх и риск.
!Внимание! Файлы получены не c сайта SAP. На свой страх и риск.
!Внимание! Файлы получены не c сайта SAP. На свой страх и риск.
Download from MegaСтандартный генератор ведения таблиц (и ракурсов) в SE11 генерирует табличный компонент на экране не шире 83 символов. Наверное, когда-то давно, когда компьютеры были большими, а экраны маленьким, это было нормально. Но сейчас во времена всяких FullHD и выше это уже выглядит неудобным, поскольку для таблиц, где суммартная длина полей выходит за эти 83 символа, появляется прокрутка, хотя места на экране еще больше половины.
Конечно, после генерации всегда можно вручную поправить экран и сделать компонент шире (до 255 символов).
Но настоящему ленивому програмисту всегда хочется оптимизировать такую рутину. И вот оно решение ниже. Исходники есть в Github Gist.
Нужно создать пул подпрограмм ZBC_MAINTANCE_VIEW_EXITS и в него запихать весь код из ZBC_MAINTANCE_VIEW_EXITS.abap.
Далее нужно в программе SAPMSVIM создать в 3х подпрограммах неявные расширения и вставить в них вызовы подпрограмм из ZBC_MAINTANCE_VIEW_EXITS. Что конкретно расширять и что вставлять, указано в MSVIMF21.abap
После активации всего этого добра, нужно сгенерировать (или перегенерировать) экран ведения.
ЗЫ. Кроме "расширения" табличного компонента, для таблиц, имеющих связанные текстовые таблицы, все поля текстовых таблиц "переезжают" вправо.
"1 | |
"Add Implicit Enhancement at the end of form CREATE_DYNP_HEADER (INCLUDE MSVIMF21) | |
"Put this code inside created enhancement: | |
PERFORM post_create_dynp_header in PROGRAM ZBC_MAINTANCE_VIEW_EXITS if FOUND | |
USING p_dyname p_gencb p_detail dropdown_length_tcrl max_dynp_fieldlen CHANGING p_header. | |
"2 | |
"Add Implicit Enhancement at the begin of form CREATE_DYNP_FIELDLIST (INCLUDE MSVIMF21) | |
"Put this code inside created enhancement: | |
PERFORM pre_create_dynp_fieldlist IN PROGRAM ZBC_MAINTANCE_VIEW_EXITS IF FOUND | |
USING p_make_detail p_skip_fields p_flds_to_cont CHANGING p_dfies_tab. | |
"3 | |
"Add Implicit Enhancement at the end of form CREATE_DYNP_CONT (INCLUDE MSVIMF21) | |
"Put this code inside created enhancement: | |
IF p_mode = '11' and <w_cont> is ASSIGNED. | |
PERFORM post_create_dynp_cont in PROGRAM ZBC_MAINTANCE_VIEW_EXITS if FOUND | |
CHANGING <w_cont>. | |
ENDIF. |
*&---------------------------------------------------------------------* | |
*& Subroutinenpool ZBC_MAINTANCE_VIEW_EXITS | |
*& | |
*&---------------------------------------------------------------------* | |
PROGRAM zbc_maintance_view_exits. | |
TYPES: | |
BEGIN OF ts_dynpid, | |
prog LIKE d020s-prog, | |
dnum LIKE d020s-dnum, | |
END OF ts_dynpid. | |
TYPES tt_dfies TYPE STANDARD TABLE OF dfies WITH KEY tabname fieldname langu position. | |
TYPES tt_flds_to_cont_type TYPE STANDARD TABLE OF rpy_dyfatc WITH DEFAULT KEY. | |
DATA gps_header TYPE REF TO rpy_dyhead. | |
DATA gpt_fields TYPE REF TO tt_flds_to_cont_type. | |
FORM post_create_dynp_header | |
USING is_dyname TYPE ts_dynpid | |
is_gencb TYPE vimgencb | |
iv_detail TYPE xfeld | |
iv_dropdown_length_tcrl TYPE scrndeflg | |
iv_max_dynp_fieldlen TYPE scrnvislg | |
CHANGING cs_header TYPE rpy_dyhead. | |
CLEAR gps_header. | |
CLEAR gpt_fields. | |
CHECK iv_detail IS INITIAL. | |
"Add some check of enabling this functionality if you need. Something like it: | |
"SELECT SINGLE @abap_true FROM tvarvc WHERE name = 'ZDISABLE_WIDE_VIEW_MAINT_GEN' INTO @DATA(lv_disable). | |
"CHECK lv_disable IS INITIAL. | |
gps_header = REF #( cs_header ). | |
ENDFORM. | |
FORM pre_create_dynp_fieldlist USING iv_make_detail TYPE xfeld | |
iv_skip_fields TYPE xfeld | |
it_flds_to_cont TYPE tt_flds_to_cont_type | |
CHANGING ct_dfies TYPE tt_dfies. | |
DATA lt_dfies_txt TYPE tt_dfies. | |
IF iv_make_detail = abap_true OR ct_dfies[] IS INITIAL OR gps_header IS NOT BOUND. | |
RETURN. | |
ENDIF. | |
gpt_fields = REF #( it_flds_to_cont ). | |
*"Move text table fields to end | |
DATA(lv_tabname) = ct_dfies[ 1 ]-tabname. | |
LOOP AT ct_dfies REFERENCE INTO DATA(lps_dfies) | |
WHERE tabname <> lv_tabname. | |
APPEND lps_dfies->* TO lt_dfies_txt. | |
ENDLOOP. | |
IF sy-subrc = 0. | |
DELETE ct_dfies WHERE tabname <> lv_tabname. | |
APPEND LINES OF lt_dfies_txt TO ct_dfies. | |
ENDIF. | |
ENDFORM. | |
FORM post_create_dynp_cont CHANGING cs_cont TYPE rpy_dycatt. | |
DATA lps_field TYPE REF TO rpy_dyfatc. | |
CHECK gps_header IS BOUND AND gpt_fields IS BOUND. | |
DATA(lv_size) = 0. | |
LOOP AT gpt_fields->* REFERENCE INTO lps_field | |
WHERE tc_heading IS INITIAL AND tc_title IS INITIAL. | |
ADD lps_field->vislength TO lv_size. | |
ENDLOOP. | |
lv_size = nmin( val1 = lv_size val2 = 255 ). | |
IF lv_size > gps_header->columns. | |
gps_header->columns = lv_size. | |
ENDIF. | |
IF lv_size > cs_cont-length. | |
cs_cont-length = lv_size. | |
ENDIF. | |
CLEAR gps_header. | |
CLEAR gpt_fields. | |
ENDFORM. |
!Внимание! Файлы получены не c сайта SAP. На свой страх и риск.