工作生活与爱好

工作中的记录; 生活中的记忆; 业余爱好的记载。

2007-01-18

 

SAP的SCreen录入的简单模板

1、主程序单元

************************************************************************
* Copyright 2003 *
* All Rights Reserved *
*----------------------------------------------------------------------*
* Program Name : ZFIE0005 *
* TYPE : REPORT *
* Project :SAP Implementation Project *
* Program Title: 管理部门年度预算考核额调整
* Created by : DEV01 *
* Created on :
* Version : 1.0 *
* Function Description: *
* 管理部门年度预算考核额调整
*----------------------------------------------------------------------*
*操作数据表
*ZFI017
*----------------------------------------------------------------------*
*引用数据表
*
*----------------------------------------------------------------------*
* Modification Log: *
* Date Programmer Correction Number DesingDoc Number *
************************************************************************
include zfie0032top."全局变量说明但愿
include zfie0032o01."输出Module说明单元
include zfie0032i01."输入Module说明单元
include zfie0032f01."共用函数说明单元
include zfie0032fi1."输入函数说明单元
include zfie0032fi2."输入函数说明单元
include zfie0032h01."输入帮助说明单元

2、 zfie0032top单元
************************************************************************
* Copyright 2003 *
* All Rights Reserved *
*----------------------------------------------------------------------*
* Program Name : ZFIE0005 *
* TYPE : REPORT *
* Project :SAP Implementation Project *
* Program Title: 管理部门年度预算考核额调整
* Created by : DEV01 *
* Created on :
* Version : 1.0 *
* Function Description: *
* 管理部门年度预算考核额调整
*----------------------------------------------------------------------*
*操作数据表
*ZFI017
*----------------------------------------------------------------------*
*引用数据表
*
*----------------------------------------------------------------------*
* Modification Log: *
* Date Programmer Correction Number DesingDoc Number *
************************************************************************
report zfie0030 message-id zdev.
constants: con_show(6) value 'SHOW',
con_change(6) value 'CHANGE'.
class cl_gui_cfw definition load.
tables: zfi017v,*zfi017v,bseg,setheadert,zfi010,zfi017,csku,cskt. "
*公司,年份,次数的新旧值
data: v_bukrs like zfi017-bukrs,
v_gjahr like zfi017-gjahr,
v_zmon like zfi017-zmon,
v_oldbukrs like zfi017-bukrs,
v_oldgjahr like zfi017-gjahr,
v_oldzmon like zfi017-zmon.
*grid的控件
controls: tctrl_order type tableview using screen '0100'.
data: col type cxtab_column.
* Table for all entries loaded from database
data: begin of order_extract occurs 0100.
include structure zfi017v.
include structure vimflagtab.
data: end of order_extract.
* Table for entries selected to show on screen
data: begin of order_total occurs 10.
include structure zfi017v.
include structure vimflagtab.
data: end of order_total.
*记录数据的状态信息的变量定义
data: begin of status_order. "state vector
include structure vimstatus.
data: end of status_order.
data: grid_item type i.
data: answer(1) type c,
actionmode(6),
datastate(1),
mark_total type i,
init(1),
first_flag(1).
data: wa_zfi017v type zfi017v.
data: ok_code like sy-ucomm,
save_ok like sy-ucomm. "OK-Code
data g_return_code type i.
data: vim_marked(1) type c. "mark-checkbox field
*存储屏幕选择的字段名
data indexfldname(30).
data: gt_fieldcatalog type lvc_t_fcat,
text(70).
**********************************************************
*用于帮助的变量说明
*屏幕字段的帮助函数使用的变量
*用于成本要素组的属于帮助
data: begin of i_zfi010 occurs 0,
name like zfi010-name,
end of i_zfi010.
*用于成本中心的输入帮助
data: begin of i_setheadert occurs 0,
ktext like cskt-ktext,
end of i_setheadert.
data: butxt like t001-bukrs.
data: ktext like cskt-kostl.
data: name like zfi010-name.
*用于输入帮助,存储帮助函数的通讯内表
data: begin of fldtab occurs 2.
include structure help_value.
data: end of fldtab.
data: f4dyn like sy-dynnr.
data: begin of f4hlp occurs 1.
include structure dynpread.
data: end of f4hlp.

3、ZFIE0032O01单元
************************************************************************
* Copyright 2003 C-Bons Wuhan *
* All Rights Reserved *
*----------------------------------------------------------------------*
* Program Name : ZFIE0005 *
* TYPE : REPORT *
* Project : SAP Implementation Project *
* Program Title: 管理部门年度预算考核额调整
* Created by : DEV01 *
* Created on :
* Version : 1.0 *
* Function Description: *
* 管理部门年度预算考核额调整
*----------------------------------------------------------------------*
*操作数据表
*ZFI017
*----------------------------------------------------------------------*
*引用数据表
*
*----------------------------------------------------------------------*
* Modification Log: *
* Date Programmer Correction Number DesingDoc Number *

