45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:ABAP--SAP的SCreen录入简单模板的详细介绍

ABAP--SAP的SCreen录入简单模板的详细介绍

2016-08-27 08:02:25 来源:www.45fan.com 【

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.

 

本文地址:http://www.45fan.com/a/question/68265.html
Tags: 录入 SCreen ABAP--SAP
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部