ОЕБС Пример вызова параллельной программы для проведения журналов
-- -----------------------------------------------------
-- Проведение журналов
-- -----------------------------------------------------
PROCEDURE post_journals(p_ledger_id NUMBER
,p_group_id NUMBER
,p_period VARCHAR2
,p_rev NUMBER
,x_return_status OUT VARCHAR2
,x_mess OUT VARCHAR2)
IS
l_request_id INTEGER;
l_posting_run_id INTEGER;
l_chart_of_accounts_id INTEGER;
l_access_set_id INTEGER;
BEGIN
write_log('START POST_JOURNALS');
x_return_status := 'E';
l_posting_run_id := gl_je_posting_s.nextval;
IF (p_rev = 0) THEN
UPDATE gl_je_batches b
SET status = 'S'
,approval_status_code = 'Z' -- пакет должен быть утвержден
,posting_run_id = l_posting_run_id
WHERE b.status = 'U'
AND b.GROUP_ID = p_group_id;
ELSIF (p_rev = 1) THEN
UPDATE gl_je_batches b
SET status = 'S'
,approval_status_code = 'Z' -- пакет должен быть утвержден
,posting_run_id = l_posting_run_id
WHERE b.status = 'U'
AND EXISTS
(SELECT 1
FROM gl_je_batches jb, gl_je_headers h, gl_je_headers hr
WHERE jb.je_batch_id = h.je_batch_id
AND h.je_header_id = hr.reversed_je_header_id
AND (h.name LIKE G_JH_NAME_IN || '%' OR
h.name LIKE G_JH_NAME_OUT || '%')
AND h.period_name = p_period
AND h.ledger_id = p_ledger_id
AND hr.je_batch_id = b.je_batch_id)
AND 2 = 2;
END IF;
write_log(' UPDATE ' || SQL%ROWCOUNT || ' rows in GL_JE_BATCHES');
IF (SQL%ROWCOUNT > 0) THEN
--
SELECT l.chart_of_accounts_id, a.access_set_id
INTO l_chart_of_accounts_id, l_access_set_id
FROM gl_ledgers l, gl_access_sets a
WHERE 1 = 1
AND l.ledger_id = p_ledger_id
AND a.default_ledger_id = l.ledger_id
AND a.chart_of_accounts_id = l.chart_of_accounts_id
AND a.period_set_name = l.period_set_name
AND a.accounted_period_type = l.accounted_period_type;
l_request_id := fnd_request.submit_request(
application => 'SQLGL'
,program => 'GLPPOSS'
,description => NULL
,start_time => NULL
,sub_request => FALSE
,argument1 => p_ledger_id
,argument2 => TO_CHAR(fnd_profile.value('GL_ACCESS_SET_ID'))
,argument3 => l_chart_of_accounts_id
,argument4 => l_posting_run_id);
COMMIT;
IF l_request_id = 0 THEN
x_mess := 'Ошибка при отправке запроса проводки журналов';
RETURN;
END IF;
-- описание функции http://apps-oracle.ru/fnd_request_exec/#WAIT_CONCURRENT
if NOT (wait_concur(l_request_id,x_mess)) then
write_log(x_mess);
RETURN;
end if;
END IF;
x_return_status := 'S';
write_log('END POST_JOURNALS' || chr(10));
RETURN;
EXCEPTION
WHEN OTHERS THEN
x_mess := 'Ошибка при запуске запроса проводки журналов: ' || SQLERRM;
END;
Пример вызова параллельной программы для импорта журналов
-- -----------------------------------------------------
-- Импорт журналов
-- -----------------------------------------------------
PROCEDURE import_journals(x_return_status OUT VARCHAR2
,x_mess OUT VARCHAR2
)
IS
l_flag_exist NUMBER;
l_request_id NUMBER;
BEGIN
x_return_status := 'E';
write_log('START IMPORT_JOURNALS');
-- проверка, что есть вставленные строки
SELECT COUNT(1) INTO l_flag_exist FROM gl_interface t
WHERE group_id = fnd_global.conc_request_id;
IF (l_flag_exist != 0) THEN
write_log('Запуск программы "Программа - импорт журналов"');
l_request_id := apps.fnd_request.submit_request(
'SQLGL'
,'GLLEZLSRS'
,NULL
,SYSDATE
,FALSE
,fnd_profile.value('GL_ACCESS_SET_ID') --Data Access Set ID
,G_JE_SOURCE_NAME --Source
,G_LEDGER_ID --Ledger
,fnd_global.conc_request_id --Group ID
,'N' --Post Errors to Suspense
,'N' --Create Summary Journals
,'W' --Import Descriptive Flexfields
);
COMMIT;
IF l_request_id = 0 THEN
x_mess := 'При отправке запроса произошла ошибка. Номер запроса:' || l_request_id;
write_log(x_mess);
RETURN;
END IF;
-- описание функции http://apps-oracle.ru/fnd_request_exec/#WAIT_CONCURRENT
if NOT (wait_concur(l_request_id,x_mess)) then
write_log(x_mess);
RETURN;
end if;
END IF;
write_log('END IMPORT_JOURNALS' || chr(10));
x_return_status := 'S';
END;
OEBS API Запуск параллельной программы
declare
l_request_id NUMBER;
--
p_app_name VARCHAR2(100);
p_request_name VARCHAR2(100);
begin
l_request_id:=apps.fnd_request.submit_request
(application => p_app_name -- код приложения
,program => p_request_name -- код параллельной программы
,description => NULL -- описание
,start_time => NULL -- когда запустить программу
,sub_request => FALSE -- признак дочерней программы
,argument1 => 1 -- параметр параллельной программы
-- ...
--,argument100 =>
);
COMMIT;
if l_request_id = 0 then
--write_log('При отправке запроса произошла ошибка');
raise fnd_api.g_exc_error;
end if;
end;
Если,
start_time = NULL, то запуск происходит сразу.
start_time = fnd_date.date_to_canonical(sysdate + (1/26/60)*5) — запуск через 5 минут
Читать дальше про “OEBS API Параллельные программы — отправка, ожидание, скрытый режим” »
Случайно наткнулся на то, что EXCEL2007/2010 число 2,01 хранит как 2.0099999999999998.
Пример: Создаем excel файл и прописываем в ячейки числовые значения с точкой
Сохраняем файл как «Таблица XML 2003» и открываем на просмотр в текстовом редакторе:
Читать дальше про “EXCEL — некорректная точность чисел с десятичной точкой” »
При использовании ключевых гибких полей в WEBADI может возникнуть ошибка типа:
oracle.apps.bne.utilities.BneViewerServerUtils.getFlexListOfValues(BneViewerServerUtils.java:269)
Помочь может переименование параметров в «SEGMENT1«,»SEGMENT2» и т.д. и убрать номера из поля segment number. Обновляем через таблицу.
Читать дальше про “WEBADI: Ошибка при работе с КГП (KFF)” »
Для добавления функций в избранное по полномочиям — API:FND_SIGNON.UPDATE_NAVIGATOR
Читать дальше про “OEBS Меню полномочий — Избранное (Top Ten List)” »
Описание нескольких таблиц из схемы IBY (Payments):
IBY.IBY_EXTERNAL_PAYEES_ALL
Платежные атрибуты поставщика (получателя)
IBY.IBY_EXTERNAL_PAYERS_ALL
Платежные атрибуты заказчика (плательщика)
IBY.IBY_ACCOUNT_OWNERS
Владельцы банковского счета
IBY.IBY_PMT_INSTR_USES_ALL
Назначения платежных средств.
Содержит связь между платежными средствами (payment instruments) и плательщиком/получателем (Payer/Payee). Платежным средством может быть кредитная карта или банковсвкий счет.
IBY.IBY_EXT_BANK_ACCOUNTS
Внешние банковские счета
Посмотреть поля по которым можно связать счет-фактуру (СФ) и данные в XLA таблицах можно через форму настройки.
Аналогичным способом можно посмотреть связку для платежей, поступлений и т.д.
Полномочия «Payables Manager» — меню «Setup» — «Accounting Setup» — «Subledger Accounting Setup» — «Accounting Methods Builder» — «Events» — «Event Model»
В Oracle Forms для удаления элемента из списка (List item)
используем комбинацию CTRL+SHIFT+< .
Пример использования API для обновления корреспондентского счёта банка. (корр. счёт)
declare
p_brunch_number varchar2(30) := '!NUM';
p_ksnp varchar2(40) := '!CORR_ACCOUNT';
--
l_contact_point_rec hz_contact_point_v2pub.contact_point_rec_type;
l_edi_rec hz_contact_point_v2pub.edi_rec_type;
l_obj_vers NUMBER;
l_party_id number;
--
x_return_status varchar2(1);
x_msg_count number;
x_msg_data varchar2(4000);
begin
select party_id into l_party_id
from ar.hz_organization_profiles hop
where 1=1
and sysdate between hop.effective_start_date and nvl(hop.effective_end_date, sysdate+1)
and hop.bank_or_branch_number = p_brunch_number;
dbms_output.put_line('l_party_id='||l_party_id);
SELECT contact_point_id, object_version_number
into l_contact_point_rec.contact_point_id, l_obj_vers
FROM hz_contact_points
WHERE contact_point_type = 'EDI'
AND owner_table_name = 'HZ_PARTIES'
AND owner_table_id = l_party_id;
dbms_output.put_line('l_obj_vers='||l_obj_vers);
dbms_output.put_line('contact_point_id='||l_contact_point_rec.contact_point_id);
l_edi_rec.edi_ece_tp_location_code := p_ksnp;
hz_bank_pub.update_edi_contact_point (fnd_api.g_true,
l_contact_point_rec,
l_edi_rec,
l_obj_vers,
x_return_status,
x_msg_count,
x_msg_data
);
dbms_output.put_line('--');
dbms_output.put_line('Return status = '||x_return_status);
if x_return_status != fnd_api.g_ret_sts_success then
if x_msg_count = 1 then
dbms_output.put_line ('Error:' || x_msg_data);
else
FOR i IN 1 .. x_msg_count LOOP
dbms_output.put_line('Error:' || fnd_msg_pub.get(fnd_msg_pub.g_next, fnd_api.g_false) );
END LOOP;
end if;
end if;
-- commit;
exception
when others then
dbms_output.put_line('SQLERRM:'||SQLERRM||chr(10));
dbms_output.put_line('FORMAT_ERROR_BACKTRACE:'||chr(10)||dbms_utility.format_error_backtrace);
raise;
end;
Последние комментарии