2014年10月3日 星期五

[ AP - Payables ] AP_AWT_GROUPS vs AP_TAX_CODES_ALL


找了文件來看, 才知道原因這二個Join 條件是.....
透過 AP_AWT_GROUP_TAXES_ALL.TAX_NAME



2014年9月15日 星期一

[ Oracle ERP ] AP Invoice PAID BY & PAID_DATE

AP Invoice Actual Payment
FORM: APXIWALL.FMB
VIEW: AP_PAYMENT_SCHEDULES_V
FUNCTION: AP_INVOICE_PAYMENTS_PKG

AP_INVOICE_PAYMENTS_PKG.GET_PAID_BY(AI.INVOICE_ID, APS.PAYMENT_NUM) PAID_BY,
       AP_INVOICE_PAYMENTS_PKG.GET_PAID_DATE(AI.INVOICE_ID, APS.PAYMENT_NUM) PAID_DATE,
       AP_INVOICE_PAYMENTS_PKG.GET_PAYMENT_ID(AI.INVOICE_ID,
                                              APS.PAYMENT_NUM) PAYMENT_ID,
       AP_INVOICE_PAYMENTS_PKG.GET_PAYMENT_TYPE(AI.INVOICE_ID,
                                                APS.PAYMENT_NUM) PAYMENT_TYPE,






2014年9月1日 星期一

[ Oracle ERP ] Upload Excel without WEBADI 複製Excel 到 Oracle ERP FORM


1) Copy Excel File 
2) Past in Form Text ( Multi-Line)


   Result : INTO Table


PROCEDURE UPLOAD( P01_UPLOAD VARCHAR2)
    IS
     V01_SQL VARCHAR2(20000);
     V02_SQL varchar2(4000);
     V03_sql varchar2(4000);
     l_tab   dbms_utility.uncl_array;
     l_tablen   number;
     v_sql_length number;
     
    cursor a_cur is
      select col01
        from jiamin_test2
       where col01 is not null;
        
   BEGIN
    V01_SQL := 'BEGIN insert into jiamin_test2(col01) values(''"' || replace(replace(P01_UPLOAD, chr(9), '","'), chr(10), '''); insert into jiamin_test2(col01) values(''') || '"''); END;';
     
     execute immediate V01_SQL;
     
     commit;
     
     for j in a_cur loop
      dbms_utility.comma_to_table(j.col01 , l_tablen, l_tab);
      dbms_output.put_line('TABLE LENGTH : '|| l_tablen);
      dbms_output.put_line('TABLE COUNT  : '|| l_tab.COUNT);
      for i in 1..l_tablen
      loop
        dbms_output.put_line(l_tab(i));
        V03_sql := V03_sql|| l_tab(i) || ''',''';

      end loop;
          v_sql_length := length(V03_sql);
          V02_SQL := 'begin insert into jiamin_test2(col01, col02, col03) values('''|| substr(V03_sql, 1, v_sql_length-2) || '); end;';
          execute immediate replace(V02_SQL, '"', '');
          
          V01_SQL := '';
          V02_SQL := '';
          V03_sql := '';
    end loop;
     commit;
     
   END UPLOAD;

2014年8月28日 星期四

[ Oracle ERP ] Show Barcode in View Output

1) Oracle Report using Barcode -
     http://tomkuo139.blogspot.tw/2009/02/oracle-report-barcode.html
     http://hi.baidu.com/eebevkrtwgbgxzd/item/1e8145c68d1b9a57bcef6924
     缺點: 必須下載安裝
     優點: 生成的Barcode 是圖檔

2) 利用外部程式產生資料 iReport 架設一台Server 將資料寫入再丟參數

3) Client Server 只要在Report 上設定字型即可產生, 但遇到ERP上, 掛載沒有字型一樣無法產生Barcode

4) 我個人最喜歡的解決方法

產生HTML 報表, 在字型上套用 Barcode 字型
優點: 只需要User電腦安裝Barcode字型即可, 不需要架設Server 或安裝其他開發工具
實際拿出掃描器可以描條碼

HTML 語法

<font style="font-family: ChinaDragon_39_BarCode; font-size: 40px;">*1234567*</font>



2014年8月27日 星期三

[ Oracle ERP FORM ] 客製FORM 顯示會計科目節段 show Accounting Flexfield in FORM

