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

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.

Читать далее

Дружим HR с BW

Сегодня день цепочек — я настраивал цепочки для автоматической загрузки данных из ERP системы в BW. Цепочка, это последовательность команд, которые надо выполнить, чтобы счастье случилось. Озарившая меня идея заключается в том, что расчет заработной платы можно организовать так:

  1. Делаем модель процессов (тр. PEST) для расчета заработной платы. 
  2. В модель встраиваем шаг проводок. 
  3. После шага проводок делается минипрограмма, которая вызывает событие (EVENT) в BW системе. 
  4. Запуск цепочки в BW указываем при возникновении события (стандартная функциональность в планировщике заданий).
Таким образом сразу же после проводок у нас запустится обновление BW с уже актуальными результатами расчета. Единственное, что я сейчас пока не знаю, как научить систему автоматически передавать созданные документы проводок в целевую систему. PUST создает сами документы, но их нужно еще деблокировать и отправить. Надо поискать программку, уверен, такая есть.