调用Function时弹出输入屏幕的小例…
有时候在调用FM的时候,需要弹出一个输入框
比如输入邮箱
所以写了个小例子
创建了个Function group,他会自带两个include
其中LZLM_TEST_SCREEN_GROUPTOP
定义全局变量
DATA: ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm.
DATA: g_email TYPE so_recname.
DATA:
在函数组里新建屏幕9001.
然后定义 user_command_9001.
module USER_COMMAND_9001 input.
save_ok = ok_code.
CASE save_ok.
WHEN 'OK' OR ''.
IF g_email IS INITIAL.
MESSAGE '请输入邮箱' TYPE 'S'.
ELSEIF g_email NA '@'.
MESSAGE '邮箱格式不正确,请重新输入' TYPE 'S'.
CLEAR g_email.
ELSE.
SET SCREEN 0.
LEAVE SCREEN.
ENDIF.
"结束屏幕调用
WHEN OTHERS.
g_email = ''.
SET SCREEN 0.
"这两句很有必要
LEAVE SCREEN.
ENDCASE.
endmodule. " USER_COMMAND_9001 INPUT
endmodule.
下面创建函数:ZLM_TEST_FM_GET_EMAIL
FUNCTION ZLM_TEST_FM_GET_EMAIL.
*"----------------------------------------------------------------------
*"*"LocalInterface:
*" EXPORTING
*" REFERENCE(E_EMAIL) TYPE SO_RECNAME
*"----------------------------------------------------------------------
CALL SCREEN 9001 STARTING AT '30' '10' ENDING AT '97' '14'.
e_email = g_email.
ENDFUNCTION.
*"----------------------------------------------------------------------
*"*"Local
*"
*"
*"----------------------------------------------------------------------
ENDFUNCTION.
然后在程序中调用
REPORT zlm_test_call_fm_screen.
DATA:emailTYPE so_recname.
CALL FUNCTION 'ZLM_TEST_FM_GET_EMAIL'
IMPORTING
e_email = email.
WRITE email.
DATA:email
CALL
WRITE
因为LZLM_TEST_SCREEN_GROUPTOP 定义的是全局的
这个函数组里的其他函数有可能会受影响
所以,如果可以,带屏幕的函数,跟其他函数还是分开在不同的函数组的好
http://blog.sina.com.cn/sapliumeng