Текущее время: Сб, авг 24 2019, 12:01

Часовой пояс: UTC + 4 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Программа ведения настроек
СообщениеДобавлено: Вт, мар 27 2018, 12:35 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 08:26
Сообщения: 78
Откуда: Альфа Центавра
Пол: Мужской
Основная цель разработки - убрать из кода магические числа и другие "постоянные" данные из кода. И дать возможность пользователю менять "константы" в дружественном интерфейсе.
Номера счетов по определенной маске, тексты при создании документов FI или Range of BLART в различных выборках являются хорошими примерами где можно использовать ведение настроек.
Проще всего описать разработку, это что-то вроде tr. STVARV, но все параметры и опции выбора сгруппированы вместе, как и в tr. SLG1 с интерфейсом схожим с SAP Fiori который непосредственно отображается в SAP GUI через CL_GUI_HTML_VIEWER.

В самой программе настройки обычно хранятся в структурах (либо в атрибутах класса) и могут содержать такие данные, как:
    * Опции выбора (SELECT-OPTION)
    * Параметры (любое простое значение как дата, время или BUKRS)
    * Строки (тексты произвольной длины)
    * Таблицы (STANDARD, SORTED, HASHED на основе структур)
Первые 2 полностью аналогичны STVARV, в строках к примеру можно хранить шаблоны писем, а таблицы подойдут, когда нужно написать, к примеру, большой case который зависит от условия, которое может меняться, но делать таблицу БД и создавать генератор ведение обременительно.

* Создание настройки SE38
* Создание настройки SE24
* Какую транзакцию ведения выбрать?
* Описание интерфейса
* Изменение описания полей
* Сложные типы данных
* Средство поиска в ui5
* Создание настройки через интерфейс
* Экспорт и импорт данных
* Расширения
* Поиск кода с настройкой
* Инструкция по установке


Библиотека доступна по ссылке


Последний раз редактировалось matik Сб, апр 27 2019, 15:50, всего редактировалось 4 раз(а).

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Программа ведения настроек
СообщениеДобавлено: Вт, мар 27 2018, 12:37 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 08:26
Сообщения: 78
Откуда: Альфа Центавра
Пол: Мужской
SE38 -> ZAQO_TEST

Чтобы создать настройку просто запустите программу в DEV.

Изображение

На основе этой описания этой структуры создастся 4 вида полей:

Изображение

  • №1 PARAMETERS
  • №2 SELECT-OPTIONS
  • №3 TABLES
  • №4 STRINGS


Сам код создания настройки желательно вызвать однократно во время **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 2019, 15:56, всего редактировалось 3 раз(а).

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Программа ведения настроек
СообщениеДобавлено: Вт, мар 27 2018, 12:38 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 08:26
Сообщения: 78
Откуда: Альфа Центавра
Пол: Мужской
SE24 -> ZCL_AQO_TESTER

Чтобы создать на основе аттрибутов класса просто нажмите F8.

Изображение

Описание полей аналогично описанию структуры

Изображение

за исключением того что аттрибуты должны быть PUBLIC и READ-ONLY
Они могут быть или:
  • Instance Attribute
  • Static Attribute

но не оба вида в одной настройке (в противном случае возникнет исключение)

Изображение

Так как 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 2019, 16:01, всего редактировалось 2 раз(а).

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Программа ведения настроек
СообщениеДобавлено: Вт, мар 27 2018, 12:39 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 08:26
Сообщения: 78
Откуда: Альфа Центавра
Пол: Мужской
"Новый" sapui5 интерфейс

Изображение

№1 Левая часть экрана предназначена для:
  • поиска
  • сортировки
  • фильтрации
  • группировки
  • и создания новой настройки

№2 Правая часть экрана выходит после выбора конкретной настройки.
В правом верхнем углу находятся кнопки:
  • переход в полноэкранный режим
  • закрытие правой части экрана
  • отправить e-mail об ошибке


Также под названием настройки можно заметить:
  • размер настройки в Kb
  • описание настройки
    --- можно отредактировать кликнув по ссылке

