`
guanhuaing
  • 浏览: 1223991 次
文章分类
社区版块
存档分类
最新评论

ABAP--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.

分享到:
评论

相关推荐

    ABAP751 ABAP - Keyword Documentation

    ABAP - Keyword Documentation This documentation describes the syntax and meaning of the keywords of the ABAP language and its object-oriented part ABAP Objects. Alongside this, language frameworks ...

    SAP-ABAP-SAPLINK及插件

    简单来讲,SAPLINK就是用来导入和导出ABAP程序,等开发对象的一个开源分享项目的产物. 1.上载前置工具程序 导入SAPLINK需要使用ZSAPLINK_INSTALLER程序进行导入. TCode:SE38,新建名为ZSAPLINK_INSTALLER的程序. 2....

    SAP中文教材全系列之ABAP-BC400_ZH

    本文档是《SAP中文教材全系列之ABAP-BC400_ZH》,为SAP ABAP编程语言的学习提供参考。文档包含了详细的ABAP课程内容,旨在帮助学员理解并掌握ABAP编程的基础知识和高级技能。以下将详细阐释文档所涵盖的知识点。 ...

    SAP ABAP-采购申请释放后到更新发布标识.zip

    在SAP系统中,ABAP(Advanced Business Application Programming)是一种编程语言,用于开发和定制企业资源规划(ERP)软件,而MM(Materials Management)模块则是SAP中的一个重要部分,主要处理采购、库存管理和...

    SAP-ABAP-Certification-Review.pdf

    SAP-ABAP-Certification-Review.pdf

    SAP方丈-ABAP-SAP增强应用实例.docx

    SAP增强是一种基于SAP ABAP编程语言的开发技术,它可以帮助用户实现个性化的需求,同时也可以满足企业的特殊需求。SAP增强可以分为两类:系统增强和用户增强。系统增强是指SAP系统自身提供的增强功能,而用户增强是...

    ABAP-培训教材目录

    ABAP-培训教材附录 ABAP-培训教材ABAP-培训教材ABAP-培训教材ABAP-培训教材

    eclipse-abap-keywordcolors-master.rar

    eclipse-abap-keywordcolors eclipse-abap-关键字颜色

    CD260-ABAP-in-Eclipse-开发-CN

    CD260-ABAP-in-Eclipse-开发-CN CD260-ABAP-in-Eclipse-开发-CNCD260-ABAP-in-Eclipse-开发-CNCD260-ABAP-in-Eclipse-开发-CN

    ABAP-ALV进阶

    ABAP-ALV进阶是指在SAP系统中使用ABAP语言开发的高级列表查看器(ALV)。ALV是SAP系统中心的列表标准,可以在ABAP程序中进行报表输出。下面是ABAP-ALV进阶的知识点详解: 一、ALV概要 ALV 全称为 ABAP List Viewer...

    ABAP--SAP各模块常用表

    SAP各模块常用表,做ABAP的必须使用的资料。

    ABAP-SAP学习宝典进阶语法大全

    《ABAP-SAP学习宝典进阶语法大全》是一本专为SAP系统开发者准备的深入学习资料,它涵盖了ABAP编程语言的核心概念、高级语法和实用技巧。ABAP(Advanced Business Application Programming)是SAP公司的主要编程语言...

    SAP-ABAP-OO-实现-CL-SALV-TABLE

    ### SAP-ABAP-OO 实现 CL-SALV-TABLE 的关键知识点 #### 1. ABAP 面向对象的 ALV 显示方法 在 SAP 的 ABAP 环境中,ALV (Application List Viewer) 是一种非常常用的技术,用于在屏幕上以表格的形式展示数据。传统...

    SAP中文教材全系列之ABAP-BC401

    SAP ABAP-BC401是SAP ABAP(高级商业应用编程语言)的一部分,它是一种编程语言,专门为SAP软件应用开发。ABAP-BC401的内容覆盖了SAP ABAP开发的各个方面,旨在帮助读者深入掌握ABAP开发技能。从提供的文件内容来看...

    abap实例讲解----SAP学习好帮手

    ### ABAP实例讲解——SAP学习好帮手 #### ABAP程序分类 ABAP程序主要分为两大类:**报表程序**和**对话程序**。 - **报表程序(Report)** - **特点**: - 结构较为简单,易于理解和维护。 - 由事件块(Event ...

    SAP初探之ABAP-数据库对象

    ### SAP初探之ABAP-数据库对象 #### 1. 概述 SAP系统作为全球领先的ERP(Enterprise Resource Planning)解决方案提供商,在企业信息化管理领域占据着举足轻重的地位。其中,ABAP(Advanced Business Application ...

    Conect-to-SAP.rar

    标题 "Conect-to-SAP.rar" 暗示着这个压缩包可能包含了与连接到SAP系统相关的资源。SAP,全称为System Applications and Products,是全球领先的企业级软件解决方案提供商,尤其在企业资源规划(ERP)领域具有广泛的...

    固定资产导入模板-SAP-ABAP-FI-BAPI清单案例教程-固定资产创建-BAPI-FIXEDASSET-OVRTAKE

    固定资产导入模板——SAP_ABAP_FI_BAPI清单案例教程——固定资产创建_BAPI_FIXEDASSET_OVRTAKE

    SAP资料集有ABAP-PP-MM-RFC-BAPI-JCO等.rar

    这个名为"SAP资料集有ABAP-PP-MM-RFC-BAPI-JCO等.rar"的压缩包文件包含了多个与SAP相关的学习资料,涵盖了许多关键模块和技术,包括ABAP编程、生产计划(PP)、物料管理(MM)、远程功能调用(RFC)、业务对象接口...

Global site tag (gtag.js) - Google Analytics