************************************************************************
************************************************************************
*&Form Name : init_data
* Created by : DEV01 *
* Created on :
*----------------------------------------------------------------------*
* Function Description: *
*根据用户输入条件的变化,进行数据读取
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *

************************************************************************
module init_data output.
if first_flag eq space.
first_flag = 'X'.
v_gjahr = sy-datum+0(4).
bseg-pswsl = 2.
endif.
if ( v_oldgjahr ne v_gjahr or v_oldbukrs ne v_bukrs and
v_oldzmon ne v_zmon ) and
v_gjahr ne space and v_bukrs ne space and v_zmon ne space.
perform fill_data.
else.
* SET CURSOR FIELD f LINE lin OFFSET o.
endif.
endmodule. " init_data OUTPUT
************************************************************************
*&Form Name : init_pbo
* Created by : DEV01 *
* Created on :
*----------------------------------------------------------------------*
* Function Description: *
*设置标题栏和工具条按钮
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *

************************************************************************
module init_pbo output.
set pf-status 'MAIN100'.
set titlebar 'MAINTITLE'.
endmodule. " PBO OUTPUT
************************************************************************
*&Form Name :liste_show_liste
* Created by : DEV01 *
* Created on :
*----------------------------------------------------------------------*
* Function Description: *
*将显示数据写到显示字段中,并设置主键字段是否可输入
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *

************************************************************************
module liste_show_liste output.
if tctrl_order-current_line gt tctrl_order-lines.
exit from step-loop.
endif.
grid_item = sy-loopc.
zfi017v-kostl = order_extract-kostl.
zfi017v-ktext = order_extract-ktext.
zfi017v-kstar = order_extract-kstar.
zfi017v-descript = order_extract-descript.
zfi017v-adamt = order_extract-adamt.
zfi017v-reasn = order_extract-reasn.
zfi017v-zyearmonth = order_extract-zyearmonth.
vim_marked = order_extract-mark.
loop at screen.
if ( order_extract-action = 'L'
and screen-name = 'VIM_MARKED' ).
screen-input = 0.
modify screen.
endif.
if ( zfi017v-kostl ne space
and screen-name = 'ZFI017V-KOSTL' ) or
( zfi017v-kstar ne space
and screen-name = 'ZFI017V-KSTAR' ) .
screen-input = 0.
modify screen.
endif.
endloop.
if vim_marked = 'M'.
vim_marked = 'X'.
endif.
endmodule. " LISTE_SHOW_LISTE OUTPUT
************************************************************************
*&Form Name : fill_data
* Created by : DEV01 *
* Created on :
*----------------------------------------------------------------------*
* Function Description: *
*根据用户输入读取数据并初试化状态变量
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *

************************************************************************
form fill_data .
select *
into corresponding fields of order_extract
from zfi017
where zfi017~bukrs = v_bukrs
and zfi017~gjahr = v_gjahr
and zfi017~zmon = v_zmon.
select single cskt~ktext as descript
into (order_extract-descript)
from cskt
where spras = '1'
and kokrs = '1000'
and kostl = order_extract-kostl.
select single ktext
into (order_extract-ktext)
from csku
where spras = '1' and ktopl ='CB00'
and kstar = order_extract-kstar.
append order_extract.
endselect.
sort order_extract by bukrs gjahr kostl kstar.
* order_extract[] = order_total[].
if actionmode = con_change.
perform insert_newworkarea using grid_item.
endif.
describe table order_extract lines tctrl_order-lines.
tctrl_order-top_line = 1.
clear ok_code.
mark_total = 1.
clear:datastate,status_order.
v_oldgjahr = v_gjahr.
v_oldbukrs = v_bukrs.
endform. " fill_data
************************************************************************
*&Form Name : init_ctrl
* Created by : DEV01 *
* Created on :
*----------------------------------------------------------------------*
* Function Description: *
*根据数据状态,设置屏幕字段是否可以输入
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *

************************************************************************
module init_ctrl output.
if actionmode eq space.
actionmode = con_show.
endif.
if con_show eq actionmode.
loop at screen.
case screen-name.
when 'V_BUKRS'.
screen-input = 1.
modify screen.
when 'V_GJAHR'.
screen-input = 1.
modify screen.
when 'V_ZMON'.
screen-input = 1.
modify screen.
endcase.
endloop.
read table tctrl_order-cols into col
with key screen-name = 'ZFI017V-KOSTL'.
if sy-subrc = 0.
col-screen-input = '0'.
modify tctrl_order-cols index sy-tabix from col.
endif.
read table tctrl_order-cols into col
with key screen-name = 'ZFI017V-KSTAR'.
if sy-subrc = 0.
col-screen-input = '0'.
modify tctrl_order-cols index sy-tabix from col.
endif.
read table tctrl_order-cols into col
with key screen-name = 'ZFI017V-ADAMT'.
if sy-subrc = 0.
col-screen-input = '0'.
modify tctrl_order-cols index sy-tabix from col.
endif.
read table tctrl_order-cols into col
with key screen-name = 'ZFI017V-REASN'.
if sy-subrc = 0.
col-screen-input = '0'.
modify tctrl_order-cols index sy-tabix from col.
endif.
read table tctrl_order-cols into col
with key screen-name = 'ZFI017V-ZYEARMONTH'.
if sy-subrc = 0.
col-screen-input = '0'.
modify tctrl_order-cols index sy-tabix from col.
endif.
else.
loop at screen.
case screen-name.
when 'V_BUKRS'.
screen-input = 0.
modify screen.
when 'V_GJAHR'.
screen-input = 0.
modify screen.
when 'V_ZMON'.
screen-input = 0.
modify screen.
endcase.
endloop.
read table tctrl_order-cols into col
with key screen-name = 'ZFI017V-KOSTL'.
if sy-subrc = 0.
col-screen-input = '1'.
modify tctrl_order-cols index sy-tabix from col.
endif.
read table tctrl_order-cols into col
with key screen-name = 'ZFI017V-KSTAR'.
if sy-subrc = 0.
col-screen-input = '1'.
modify tctrl_order-cols index sy-tabix from col.
endif.
read table tctrl_order-cols into col
with key screen-name = 'ZFI017V-ADAMT'.
if sy-subrc = 0.
col-screen-input = '1'.
modify tctrl_order-cols index sy-tabix from col.
endif.
read table tctrl_order-cols into col
with key screen-name = 'ZFI017V-REASN'.
if sy-subrc = 0.
col-screen-input = '1'.
modify tctrl_order-cols index sy-tabix from col.
endif.
read table tctrl_order-cols into col
with key screen-name = 'ZFI017V-ZYEARMONTH'.
if sy-subrc = 0.
col-screen-input = '1'.
modify tctrl_order-cols index sy-tabix from col.
endif.
endif.
endmodule. " init_ctrl OUTPUT

