SAPфорум.RU https://sapboard.ru/forum/ |
|
Программа ведения настроек https://sapboard.ru/forum/viewtopic.php?f=13&t=96224 |
Страница 1 из 1 |
Автор: | matik [ Вт, мар 27 2018, 11:35 ] |
Заголовок сообщения: | Программа ведения настроек |
Основная цель разработки - убрать из кода магические числа и другие "постоянные" данные из кода. И дать возможность пользователю менять "константы" в дружественном интерфейсе. Номера счетов по определенной маске, тексты при создании документов FI или Range of BLART в различных выборках являются хорошими примерами где можно использовать ведение настроек. Проще всего описать разработку, это что-то вроде tr. STVARV, но все параметры и опции выбора сгруппированы вместе, как и в tr. SLG1 с интерфейсом схожим с SAP Fiori который непосредственно отображается в SAP GUI через CL_GUI_HTML_VIEWER. В самой программе настройки обычно хранятся в структурах (либо в атрибутах класса) и могут содержать такие данные, как:
* Параметры (любое простое значение как дата, время или BUKRS) * Строки (тексты произвольной длины) * Таблицы (STANDARD, SORTED, HASHED на основе структур) * Создание настройки SE38 * Создание настройки SE24 * Какую транзакцию ведения выбрать? * Описание интерфейса * Изменение описания полей * Сложные типы данных * Средство поиска в ui5 * Создание настройки через интерфейс * Экспорт и импорт данных * Расширения * Поиск кода с настройкой * Инструкция по установке Библиотека доступна по ссылке |
Автор: | matik [ Вт, мар 27 2018, 11:37 ] |
Заголовок сообщения: | Re: Программа ведения настроек |
SE38 -> ZAQO_TEST Чтобы создать настройку просто запустите программу в DEV. На основе этой описания этой структуры создастся 4 вида полей:
Сам код создания настройки желательно вызвать однократно во время **INITIALIZATION** или **START-OF-SELECTION** Code: " Initials values in editor set_default_values( CHANGING cs_opt = ms_opt ). " Or use class attributes GET REFERENCE OF ms_opt INTO lv_ref. " ! Ref to data " Read new values TRY. zcl_aqo_option=>create( iv_package_id = '$TMP' " Package "#EC NOTEXT iv_option_id = 'Main options'(op1) " Any text < 30 symbols ir_data = lv_ref " REF #( ms_opt ) " iv_repair = abap_true ). CATCH zcx_aqo_exception INTO lo_error. MESSAGE lo_error TYPE 'S' DISPLAY LIKE 'E'. RETURN. ENDTRY. После этого ms_opt будет содержать данные которые внес консультант в одной из программ ведения |
Автор: | matik [ Вт, мар 27 2018, 11:38 ] |
Заголовок сообщения: | Re: Программа ведения настроек |
SE24 -> ZCL_AQO_TESTER Чтобы создать на основе аттрибутов класса просто нажмите F8. Описание полей аналогично описанию структуры за исключением того что аттрибуты должны быть PUBLIC и READ-ONLY Они могут быть или:
но не оба вида в одной настройке (в противном случае возникнет исключение) Так как READ-ONLY аттрибуты не могут быть изменены вне класса нужно добавить ZCL_AQO_OPTION в друзья. Если вы забыли это сделать выйдет специальное напоминание во время выполнения Сам код создания настройки желательно вызвать однократно в CONSTRUCTOR или CLASS-CONSTRUCTOR Code: " Default values! For simple types use initilazation in declaration itself " Optional initialization APPEND INITIAL LINE TO me->bukrs_range ASSIGNING <ls_bukrs>. <ls_bukrs>-sign = 'I'. <ls_bukrs>-option = 'BT'. <ls_bukrs>-low = '1000'. <ls_bukrs>-high = '3000'. SELECT * INTO TABLE me->t002_tab FROM t002. " Read new values TRY. zcl_aqo_option=>create( iv_package_id = '$TMP' " Package "#EC NOTEXT iv_option_id = 'Class options'(op1) " Any text < 30 symbols " Public read-only attributes is options! " CLASS-DATA or DATA (but not both) io_data = me " iv_repair = abap_true ). CATCH zcx_aqo_exception INTO lo_error. MESSAGE lo_error TYPE 'S' DISPLAY LIKE 'E'. RETURN. ENDTRY. После этого аттрибуты ME->* будут содержать данные которые внес консультант в одной из программ ведения |
Автор: | matik [ Вт, мар 27 2018, 11:39 ] |
Заголовок сообщения: | Re: Программа ведения настроек |
"Новый" sapui5 интерфейс №1 Левая часть экрана предназначена для:
№2 Правая часть экрана выходит после выбора конкретной настройки. В правом верхнем углу находятся кнопки:
Также под названием настройки можно заметить:
№3 В нижней части находится:
Если переключится на технический режим №1 Кнопки удаления и добавления полей №2 Технические поля:
№3 В самом низу:
"Старый" интерфейс На селективном экране нужно выбрать пару пакет - id c помощью средства поиска. Для создания новой настройки нужно указать не существующий **id** Если мандант закрыт на изменение сразу попадаем на экран ведения настроек №1 Кнопки сохранения и навигации №2 Ведение parameters и select-options №3 Таблицы и memo тексты отображены лишь кнопками для вызова диалога Если мандант открыт на изменение (DEV) сначала будут отображены технические параметры настройки №1 Слева на право:
№2 Описание настройки №3 Кнопки удаления и создания поля в настройки №4 Технические поля:
№5 Быстрый переход в диалог ведения значения для таблиц и memo текстов |
Автор: | matik [ Вт, мар 27 2018, 11:40 ] |
Заголовок сообщения: | Re: Программа ведения настроек |
Какую транзакцию выбрать? На данный момент есть 6 транзакций, которые можно разделить на 2 группы:
Если мандант открыт на изменение ZCL_AQO_HELPER=>IS_DEV_MANDT( ) все поля в настройки открыты на изменение в EDITOR . В других системах лишь поля помеченные как Editable in prod могут редактироваться. 1. ZAQO_BSP_EDITOR / ZAQO_BSP_VIEWER Основная рекомендуемая транзакция на основе BSP приложения. Запускает браузер по умолчанию (желательно Chrome) Можно выслать url настройки консультанту 2. ZAQO_EDITOR / ZAQO_VIEWER Запускает Internet Explorer внутри SAP GUI. Для работы танзакции нужен интернет (в отличии от BSP загружает sapui5 библиотеку с https://sapui5.hana.ondemand.com) Также может проваливаться в код (место создания настройки) и описания полей (SE11) 3. ZAQO_EDITOR_OLD / ZAQO_VIEWER_OLD Имеет следующие ограничения:
К плюсам можно отнести:
|
Автор: | Kengur [ Вт, апр 03 2018, 14:56 ] |
Заголовок сообщения: | Re: Программа ведения настроек |
Несколько раз прочитал вики но не увидел как в итоге считать эти настройки из mr_opt и подпихнуть например в свой sel-opt. |
Автор: | matik [ Ср, апр 04 2018, 08:08 ] |
Заголовок сообщения: | Re: Программа ведения настроек |
Сложные типы данных Range или таблица внутри другой таблицы Настройка может содержать поля с типом таблица (**Standard|Sorted|Hashed**).\ В свою очередь поля этой таблицы в свою очередь могут быть таблицами или range. Объявление в коде
Редактирование сложных таблиц в "старом интерфейсе" находится (в разработке), на данный в таблице можно редактировать memo поля |
Автор: | Stepan [ Ср, янв 16 2019, 08:26 ] |
Заголовок сообщения: | Re: Программа ведения настроек |
Спасибо за интересный функционал и реализацию При тестировании возник следующий момент - указание нетипизованного параметра в программе приводит к дампу CX_SY_STRUCT_COMP_TYPE в транзакциях ZAQO_EDIT / ZAQO_EDIT_OLD чтение настроек из программы при этом проходит корректно Видимо ссылка на тип словаря обязательна, но от дампа в случае ошибки трудно избавиться. Приходится вручную удалять через delete() и помогает не сразу )) Отсюда пожелания - отловить catch в транзакциях настройки. Плюс сделать возможность удаления объекта настройки из транзакций без его раскрытия, приводящего к дампу |
Автор: | matik [ Ср, янв 16 2019, 14:15 ] |
Заголовок сообщения: | Re: Программа ведения настроек |
Добрый день спасибо за отзыв можете выслать использование настроек? (описание класса или структуры) все типы могут описаны локально (структуры, таблицы и range) но с предварительным описанием через TYPES (не DATA) удалять всю настройку не обязательно можно скормить новую структуру и вызвать save c этим параметрам
|
Автор: | Stepan [ Ср, янв 16 2019, 14:48 ] |
Заголовок сообщения: | Re: Программа ведения настроек |
В качестве теста использую ZADO_TEST Code: BEGIN OF ts_main_opt, code1 type c, " <- поле без ссылки , типизации edit_mask TYPE editmask, " CHAR bukrs TYPE bukrs, " CHAR pack_blocked TYPE xsdboolean, " ABAP_BOOL swd_blocks msg_count TYPE syst-tabix, " INT4 due_date TYPE syst-datum, " D due_time TYPE syst-uzeit, " T " datetime TYPE xsddatetime_local, " datetime NO component in OLD UI sum TYPE bscurr, " P with sign allowed_bukrs TYPE RANGE OF bukrs, " Range blocked_bukrs TYPE RANGE OF bukrs, " Range some_numbers TYPE RANGE OF syst-tabix, alt_land_text TYPE SORTED TABLE OF ts_alt_land WITH UNIQUE KEY land1, t002_tab TYPE STANDARD TABLE OF t002 WITH DEFAULT KEY, some_text TYPE string, * one_field TYPE STANDARD TABLE OF char30 WITH DEFAULT KEY, " Table_line is not structure END OF ts_main_opt. Дальше запуск программы без инициализации нового поля. После этого собственно сразу дамп в настройках при открытии объекта Чтение через read() без проблем p.s наоборот очень понравилась реализация SAPUI+Viewer. уходить в чистый браузер порой совсем не интересно, теряются возможности интеграции )) |
Автор: | matik [ Ср, янв 16 2019, 19:27 ] |
Заголовок сообщения: | Re: Программа ведения настроек |
пожалуйста обновитесь если описание в классе, так ругается вроде так аналогично Code: code1 TYPE c LENGTH 1, " <- поле без ссылки , типизации добавлен класс исключений немного переделал код редактор запустился, но типа не видно (можно выделить запись и нажать на минус) все же лучше указать тип из словаря (CHAR1) |
Автор: | s2k [ Ср, сен 11 2019, 17:03 ] |
Заголовок сообщения: | Re: Программа ведения настроек |
Добрый день! Сегодня французский коллега попросил протестировать эту программу. Разработка очень понравилась, но я столкнулся с таким поведением: 1. В тестовой программе добавил в структуру параметров новое поле. Запустил, программа корректно обновила хранимые параметры, в редакторе ZAQO_BSP_EDITOR всё доступно. 2. Удалил в коде один из параметров. При запуске выдает ошибку - "Declared in editor only" для этого параметра. 3. Попытался удалить в редакторе отсутствующее в коде значение. Нажимаю шестеренку, выделяю строку, нажимаю "-" над таблицей. Ничего не происходит. 4. ZAQO_EDITOR при выборе набора параметров выдает ошибку "Declared in editor only" для каждого из параметров, ничего не отображает. 5. ZAQO_EDITOR_OLD не находит параметров, предлагает "Create a new option". Как понять, почему не удаляет параметр в ZAQO_BSP_EDITOR? Спасибо! |
Автор: | matik [ Чт, сен 12 2019, 09:18 ] |
Заголовок сообщения: | Re: Программа ведения настроек |
Добрый день Цитата: 3. Попытался удалить в редакторе отсутствующее в коде значение. Нажимаю шестеренку, выделяю строку, нажимаю "-" над таблицей. Ничего не происходит. вроде все правильно после этого должна быть активна кнопка сохранения нажать Save, подтвердить сохранение и параметр должен удалиться навсегда в старом редакторе тут кнопка после удаления также нужно нажать на Save там еще есть проверки на сохранение (проверка на знак числа) Цитата: добавил в структуру параметров новое поле есть нюанс с таблицами таблиц при добавлении нового поля во вложенную таблицу желательно перечитать описание полей запустив код с флагом IV_REPAIR = abap_true (попробуйте запустить так) если изменился тип поля с Parameter на Select-Option (или Table ) желательно удалить поле из редактора и вновь запустить создание настройки да и не забыть перенести настройку из DEV в другой мандант можно положить в запрос и перенести через SCC1 (но спец кнопкой быстрее) |
Автор: | matik [ Чт, сен 12 2019, 09:27 ] |
Заголовок сообщения: | Re: Программа ведения настроек |
* только что проврил новый интерфейсна sapui5 записал себе в bug https://github.com/bizhuka/aqo/issues ui5 почти не тестировал, конусльтантам превычнее в ZAQO_EDITOR_OLD там удалил и создал поля вроде работает |
Автор: | s2k [ Чт, сен 12 2019, 10:03 ] |
Заголовок сообщения: | Re: Программа ведения настроек |
Добрый день! Понял свой косяк - запускал ZAQO_EDITOR_OLD через SE38, а там зашиты проверки на имя транзакции. Если запускать транзакцию ZAQO_EDITOR_OLD - работает, поле удалил. Продолжаю тестирование, спасибо! |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |