DATA: ref_consumer TYPE REF TO cl_gui_props_consumer,
s_metric_factors TYPE CNTL_METRIC_FACTORS.
ref_consumer = cl_gui_props_consumer=>create_consumer( ).
s_metric_factors = ref_consumer->get_metric_factors( ).
s_metric_factors-screen-x - ширина
s_metric_factors-screen-y - высота
подсмотрено здесь.
Подробнее...
Сюда я буду сохранять всякие куски кода, конфигов, ссылки, чтобы в один прекрасный день когда мне это снова понадобится - не вспоминать судорожно где и когда я это применял.
Показаны сообщения с ярлыком DynPro. Показать все сообщения
Показаны сообщения с ярлыком DynPro. Показать все сообщения
29 сентября 2011 г.
13 сентября 2011 г.
Позновательно о TabStrip
Помимо того, что написано в ссылке:
Закладка также может быть полем вывода. То есть если объявить переменную с таким же именем и менять её значение - оно будет подставлять в заголовок закладки. Только саму галку "поле вывода" не забудьте поставить. Подробнее...
Закладка также может быть полем вывода. То есть если объявить переменную с таким же именем и менять её значение - оно будет подставлять в заголовок закладки. Только саму галку "поле вывода" не забудьте поставить. Подробнее...
20 мая 2011 г.
генерированные экраны в своих формах
Чтобы отобразить генерированные экраны в своих формах надо описать экран:
SELECTION-SCREEN BEGIN OF SCREEN 0101 AS SUBSCREEN.
SELECT-OPTIONS s_vkorg FOR vbak-vkorg.
SELECT-OPTIONS s_vkbur FOR vbak-vkbur.
SELECT-OPTIONS s_VKGRP FOR vbak-VKGRP.
SELECT-OPTIONS s_vtweg FOR vbak-vtweg.
SELECT-OPTIONS s_spart FOR vbak-spart.
SELECT-OPTIONS s_SUBMI FOR vbak-SUBMI.
SELECT-OPTIONS s_netwr FOR vbap-netwr.
SELECT-OPTIONS s_lifnr FOR vbpa-lifnr.
SELECTION-SCREEN END OF SCREEN 0101.
А в своём экране включить его в подэкран аналогично обычным экранам. Подробнее...
SELECTION-SCREEN BEGIN OF SCREEN 0101 AS SUBSCREEN.
SELECT-OPTIONS s_vkorg FOR vbak-vkorg.
SELECT-OPTIONS s_vkbur FOR vbak-vkbur.
SELECT-OPTIONS s_VKGRP FOR vbak-VKGRP.
SELECT-OPTIONS s_vtweg FOR vbak-vtweg.
SELECT-OPTIONS s_spart FOR vbak-spart.
SELECT-OPTIONS s_SUBMI FOR vbak-SUBMI.
SELECT-OPTIONS s_netwr FOR vbap-netwr.
SELECT-OPTIONS s_lifnr FOR vbpa-lifnr.
SELECTION-SCREEN END OF SCREEN 0101.
А в своём экране включить его в подэкран аналогично обычным экранам. Подробнее...
28 апреля 2011 г.
Заполнение списка предлагаемых значений Listbox-а
На примере списка кредиторов
types:Подробнее...
begin of vrm_value,
key(40) type c,
text(80) type c,
end of vrm_value,
VRM_VALUES TYPE VRM_VALUE OCCURS 0.
data: lifnr_values TYPE VRM_VALUES with header line.
FREE lifnr_values. " обязательно
data: lfa1_tb TYPE WSTN_LFA1_TAB, lfa1_ln TYPE LFA1.
" заполнить где-то lfa1_tb поставщиками
LOOP AT lfa1_tb into lfa1_ln.
lifnr_values-key = lfa1_ln-lifnr.
CONCATENATE lfa1_ln-NAME1 lfa1_ln-NAME2 lfa1_ln-NAME3 lfa1_ln-NAME4
into lifnr_values-text.
APPEND lifnr_values.
ENDLOOP.
call function 'VRM_SET_VALUES'
EXPORTING
id = 'LIFNR' " имя элемента
values = lifnr_values[]
EXCEPTIONS
others = 1.
Вызов PBO из событий ALV
Проблема: в событии ALV изменились какие-либо значения, отображаемые экраном DynPro, но так как события PBO не было - пользователь видит старые значения.
Подобрал два варианта:
1. Имитировать событие PBO.
Работает, но медленно. Возможно если использовать другой FUNCTIONCODE, будет лучше. знак равенства предлагался как значение по умолчанию.
2. Обновить значение самостоятельно.
Пробовал использовать функции DYNP_VALUES_READ и DYNP_VALUES_UPDATE, но не получилось. зато получилось с
Работает, быстро, но есть казусы (возможно имеют решения, но я пока их не знаю):
- иногда теряются часть текста после переключения закладок с этими данными.
- не получилось использовать для чисел - пришлось менять тип на текстовый, что не всегда допустимо.
- пришлось отказаться от программ преобразования - вызываю их сам в коде, что тоже не всегда удобно.
3. У конструктора ALV GRID-а есть параметр i_appl_events. если его взвести - при нажатии вызывается PAI, а после PBO. Но тоже медленно всё работает. Возможно у других объектов есть такой же способ.
4. cl_gui_cfw=>set_new_ok_code. Тоже медленно.
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'DUMMY'.
CL_GUI_CFW=>FLUSH. Подробнее...
Подобрал два варианта:
1. Имитировать событие PBO.
CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'EXPORTINGFUNCTIONCODE = '='EXCEPTIONSFUNCTION_NOT_SUPPORTED = 1OTHERS = 2.
Работает, но медленно. Возможно если использовать другой FUNCTIONCODE, будет лучше. знак равенства предлагался как значение по умолчанию.
2. Обновить значение самостоятельно.
Пробовал использовать функции DYNP_VALUES_READ и DYNP_VALUES_UPDATE, но не получилось. зато получилось с
DATA: dynpfields_tb TYPE TABLE OF dynpread,
dynpfields_ln TYPE dynpread.
DEFINE AddField.
dynpfields_ln-fieldname = '&1'.
dynpfields_ln-fieldvalue = &1.
APPEND dynpfields_ln to dynpfields_tb.
END-OF-DEFINITION.
AddField MAT_INFO_STR-MATNR.
AddField MAT_INFO_STR-MATERIAL_NAME.
CALL FUNCTION 'DYNP_UPDATE_FIELDS'
EXPORTING
DYNAME = sy-repid
DYNUMB = '1210'
TABLES
DYNPFIELDS = dynpfields_tb
EXCEPTIONS
INVALID_ABAPWORKAREA = 1
INVALID_DYNPROFIELD = 2
INVALID_DYNPRONAME = 3
INVALID_DYNPRONUMMER = 4
INVALID_REQUEST = 5
NO_FIELDDESCRIPTION = 6
UNDEFIND_ERROR = 7
OTHERS = 8.
Работает, быстро, но есть казусы (возможно имеют решения, но я пока их не знаю):
- иногда теряются часть текста после переключения закладок с этими данными.
- не получилось использовать для чисел - пришлось менять тип на текстовый, что не всегда допустимо.
- пришлось отказаться от программ преобразования - вызываю их сам в коде, что тоже не всегда удобно.
3. У конструктора ALV GRID-а есть параметр i_appl_events. если его взвести - при нажатии вызывается PAI, а после PBO. Но тоже медленно всё работает. Возможно у других объектов есть такой же способ.
4. cl_gui_cfw=>set_new_ok_code. Тоже медленно.
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'DUMMY'.
CL_GUI_CFW=>FLUSH. Подробнее...
Подписаться на:
Сообщения (Atom)