2020年1月29日 星期三

Oracle: Report runtime背景執行方式

問題: 長久以來, 有個Oracle reports的客製程式, 在forms中以host執行rwrun60的方式, 定期排程把資料輸出至印表機, 但不定時會出現rwrun60卡住, 導致後續資料也都停著未處理

治標: 現行方式, 用windows上的指令, 以taskkill暴力清除rwrun60.exe, 目標有達成, 副作用是有時會誤砍還正在執行中的reports runtime, 又要再人工處理

有想過若host能指定背景執行, 或許就不會卡住, 但host指令沒有這類參數.

再看了看reports的文件, 或許還有其他變通作法.

目前想到的可能方式;
1.改為使用run_product指令進行
2.在report執行時, 指定 BACKGROUND=YES
3.host中改為呼叫rwrbe60, 依Oracle文件所述, 這會較有效率, 且參數與rwrun60相同

找時間再試吧.


Ref:
1.Oracle Reports Reference - Release 6i
https://docs.oracle.com/pdf/A73174_01.pdf
p.596, BACKGROUND (RWRUN60)


2020年1月22日 星期三

Oracle EBS: BI publisher中的冷僻中文字變成問號

問題: BI publisher中的冷僻中文字變成問號

原因: HTML output header中的字元集設定與冷僻字的字元集不同所造成

解決方式:
1.在 XML publisher administration -> Home -> Templates 中
2.查詢報表所使用的template
3.點擊 Edit Configuration 按鈕
4.在 [Template Value] 層的 [HTMLOutput: Character Set] 屬性中, 輸入正確的字元集
5.重啟應用層服務(application tier service)


Ref:
1.Rarely Used Chinese Characters Display As "?" in XML Publisher Excel Output (Doc ID 1336820.1)


2020年1月21日 星期二

Oracle EBS: RTF template是否可產生 .xlsx 報表輸出?

問題: RTF template是否可產生 .xlsx 報表輸出?

答案: 到12.2都還無法作到

補充:
1.rtf template所產生的XHTML輸出, 是非常冗長的檔案格式.
2.在EBS 12.2中(10.1.3.4.2的BiP), 使用真正的Excel templates (.xls), 是有可能產生二進位的Excel
輸出, 但格式是屬於Excel 2003 (.xls), 而不是 .xlsx 格式


Ref:
1.Can .xlsx Report Output Be Generated From RTF Template In EBS 12.2? (Doc ID 2336999.1)

2020年1月17日 星期五

Excel: Mac與Windows的excel檔格式

問題: 廠商原先電腦使用Windows, 轉存舊格式2003 excel檔上傳沒問題, 但使用Mac後, 系統檢查轉存舊格式的excel有問題, 會判斷為不符合要求

狀況:
1.依廠商附檔再另存XLS檔案, 檔案大小與原附檔不同, 且出現相容性檢查的提示, 這與從較高版本另存為excel 2003版本的提示相同.
2.另由廠商mail上可看出, Mac上的選項是 [Excel 97-2004活頁簿] , 但Windows上的選項是 [Excel 97-2003活頁簿]

原因: 應是Mac與Windows的舊excel檔格式仍不同, 造成上傳程式判斷為不符合要求

解決方式: 目前只能先在Windows手動另轉, 不知道有沒有程式可處理


2020年1月13日 星期一

Excel: 以leadtime判斷是否有風險

有個小需求, 若在leadtime天數內, 有任一週的數量小於0, 就要判斷為Risk, 否則為Safe.

單純用既有function似乎不好作, 試了VBA可以達成.

 Figure 1.


     Dim arr As Variant
    ' read cell range to array
    'arr = 工作表1.Range("D2:K2").Value
   
    Dim name As Variant, cnt As Long
   
    ' Go through the array
    For i = 2 To 8
   
      cnt = 0
      arr = 工作表1.Range(Cells(i, 4), Cells(i, 8)).Value
   
      For Each name In arr
        
        If cnt >= 工作表1.Cells(i, 3).Value / 7 Then
          Exit For
        End If
       
        If name < 0 Then
            工作表1.Cells(i, 2) = "Risk"
            Exit For
        Else
            工作表1.Cells(i, 2) = "Safe"
        End If
        cnt = cnt + 1
      Next name
   Next i
End Sub