№3 В нижней части находится:
  • переключение на технический режим
  • кнопки выгрузки и загрузки в файл
  • количество полей настройки
  • 2 поля: Описание и значение


Если переключится на технический режим

Изображение

№1 Кнопки удаления и добавления полей

№2 Технические поля:
  • описание поля
  • можно ли редактировать данное поле в продуктиве
  • тип поля или связка ТАБЛИЦА-ПОЛЕ для средства поиска


№3 В самом низу:
  • скопировать настройку в другой мандант (без запуска SCC1)
  • положить настройку в запрос
  • удалить настройку
    настройки в пакетах начинающихся на **$** можно удалить без запроса
  • сохранить настройку
    будет активна после внесения изменений

"Старый" интерфейс

На селективном экране нужно выбрать пару пакет - id c помощью средства поиска.
Для создания новой настройки нужно указать не существующий **id**

Изображение

Если мандант закрыт на изменение сразу попадаем на экран ведения настроек

Изображение

№1 Кнопки сохранения и навигации

№2 Ведение parameters и select-options

№3 Таблицы и memo тексты отображены лишь кнопками для вызова диалога

Если мандант открыт на изменение (DEV) сначала будут отображены технические параметры настройки

Изображение

№1 Слева на право:
  • переход на экран ведения значений
  • положить настройку в запрос
  • скопировать настройку в другой мандант (без запуска SCC1)
  • удалить настройку
    настройки в пакетах начинающихся на **$** можно удалить без запроса
  • поиск кода из которой была создана настройка

№2 Описание настройки

№3 Кнопки удаления и создания поля в настройки

№4 Технические поля:
  • описание поля
  • можно ли редактировать данное поле в продуктиве
  • тип поля или связка ТАБЛИЦА-ПОЛЕ для средства поиска

№5 Быстрый переход в диалог ведения значения для таблиц и memo текстов


Последний раз редактировалось matik Сб, апр 27 2019, 16:18, всего редактировалось 2 раз(а).

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Программа ведения настроек
СообщениеДобавлено: Вт, мар 27 2018, 12:40 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 08:26
Сообщения: 78
Откуда: Альфа Центавра
Пол: Мужской
Какую транзакцию выбрать?

На данный момент есть 6 транзакций, которые можно разделить на 2 группы:
  • EDITOR - Для редактирования настроек
  • VIEWER - Для просмотра настроек (В продуктиве часто оставляют лишь эту возможность)

Если мандант открыт на изменение 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

Имеет следующие ограничения:
  • Не умеет отображать таблицу таблиц или range внутри таблицы (в разработке)
  • Выгружать (и загружать) настройку во внешний файл (к примеру из продуктива в DEV) (в разработке)
  • Checkbox, combobox и datetime поля не доступны
  • Отображать предыдущие значения поля

К плюсам можно отнести:
  • Привычный интерфейс (к SAPUI5 нужно привыкнуть)
  • Удобно работать с простыми таблицами в ALV (В UI5 можно выгрузить/загрузить таблицу в CSV для редактирования в Excel)
  • В field catalog полей и вложенных таблицы можно перемещать поля
    Изображение
  • Работа с range более удобная
    Изображение


Последний раз редактировалось matik Сб, апр 27 2019, 16:25, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Программа ведения настроек
СообщениеДобавлено: Вт, апр 03 2018, 15:56 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 19:21
Сообщения: 1325
Несколько раз прочитал вики но не увидел как в итоге считать эти настройки из mr_opt и подпихнуть например в свой sel-opt.

_________________
я твой сап эфай внедрял
BAdI-позитив


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программа ведения настроек
СообщениеДобавлено: Ср, апр 04 2018, 09:08 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 08:26
Сообщения: 78
Откуда: Альфа Центавра
Пол: Мужской
Сложные типы данных

Range или таблица внутри другой таблицы
Настройка может содержать поля с типом таблица (**Standard|Sorted|Hashed**).\
В свою очередь поля этой таблицы в свою очередь могут быть таблицами или range.


