Мониторинг IDOC между системами

Автор: KA
 
Иногда бывает, что необходимо сообщить получателю IDOC номер IDOC в системе-получателе. Не все же “рубят” в ALE и не всегда можно быстро отфильтровать нужное в BD87/WE05 и т.д
 
Для этого в SAP предусмотрено полезное средство:
Транзакция: BDM2 
Программа: RBDMOIN8
 
После нехитрого селекционного экрана можно получить соответствие номеров IDOC:
Помимо этого, двойной клик позволяет провалиться в просмотр содержимого IDOC как в источнике, так и в получателе (если сделана настройка RFC).
 
PS.
Для работы данной транзакции требуется, чтобы для партнёра LS был настроен тип сообщения SYNCH.

Тотальное уничтожение табельного номера с потрохами и крылышками

Я сегодня занимаюсь деструктивными действиями. Методом маски со звездочкой и кнопки F4 обнаружил ранее неизведанный объект по тотальному уничтожению табельных номеров исключительно в продуктивных системах.

RPUDELPP Уничтожение табельных номеров в продуктивных системах. Обратите внимание на всю безысходность формулировок – унитожить, не удалить, а именно уничтожить. Как в фильмах про конец света. Есть управление согласованием уничтожения – ядерный чемоданчик с красной кнопкой – объекты полномочий для Дара Бога.

Запрашиваю уничтожение…

Программа удаления табельных номеров в SAP

 


Разрабатываем Fiori приложение – часть 1

Открываем гугл, гуглим, разрабатываем, закрываем гугл. Примерно такой цикл разработки приложения по Agile для Fiori. Прошло буквально два года с момента, когда я сам писал первое приложение для себя, поиграться. Тогда это был старый и добрый Eclipse. Сейчас даже гугл уже не помнит примеры разработки Fiori приложений для Eclipse. Вендор активно стирает все в нашей памяти и тычет: вот облако, вот Web IDE, ходи туда.

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

Задача приложения – отображать системные журналы через веб. Системные журналы, это то, что разные программы пишут в базу, а мы можем посмотреть через транзакцию SLG1. Для разработки приложения нам нужны две вещи: OData сервис, который будет доставать данные из журнала, само приложение, которое будет визуализировать эти данные.

Очень упрощенная модель приложения, без проверок безопасности, авторизации, overflow, да и вообще уровня школьника, выглядит примерно так.

Читать далее


Делаем свой File Event Scheduler

Привет.

Продолжаем разговор про планировщики заданий. Вот простое решение по автоматизации файловых событий. Если на диске появился файл, который нужно загрузить, то программа генерирует сигнал и запускается загрузчик. Автоматизированно.

Сначал мы создаем свое событие в SM62.

Читать далее


Две полезные функции в Excel

Привет.

Любой консультант должен знать Excel. Аксиома. Последние несколько дней я плотно работаю с этим инструментом, обрабатывая большие массивы данных, которые не имеют отношения к миграции. Написал для себя пару функций, которых нет в стандарте, а могут понадобиться.

Функция JoinRow для конкатенации (слияния) ячеек. Обычно мы пользуемся знаком амперсанд (&) или функцией СЛИЯНИЕ(CONCATENTA), но та нужно каждую ячейку указать принудительно. Например, =A1&”,”&A2. А тут микрофункция, которая сама прогуляется по указанному диапазону и сделает слияние за секунды. Сохранило мне около часа времени.

Function JoinRow(ByRef rng As Range, ByVal delim As String)
Dim a, i As Long
a = rng.Value
For i = 1 To UBound(a, 2)
If a(1, i) <> "" Then
    JoinRow = JoinRow & a(1, i) & delim
End If
Next
End Function

Вторая функция, точнее процедура, нужна любителям сводных таблиц и фильтров. Если вы загружаете XML в Excel (а мне пришлось загрузить несколько тысяч XML файлов и обработать) или вам нужно данные в плоской таблице привести к удобному виду для фильрования или создания сводной таблицы, то вот моя вторая процедура.

Sub FillEmptyCells()
Dim rng As Range
 
Set rng = Selection
 
 
Dim a, x, y As Long
a = rng.Value
 
For x = 1 To UBound(a, 2)
    For y = 2 To UBound(a, 1)
        If Worksheets(1).Cells(y, x).Value = "" Then
            Worksheets(1).Cells(y, x).Value = Worksheets(1).Cells(y - 1, x).Value
        End If
    Next
Next
 
 
End Sub

Выделяем в Excel на первом листе нужный нам диапазон и запускаем. Процедура идет сверху вниз слева направо и делает простую проверку. Если текущая ячейка пустая, то вставить в нее значение из ячейки сверху. Это бывает нужно, когда у вас данные лежат как иерархия, то есть каждая левая колонка является родителем для правой. Чтобы такие данные обрабатывать нужно для каждого ребенка слева явно прописать родителя (значение). Этот простой макрос и выполняет такую работу.

Сэкономило мне примерно день работы 🙂

Исходя из поставленной мне задачи компания Заказчик сэкономила около тысячи долларов США всего лишь из-за двух функций в Excel.