模拟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. 实现TabView(页签)效果

    今天花了点时间,设计了一个网页上用的tabview(页签.tabcontrol)效果.个人觉得实现得比较不错,网页元素用得比较少,js代码也比较精练.测试了一下支持IE.FireFox以及chrome ...

  2. 下载安装与配置 Java JDK 7

    1. 去 Oracle 的官网下载 JDK,我下载的是:jdk-7u25-windows-x64.exe   大小为:90.6M 2. 双击它安装. 3. 安装完后,JDK 配置如下: 01 02 - ...

  3. .NET转Java

    懂C#的话,转Java也不是那么难,毕竟,语言语法还是相似的.尝试了下Java,说说自己的体会吧. 一,Java和C#都是完全面向对象的语言.在面向对象编程的三大原则方面,这两种语言接近得不能再接近. ...

  4. sqlserver -- 学习笔记(三)解决php连接sqlserver2005视图时显示“异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项”的问题

    --php5.2 --sqlserver2005 php连接sqlserver的视图aa,语句如下: $query = mssql_query("select * from dbo.aa&q ...

  5. Flow: JavaScript静态类型检查工具

    Flow: JavaScript静态类型检查工具 Flow是Facebook出品的,针对JavaScript的静态类型检查工具.其代码托管在github之上,并遵守BSD开源协议. 关于Flow 它可 ...

  6. asynchronous-logging-with-log4j-2--转

    原文地址:https://dzone.com/articles/asynchronous-logging-with-log4j-2 Log4J 2 is a logging framework des ...

  7. Python - 获取帮助信息

    1- Python Manuals 自带CHM格式的Python Manuals存放在\Python<x.x>\Doc\目录下.可以在IDLE界面下按F1键或点击help选项下Python ...

  8. Fast Image Cache – iOS 应用程序高性能图片缓存

    Fast Image Cache 是一种在 iOS 应用程序中高效.持续.超快速的存储和检索图像的解决方案.任何良好的 iOS 应用程序的用户体验都应该是快速,平滑滚动的,Fast Image Cac ...

  9. 《HelloGitHub月刊》第02期

    <HelloGithub>第02期 兴趣是最好的老师,而<HelloGitHub> 就是帮你找到兴趣! 因为我比较熟悉python语言,所以月刊中python语言的项目居多,个 ...

  10. CentOS6.4安装包初识

    LiveCD 一般用来修复系统使用,有容量很小,不用安装,可以自启动等特性.bin DVD也具有同 样的功能,但是体积较大,所以会有live DVD. LiveDVD 与LiveCD 相同是不需要安装 ...