Sunday, 27 April 2025

INV API: Approve/Cancel Inventory Move Order

 /*Move Order Approval API in Oracle APPS R12*/

DECLARE
    p_move_order_number VARCHAR2(240) := '18449190';
    v_header_id         NUMBER;
BEGIN
    fnd_global.Apps_initialize(2739, 20634, 401);

    BEGIN
        SELECT hd.header_id
        INTO   v_header_id
        FROM   mtl_txn_request_headers hd
        WHERE  hd.request_number = p_move_order_number;
    EXCEPTION
        WHEN OTHERS THEN
          v_header_id := NULL;
    END;

    invtroap.Start_to_approval (to_header_id => v_header_iditem_type => 'INVTROAP', item_key => To_char(v_header_id));

    COMMIT;
EXCEPTION
    WHEN OTHERS THEN
      dbms_output.Put_line('Error - '
                           ||SQLERRM);
END; 



/*API to cancel Move Order*/
DECLARE
    p_move_order_number  VARCHAR2(240) := '18510837';
    v_header_id          NUMBER;
    l_status             VARCHAR2(1);
    l_msg_count          NUMBER;
    l_msg_data           VARCHAR2(240);
    l_error_message_list error_handler.error_tbl_type;
BEGIN
    dbms_output.Put_line('Starting');
    fnd_global.Apps_initialize(&userid,
    -- User ID: You can use the same user id that created Move order (MO). Replace with yours from query a)
    &responsibility,401);

    BEGIN
        SELECT hd.header_id
        INTO   v_header_id
        FROM   mtl_txn_request_headers hd
        WHERE  hd.request_number = p_move_order_number;
    EXCEPTION
        WHEN OTHERS THEN
          v_header_id := NULL;
    END;

    inv_mo_admin_pub.Cancel_order (p_api_version => 1.0,
    p_header_id => v_header_id,
    x_msg_count => l_msg_count, x_msg_data => l_msg_data,
    x_return_status => l_status);

    IF l_status = fnd_api.g_ret_sts_success THEN
      dbms_output.Put_line('ok');
    ELSE
      dbms_output.Put_line('Error.');
      dbms_output.Put_line('Error Message :' ||l_msg_data);

      error_handler.Get_message_list (x_message_list => l_error_message_list);

      
FOR i IN 1..l_error_message_list.count LOOP
          dbms_output.Put_line('Entity Id    : '||L_error_message_list(i).entity_id);
          dbms_output.Put_line('Index        : '||L_error_message_list(i).entity_index);
          dbms_output.Put_line('Message Type : '||L_error_message_list(i).message_type);
       dbms_output.Put_line('Mesg         : '||Substr(L_error_message_list(i).message_text, 1,500));
        dbms_output.Put_line('-------------------------------------------------------------------');
END LOOP;
END IF;

COMMIT;
dbms_output.Put_line('Finishing');
EXCEPTION
    WHEN OTHERS THEN
      dbms_output.Put_line('Error - '
                           ||SQLERRM);
END; 

No comments:

Post a Comment