2013年9月24日 星期二

Oracle ERP R12. create locator using API (INV_LOC_WMS_PUB.CREATE_LOCATOR) - 建立Locator的API

若有需要大量新增Locator 則其有二種方式 :

1. Data Load

2. 呼叫 INV_LOC_WMS_PUB.CREATE_LOCATOR 該API
用法 :
FND_GLOBAL.APPS_INITIALIZE(1114,
                                                           51007,
                                                           401);
FND_MSG_PUB.Initialize;

INV_LOC_WMS_PUB.CREATE_LOCATOR(X_RETURN_STATUS => :X_RETURN_STATUS,
                                 X_MSG_COUNT => :X_MSG_COUNT,
                                 X_MSG_DATA => :X_MSG_DATA,
                                 X_INVENTORY_LOCATION_ID => :X_INVENTORY_LOCATION_ID,
                                 X_LOCATOR_EXISTS => :X_LOCATOR_EXISTS,
                                 P_ORGANIZATION_ID => :P_ORGANIZATION_ID,
                                 P_ORGANIZATION_CODE => :P_ORGANIZATION_CODE,
                                 P_CONCATENATED_SEGMENTS => 儲位,
                                 P_DESCRIPTION => 儲位描述,
                                 P_INVENTORY_LOCATION_TYPE => 3,
                                 P_PICKING_ORDER => :P_PICKING_ORDER,
                                 P_LOCATION_MAXIMUM_UNITS => :P_LOCATION_MAXIMUM_UNITS,
                                 P_SUBINVENTORY_CODE => 倉別,
                                 P_LOCATION_WEIGHT_UOM_CODE => :P_LOCATION_WEIGHT_UOM_CODE,
                                 P_MAX_WEIGHT => :P_MAX_WEIGHT,
                                 P_VOLUME_UOM_CODE => :P_VOLUME_UOM_CODE,
                                 P_MAX_CUBIC_AREA => :P_MAX_CUBIC_AREA,
                                 P_X_COORDINATE => :P_X_COORDINATE,
                                 P_Y_COORDINATE => :P_Y_COORDINATE,
                                 P_Z_COORDINATE => :P_Z_COORDINATE,
                                 P_PHYSICAL_LOCATION_ID => :P_PHYSICAL_LOCATION_ID,
                                 P_PICK_UOM_CODE => :P_PICK_UOM_CODE,
                                 P_DIMENSION_UOM_CODE => :P_DIMENSION_UOM_CODE,
                                 P_LENGTH => :P_LENGTH,
                                 P_WIDTH => :P_WIDTH,
                                 P_HEIGHT => :P_HEIGHT,
                                 P_STATUS_ID =>1,
                                 P_DROPPING_ORDER => :P_DROPPING_ORDER,
                                 P_ATTRIBUTE_CATEGORY => :P_ATTRIBUTE_CATEGORY,
                                 P_ATTRIBUTE1 => :P_ATTRIBUTE1,
                                 P_ATTRIBUTE2 => :P_ATTRIBUTE2,
                                 P_ATTRIBUTE3 => :P_ATTRIBUTE3,
                                 P_ATTRIBUTE4 => :P_ATTRIBUTE4,
                                 P_ATTRIBUTE5 => :P_ATTRIBUTE5,
                                 P_ATTRIBUTE6 => :P_ATTRIBUTE6,
                                 P_ATTRIBUTE7 => :P_ATTRIBUTE7,
                                 P_ATTRIBUTE8 => :P_ATTRIBUTE8,
                                 P_ATTRIBUTE9 => :P_ATTRIBUTE9,
                                 P_ATTRIBUTE10 => :P_ATTRIBUTE10,
                                 P_ATTRIBUTE11 => :P_ATTRIBUTE11,
                                 P_ATTRIBUTE12 => :P_ATTRIBUTE12,
                                 P_ATTRIBUTE13 => :P_ATTRIBUTE13,
                                 P_ATTRIBUTE14 => :P_ATTRIBUTE14,
                                 P_ATTRIBUTE15 => :P_ATTRIBUTE15,
                                 P_ALIAS => :P_ALIAS);

2013年9月11日 星期三

Oracle ERP R12. How to select oe_transaction_type_syn ?

Before execute SQL :

declare
begin
  MO_GLOBAL.SET_POLICY_CONTEXT('S',81); --Set Org_ID
