Архив метки: интеграция

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

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

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

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

Читать далее

LSMW + IDOC

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

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

lsmw_idoc_1

Читать далее

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

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

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

 

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

Позитивный учет

Позитивный учет дело тонкое. Вроде бы все просто с одной стороны – пришел/ушел и все работает, ан нет. Позитивный учет, это когда регистрируют время фактической работы сотрудника в часах/днях или отметками пришел/ушел/обедаем-с. Для этих целей есть отдельные статусы временных данных в седьмом инфотипе, отдельные схемы оценки времени TM00, TM01. Как все это работает?

Мы у себя внедрили учет рабочего времени по биометрическим отпечаткам пальцев. Пришел, ввел табельный номер, приложил пальчик, и отметка сохранилась. Эту функцию выполняет стороннее решение, которое аккумулирует отметки в своей базе. С точки зрения SAP весь обмен любезностями идет через программы по расписанию, которые вручную можно запустить в транзакции PT80.

Читать далее