这几天做一个系统维护的程序,需要用户输入用户名和密码登录。可怎样实现输入密码显示星号的框呢?在其它语言中简单的选那个文本框控件作为 “ Password ”框显示就 OK 了(一般会有单行、密码和多行供选)。可在 ABAP 中,把 I/O 字段属性查了个遍,没找见类似的属性,郁闷!



网上一搜,前人已经实现了。一看,更郁闷!居然是设置“不可见”属性!!(原以为选上他控件会消失呢!)写在这里,留个备份,也给需要的朋友作个参考。



下面分别介绍不同界面编程的具体实现方法:



( 1 )选择屏幕( Selection-Screen )中实现密码框:



假设选择屏幕中有如下声明:



PARAMETERS : txt_pass type string.



“ txt_pass “是要接收密码的字段,则在选择屏幕的输出事件中加入如下代码,修改这个字段“不可见”:



AT SELECTION-SCREEN OUTPUT.  



loop at screen.



    if screen-name = 'TXT_PASS'.



      screen-invisible = '1'.



      modify screen.



    endif.



  endloop.



经过上面修改, txt_pass 在界面上将显示成带星号的文本域。



( 2 )在屏幕( Screen )中实现密码框:



与选择屏幕上面一样,还是设置“不可见”属性,只是更简单(不用写代码了)。



假设在屏幕设计器上放了个名叫“ txt_pass ”的 I/O 域来接收密码输入,则双击这个字段,在属性窗口下面的“显示”页勾选“不可见”(如右图所示),激活, OK !



总结:



( 1 ) SAP 这个属性搞的变态(不过想一下,也有道理);



( 2 )自己以后可不能想当然了,要注重动手实践。



( 3 )上面密码数据类型我使用了 string , SAP 数据字典中还提供了个叫“ XUNCODE ”的文本元素专门用于密码数据类型,可以使用它。