end;

Then

select * from oe_transaction_types_syn;

2013年7月31日 星期三

Oracle ERP R12. Profile - OE: AutoPrice (自動更新Unit Selling Price時機設定)

經同仁反應,訂單的單價常會不明原因自動被更改掉,而user都不知道.
經查發現原因如下:

因為訂單會指定price list ,故只要訂單項次有調整任何一欄位(unit selling price欄除外),則系統會再自動從price list中取回目前最新的設定.
而該行為的主要原因是控制在一Profile => OE: AutoPrice , 該Profile的值預設為空值所導致的關係.

以下是該Profile設定的說明 : (本人測試得來的結果)
空值 => 不論是Entered 或是 Booked狀態皆會自動取回最新的price list值
Entry => 只有在訂單狀態為Entered 時才會自動取回最新的price list值
Booking => 不論狀態如何皆不會自動取回最新的price list值.

Ps :
以上純為本人測試之結果,若讀者測試後有任何心得請不吝指教,以該本人更新正確之資訊~

<<2013/08/04 不具名的網友 補充以下說明>>
通常業務流程而言, 應該定義為N (calculate_price_flag) , 避免訂單預定後仍可能因為手動或API變更而改變售價 
*reference Doc ID 134326.1
· If it’s set to ‘Y’, both pricing and freight charge calculations are done.
· If it’s set to ‘P’, only the freight charge calculation is done.
'P' also indicates that modifiers assigned to a pricing phase
where freeze override is enabled could also be applied.
· If it’s set to ‘N’, neither pricing nor freight charge is calculated.

2013年7月30日 星期二

Oracle ERP R12. 如何透過Personalize功能呼叫另一form來回傳值. Get another form's result value (user personalize) .

狀況假設 :
A-Form(Rcv_transaction) 要呼叫另一客制form (B-Form),B-Form運算後產生一結果回轉A-Form

Step 1. 建立一function用來取回B-Formresult
:
create or replace function HPX_WEN_TEST_F(I_KEY VARCHAR2) return varchar2 is
  T_Result VARCHAR2(100);
  T_EXIT VARCHAR2(1) := 'N';
  T_EXIT_TIME DATE := SYSDATE+5/(24*60);
begin 
  WHILE T_EXIT = 'N' LOOP
    SELECT DECODE(COUNT(*),
                  0,'N',
                  'Y'),
           MAX(HC.VALUE_2)
      INTO T_EXIT,
           T_RESULT
      FROM HPX_CONFIG_T HC 假設該tableresult
     WHERE HC.KEY_ID = 'TEST'
       AND HC.VALUE_1 = I_KEY;  --Key,用來確認所抓取的資料無誤
    --
    IF T_EXIT_TIME <= SYSDATE THEN
      T_EXIT := 'Y'; --逾時離開以避免無窮迴圈
    END IF;
  END LOOP;
 
  return(T_Result);
end HPX_WEN_TEST_F;

Step 2. A-FormWHEN-NEW-FORM-INSTANCE 加入一LOCAL VARIABLE  KEY的宣告,
MENU BUTTON的宣告.
:





Step 3. 設定上述MENU BUTTON的功能行為.
:


埋入Debug用的訊息

將游標固定至等定ITEM
<重要>該步驟是為了A-Form重新取得控制取時只會觸發 WHEN-NEW-ITEM-INSTANCE 所以要知道是那一ITEM會被觸發


呼叫B-Form
注意 : 這裡的HPXINVF004是隨便設的,並不會真的寫入Result table ,這裡只是要模擬說明而已,假設會寫入Step 1Result table


Step 4. 設定A-Form重新取得控制權後的行為動作.並由判斷KEY是否有值來確認是否要進入該程序
注意 : B-Form返回A-Form時只會觸發 WHEN-NEW-ITEM-INSTANCE , 故上步驟會先GO_ITEM.


呼叫Step 1. 的Function來取回Result Table的值


清除Key,以避免誤動作


2013年6月19日 星期三

Oracle ERP R12. Unassign or delete large number of items .

There is an option on the Tools menu of the Delete Item form that opens the Item Search screen.
There you can search on a number of criteria, including status, and the search results are populated in your Delete Group.
You can review the list, and delete unwanted entries (or add new ones, if necessary).

Then run the Delete process.

Reference from Metalink : ID 1347893.1