在sap開發中常常需要開發臺賬表,台賬的統計時間是變動的, 我們通常會用臨時程式來處理。我這裡介紹乙個簡單的動態臺賬表(統計月份,周等在有限範圍內)的實現方法。
1、申明內錶
data: begin of gt_list occurs 0,
pernr like pa0001-pernr, "員工編號
ename like pa0001-ename, "員工姓名
gjj1 type p decimals 2, "計算週期一欄位
gjj2 type p decimals 2, "
gjj3 type p decimals 2, "
gjj4 type p decimals 2, "
gjj5 type p decimals 2, "
gjj6 type p decimals 2, "
gjj7 type p decimals 2, "
gjj8 type p decimals 2, "
gjj9 type p decimals 2, "
gjj10 type p decimals 2, "
gjj11 type p decimals 2, "
gjj12 type p decimals 2, "計算週期12欄位
gjj type p decimals 2, "計算合計字段
end of gt_list.
計算的週期欄位由自己需求最大來定義,本例子是12個月的台賬統計報表,所以只定義12個字段;
2、定義統計週期引數
parameters: p_spmons type s031-spmon obligatory memory id per default sy-datum+0(6) .
parameters: p_spmone type s031-spmon obligatory memory id per default sy-datum+0(6) .
3、在at selection-screen.事件中檢查台賬期間的合法性
at selection-screen.
concatenate p_spmons+0(6) '01' into g_sdate.
concatenate p_spmone+0(6) '01' into g_edate.
call function 'last_day_of_months'
exporting
day_in = g_edate
importing
last_day_of_month = g_edate.
if g_sdate > g_edate.
message '截止日期必須大於起始日期' type 'e'.
endif.
call function 'duration_determine'
exporting
unit = 'mon'
importing
duration = g_count
changing
start_date = g_sdate
end_date = g_edate.
if g_count > 12.
message '臺帳統計不能超過12個月份' type 'e'.
endif.
4、如何定義顯示grid欄位格式(參見紅色部分**)
form f_fieldcat_init using im_fieldcat type slis_t_fieldcat_alv
im_sort type slis_t_sortinfo_alv.
data: ls_fieldcat type slis_fieldcat_alv,
ls_sort type slis_sortinfo_alv.
data: s type d.
data: month(5).
data: field(20).
data: n type i.
* "欄位名要大寫
s = g_sdate.
5、如何在計算時填寫內錶的合適字段
data: l_monthdur type i,
l_date type d.
l_date = sdate."資料的日期
*計算資料的日期和起始日期的月份差
call function 'duration_determine'
exporting
unit = 'mon'
importing
duration = l_monthdur
changing
start_date = g_sdate
end_date = l_date.
if l_monthdur = 0.
l_monthdur = 1.
endif.
*根據月份差將資料算到相應字段
case l_monthdur.
when 1.
gt_list-gjj1 = gt_list-gjj1 + wa_rt_header-betrg / 2.
when 2.
gt_list-gjj2 = gt_list-gjj2 + wa_rt_header-betrg / 2.
when 3.
gt_list-gjj3 = gt_list-gjj3 + wa_rt_header-betrg / 2.
when 4.
gt_list-gjj4 = gt_list-gjj4 + wa_rt_header-betrg / 2.
when 5.
gt_list-gjj5 = gt_list-gjj5 + wa_rt_header-betrg / 2.
when 6.
gt_list-gjj6 = gt_list-gjj6 + wa_rt_header-betrg / 2.
when 7.
gt_list-gjj7 = gt_list-gjj7 + wa_rt_header-betrg / 2.
when 8.
gt_list-gjj8 = gt_list-gjj8 + wa_rt_header-betrg / 2.
when 9.
gt_list-gjj9 = gt_list-gjj9 + wa_rt_header-betrg / 2.
when 10.
gt_list-gjj10 = gt_list-gjj10 + wa_rt_header-betrg / 2.
when 11.
gt_list-gjj11 = gt_list-gjj11 + wa_rt_header-betrg / 2.
when 12.
gt_list-gjj12 = gt_list-gjj12 + wa_rt_header-betrg / 2.
endcase.
PB 製作統計表
看到統計表,就有一種感覺 哇塞!好高大上。這是最初看見功能的時候,自己就認為特別的難搞。但是當自己看了看資料,敲了敲之後發現,其實也不過就是乙個select語句,然後乙個控制項就完全搞定了。看一下 定義引數 integer thecount 5 seriesno integer i string t...
mysql學歷統計表 php mysql 統計表
原來你是這個意思,就是說統計每一道題選a的人就多少,選b的人有多少是吧,這樣子寫,我用php簡單寫了個,能執行出來.conn mysql connect localhost root mysql select db test conn mysql query set names utf 8 data...
自定義統計表
高中的時候我們有一種統計是在座標上畫幾根柱,比重越在柱就越長。這種統計圖形怎麼來實現的呢?這就是這篇文章目的。這種圖的實現方法其實是很簡單的,並不是要我們整體畫乙個圖,只需要畫一根長方形就可以了,如果需要n根長方形,就重複畫n根,這樣,統計圖就出來了。直接上 protected voidondraw...