模拟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. MSIL解析一(转)

    转自:http://www.cnblogs.com/Yahong111/archive/2007/08/15/857140.html 在网上发现了一个非常好的MSIL教程,可惜是英文版的,于是就翻译了 ...

  2. oracle数据库的字符集更改

    A.oracle server 端 字符集查询  select userenv('language') from dual 其中NLS_CHARACTERSET 为server端字符集 NLS_LAN ...

  3. linux 环境变量设置及查看

    1. 显示环境变量HOME $ echo $HOME /home/redbooks 2. 设置一个新的环境变量hello $ export HELLO="Hello!" $ ech ...

  4. 线程安全集合 ConcurrentDictionary<TKey, TValue> 类

    ConcurrentDictionary<TKey, TValue> 类 [表示可由多个线程同时访问的键/值对的线程安全集合.] 支持 .NET Framework 4.0 及以上. 示例 ...

  5. jquery.uploadify 异常 “__flash__removeCallback”未定义

    使用场景结合artdialog弹出框使用时发生“__flash__removeCallback”未定义,原因在于artdialog基于iframe加载的uloadify,在关闭artdialog的时候 ...

  6. 浅析.NET泛型

    泛型是.NET Framework 2.0最强大的功能,通过泛型可以定义类型安全的数据结构,而没有必要使用实际的数据类型,这将显著提高性能并得到更高质量的代码.在.NET Framework 2.0之 ...

  7. LoRaWAN协议(四)--入网方式概述

    前言 在LoRaWAN中,node最终和服务器能够正常数据交互,需要先入网,入网的本质,也就是获得一些通信相关的参数,有以下几个: NwkSKey AppSKey DevAddr DevEui 其中 ...

  8. 使用 Web Tracing Framework 分析富 JS 应用的性能

    来自谷歌的 Web Tracing Framework 包含一组工具和脚本,用于 JavaScript 相关代码的性能分析.它是重 JavaScript 应用程序的理想选择,而 JavaScript ...

  9. 浅谈java类集框架和数据结构(1)

    在另外一篇博客我简单介绍了java类集框架相关代码和理论. 这一篇博客我主要分析一下各个类集框架的原理以及源码分析. 一:先谈谈LinkedList 这是LinkedList源码的开头,我们能看到几点 ...

  10. MVC,如何在视图中声明方法,调用方法?

    <div> <!--在视图中申明方法,此方法的类型已经固定为HelperResult--> @helper ShowHello(string s) { <div> ...