Управление городами

Справочник городов является настроечными данными. Новые создаваемые города попадают в запрос.

Основной таблицей этого справочника является ADRCITY. Средство поиска для собственного употребления – например: CITY_NAME.

В SPRO есть раздел Города в Управлении адресами – SPRO:F999CC4C918CD21197EA0060B0672A3C

Основные транзакции по созданию/изменению/просмотру городов – это SR10/SR11/SR12.

Вот пример, как выглядит окно изменения:

Изменение города

Надо только определиться с диапазоном номеров (подобрать оптимальный подход) – внешний(согласовать формат) или внутренний.

Если вдруг вам нужно удалить город, то тут не всё так просто – есть отчёт SE38:RSADRLSM01, который удаляет в рамках страны все данные (города, индексы, улицы).

Определение корреспонденции в главной книге

Сталкивался с ручной интерпретацией определения корреспонденции.

  1. Для определения допустимой и запрещённой корреспонденции
  2. Для получения отчётов по корреспонденции (журнал-ордер)
  3. Для передачи документов в систему, в которой используются только пары Дт-Кт

До этого такие функции я видел только в Z-разработках, но есть, оказывается, в стандарте кое-что вокруг этого.

(далее…)

Пример с радио-группами

Сегодня — формулировка об унификации селективных экранов. О, да… это тоже борьба с энтропией.

Исключающие параметры

Часто бывает, что некоторые параметры образуются в некоторые взаимоисключающие группы. То есть в данном примере: следует заполнять или первое+второе поле, или третье+четвёртое поле.

Исключающие параметры

В дополнение к таком селективному экрану можно написать обработчик, который будет выдавать ошибку вида “параметры А и Б не следует заполнять при заполненных параметрах В и Г”. Вариант суров и неоднозначен.

В качестве более красивого решения можно предложить разбавить эти параметры с помощью радиогруппы.

Исключающие параметры

Параметры к параметру

Параметр к параметру

Параметр к параметру

Вот чуть-чуть другой пример. Радиогруппа уже есть, но некоторые параметры имеют смысл только для определённых пунктов.

 

Реализация

Во-первых, следует сделать пару добавок в описание селективного экрана:

Описание селективного экрана

 

Добавка “USER-COMMAND flag” требуется только для первого элемента в группе. Цель этой добавки – срабатывание PBO при выборе опции (щелчок мыши).

Добавка “MODIF ID OP1” требуется для группировки полей, чтобы “отвязаться” от количества и имён полей в обработчике экрана.

А во-вторых, добавляем обработчик экрана:

Обработчик AT SELECTION-SCREEN OUTPUT

Этот обработчик по сути говорит:

  • Для группы полей OP1: При включенной опции rg_opt1 – требуется включить ввод, иначе  — выключить ввод
  • Для группы полей OP2: При включенной опции rg_opt2 – требуется включить ввод, иначе  — выключить ввод

Ничего сложного, а пользователю, надеюсь, будет немного понятней.

Впрочем, это только один из вариантов…

Между Гуглом и Яндексом

Я давно уже отмечаю, что эти два монстра друг на друга похожи, но никогда не сравнивал их.

Очень многие сервисы повторяют друг друга: 

  • Почта и поисковик – это только основная открытая часть
  • ГуглТолк против Я.Онлайн
  • Метрика Яндекса против Гугловой Аналитики
  • Лента Яндекса против Гуглового Ридера
  • ЯндексДирект против “как-эта-штука-называется-у-гугла”
  • Фотки Яндекса против ГуглоПикасы
  • Ютуб против ЯндексВидео
  • и так далее…

Часто используются не только похожие принципы, но и похожая реализация. Различие кроется в деталях.

Вот можно, например, детально сравнить Ленту с Ридером:

  • Яндекс имеет рекламный блок, у Гугла всяческая реклама отсуствует
  • Яндекс имеет прокрутку по полной странице, Гугл имеет прокрутку по вложенным спискам
  • Гугл имеет полный AJAX, а у Яндекса он, похоже, только частичный.
  • Яндекс использует постраничное разбиение списка новостей, а Гугл использует прокрутку и динамическую подгрузку
  • Гугл имеет колаборативные сервисы “нравится, общие, комментарии”, а у Яндекса есть только репостеры в ЖЖ, Твит и иже с ними
  • Гугл умеет оперировать статистикой подписки – причем как серверной, так и юзерной, а у Яндекса такие возможности почти отсуствуют – можно посмотреть только количество подписчиков
  • Рекомендации Гугла основываются на текущей подписке, но вот откуда сложились рекомендации у яндекса – для меня загадка
  • Гугл позволяет лепить дополнительные теги на новости, а классификация Яндекса останавливается на папках
  • Возможности настройки интерфейса у Гугла более серьёзные, нежели у Яндекса

 

В разрезе данного сервиса мне видится преимущество Гугла несомненным.

Кодекс чести

Перевод статьи Code of Honour за авторством Jens Steckhan (SAP).

Что общего между самураем, клингонцем и работником SAP?

Кодекс чести.

 

Я хочу написать об элементах, которые приносят удовлетворение и радость в мою жизнь разработчика.

Я открыл для себя, что большинство людей, с которыми я имел честь работать, придерживаются неписанного кодекса, немного похожего на Кодекс самурая. Позвольте мне его изложить:

(далее…)

Компромиссы

Как часть глобального плана Вселенной всё в мире состоит из компромиссов.
И люди бывает не отдают себе отчет в том, что решают задачи по выбору компромисса на каждом шагу, где требуется хоть мало-мальски значимое решение. Просто решают на автомате, пусть и не всегда удачно.

Купить или не купить.
Использовать или выбросить.
Встать рано или проспать.
Доделать или бросить.
Уйти или вернуться.
Любить или ненавидеть.

Если есть решение, значит есть выбор, значит есть компромисс. И даже выбор между мгновенным интуитивным или взвешенным осознанным решением — это также компромисс.

И никогда решение не будет идеальным, так как точки компромиссов, как и точки равновесия — вещь переменная. Переменная функция от постоянно меняющегося окружения, переменная функция от постоянно меняющегося "я".
Идеальным решение может стать только при отсутствии выбора.

Бывает конечно, когда одна сторона настолько оттягивает противоположную, что можно и не заметить её наличия.

Вселенная всегда стремится найти точку равновесия. Точка равновесия находится в моменте, когда разнонаправленные силы находят компромисс, уравновешивая свои значения.

Вселенная силу приложенную уравнивает противодействием. Просто по привычке.

Текущее состояние — мгновенный слепок постоянно сдвигающегося компромисса между тем, что было, и тем, что будет.
И будущее постоянно уговаривает своё прошлое на уступки, подкидывая ему события.

ЗЫ. UPD.

Различные варианты по запросу значений

Часто бывает необходимость в рисовании всплывающих окон для получения тривиальных ответов от пользователя.

И, разумеется, рисовать собственные экраны и писать обработчики при таком раскладе – занятие целиком неблагодарное.

Запрос ответа “ДА” или “НЕТ”

Вызов совсем простой:

POPUP_CONTINUE_YES_NO

Выглядит этот экран следующим образом:

POPUP_CONTINUE_YES_NO

Запрос значения или нескольких значений

Сначала надо определить список полей и начальные значения:

POPUP_GET_VALUES

Затем следует вызов этой функции:

POPUP_GET_VALUES

Получить введённые значения можно из той же таблицы.

Выглядит этот экран следующим образом:

POPUP_GET_VALUES

Для подобного экрана есть вариант: POPUP_GET_VALUES_USER_CHECKED. В этом функциональном модуле (по всей видимости) можно указать callback-подпрограмму для проверки введённых значений.

Выбор с вариантами ответов

Сначала определяем варианты ответов:

POPUP_TO_DECIDE_LIST

Затем вызываем функцию и анализируем ответ:

POPUP_TO_DECIDE_LIST

А выглядит это окно следующим образом:

POPUP_TO_DECIDE_LIST

Прочее

Ко всему прочему есть ещё много встроенных в SAP функций, в том числе и для работы с табличными данными.

Практически любое соглашение об именовании лучше его отсутствия

… а лучше оно потому, что если его придерживаться, то порядок увеличивается, а беспорядок уменьшается.

С практической точки зрения порядок можно увеличивать до момента, когда он уже начинает вредить “поворотливости”.

(далее…)