2012年7月16日 星期一

TIPTOP程式開發-畫面開窗設計重點

在開發TIPTOP程式的過程中,經常會遇到需要在欄位上設定開窗鈕,讓user可以快速的查出與填入所需的資料,以下簡單介紹在開發中所需執行的步驟:

畫面檔4fd部份屬性設定如下:
  1. Widget
    需設定該欄位為ButtonEdit,只有設定為ButtonEdit時,才能設定開窗動作。
  2. Image Group
    image type設為Select File →這邊指的是要選擇使用檔案。
    image設為zoom→這邊指的是要使用檔案的名稱,鼎新開窗用的放大鏡是zoom,所以直接輸入zoom就可以了。
  3. action
    要設定為controlp,指的是按下什麼鍵會執行動作,這邊需要與4GL程式碼相配合。



程式碼4gl部份程式碼如下:



因為我們要寫的是開窗功能,而開窗在TIPTOP系統中是由Control+p來代替,所以控制碼會寫在ON ACTION controlp段,其中需要注意的是下面這行程式碼:
              LET g_qryparam.state = "c"
這邊的設定是在判斷開窗後的回傳值型態,設定為"c",指的是回傳值是針對CONSTRUCT使用,可以傳回多筆資料。如果開窗後只能回傳一筆資料(例如INPUT模式),則不能加上這行程式碼。



PS. CALL cl_create_qry()的相關參數說明,另章說明。

2012年7月9日 星期一

TIPTOP實務--退貨折讓向廠商收款的作法(匯款)

一般而言,在實務上若廠商產生退貨折讓時,都是轉入退貨折讓(aapt210)成為待抵後,待下一批貨物入庫請款後,再拉出來進行沖帳作業。但如果這個廠商日後不再交易,則這筆折讓將永遠無法沖帳,此時,大部份會選擇要求廠商將退貨折讓款用匯款或是支票付款的方式退回。

在這邊,我們介紹在TIPTOP ERP系統上如何操作,以達到對廠商收款的目的,這邊以介紹匯款為例:


Step 1. 銀行收支維護作業(anmt302),登打暫收款。

       如果廠商只是單次交易,沒有編制在客戶基本資料檔(axmi221)內,可用MISC來代替。登打方式與一般客戶收款相同。
      
這邊的分錄底稿一般是產生為:
       借:銀行存款
            貸:暫收款

Step 2. 收款沖帳維護作業(axrt400),進行沖帳動作。

       單頭客戶編號必須與登打銀行收支(anmt302)時一樣的客戶編號,以上步驟為例必須登打為「MISC」鼎新電腦。
       進單身前,系統會詢問是否自動帶出單身資料,如果單頭輸入的客戶編號有存在廠商基本資料(apmi600)裡,是可以拉出應付帳款進單身,但這邊的例子是以MISC為例,所以不使用自動帶出單身的功能。
       進單身後,開始輸入單身資料。
       借方選類別3:應收待抵→也就是剛才輸入銀行收支(anmt302)客戶暫收款所產生的應收待抵單號(axrt300)。
       貸方選類別9:應付待抵→輸入在退貨折讓待抵(aapt210)的單號。
這邊產生分錄底稿後,應該是:
       借:暫收款
              貸:aapt210的借方科目
這樣就完成廠商收款沖抵退貨折讓待抵了。

支票沖款的部份,另外說明。

TIPTOP程式開發--CR樣板由A4改為中一刀

在TIPTOP GP 5.0開始,報表開發新增Crystal Report(簡稱CR)整合功能,可以快速或直覺式的設計報表,比起舊式的XML格式報表要來得輕鬆多了。

這邊先簡述,如何將CR樣板由A4改為中一刀的設定,這邊是依傳票列印(aglr903)為範例。

Step1. CR報表格式設定作業(p_zaw)的設定,單身樣板紙張選為10:中一刀



Step2. CR主機設定中一刀格式的紙張
開啟印表機設定→檔案→伺服器內容
在列印伺服器中新增一個格式為中一刀的紙張,格式可參考下圖資料。

Step3. CR樣板設定版面為中一刀
檔案→版面設定→大小→中一刀


Step4. 程式執行列印畫面選項(依p_zaw設定出現選項)
因為這支程式在p_zaw有設定兩個不同的樣版,所以列印時,會有兩個選項。

結果一:若CR樣板有調整為中一刀,則會列印中一刀的格式,一頁只有一張中一刀紙張大小的傳票。

結果二:若只有調整p_zaw而沒有調整CR版面設定(維持A4紙張大小),就會列印成在一張A4紙上有兩張傳票資料。


2012年6月14日 星期四

TIPTOP程式開發--CR樣版語言別異常

TIPTOP ERP在開發CR報表的過程中,除了需要在Crystal Report把樣版設計好之外,也需要在CR報表格式設定作業(p_zaw)裡把樣版的資料設定進去,但有時仍會發現,為什麼明明有設樣版,系統卻一樣跑出錯誤訊息呢?

下面是範例的一種:
執行程式時發現:
但查過p_zaw的設定的確有設定繁體的語言別:

查詢之後發現,問題出在4GL程式裡,在cl_prt_cs3的function裡有玄機,這段程式碼在傳遞第二個參數時給定的是axmr360,但實際上在p_zaw裡設定的是cxmr004,所以當然會造成找不到語言別的問題。
cl_prt_cs3總共有四個參數:

1. 程式代號:對應的是p_zaw的程式代號欄位(zaw01)
2. 樣版代號:對應的是p_zaw的樣板代號欄位(zaw02)
3. 程式產出的報表temp table的資料:如下圖,
    系統會依這串SQL指令到CR的temp DB去取資料傳遞到CR主機中。

4. 傳遞到CR報表的參數
這邊的參數順序就是對應到CR樣板裡的參數欄位,如下圖:
所以你在CR樣板裡看到有p1~p20的參數欄位,就是TIPTOP已經設定好的參數接收欄位。同樣的意思,在CR裡只設了20個參數,所以在4GL裡不能傳遞超過20個參數,否則,從第21個開始,CR是接收不到的。



2012年6月13日 星期三

SQL語法--Unicode長度的取得

現在為了因應全球化的趨勢,越來越多公司採用Unicode的編碼模式做為資料庫的編碼,不只可以補足BIG-5不足,還可以整合與編碼大部份文字系統。

但因Unicode並不如BIG-5的編碼長度是固定的,所以有時需判斷資料可能的長度,才能建置出正確且實用的資料庫欄位長度。特別是在由外部資料導入Unicode資料庫時,若不知道實際資料長度,很可能會導致資料匯入失敗。

所以,這邊介紹在UTF-8的編碼下,下列兩個語法可以取出資料庫欄位的Unicode實際長度,與字數:

1. lengthb=vsize:抓取unicode的實際長度
例:Select lengthb(ima02) from ima_file

   Select
 vsize(ima02) from ima_file

2. 
lengthc=length:抓取有幾個文字數(此處的中文字與英文字母各計一個字)
例:select length(ima02) from ima_file

   Select lengthc(ima02) from ima_file


註:unicode的詳細介紹可參考Wiki網站: 
http://zh.wikipedia.org/wiki/Unicode

2012年6月12日 星期二

TIPTOP系統管理-Createdb建立後須修改的參數資料

在上一篇裡介紹了Createdb的用法,但若是在使用createdb的指令時,選擇2、3、4的選項時,在建置完新資料庫時,請務必至各模組系統參數設定,將營運中心編號調整為新建立的營運中心代碼,避免影響其他營運中心資料的正確。

特別是財務相關模組的參數,會設定拋轉總帳的營運中心,此時若無調整,則會嚴重影響另一個營運中心的帳務處理。

  • 銷售系統參數(一)設定-連線參數(axms010)

  • 銷售參數維護作業(axms100)

  • 應收系統參數維護作業(axrs010)

  • 應付系統參數維護作業(aaps100)

  • 票據系統參數維護作業(anms101)

  • 人事薪資計薪參數設定作業(apys010)

  • 系統參數設定作業-成本會計(asms120)

  • 固定資產管理系統參數設定(afas010)

  • 成會系統參數設定(axcs010)

2012年6月8日 星期五

TIPTOP系統管理--Createdb用法

TIPTOP安裝時,提供了Createdb的Shell給客戶使用,方便客戶在新增DB時,不需要一個一個再建立TIPTOP ERP所內建的Table Schema。

createdb總共有四個參數,可以建立下列四種DB:


當你在主機上輸入createdb時,就可以顯示下列說明文字:

</u1/topprod/tiptop/agl/4gl> createdb
Usage: /u1/topprod/tiptop/ora/bin/createdb dbname [1|2|3|4]
===========For ds schema has not been altered yet==============
Ex1 : /u1/topprod/tiptop/ora/bin/createdb ds1 1 -----> create database only
====================================================
===============For ds schema had been altered================
Ex2 : /u1/topprod/tiptop/ora/bin/createdb ds2 2 -----> create table schema(from ds user)
Ex3 : /u1/topprod/tiptop/ora/bin/createdb ds3 3 -----> create table schema with ds demo data
Ex4 : /u1/topprod/tiptop/ora/bin/createdb ds4 4 -----> create table schema with data(non-ds)
=====================================================

  1. createdb dbname 1
    建立一個空的DB,不含TIPTOP ERP的table Schema
    使用時機:為了要把之前所建立的dmp倒回系統,做系統測試或資料回復。

  2. createdb dbname 2
    以ds資料庫的table schema的架構建立一個資料庫,其中只會包含ds資料庫的table schema,與系統參數設定Table的值,其餘的Demo data都不會倒進來。
    使用時機:建立新的營運中心或是測試資料庫

  3. createdb dbname 3
    建立一個跟ds資料庫一模一樣的資料庫,除了包含TIPTOP ERP的TABLE Schema之外,還包含ds資料庫中的Demo資料。
    換句話說,就是複製一個跟DS一模一樣的資料庫。
    使用時機:一般常見是系統導入前,做測試之用,導入後很少會用到這選項。

  4. createdb dbname 4
    複製一個與現有資料庫一模一樣的資料庫,但不能是DS資料庫。
    使用時機:通常是為了測試系統或資料問題時,才會使用。
    但使用這個選項要特別注意,複製完後,必須進系統把參數裡的營運中心設定調整為新的營運中心代碼才行,否則會造成新DB資料拋到舊DB裡。

※關於哪些參數設定要改,下篇再說明※