• INV*账户别名接收发放


    DECLARE
    	--p_old_new_flag  OLD 为导出 NEW 为导入
    	l_iface_rec         inv.mtl_transactions_interface%ROWTYPE;
    	l_iface_lot_rec     inv.mtl_transaction_lots_interface%ROWTYPE;
    	l_timeout           NUMBER;
    	l_outcome           BOOLEAN;
    	l_error_code        VARCHAR2(100);
    	l_error_explanation VARCHAR2(100);
    	l_request_id        NUMBER;
    	l_sqlerrm           VARCHAR2(1000);
    
    	l_inventory_item_id NUMBER;
    	l_organization_id   NUMBER;
    	l_uom               VARCHAR2(240);
    	l_disposition_id    NUMBER;
    	l_subinventory_code VARCHAR2(240);
    	l_count             NUMBER;
    	l_locator_id        NUMBER;
    	l_error_msg         VARCHAR2(32767);
    
    	CURSOR cur IS
    		SELECT t.import_id,
    					 t.organization_code,
    					 t.item_number,
    					 t.subinventory_code,
    					 t.transaction_type transaction_type1,
    					 decode(t.transaction_type,
    									'帐户别名接收',
    									41,
    									'帐户别名发放',
    									31,
    									NULL) transaction_type,
    					 t.account_alias,
    					 t.transaction_uom,
    					 t.transaction_date,
    					 t.lot_number,
    					 decode(t.transaction_type,
    									'帐户别名接收',
    									t.transaction_quantity,
    									'帐户别名发放',
    									t.transaction_quantity * (-1),
    									NULL) transaction_quantity,
    					 t.attribute1,
    					 t.attribute2,
    					 t.attribute3,
    					 t.attribute4,
    					 t.attribute5
    		FROM   cux_inv_mmt_account_temp t
    		WHERE  1 = 1
    		--AND    t.item_number = '1515453000051'
        ;
    BEGIN
    
    	mo_global.init('INV');
    	fnd_global.apps_initialize(user_id      => 1318,
    														 resp_id      => 50559,
    														 resp_appl_id => 222);
    	mo_global.set_policy_context('S',
    															 83);
    
    	l_count := 0;
    	FOR rec IN cur
    	LOOP
    	
    		l_error_msg                       := NULL;
    		l_iface_rec.last_update_date      := SYSDATE;
    		l_iface_rec.last_updated_by       := -1;
    		l_iface_rec.creation_date         := SYSDATE;
    		l_iface_rec.created_by            := -1;
    		l_iface_rec.last_update_login     := -1;
    		l_iface_lot_rec.last_update_date  := SYSDATE;
    		l_iface_lot_rec.last_updated_by   := -1;
    		l_iface_lot_rec.creation_date     := SYSDATE;
    		l_iface_lot_rec.created_by        := -1;
    		l_iface_lot_rec.last_update_login := -1;
    	
    		SELECT mtl_material_transactions_s.nextval
    		INTO   l_iface_rec.transaction_interface_id
    		FROM   dual;
    	
    		BEGIN
    			SELECT msi.inventory_item_id,
    						 msi.organization_id,
    						 msi.primary_uom_code
    			INTO   l_inventory_item_id, l_organization_id, l_uom
    			FROM   mtl_system_items_b msi, org_organization_definitions ood
    			WHERE  1 = 1
    			AND    msi.organization_id = ood.organization_id
    			AND    ood.organization_code = rec.organization_code
    			AND    msi.segment1 = rec.item_number;
    		EXCEPTION
    			WHEN OTHERS THEN
    				l_error_msg := l_error_msg || '物料' || rec.item_number || '不存在';
    		END;
    	
    		BEGIN
    			SELECT mgd.disposition_id
    			INTO   l_disposition_id
    			FROM   mtl_generic_dispositions mgd
    			WHERE  1 = 1
    			AND    mgd.organization_id = l_organization_id
    			AND    mgd.segment1 = rec.account_alias;
    		EXCEPTION
    			WHEN OTHERS THEN
    				l_error_msg := l_error_msg || '账户别名不存在';
    		END;
    	
    		BEGIN
    			SELECT msi.secondary_inventory_name
    			INTO   l_subinventory_code
    			FROM   mtl_secondary_inventories msi
    			WHERE  1 = 1
    			AND    msi.organization_id = l_organization_id
    			AND    msi.secondary_inventory_name = rec.subinventory_code;
    		EXCEPTION
    			WHEN OTHERS THEN
    				l_error_msg := l_error_msg || '子库存不存在';
    		END;
    	
    		IF (rec.attribute1 IS NOT NULL) THEN
    			BEGIN
    				SELECT mik.inventory_location_id
    				INTO   l_locator_id
    				FROM   mtl_item_locations_kfv mik
    				WHERE  mik.concatenated_segments = rec.attribute1
    				AND    mik.organization_id = l_organization_id
    				AND    mik.subinventory_code = rec.subinventory_code;
    			EXCEPTION
    				WHEN no_data_found THEN
    					l_error_msg := l_error_msg || '货位不存在';
    			END;
    		END IF;
    	
    		--dbms_output.put_line('1!');
    	
    		l_iface_rec.transaction_header_id := l_iface_rec.transaction_interface_id;
    		l_iface_rec.transaction_mode      := 3;
    		l_iface_rec.process_flag          := 1;
    		l_iface_rec.transaction_type_id   := rec.transaction_type; --41 帐户别名接收  31 帐户别名发放
    		l_iface_rec.transaction_source_id := l_disposition_id; --来源
    		l_iface_rec.organization_id       := l_organization_id;
    		l_iface_rec.inventory_item_id     := l_inventory_item_id;
    		l_iface_rec.subinventory_code     := rec.subinventory_code;
    		l_iface_rec.locator_id            := l_locator_id;
    		l_iface_rec.transaction_quantity  := rec.transaction_quantity; --出库数量为负数 入库数量为正数
    		l_iface_rec.primary_quantity      := rec.transaction_quantity;
    		l_iface_rec.transaction_uom       := l_uom;
    		l_iface_rec.transaction_date      := rec.transaction_date;
    		l_iface_rec.source_code           := '账户别名接收/发放';
    		l_iface_rec.source_header_id      := to_number(to_char(SYSDATE,
    																													 'YYYYMMDDHH24MISS'));
    		l_iface_rec.source_line_id        := to_number(to_char(SYSDATE,
    																													 'YYYYMMDDHH24MISS'));
    	
    		IF (l_error_msg IS NULL) THEN
    			INSERT INTO inv.mtl_transactions_interface VALUES l_iface_rec;
    		END IF;
    	
    		IF (rec.lot_number IS NOT NULL) THEN
    			l_iface_lot_rec.transaction_interface_id := l_iface_rec.transaction_interface_id;
    			l_iface_lot_rec.lot_number               := rec.lot_number;
    			l_iface_lot_rec.transaction_quantity     := l_iface_rec.transaction_quantity;
    			l_iface_lot_rec.source_code              := l_iface_rec.source_code;
    			l_iface_lot_rec.source_line_id           := l_iface_rec.source_line_id;
    		
    			IF (l_error_msg IS NULL) THEN
    				INSERT INTO inv.mtl_transaction_lots_interface
    				VALUES l_iface_lot_rec;
    			END IF;
    		END IF;
    	
    		IF (l_error_msg IS NULL) THEN
    			l_timeout := 10;
    			l_outcome := mtl_online_transaction_pub.process_online(p_transaction_header_id => l_iface_rec.transaction_header_id,
    																														 p_timeout               => l_timeout,
    																														 p_error_code            => l_error_code,
    																														 p_error_explanation     => l_error_explanation);
    		
    			IF (l_outcome = FALSE) THEN
    				dbms_output.put_line('Failed*******Import_id:' || rec.import_id);
    				dbms_output.put_line('Failed!');
    				dbms_output.put_line('l_error_code:' || l_error_code);
    				dbms_output.put_line('l_error_explanation:' || l_error_explanation);
    			ELSIF (l_outcome = TRUE) THEN
    				l_count := l_count + 1;
    			END IF;
    		END IF;
    	
    		IF (l_error_msg IS NOT NULL) THEN
    			dbms_output.put_line('l_error_msg:' || l_error_msg);
    		END IF;
    	
    	END LOOP;
    	dbms_output.put_line('SuccessFul:' || l_count);
    
    EXCEPTION
    	WHEN OTHERS THEN
    		dbms_output.put_line('Exception!' || SQLERRM);
    END;
    

      

     --期初数据导入,创建表存储

    create table cux_inv_mmt_account_temp(
    IMPORT_ID                 NUMBER,
    ORGANIZATION_CODE         VARCHAR2(240),
    ITEM_NUMBER               VARCHAR2(240),
    SUBINVENTORY_CODE         VARCHAR2(240),
    TRANSACTION_TYPE          VARCHAR2(240),
    ACCOUNT_ALIAS             VARCHAR2(240),
    TRANSACTION_UOM           VARCHAR2(240),
    TRANSACTION_DATE          DATE,
    LOT_NUMBER                VARCHAR2(240),
    TRANSACTION_QUANTITY      NUMBER,
    ATTRIBUTE1                VARCHAR2(240),
    ATTRIBUTE2                VARCHAR2(240),
    ATTRIBUTE3                VARCHAR2(240),
    ATTRIBUTE4                VARCHAR2(240),
    ATTRIBUTE5                VARCHAR2(240)
    )
  • 相关阅读:
    字符串匹配算法之SimHash算法
    Shell 判断
    剑指offer 面试题6:重建二叉树
    字符串匹配算法之BF(Brute-Force)算法
    Python变量/运算符/函数/模块/string
    trie树
    AWK文本处理工具(Linux)
    Linux 进程间通信(一)
    Nginx学习笔记(八) Nginx进程启动分析
    进程状态转换、CPU调度算法
  • 原文地址:https://www.cnblogs.com/wang-chen/p/11377055.html
Copyright © 2020-2023  润新知