1. 程式人生 > >使用SMARTFORM欄位引數設定解決SMARTFORM中數量、金額欄位顯示問題

使用SMARTFORM欄位引數設定解決SMARTFORM中數量、金額欄位顯示問題

在SMARTFORM中,數量和金額型別的欄位在顯示的時候會和其他欄位不在同一個水平面上,解決的方法:&ITAB-MENGE(C)&  ,下面是SMARTFORM欄位引數設定的幾個注意事項:

1、使用SFSY-FORMPAGES顯示總頁數的時候,如果頁數大於9,,將會在前10頁顯示成星號。解決辦法:可以新增3ZC,&SFSY-PAGE(3ZC)&/&SFSY-FORMPAGES(3ZC)&,不過可能會出現字型顛倒或者重疊的現象,用一個單獨的視窗來存放顯示頁碼的文字,並且把視窗的型別設定為L(最終視窗)就OK了。

 2、如果金額或者數量欄位顯示不出來的話,可以在“貨幣/數量欄位”標籤中指定相應的資料型別。

 3、Field not outputting more than 255 characters in a loop. This is happening because when you send a string to smartform with length >255 characters then it takes only first 255 characters. I overcomed this problem by splitting the string which was of around 500 char into two and then sending it to smartform as individual vairables and displaying the two variables one after the other in the smartform.

將文字欄位拆分成幾個字元變數再連線在一起顯示。

4、輸出格式設定說明

Syntax                 說明
&field+&               對於字元變數設定從何位置顯示資料,如果offset大於字元變數長度時,系統就不會顯示任何資料
&field()&               設定輸出長度.
&field(*)&              如果該欄位型別是abap資料字典裡定義的型別,系統將按照字典定義的長度設定輸出長度
&field(S)&             禁止輸出符號位
&field(<)&             符號位顯示在資料的左邊
&field(.)&              設定顯示小數的位數
&field(E)&             設定為科學標示法
&field(T)&              禁止千分位的顯示(適用於: DEC, CURR, INT和QUAN幾種資料型別).
&field(Z)&              禁止數字前導0的顯示
&field(I)&               禁止顯示空值
&field(K)&             禁止型別系統按資料字典定義的轉換函式進行輸出轉換
&field(R)&             右對齊(只有在定義了輸出長度時才有效)
&field(F)&              用指定的字元替換左邊的空格.
&field(L)&              將日期轉換為本地顯示格式,使用JDAT指定的格式
&field(C)&             該設定效果和ABAP的CONDENSE語句相同.

5、Smartform 列印條形碼

先在SE73裡定義一個新的BARCODE,注意一定要用新的才可以,舊的是打印不出來的。然後定義一個SMARTFORM的樣式,把你定義的BARCODE放到字元樣式裡面去。再做SMARTFORM就可以了,將需要作為條碼的變數的格式選為該BARCODE格式,輸出時會根據變數不同的資料(如物料,批次)得到相應的條碼。

(1).In the transaction se73 , choose a barcode font that suits your
requirements (do this by checking the system barcodes radio button)

(2).Click on the Printer barcodes radiobutton and make sure that the
barcode you chose in step 1 exists for the device type of your
printer.

If you need to create a new barcode font , create it in step1 , and
enterthe hex barcode prefix and suffix ( can be obtained from your
printer manual) , then in step 2 , define a new z_ device type as a
copy of the device type of your printer and assign the system barcode
to the printer.

(3). in your layout set , define a character string with the barcode
font chosen above in the Bar code field .
Format the string that you want to print as a barcode using this
character string.

6、除錯
   如果在SMARTFORM中添加了程式碼,編輯器是不允許設定斷點的。

一種方法就是,在程式碼中加入斷點語句break-point,缺點是,每想設一個斷點,就需要寫一條斷點語句。

另一種方法是,自己加的程式碼都會自帶出一個名字的比如‘%CO1’。
Environment -> Function Module Name,
he function that generated for this smartforms is ‘/1BCDWB/SF00000227’(自動生成的SMARTFORM程式名)
T-code se37 -> /1BCDWB/SF00000227 -> Goto -> Main Program
最後一個INCLUDE是對DEBUG最有用的,雙擊進入,找到 FORM %GLOBAL_INIT。