Экспорт данных без программирования (почти)

Уверен, что многие их вас слышали и видели этот инструмент, но мало кто открывал и копал внутрь. В системе есть очень старый инструмент для выгрузки данных. Он такой же старый, как и LSMW, но тем не менее последний мы используем на каждом проекте, а про этот ничего не знаем. Сегодня будем исправлять этот недостаток и лишать программистов работы. Перебрав в голове свои проекты могу с 90% уверенностью сказать, что 90% исходящих интерфейсов делается на простых файлах в CSV или с табуляцией формате. Наиболее популярными направлениями для отдыха являются обмен данными с банками и страховыми. Это те случаи, когда нужно в виде простого плоского файла отправлять информацию о движении персонала (принят, переведен, убит, уволен). Также обычно просят данные по базовой заработной плате, режиму работы для страховых. Банковские ведомости мы обычно формируем на базе таблички REGUH (про нее расскажу позже), а для страховых нужны не фактические выплаты, а начисления и удержания. Профсоюзам тоже хочется списочки с удержаниями, как и бухгалтерии файлики для пересылки сумм удержаний за то и се. Обычно мы пишем спеки и кодим такие выгрузки.

Есть решение, где можно в ряде случаев обойтись без программирования, только мышкой и смекалкой. Это транзакция PU12, которая позволяет настроить форматы выгрузки данных, отслеживать дельты в данных и отгружать их наружу, хранить историю выгрузок, включая сами выгруженные данные. Это все удовольствие можно архивировать штатными средствами, так как хранится в TemSe. Одни плюсы.

Читать далее


Преобразования в ALE

Про настройку ALE мы немного уже поговорили в прошлый раз. Теперь обсудим возможности этого самого ALE, а в будущем и интеграции. Сегодня я разбираюсь в преобразованиях в ALE, которые позволяют на лету менять данные по заранее определенным алгоритмам.

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

Вся настройка преобразования IDOC в ALE заключается в трех простых пунктах меню в IMG. Запускаем транзакцию SALE и спускаемся до нужных нам настроек.

Читать далее


LSMW и IDOC инструкция для начинающих

Роман @metha решил поделиться с нами информацией, как можно создавать IDOC из файла. Это бывает нужно для миграции заработной платы, например, когда мы захотим в LSMW сделать загрузку через IDOC.

Делаем вот такой file port. Каталог указываем в соответствии со своей системой.

lsmw_idoc_1

Читать далее


Интеграция с AviaSales

Маленький пятничный подарок, реализованный за 1 час времени с нуля – прошу, интеграция с AviaSales.

Хотите, чтобы в модуле управления командировками можно было получать реальные цены на авиабилеты? Вот кусок кода, который можно вставить в бадишку для поиска билетов. Это образец, дальше сами сообразите. А полное решение будет в новой книге от меня 😉

 

REPORT ZAVIASALES.

DATAlo_http_client     TYPE REF TO if_http_client,
lo_rest_client     TYPE REF TO cl_rest_http_client,
lv_url             TYPE        string,
lv_body            TYPE        string,
lo_response    TYPE REF TO     if_rest_entity.
cl_http_client=>create_by_url(
EXPORTING
url              ‘http://api.travelpayouts.com’
IMPORTING
client                   lo_http_client    ” HTTP Client Abstraction
exceptions
argument_not_found 1
plugin_not_active  2
internal_error     3
others             4
).
CREATE OBJECT lo_rest_client
EXPORTING
io_http_client lo_http_client.

IF lo_http_client IS BOUND AND lo_rest_client IS BOUND.
lv_url ‘/v1/prices/cheap?origin=MOW&destination=HKT&depart_date=2015-11&return_date=2015-12&token=ВАШТОКЕН’.
cl_http_utility=>set_request_uri(
EXPORTING
request lo_http_client->request    ” HTTP Framework (iHTTP) HTTP Request
uri     lv_url                     ” URI String (in the Form of /path?query-string)
).

* HTTP GET
lo_rest_client->if_rest_client~get).

* HTTP response
lo_response lo_rest_client->if_rest_client~get_response_entity).

* HTTP return status
DATA(http_status)   lo_response->get_header_field‘~status_code’ ).

* HTTP JSON return string
DATA(json_responselo_response->get_string_data).
write json_response.

ENDIF.

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

{“success”: true, “data”: {“HKT”:{“0”:{“price”:36693,”airline”:”SU”,”flight_number”:274,”departure_at”:”2015-11-24T19:15:00Z”,”return_at”:”2015-12-09T11:40:00Z”,”expires_at”:”2015-10-19T14:18:50Z”},”1″:{“price”:25654,”airline”:”CA”,”flight_number”:910,”departure_at”:”2015-11-22T18:55:00Z”,”return_at”:”2015-12-10T01:40:00Z”,”expires_at”:”2015-10-17T18:14:29Z”},”2″:{“price”:26837,”airline”:”EY”,”flight_number”:68,”departure_at”:”2015-11-19T12:50:00Z”,”return_at”:”2015-12-15T06:55:00Z”,”expires_at”:”2015-10-18T14:54:47Z”},”3″:{“price”:37979,”airline”:”SU”,”flight_number”:22,”departure_at”:”2015-11-16T16:10:00Z”,”return_at”:”2015-12-14T01:50:00Z”,”expires_at”:”2015-10-19T13:11:55Z”}}}}


Устанавливаем соединение с внешним сервером

Привет.

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

В транзакции DBACOCKPIT создаем соединение к базе данных.

А с помощью такого примера из ноты забираем данные:
EXEC SQL.
CONNECT TO ‘BSK’
ENDEXEC.
EXEC SQL.
SET CONNECTION ‘BSK’
ENDEXEC.
EXEC SQL.
SELECT db_name() INTO :DBN FROM SVERS
ENDEXEC.
WRITE: / ‘current database name’, DBN.
EXEC SQL.
SET CONNECTION DEFAULT
ENDEXEC.
EXEC SQL.
SELECT db_name() INTO :DBN FROM SVERS
ENDEXEC.
WRITE: / ‘current database name’, DBN.

Это обычный Native SQL в ABAP. Пара нот в помощь.

Note 178949 – MSSQL: Database MultiConnect
Note 323151 – Several DB connections with Native SQL