4、ZFIE0032I01单元
************************************************************************
* Copyright 2003 *
* All Rights Reserved *
*----------------------------------------------------------------------*
* Program Name : ZFIE0005 *
* TYPE : REPORT *
* Project : SAP Implementation Project *
* Program Title: 管理部门年度预算考核额调整
* Created by : DEV01 *
* Created on : *
* Version : 1.0 *
* Function Description: *
* 管理部门年度预算考核额调整
*----------------------------------------------------------------------*
*操作数据表
*ZFI017
*----------------------------------------------------------------------*
*引用数据表
*
*----------------------------------------------------------------------*
* Modification Log: *
* Date Programmer Correction Number DesingDoc Number *
************************************************************************
************************************************************************
*&Form Name : LISTE_EXIT_COMMAND
* Created by : DEV01 *
* Created on :
*----------------------------------------------------------------------*
* Function Description: *
*处理系统退出命令,提示用户是否保存数据
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
module liste_exit_command input.
data: savestate type i .
case ok_code.
when 'CANC'.
set screen 0.
leave screen.
when 'BACK'.
if datastate = 'X'.
call function 'POPUP_TO_CONFIRM_STEP'
exporting
titel = '退出维护'
textline1 = '数据被修改。'
textline2 = '是否先保存所做更改?'
importing
answer = answer.
case answer.
when 'J'.
perform save_data changing savestate.
sy-subrc = savestate.
when 'n'.
sy-subrc = 1.
when 'A'.
sy-subrc = 0.
endcase.
endif.
if sy-subrc = 0.
set screen 0.
leave screen.
endif.
when 'EXIT'.
if datastate = 'X'.
call function 'POPUP_TO_CONFIRM_STEP'
exporting
titel = '退出维护'
textline1 = '数据被修改。'
textline2 = '是否先保存所做更改?'
importing
answer = answer.
case answer.
when 'J'.
perform save_data changing savestate.
sy-subrc = savestate.
when 'n'.
sy-subrc = 1.
when 'A'.
sy-subrc = 0.
endcase.
endif.
if sy-subrc = 0.
set screen 0.
leave screen.
perform exit_program.
endif.
endcase.
endmodule. " LISTE_EXIT_COMMAND INPUT
**&---------------------------------------------------------------------
*
**& Module LISTE_BEFORE_LOOP INPUT
**&---------------------------------------------------------------------
*
** text
**----------------------------------------------------------------------
*
*MODULE liste_before_loop INPUT.
*
*ENDMODULE. " LISTE_BEFORE_LOOP INPUT
************************************************************************
*&Form Name : do_mark_checkbox
* Created by : DEV01 *
* Created on : *
*----------------------------------------------------------------------*
* Function Description: *
*处理记录选中标记字段
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
module liste_mark_checkbox input.
if status_order-upd_flag eq space. "only mouse mark
perform update_entry using space 0 tctrl_order-top_line.
endif.
endmodule. " LISTE_MARK_CHECKBOX INPUT
************************************************************************
*&Form Name : set_update_orderkey_flag
* Created by : DEV01 *
* Created on : *
*----------------------------------------------------------------------*
* Function Description: *
*标记数据被修改,标记关键有新值需要检查
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
module set_update_orderkey_flag input.
status_order-upd_flag = 'X'.
status_order-auth_check = 'X'.
status_order-st_data = 'X'.
datastate = 'X'.
endmodule. " set_update_orderkey_flag INPUT
************************************************************************
*&Form Name : set_update_orderkey_group
* Created by : DEV01 *
* Created on :
*----------------------------------------------------------------------*
* Function Description: *
*标记数据被修改,标记关键有新值需要检查
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
module set_update_orderkey_group input.
status_order-upd_flag = 'X'.
status_order-auth_check = 'X'.
status_order-st_mode = 'X'.
datastate = 'X'.
endmodule. " set_update_orderkey_flag INPUT
************************************************************************
*&Form Name : set_update_order_flag
* Created by : DEV01 *
* Created on : *
*----------------------------------------------------------------------*
* Function Description: *
*标记数据被修改
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
module set_update_order_flag input.
status_order-upd_flag = 'X'.
datastate = 'X'.
endmodule. " SET_UPDATE_FLAG INPUT
************************************************************************
*&Form Name : liste_update_order
* Created by : DEV01 *
* Created on :
*----------------------------------------------------------------------*
* Function Description: *
*将工作区数据更新到显示和缓冲内表中
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
module liste_update_order input.
if status_order-upd_flag = 'X'.
perform check_key_order.
perform update_tab_order using sy-subrc sy-tabix.
clear status_order.
endif.
endmodule. " LISTE_UPDATE_LISTE INPUT
************************************************************************
*&Form Name : check_key_order
* Created by : DEV01 *
* Created on :
*----------------------------------------------------------------------*
* Function Description: *
*关键字检查,判断是否重复
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
form check_key_order .
* CLEAR order_total.
* READ TABLE order_total WITH KEY
* kostl = zfi017v-kostl
* KSTAR = zfi017v-KSTAR BINARY SEARCH.
* CHECK sy-subrc EQ 0.
* IF status_order-auth_check = 'X'.
* IF order_total-action EQ 'D'
* OR order_total-action EQ 'X'
* OR order_total-action EQ 'Y'.
* MESSAGE ID 'SV' TYPE 'E' NUMBER '010'.
* ELSE.
* MESSAGE ID 'SV' TYPE 'E' NUMBER '009'.
* ENDIF.
* ENDIF.
endform. "check_key_order
************************************************************************
*&Form Name : liste_after_loop
* Created by : DEV01 *
* Created on : *
*----------------------------------------------------------------------*
* Function Description: *
*处理用户操作
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
module liste_after_loop input.
* DATA: savestate TYPE i.
save_ok = ok_code.
clear ok_code.
case save_ok.
when 'EXIT' or 'BACK' or 'CANC'.
if datastate = 'C'.
call function 'POPUP_TO_CONFIRM_STEP'
exporting
titel = '退出维护'
textline1 = '数据被修改。'
textline2 = '是否先保存所做更改?'
importing
answer = answer.
case answer.
when 'J'.
perform save_data changing savestate.
sy-subrc = savestate.
when 'n'.
sy-subrc = 1.
when 'A'.
sy-subrc = 0.
endcase.
endif.
if sy-subrc = 0.
set screen 0.
leave screen.
perform exit_program.
endif.
when 'EDIT'.
if datastate eq space.
if con_show eq actionmode.
call function 'ENQUEUE_EZFIE017'
exporting
bukrs = v_bukrs
gjahr = v_gjahr
zmon = v_zmon
exceptions
foreign_lock = 2
system_failure = 3.
if sy-subrc ne 0.
message i622 with v_bukrs v_gjahr sy-msgv1.
else.
actionmode = con_change.
if ( v_oldgjahr = v_gjahr and v_oldbukrs = v_bukrs
and v_gjahr ne space and v_bukrs ne space ).
perform insert_newworkarea using grid_item.
endif.
endif.
endif.
endif.
when 'DELE'.
if con_show ne actionmode.
perform delete_order.
endif.
when 'SAVE' or 'SAVV'.
if datastate ne space.
perform save_data changing savestate.
if savestate eq 0.
call function 'DEQUEUE_EZFIE017'
exporting
bukrs = v_bukrs
gjahr = v_gjahr
zmon = v_zmon.
clear datastate.
endif.
else.
call function 'DEQUEUE_EZFIE017'
exporting
bukrs = v_bukrs
gjahr = v_gjahr
zmon = v_zmon.
perform clear_action.
endif.
when 'SOUP'.
* search for selected columns.
loop at tctrl_order-cols into col.
if col-selected = 'X'.
indexfldname = col-screen-name+11.
sort order_total by (indexfldname).
exit.
endif.
endloop.
when 'SODO'.
loop at tctrl_order-cols into col.
if col-selected = 'X'.
indexfldname = col-screen-name+11.
sort order_total by (indexfldname) descending.
exit.
endif.
endloop.
when others.
call method cl_gui_cfw=>dispatch.
endcase.
call method cl_gui_cfw=>flush.
endmodule. " LISTE_AFTER_LOOP INPUT
************************************************************************
*&Form Name : insert_newworkarea
* Created by : DEV01 *
* Created on : *
*----------------------------------------------------------------------*
* Function Description: *
*为编辑数据添加临时空记录
*----------------------------------------------------------------------*
*参数说明
*-->p_entries:插入新空白记录数
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
form insert_newworkarea using p_entries.
if p_entries eq 0.
p_entries = 20.
endif.
clear order_extract.
move 'L' to order_extract-action.
do p_entries times.
append order_extract.
enddo.
move tctrl_order-lines to tctrl_order-top_line.
describe table order_extract lines tctrl_order-lines.
endform. " insert_newworkarea
************************************************************************
*&Form Name : delete_order
* Created by : DEV01 *
* Created on :
*----------------------------------------------------------------------*
* Function Description: *
*删除的数据,在缓冲数据中设立删除标志(只能删除新建且未保存的定价)
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
* *
************************************************************************
*----------------------------------------------------------------------*
form delete_order .

loop at order_extract.
if order_extract-mark = 'M' and
order_extract-action ne 'L'.
delete order_extract.
endif.
endloop.
describe table order_extract lines tctrl_order-lines.
endform. " delete_order

5、ZFIE0032F01单元
************************************************************************
* Copyright 2003 Wuhan *
* All Rights Reserved *
*----------------------------------------------------------------------*
* Program Name : ZFIE0005 *
* TYPE : REPORT *
* Project : SAP Implementation Project *
* Program Title: 管理部门年度预算考核额调整
* Created by : DEV01 *
* Created on : *
* Version : 1.0 *
* Function Description: *
* 管理部门年度预算考核额调整
*----------------------------------------------------------------------*
*操作数据表
*ZFI017
*----------------------------------------------------------------------*
*引用数据表
*
*----------------------------------------------------------------------*
* Modification Log: *
* Date Programmer Correction Number DesingDoc Number *
************************************************************************
************************************************************************
*&Form Name : exit_program
* Created by : DEV01 *
* Created on : *
*----------------------------------------------------------------------*
* Function Description: *
*退出程序时, 解除锁
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
form exit_program.
call function 'DEQUEUE_EZFIE017'
exporting
bukrs = v_bukrs
gjahr = v_gjahr
znum = v_zmon.
leave program.
endform. " exit_program

6、ZFIE0032FI1单元
************************************************************************
* Copyright 2003 *
* All Rights Reserved *
*----------------------------------------------------------------------*
* Program Name : ZFIE0005 *
* TYPE : REPORT *
* Project : SAP Implementation Project *
* Program Title: 管理部门年度预算考核额调整
* Created by : DEV01 *
* Created on : *
* Version : 1.0 *
* Function Description: *
* 管理部门年度预算考核额调整
*----------------------------------------------------------------------*
*操作数据表
*ZFI017
*----------------------------------------------------------------------*
*引用数据表
*
*----------------------------------------------------------------------*
* Modification Log: *
* Date Programmer Correction Number DesingDoc Number *
************************************************************************
************************************************************************
*&Form Name : clear_action
* Created by : DEV01 *
* Created on :
*----------------------------------------------------------------------*
* Function Description: *
*清除数据操作状态,恢复到初试显示状态
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
form clear_action.
* order_extract[] = order_total[].
actionmode = con_show.
describe table order_extract lines tctrl_order-lines.
tctrl_order-top_line = 1.
clear ok_code.
mark_total = 1.
clear:datastate,status_order.
clear status_order.
endform. " clear_action
************************************************************************
*&Form Name : clear_mark
* Created by : DEV01 *
* Created on :
*----------------------------------------------------------------------*
* Function Description: *
*清除记录选中标记
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
form clear_mark .
loop at order_total.
order_total-mark = space.
modify order_total index sy-tabix.
endloop.
endform. " clear_mark
************************************************************************
*&Form Name : save_data
* Created by : DEV01 *
* Created on :
*----------------------------------------------------------------------*
* Function Description: *
*保存数据
*----------------------------------------------------------------------*
*参数说明
*<--savestate:返回保存是否成功,成功为0值
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
form save_data changing savestate type i.
data i_znum type i.
savestate = -1.
delete from zfi017
where bukrs = v_bukrs and
gjahr = v_gjahr and
zmon = v_zmon.
i_znum = 1.
loop at order_extract.
if order_extract-action eq space.
zfi017-bukrs = order_extract-bukrs.
zfi017-gjahr = order_extract-gjahr.
zfi017-zmon = order_extract-zmon.
zfi017-znum = i_znum.
zfi017-kostl = order_extract-kostl.
zfi017-kstar = order_extract-kstar.
zfi017-adamt = order_extract-adamt.
zfi017-reasn = order_extract-reasn.
zfi017-zyearmonth = order_extract-zyearmonth.
insert zfi017.
if sy-subrc ne 0.
rollback work.
exit.
endif.
i_znum = i_znum + 1.
elseif order_extract-action = 'U'.
zfi017-bukrs = order_extract-bukrs.
zfi017-gjahr = order_extract-gjahr.
zfi017-zmon = order_extract-zmon.
zfi017-znum = i_znum.
zfi017-kostl = order_extract-kostl.
zfi017-kstar = order_extract-kstar.
zfi017-adamt = order_extract-adamt.
zfi017-reasn = order_extract-reasn.
zfi017-zyearmonth = order_extract-zyearmonth.
insert zfi017.
if sy-subrc ne 0.
rollback work.
exit.
endif.
i_znum = i_znum + 1.
order_total-action = space.
modify order_extract.
elseif order_extract-action = 'X'.
delete order_total.
elseif ( ( order_extract-action = 'D' ) or
( order_extract-action = 'Y' ) ).
delete order_extract.
elseif order_extract-action = 'N'.
zfi017-bukrs = order_extract-bukrs.
zfi017-gjahr = order_extract-gjahr.
zfi017-zmon = order_extract-zmon.
zfi017-znum = i_znum.
zfi017-kostl = order_extract-kostl.
zfi017-kstar = order_extract-kstar.
zfi017-adamt = order_extract-adamt.
zfi017-reasn = order_extract-reasn.
zfi017-zyearmonth = order_extract-zyearmonth.
insert zfi017.
if sy-subrc ne 0.
rollback work.
exit.
endif.
i_znum = i_znum + 1.
order_total-action = space.
modify order_extract.
endif.

7、ZFIE0032FI2单元
************************************************************************
* Copyright 2003 *
* All Rights Reserved *
*----------------------------------------------------------------------*
* Program Name : ZFIE0005 *
* TYPE : REPORT *
* Project : SAP Implementation Project *
* Program Title: 管理部门年度预算考核额调整
* Created by : DEV01 *
* Created on : *
* Version : 1.0 *
* Function Description: *
* 管理部门年度预算考核额调整
*----------------------------------------------------------------------*
*操作数据表
*ZFI017
*----------------------------------------------------------------------*
*引用数据表
*
*----------------------------------------------------------------------*
* Modification Log: *
* Date Programmer Correction Number DesingDoc Number *
************************************************************************
************************************************************************
*&Form Name : update_tab_order
* Created by : DEV01 *
* Created on : *
*----------------------------------------------------------------------*
* Function Description: *
*将显示缓冲work area的数据更新到内表
*----------------------------------------------------------------------*
*参数说明 *
* --> p_rc :记录定位操作返回的sy-subrc的值
* --> p_index :记录的索引位置
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
form update_tab_order using value(p_rc)
value(p_index).
perform update_entry using 'X' p_rc p_index.
endform. " update_tab
************************************************************************
*&Form Name : update_tab_order
* Created by : DEV01 *
* Created on :*
*----------------------------------------------------------------------*
* Function Description: *
*将显示缓冲work area的数据更新到内表
*----------------------------------------------------------------------*
*参数说明
* --> p_workarea : ‘X' 更新显示和缓冲双份内表数据
* space 只更新显示内表数据
* --> p_rc :记录定位操作返回的sy-subrc的值
* --> p_index :记录的索引位置
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
form update_entry using value(p_workarea)
value(p_rc)
value(p_index).
read table order_extract index tctrl_order-top_line.
if order_extract-action = 'L'.
move-corresponding zfi017v to order_extract.
order_extract-bukrs = v_bukrs.
order_extract-gjahr = v_gjahr.
order_extract-zmon = v_zmon.
order_extract-action = 'N'.
if vim_marked ne space.
order_extract-mark = 'M'.
endif.
modify order_extract index tctrl_order-top_line.
clear order_extract.
order_extract-action = 'L'.
append order_extract.
else.
move-corresponding zfi017v to order_extract.
order_extract-bukrs = v_bukrs.
order_extract-gjahr = v_gjahr.
order_extract-zmon = v_zmon.
order_extract-action = 'U'.
if vim_marked ne space.
order_extract-mark = 'M'.
endif.
modify order_extract index tctrl_order-top_line.
endif.
describe table order_extract lines tctrl_order-lines.
endform. "update_tab_order
endloop.
commit work.
savestate = 0.
perform clear_action.
message s024.
endform. " save_data

8、ZFIE0032H01单元
************************************************************************
* Copyright 2003 Wuhan *
* All Rights Reserved *
*----------------------------------------------------------------------*
* Program Name : ZFIE0005 *
* TYPE : REPORT *
* Project : SAP Implementation Project *
* Program Title: 管理部门年度预算考核额调整
* Created by : DEV01 *
* Created on : *
* Version : 1.0 *
* Function Description: *
* 管理部门年度预算考核额调整
*----------------------------------------------------------------------*
*操作数据表
*ZFI017
*----------------------------------------------------------------------*
*引用数据表
*
*----------------------------------------------------------------------*
* Modification Log: *
* Date Programmer Correction Number DesingDoc Number *
************************************************************************
************************************************************************
*&Form Name : v_bukrs_check
* Created by : DEV01 *
* Created on : *
*----------------------------------------------------------------------*
* Function Description: *
*公司代码字段输入检查:不能为空且代码不能不存在
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
module v_bukrs_check input.
tables: t001.
if v_bukrs = space.
message e023 with '公司代码'.
endif.
select single * from t001 where bukrs = v_bukrs.
if sy-subrc ne 0.
message e014 with v_bukrs.
endif.
endmodule. " v_bukrs_check INPUT
************************************************************************
*&Form Name : v_gjahr_check
* Created by : DEV01 *
* Created on : *
*----------------------------------------------------------------------*
* Function Description: *
*年份代码字段输入检查:不能为空且年份不能小于1990
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
module v_gjahr_check input.
if v_gjahr = space.
message e023 with '年份'.
endif.
if v_gjahr gt 9999 or v_gjahr lt 1000.
message e046.
endif.
endmodule. " v_gjahr_check INPUT
************************************************************************
*&Form Name : v_zmon_check
* Created by : DEV01 *
* Created on : *
*----------------------------------------------------------------------*
* Function Description: *
*月份字段输入检查
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
module v_zmon_check input.
if v_zmon = space.
message e023 with '月份'.
endif.
if v_zmon gt 12 or v_zmon lt 1.
message e047.
endif.
endmodule. " v_gjahr_check INPUT
************************************************************************
*&Form Name : select_kostl
* Created by : DEV01 *
* Created on : *
*----------------------------------------------------------------------*
* Function Description: *
*获取成本中心组(帮助输入)
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
module select_kostl input.
data:
dynpro_values type table of dynpread,
field_value like line of dynpro_values,
l_year like bkpf-gjahr,
g_kh(10).
data: begin of i_tree occurs 0,
setname like setnode-setname,
end of i_tree.
data: i_subtree like i_tree occurs 0 with header line,
i_temptree like i_tree occurs 0 with header line.
data l_count type i .
ranges: s_setname for setnode-setname.
ranges: s_kostl for cskt-kostl.

refresh dynpro_values.
field_value-fieldname = 'V_GJAHR'.
append field_value to dynpro_values.

call function 'DYNP_VALUES_READ'
exporting
dyname = sy-repid
dynumb = sy-dynnr
translate_to_upper = 'X'
tables
dynpfields = dynpro_values.

read table dynpro_values index 1 into field_value.
l_year = field_value-fieldvalue(4).

refresh i_setheadert.
s_setname-option = 'EQ'.
s_setname-sign = 'I'.
l_count = 1.
refresh i_temptree.
refresh i_subtree.
*特殊处理,2005年预算用2006的机构
if l_year < 2006.
l_year = 2006.
endif.
concatenate 'KH' l_year into g_kh.
while l_count > 0.
select setnode~subsetname as setname
into (setheadert-setname)
from setnode
where setnode~setclass = '0101'
and setnode~subclass = '1000'
and setnode~subsetcls = '0101'
and setnode~subsetscls = '1000'
and setnode~setname = g_kh.
move setheadert-setname to s_setname-low.
append s_setname.
i_temptree-setname = setheadert-setname.
append i_temptree.
endselect.
append lines of i_temptree to i_subtree.
describe table i_subtree lines l_count.
if l_count ne 0.
read table i_subtree index 1.
g_kh = i_subtree-setname.
delete i_subtree index 1.
endif.
refresh i_temptree.
clear i_temptree.
endwhile.

select valsign as sign valoption as option
valfrom as low valto as high
into table s_kostl
from setleaf
where setclass = '0101'
and subclass = '1000' and setname in s_setname.

refresh i_setheadert.
select single bukrs from t001 into butxt
where bukrs = v_bukrs.
if sy-subrc <> 0.
message id 'ZDEV' type 'S' number '049'.
exit.
endif.
select cskt~kostl cskt~ktext
into (cskt-kostl,cskt-ktext)
from cskt
where spras = '1'
and kokrs = '1000'
and kostl in s_kostl.
move cskt-kostl to i_setheadert-ktext.
append i_setheadert.
move cskt-ktext to i_setheadert-ktext.
append i_setheadert.
endselect.
refresh fldtab.
clear fldtab.
fldtab-tabname = 'CSKT'.
fldtab-fieldname = 'KOSTL'.
fldtab-selectflag = 'X'.
append fldtab.
clear fldtab.
fldtab-tabname = 'CSKT'.
fldtab-fieldname = 'KTEXT'.
append fldtab.
call function 'HELP_VALUES_GET_WITH_TABLE'
exporting
display = space
fieldname = 'KOSTL'
tabname = 'ZFI017V'
importing
select_value = ktext
tables
fields = fldtab
valuetab = i_setheadert.
if not ktext is initial.
zfi017v-kostl = ktext.
endif.
endmodule. " select_kostl INPUT

************************************************************************
*&Form Name : select_zgroup
* Created by : DEV01 *
* Created on : *
*----------------------------------------------------------------------*
* Function Description: *
*获取某个年度成本要素组(帮助输入)
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
module select_zgroup input.
refresh i_zfi010.
*********XIONGHM***************
select kstar ktext
into (csku-kstar,csku-ktext)
from csku
where spras = '1' and ktopl ='CB00'.
i_zfi010-name = csku-kstar.
append i_zfi010.
i_zfi010-name = csku-ktext.
append i_zfi010.
endselect.

refresh fldtab.
clear fldtab.
fldtab-tabname = 'ZFI017V'.
fldtab-fieldname = 'KSTAR'.
fldtab-selectflag = 'X'.
append fldtab.
clear fldtab.
fldtab-tabname = 'ZFI017V'.
fldtab-fieldname = 'KTEXT'.
append fldtab.
call function 'HELP_VALUES_GET_WITH_TABLE'
exporting
display = space
fieldname = 'KSTAR'
tabname = 'ZFI017V'
importing
select_value = name
tables
fields = fldtab
valuetab = i_zfi010.
if not name is initial.
zfi017v-kstar = name.
endif.
endmodule. " select_prodh INPUT
************************************************************************
*&Form Name : v_check_kostl
* Created by : DEV01 *
* Created on : *
*----------------------------------------------------------------------*
* Function Description: *
*检查成本输入中心是否存在
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
module v_check_kostl input.
if zfi017v-kostl eq space.
message e621 with zfi017v-kostl.
endif.
if status_order-st_data ne space.
select single ktext as descript
into zfi017v-descript
from cskt
where spras = '1'
and kokrs = '1000'
and kostl = zfi017v-kostl.
if sy-subrc ne 0.
message e620 with zfi017v-kostl.
endif.
endif.
endmodule. " v_check_kostl INPUT
************************************************************************
*&Form Name : v_check_zgroup
* Created by : DEV01 *
* Created on : *
*----------------------------------------------------------------------*
* Function Description: *
*检查输入成本要素组是否存在
*----------------------------------------------------------------------*
*参数说明
*
*----------------------------------------------------------------------*
* Date Programmer Description *
************************************************************************
module v_check_zgroup input.
if zfi017v-kstar eq space.
message e621 with zfi017v-kstar.
endif.
if status_order-st_mode ne space.
select single ktext
into (zfi017v-ktext)
from csku
where spras = '1' and ktopl ='CB00'
and kstar = zfi017v-kstar.
if sy-subrc ne 0.
message e621 with zfi017v-kstar.
endif.
endif.
endmodule. " v_check_zgroup INPUT

9、屏幕PBO和PAI
*BEFORE OUTPUT
process before output.
module init_pbo.
module init_data.
module init_ctrl.
loop at order_extract with control tctrl_order
cursor tctrl_order-top_line.

module liste_show_liste.
endloop.

*After input
process after input.
module liste_exit_command at exit-command.
field v_bukrs module v_bukrs_check on request.
field v_gjahr module v_gjahr_check on request.
field v_zmon module v_zmon_check on request.
module liste_before_loop.
loop at order_extract.
field zfi017v-kostl
module set_update_orderkey_flag on request.
field zfi017v-kstar
module set_update_orderkey_group on request.
chain.
field zfi017v-adamt.
field zfi017v-reasn.
field zfi017v-zyearmonth.
module set_update_order_flag on chain-request.
endchain.
field vim_marked module liste_mark_checkbox.
**检查
field zfi017v-kostl module v_check_kostl.
field zfi017v-kstar module v_check_zgroup.
* save current data to order_total
chain.
field zfi017v-kostl.
field zfi017v-kstar.
field zfi017v-adamt.
field zfi017v-reasn.
field zfi017v-zyearmonth.
module liste_update_order.
endchain.
endloop.
*deal with function Code
module liste_after_loop.

process on value-request.
field zfi017v-kostl module select_kostl.
field zfi017v-kstar module select_zgroup.


Comments: 发表评论



<< Home

Archives

1990年1月15日   2007年1月14日   2007年1月15日   2007年1月16日   2007年1月17日   2007年1月18日   2007年1月19日   2007年1月20日   2007年1月22日   2007年1月23日   2007年1月24日   2007年1月25日   2007年1月26日   2007年1月27日   2007年1月29日   2007年1月30日   2007年1月31日   2007年2月1日   2007年2月2日   2007年2月3日   2007年3月13日   2007年5月15日   2007年5月16日   2007年6月2日  

This page is powered by Blogger. Isn't yours?