因為Oracle ERP 這領域太少人願意分享資源, 知識, 與技術
也看到有少部份的人在努力, 我也在他們的Blog 上面得到許多, 
我也僅能以自己測試寫出來的東西, 一點一滴的累積起來與分享, 
希望能讓有心學習的人, 得到一點點的幫助

--=============================================================================
-- Propose: Show Accounting Flexfield in Custom-Form
--=============================================================================
-- Reference Form: Inventory \ Setup \ Organizations \ Subinvetories
-- Form Name: INVSDSUB.fmb
--=============================================================================
-- Program Units (1) :  flexfield_defn
-- Program Units (2) : INVSDSUB_PKG.When_New_Form_Instance
--                Form-Level - Trigger - WHEN-NEW-FORM-INSTANCE
                   INVSDSUB_PKG.When_New_Form_Instance;
--=============================================================================

摸擬操作





Program Unit




Setting Item




Using Custom Form

Save Accounting ID



2014年8月26日 星期二

[ Oracle ERP FORM ] 於FORM 顯示日曆 Calendar


呈現結果:於ERP 的FORM上面可以從視窗中點選Calendar 


Step 1: Property Palette

1) Data Type :必須為 Datetime
2) Format Mask :若不設定則自動抓取預設格式
3) List of Values:ENABLED_LIST_LAMP
4) Validate form List :No



Step 2: Add KEY-LISTVAL Trigger 

Trigger 內容: calendar.show;



2014年7月9日 星期三

執行 Concurrent 後, 於客製的Form 的Output

Item Type: Push Button
Item Trigger: WHEN-BUTTON-PRESSED

1) Libraries : FNDCONC
2) Program Unit: editor_pkg.report(req_id number, save_output_flag varchar2);
            

可以從IE內的瀏覽器的網址,看得出來是呼叫的結果, 直接呈現HTML的Output



DECLARE
  ln_num             NUMBER;
  lb_submit          BOOLEAN;
   
  V_ERROR            VARCHAR2(30);
  V_RECEIPT_SEQ      NUMBER := 0;
   
  -- get concurrent status
  lb_wait                    BOOLEAN;
  ls_phase                   VARCHAR2(15);
  ls_status                  VARCHAR2(15);
  ls_dev_phase               VARCHAR2(80);
  ls_dev_status              VARCHAR2(80);
  ls_messge                  VARCHAR2(255);
BEGIN

  ln_num := FND_REQUEST.SUBMIT_REQUEST
           ( 'PO','YLPOM001_BATCH', '', '',FALSE,
               '', --1
           '',  --2
           '',  --3
           '',  --4
           '',  --5
           '',  --6
           '',  --7
           '',  --8
           '',  --9
           '',  --10
           '',  --11
           '',  --12
           '',  --13
           '',  --14
           'Y',  --15
           '',  --16
           CHR(0),  -- 從FORM叫REQUEST , 最後一個參數要放CHR(0)
           '','','',
           '','','','','','','','','','',
           '','','','','','','','','','',
           '','','','','','','','','','',
           '','','','','','','','','','',
           '','','','','','','','','','',
           '','','','','','','','','','',
           '','','','','','','','','','',
           '','','','','','','','','','');
  IF ln_num = 0 THEN
     FND_MESSAGE.RETRIEVE;
     FND_MESSAGE.ERROR;
  ELSE
    lb_submit := APP_FORM.QUIETCOMMIT;
                                
    FND_MESSAGE.DEBUG(' >> 預覽報表 << '|| CHR(10)|| 
                     'Request ID:' || TO_CHAR(ln_num));
                                
--2:每2秒檢查一次Request,10800:表示總共等10800秒,共180分鐘,超過180分鐘上一個Request若還未成功,則會出現Error

    lb_wait := Fnd_Concurrent.wait_for_request
          (ln_num
           ,2,10800,ls_phase,ls_status,ls_dev_phase,ls_dev_status,ls_messge);
             
    IF SUBSTR(UPPER(ls_dev_phase),1,8) = 'COMPLETE' 
       AND 
       SUBSTR(UPPER(ls_dev_status),1,6) = 'NORMAL' THEN
       ------------------------------------------------------------------------
                 -- Libraries: FNDCONC
                 -- procedure report(req_id number, save_output_flag varchar2);
       ------------------------------------------------------------------------
       editor_pkg.report(ln_num, 'Y');
     END IF;
              
 END IF;

END;