Объявление в коде
Изображение

  • В ZAQO_BSP_EDITOR | ZAQO_EDITOR при редактировании таблицы отображается кнопка с количеством записей
    Изображение

    поля ALT_LAND_TEXT
    Изображение
  • В ZAQO_EDITOR_OLD
    отображаются лишь данные плоских таблиц

    Изображение

    или сразу тут
    Изображение

Редактирование сложных таблиц в "старом интерфейсе" находится (в разработке), на данный в таблице можно редактировать memo поля


Последний раз редактировалось matik Сб, апр 27 2019, 16:30, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Программа ведения настроек
СообщениеДобавлено: Ср, янв 16 2019, 09:26 
Специалист
Специалист

Зарегистрирован:
Вт, авг 24 2004, 17:49
Сообщения: 185
Откуда: SAP ERP60
Пол: Мужской
Спасибо за интересный функционал и реализацию :wink:
При тестировании возник следующий момент -
указание нетипизованного параметра в программе приводит к дампу CX_SY_STRUCT_COMP_TYPE в транзакциях ZAQO_EDIT / ZAQO_EDIT_OLD
чтение настроек из программы при этом проходит корректно
Видимо ссылка на тип словаря обязательна, но от дампа в случае ошибки трудно избавиться. Приходится вручную удалять через delete() и помогает не сразу ))
Отсюда пожелания - отловить catch в транзакциях настройки. Плюс сделать возможность удаления объекта настройки из транзакций без его раскрытия, приводящего к дампу


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программа ведения настроек
СообщениеДобавлено: Ср, янв 16 2019, 15:15 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 08:26
Сообщения: 78
Откуда: Альфа Центавра
Пол: Мужской
Доброго времени суток
спасибо за отзыв

можете выслать использование настроек? (описание класса или структуры)
все типы могут описаны локально (структуры, таблицы и range)
но с предварительным описанием через TYPES (не DATA)

удалять всю настройку не обязательно
можно скормить новую структуру и вызвать save c этим параметрам
Изображение

    А так задумок довольно много (надеюсь приступить к ним в ближайшем будущем)
  • Использование listbox когда СП меленький
  • Настройка таблица с полями в виде таблиц
  • Проверки при редактировании настроек
  • Создавать настройки не из кода (а в самой транзакции, к примеру консультантом)
  • Версионность (чтобы понять, что изменилось и на кого катить бочку)
  • Выгрузка настройки в файл и обратно (к примеру, из прода в тест)
  • Убрать хранения из кластеров (версионность будет проще реализовать)
    Думаю о представлении иерархии в BOBF (Пакет->Настройка->Версия->Отдельные поля)
    Но слетит обратная совместимость
  • И главное доработать SAPUI5 (ZAQO_EDIT)
    -чтобы оно запускалось в виде BSP приложения (а не в сапгуй)
    -Использовать прочие рекомендации от САП (К примеру, New Master Detail template )
    -Сделать нормальные СП (сейчас это facepalm)
    -Использовать odata аннотации для смарт контролов (table & field)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Программа ведения настроек
СообщениеДобавлено: Ср, янв 16 2019, 15:48 
Специалист
Специалист

Зарегистрирован:
Вт, авг 24 2004, 17:49
Сообщения: 185
Откуда: SAP ERP60
Пол: Мужской
В качестве теста использую 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. уходить в чистый браузер порой совсем не интересно, теряются возможности интеграции ))


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программа ведения настроек
СообщениеДобавлено: Ср, янв 16 2019, 20:27 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 08:26
Сообщения: 78
Откуда: Альфа Центавра
Пол: Мужской
пожалуйста обновитесь


если описание в классе, так ругается
Изображение

вроде так аналогично
Code:
code1 TYPE c LENGTH 1, " <- поле без ссылки , типизации


добавлен класс исключений
Изображение

немного переделал код
редактор запустился, но типа не видно (можно выделить запись и нажать на минус)
все же лучше указать тип из словаря (CHAR1)
Изображение


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB