Элементы, назначенные с помощью API, не отображаются в окнах приложений Oracle EBS.

Я использовал следующий API для назначения нескольких элементов (один за другим) из одной организации в другую. Я создал тестовые элементы с помощью ответственности за инвентаризацию, используя окно основного элемента, а затем назначил их другой организации, используя следующий код:

BEGIN 
DECLARE 
l_api_version NUMBER := 1.0; 
l_init_msg_list VARCHAR2(2) := FND_API.G_TRUE; 
l_commit VARCHAR2(2) := FND_API.G_FALSE; 
x_message_list error_handler.error_tbl_type; 
itemid mtl_system_items_b.inventory_item_id %TYPE; 
segment1 mtl_system_items_b.segment1 %TYPE; 
primary_uom_code mtl_system_items_b.primary_uom_code %TYPE; 
x_return_status VARCHAR2(2); 
x_msg_count NUMBER := 0; 
BEGIN 
SELECT inventory_item_id INTO itemid FROM mtl_system_items_b WHERE inventory_item_id=2447106 and organization_id=116; 
SELECT segment1 
INTO segment1 FROM mtl_system_items_b WHERE inventory_item_id=2447106 and organization_id=116; 
SELECT primary_uom_code INTO primary_uom_code FROM mtl_system_items_b WHERE inventory_item_id=2447106 and organization_id=116; 

EGO_ITEM_PUB.ASSIGN_ITEM_TO_ORG( 
P_API_VERSION => l_api_version 
, P_INIT_MSG_LIST => l_INIT_MSG_LIST 
, P_COMMIT => l_COMMIT 
, P_INVENTORY_ITEM_ID => itemid --(item id from the above Query) 
, P_ITEM_NUMBER => segment1 --(Item Code from the above Query) 
, P_ORGANIZATION_ID => 117 --(Organization Id for assingment) 
, P_ORGANIZATION_CODE => 'D12'--v_organization_code 
, P_PRIMARY_UOM_CODE =>primary_uom_code --(UOM from the above Query) 
, X_RETURN_STATUS => X_RETURN_STATUS 
, X_MSG_COUNT => X_MSG_COUNT 
); 
DBMS_OUTPUT.PUT_LINE('Status: '||x_return_status); 
IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN 
DBMS_OUTPUT.PUT_LINE('Error Messages :'); 
Error_Handler.GET_MESSAGE_LIST(x_message_list=> x_message_list); 
FOR j IN 1..x_message_list.COUNT LOOP 
DBMS_OUTPUT.PUT_LINE(x_message_list(j).message_tex t); 
END LOOP; 
END IF; 
EXCEPTION 
WHEN OTHERS THEN 
dbms_output.put_line('Exception Occured :'); 
DBMS_OUTPUT.PUT_LINE(SQLCODE ||':'||SQLERRM); 

END; 
END; 

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

Я попытался изменить несколько значений, которые оказались ненормальными (например, время последнего обновления было «-1», вероятно, потому, что я использовал API, а не графический интерфейс, используя свой идентификатор пользователя и пароль).

Почему элементы не отображаются в графическом интерфейсе? Есть ли какой-либо шаг, кроме правильного выполнения приведенного выше кода, который я пропустил? Пожалуйста помоги.


person Salik    schedule 04.11.2013    source источник


Ответы (1)


Вы не совершаете транзакцию. Вы заявляете:

l_commit VARCHAR2(2) := FND_API.G_FALSE; 

Который вы затем передаете в API. Если вы затем запросите таблицы, используя ту же транзакцию, вы увидите измененные данные. Но формы приложений используют другой сеанс.

В конце нужно добавить коммит. Что касается перехода в G_TRUE, вам необходимо прочитать документацию по API.

person Wolf    schedule 04.11.2013
comment
Спасибо, G_TRUE сработало. Я просмотрел документацию и обнаружил, что для того, чтобы зафиксировать выполнение, мы должны установить параметр как true. - person Salik; 04.11.2013