ABAP实例:如何生成年月的输入帮助
2016-02-24 14:35
363 查看
在ABAP的设计过程中经常会出现账务期输入,格式为年月。如果我们使用spmon元素为参考,但是系统无输入帮助,用户常常出错,为了避免输入错误。我们可以自定义输入帮助,步骤如下:
1、定义选择变量
parameter p_spmon type spmon default sy-datum+0(6)
obligatory.
select-options s_spmon for s031-spmon default sy-datum+0(6)
obligatory.
2、定义帮助子过程
form monat_f4.
data: begin of mf_dynpfields occurs 1.
include structure dynpread.
data: end of mf_dynpfields.
data: mf_returncode like sy-subrc,
mf_monat like isellist-month,
mf_hlp_repid like sy-repid.
field-symbols: <mf_feld>.
get cursor field mf_dynpfields-fieldname.
append mf_dynpfields.
mf_hlp_repid = sy-repid.
do 2 times.
call function 'DYNP_VALUES_READ'
exporting
dyname = mf_hlp_repid
dynumb = sy-dynnr
tables
dynpfields = mf_dynpfields
exceptions
invalid_ABAPworkarea = 01
invalid_dynprofield = 02
invalid_dynproname = 03
invalid_dynpronummer = 04
invalid_request = 05
no_fielddescription = 06
undefind_error = 07.
if sy-subrc = 3.
mf_hlp_repid = 'SAPLALDB'.
else.
read table mf_dynpfields index 1.
translate mf_dynpfields-fieldvalue using '_ '.
exit.
endif.
enddo.
if sy-subrc = 0.
call function 'CONVERSION_EXIT_PERI_INPUT'
exporting
input = mf_dynpfields-fieldvalue
importing
output = mf_monat
exceptions
error_message = 1.
if mf_monat is initial.
mf_monat = sy-datlo(6).
endif.
call function 'POPUP_TO_SELECT_MONTH'
exporting
actual_month = mf_monat
importing
selected_month = mf_monat
return_code = mf_returncode
exceptions
factory_calendar_not_found = 01
holiday_calendar_not_found = 02
month_not_found = 03.
if sy-subrc = 0 and
mf_returncode = 0.
call function 'CONVERSION_EXIT_PERI_OUTPUT'
exporting
input = mf_monat
importing
output = mf_dynpfields-fieldvalue.
collect mf_dynpfields.
call function 'DYNP_VALUES_UPDATE'
exporting
dyname = mf_hlp_repid
dynumb = sy-dynnr
tables
dynpfields = mf_dynpfields
exceptions
invalid_ABAPworkarea = 01
invalid_dynprofield = 02
invalid_dynproname = 03
invalid_dynpronummer = 04
invalid_request = 05
no_fielddescription = 06
undefind_error = 07.
endif.
endif.
endform. "MONAT_F4
3、定义输入帮助事件
at selection-screen on value-request for p_spmon.
perform monat_f4.
at selection-screen on value-request for s_spmon-low.
perform monat_f4.
at selection-screen on value-request for s_spmon-high.
perform monat_f4.
1、定义选择变量
parameter p_spmon type spmon default sy-datum+0(6)
obligatory.
select-options s_spmon for s031-spmon default sy-datum+0(6)
obligatory.
2、定义帮助子过程
form monat_f4.
data: begin of mf_dynpfields occurs 1.
include structure dynpread.
data: end of mf_dynpfields.
data: mf_returncode like sy-subrc,
mf_monat like isellist-month,
mf_hlp_repid like sy-repid.
field-symbols: <mf_feld>.
get cursor field mf_dynpfields-fieldname.
append mf_dynpfields.
mf_hlp_repid = sy-repid.
do 2 times.
call function 'DYNP_VALUES_READ'
exporting
dyname = mf_hlp_repid
dynumb = sy-dynnr
tables
dynpfields = mf_dynpfields
exceptions
invalid_ABAPworkarea = 01
invalid_dynprofield = 02
invalid_dynproname = 03
invalid_dynpronummer = 04
invalid_request = 05
no_fielddescription = 06
undefind_error = 07.
if sy-subrc = 3.
mf_hlp_repid = 'SAPLALDB'.
else.
read table mf_dynpfields index 1.
translate mf_dynpfields-fieldvalue using '_ '.
exit.
endif.
enddo.
if sy-subrc = 0.
call function 'CONVERSION_EXIT_PERI_INPUT'
exporting
input = mf_dynpfields-fieldvalue
importing
output = mf_monat
exceptions
error_message = 1.
if mf_monat is initial.
mf_monat = sy-datlo(6).
endif.
call function 'POPUP_TO_SELECT_MONTH'
exporting
actual_month = mf_monat
importing
selected_month = mf_monat
return_code = mf_returncode
exceptions
factory_calendar_not_found = 01
holiday_calendar_not_found = 02
month_not_found = 03.
if sy-subrc = 0 and
mf_returncode = 0.
call function 'CONVERSION_EXIT_PERI_OUTPUT'
exporting
input = mf_monat
importing
output = mf_dynpfields-fieldvalue.
collect mf_dynpfields.
call function 'DYNP_VALUES_UPDATE'
exporting
dyname = mf_hlp_repid
dynumb = sy-dynnr
tables
dynpfields = mf_dynpfields
exceptions
invalid_ABAPworkarea = 01
invalid_dynprofield = 02
invalid_dynproname = 03
invalid_dynpronummer = 04
invalid_request = 05
no_fielddescription = 06
undefind_error = 07.
endif.
endif.
endform. "MONAT_F4
3、定义输入帮助事件
at selection-screen on value-request for p_spmon.
perform monat_f4.
at selection-screen on value-request for s_spmon-low.
perform monat_f4.
at selection-screen on value-request for s_spmon-high.
perform monat_f4.
相关文章推荐
- 通俗易懂的栈堆
- 性能测试新手常犯错误总结(四):一切来自录制
- 键盘的通知 使文本框跟随键盘移动
- iOS中关于读取已存在的数据库问题:路径为空的解决方法
- 如何不加班,以前问题的答案
- PHP使用数据库的并发问题
- mysql 5.5.37版本没有my.cnf配置文件解决方法
- Sqoop安装配置及数据导入导出
- Spring 通过注解方式实现AOP切面编程
- 监听短信到来
- UVA 147 Dollars
- Java数据结构----图--深度优先遍历BFS和广度优先遍历DFS
- 性能测试新手常犯错误总结(三):用户数与压力
- 面试题集锦
- new operator
- ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW-(以运单号为单位显示ALV然后保存输出)
- grep命令查找当前目录下包含某个字符串的所有文件
- 使用nginx针对URL实现负载均衡或者说接口定向分发
- mysql逻辑备份2种方案
- JavaScript之IE的fireEvent方法详细解析