模拟Select-Options对象实现多项数据输入功能

Select-Options对象可以同时输入多项值并将所输入数据存入内表以供程序使用,不过Select-Options的功能有一定的局限性,它所能显示信息的长度是固定的,对于一些较长的文本,会因为输出长度过短而影响显示效果(如地址信息)。本例将以邮件地址输入字段为例,创建一个长度为50的可输入多值的文本对象。

本例中需要定义一个隐藏的Select-Options对象,用于保存实际输入数据。需要定义一个够长的文本框及一个多值输入按钮作为数据传递的接口。数据会通过所定义的文本框传递到隐藏的Select-Options对象中,并通过改变多值输入按钮上的图标样式来表示该对象中是否存在数据。

相关函数:

COMPLEX_SELECTIONS_DIALOG:开启输入多值对话框

  1. REPORT ZR_EXAMPLE_04 .
  2. TYPE-POOLS: ICON.           "按钮上显示图标时需要调用该类库
  3. DATA: L_COUNT TYPE I.       "用于计算内表数值总数
  4. DATA: LMAIL(50) TYPE C.     "定义Mail地址输入变量长度及类型
  5. *定义屏幕元素及文本元素(参考第7章)
  6. SELECTION-SCREEN: BEGIN OF BLOCK ALV WITH FRAME TITLE TEXT-002.
  7. SELECTION-SCREEN: BEGIN OF LINE.
  8. SELECTION-SCREEN: COMMENT (14) TEXT-001.
  9. PARAMETERS: MAILCOPY LIKE LMAIL.
  10. SELECTION-SCREEN: PUSHBUTTON 63(5) PUBU USER-COMMAND MAILBUTT.
  11. SELECTION-SCREEN: END   OF LINE.
  12. SELECTION-SCREEN: END OF BLOCK ALV.
  13. DATA: MAILTYPE TYPE C VALUE ''.
  14. *定义一隐藏的SELECT-OPTIONS用于保存输入值
  15. SELECT-OPTIONS: MAILADD FOR LMAIL NO-DISPLAY .
  16. AT SELECTION-SCREEN OUTPUT.
  17. CLEAR L_COUNT.
  18. DESCRIBE TABLE MAILADD LINES L_COUNT.
  19. *判断内表是否有值来设置按钮图标
  20. IF L_COUNT > 1.
  21. WRITE ICON_DISPLAY_MORE AS ICON TO PUBU.
  22. ELSE.
  23. WRITE ICON_ENTER_MORE  AS ICON TO PUBU.
  24. ENDIF.
  25. AT SELECTION-SCREEN.
  26. CLEAR L_COUNT.
  27. DESCRIBE TABLE MAILADD LINES L_COUNT.
  28. *实现内表与文本元素间的值传递
  29. IF NOT MAILCOPY IS INITIAL AND MAILADD[] IS INITIAL.
  30. MAILADD-LOW = MAILCOPY.
  31. APPEND MAILADD.
  32. ENDIF.
  33. IF L_COUNT = 1.
  34. REFRESH MAILADD.
  35. CLEAR MAILADD.
  36. IF NOT MAILCOPY IS INITIAL.
  37. MAILADD-LOW = MAILCOPY.
  38. APPEND MAILADD.
  39. ENDIF.
  40. ENDIF.
  41. IF L_COUNT > 1 .
  42. IF MAILCOPY IS INITIAL.
  43. DELETE MAILADD INDEX 1.
  44. ELSE.
  45. MAILADD-LOW = MAILCOPY.
  46. MODIFY MAILADD INDEX 1 TRANSPORTING LOW.
  47. ENDIF.
  48. ENDIF.
  49. *在单击按钮的事件时调用输入多值输入对话框
  50. IF SY-UCOMM = 'MAILBUTT'.
  51. PERFORM SHOW_BOX.
  52. ENDIF.
  53. *---------------------------------------------------------------------*
  54. *     调用多值输入对话框                       *
  55. *---------------------------------------------------------------------*
  56. FORM SHOW_BOX.
  57. TYPE-POOLS AQADH .
  58. DATA: TAB_AND_FIELD TYPE  RSTABFIELD.
  59. TAB_AND_FIELD-TABLENAME = 'ADR6'.
  60. TAB_AND_FIELD-FIELDNAME = 'SMTP_ADDR'.
  61. *该函数将输入值传递给内表
  62. CALL FUNCTION 'COMPLEX_SELECTIONS_DIALOG'
  63. EXPORTING
  64. TEXT           = 'SET E-Mail To '
  65. TAB_AND_FIELDTAB_AND_FIELD  = TAB_AND_FIELD
  66. TABLES
  67. RANGE          = MAILADD[]
  68. EXCEPTIONS
  69. NO_RANGE_TAB   = 1
  70. CANCELLED      = 2
  71. INTERNAL_ERROR = 3
  72. OTHERS         = 4.
  73. *将内表首行值传给文本对象,显示在屏幕上
  74. IF NOT MAILADD[] IS INITIAL.
  75. READ TABLE MAILADD INDEX 1.
  76. MAILCOPY = MAILADD-LOW.
  77. ELSE.
  78. MAILCOPY = ''.
  79. ENDIF.
  80. ENDFORM

程序输出界面如图16-4所示。

 
图16-4  自定义多值输入文本对象执行界面

模拟Select-Options对象实现多项数据输入功能的更多相关文章

  1. BarTender中如何调整数据输入表单的大小?

    BarTender中的表单设计,是一个简单而又复杂的操作.简单的是它提供很多实用的工具,帮助用户实现更多的功能,复杂的是要对其进行排版设计,这就要看小伙伴们的个人要求高低了. 自定义数据输入表单时,你 ...

  2. 如何利用javascript获取表单中select下拉列表中所选中项的值value

    1.html代码如下: <html> <head> </head> <body> <form name="form1" id= ...

  3. .NET Core采用的全新配置系统[3]: “Options模式”下的配置是如何绑定为Options对象

    配置的原子结构就是单纯的键值对,并且键和值都是字符串,但是在真正的项目开发中我们一般不会单纯地以键值对的形式来使用配置.值得推荐的做法就是采用<.NET Core采用的全新配置系统[1]: 读取 ...

  4. TFS工作项数据统计及相关数据库结构分析

    今天为客户的质量管理部门人员提供TFS咨询过程中,客户的质量管理专家基于TFS提出了一个比较棘手的数据统计需求.需求是这样,客户的数十个软件项目通过质量管理部按照年度版本计划进行软件产品系统的发布,因 ...

  5. Flexigrid从对象中加载数据

    (有问题,在找…………) Flexigrid是用来动态加载数据的一种比较好(老)的Jquery表插件,然后有些时候,我们需要其从本地或者jQuery对象中加载数据,比如有这么个需求,页面显示中有两个表 ...

  6. resultset 对象获取行字段数据时报:java.sql.SQLException: Column 'id' not found.

    resultset 对象获取行字段数据时报:java.sql.SQLException: Column 'id' not found. 代码: String sql="SELECT d.co ...

  7. 【转】asp.net中利用session对象传递、共享数据[session用法]

    来自:http://blog.unvs.cn/archives/session-transfer-method.html 下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值 ...

  8. asp.net中利用session对象传递、共享数据[session用法]

    下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值: 首先定义将一个文本值或单独一个值赋予session,如下: session[“name”]=textbox1.text ...

  9. select options常用操作

    1.判断select选项中 是否存在Value="value"的option元素 function jsSelectIsExitItem(objSelect,objItemValu ...

随机推荐

  1. 自制Console线(已测试CISCO3560可用)

    D9的顺序是5口在上,4口在下.从右到左分别是1-5,6-9. 5 4 3 2 1 o o o o o o o o o 9 8 7 6 用万用表量出D9的口的对应颜色.然后按照下面的表.把颜色填写上. ...

  2. 提高Java代码质量:使用枚举定义常量(转)

    一.分析  常量的声明是每一个项目中不可或缺的,在Java1.5之前,我们只有两种方式的声明:类常量和接口常量.不过,在1.5版之后有了改进,即新增了一种常量声明方式,枚举常量.代码如下: enum ...

  3. Ubuntu下PHP的扩展

    Ubuntu版本:14.04 1. 下载php-5.5.10.tar.bz2,并解压. 2.  终端进入解压后的目录php-5.5.10,运行configure.(输入命令./configure) 3 ...

  4. [转]OOPC:Object-Oriented Programming in C

    转载自:http://www.cnblogs.com/stli/archive/2010/10/16/1853190.html OOPC是指OOP(Object-Oriented Programmin ...

  5. Hadoop入门进阶课程10--HBase介绍、安装与应用案例

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  6. 使用 GistBox 轻松组织和管理你的代码片段

    GistBox 用简便的方式来组织和管理代码片段.你的代码会保存到云端进行备份,再也不用担心迷失在杂乱的代码片段中.GistBox 是建立在标准的 HTML5 技术基础上.在旅途中或在办公室,你都可以 ...

  7. Solr官方文档翻译-About & Getting Started

    关于(About) 官方文档介绍了所有的Apache Solr实现的重要特性和功能.它是免费的,可以到http://lucene.apache.org/solr/下载. 为了更加的深入和广泛,设计成一 ...

  8. 第十一篇 SQL Server代理维护计划

    本篇文章是SQL Server代理系列的第十一篇,详细内容请参考原文 在这一系列的上一篇,我们看了使用代理帐户模仿Windows安全上下文完成作业步骤的工作.大多数子系统支持代理账户,同时子系统限制代 ...

  9. 性能测试类,让你写法代码养成经常测试的好习惯 -ASP.NET C#

    介绍: 可以很方便的在代码里循环执行 需要测试的函数  自动统计出执行时间,支持多线程. 使用方法: PerformanceTest p = new PerformanceTest(); p.SetC ...

  10. CentOS6.5菜鸟之旅:安装SUN JDK1.7和Tomcat7

    一.前言   CentOS6.5系统自带Open JDK1.7.1.6和1.5,但OpenJDK部分内容与SUN JDK不兼容,因此打算重新安装SUN JDK1.7来开发. 二.卸载Open JDK ...