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

本文档展示了如何在SAP ABAP中通过模拟Select-Options对象实现多项数据的输入功能,包括在选择屏幕中定义参数、处理用户输入、更新数据以及调用复杂选择对话框进行邮件地址的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TYPE-POOLS: ICON.

DATA: L_COUNT TYPE I.
DATA: LMAIL(50) TYPE C.

SELECTION-SCREEN: BEGIN OF BLOCK ALV WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN: COMMENT (12) TEXT-002.
PARAMETERS: MAILCOPY LIKE LMAIL.
SELECTION-SCREEN: PUSHBUTTON 63(5) PUBU USER-COMMAND MAILBUTT.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: END OF BLOCK ALV.

DATA: MAILTYPE TYPE C VALUE ''.
SELECT-OPTIONS: MAILADD FOR LMAIL NO-DISPLAY.

AT SELECTION-SCREEN OUTPUT.

  CLEAR L_COUNT.
  DESCRIBE TABLE MAILADD LINES L_COUNT.
  IF L_COUNT > 1.
    WRITE ICON_DISPLAY_MORE AS ICON TO PUBU.
  ELSE.
    WRITE ICON_ENTER_MORE AS ICON TO PUBU.
  ENDIF.

AT SELECTION-SCREEN.

  CLEAR L_COUNT.
  DESCRIBE TABLE MAILADD LINES L_COUNT.
  IF NOT MAILCOPY IS INITIAL AND MAILADD[] IS INITIAL.
    MAILADD-LOW = MAILCOPY.
    APPEND MAILADD.
  ENDIF.

  IF L_COUNT = 1.
    REFRESH MAILADD.
    IF NOT MAILCOPY IS INITIAL.
      MAILADD-LOW = MAILCOPY.
      APPEND MAILADD.
    ENDIF.
  ENDIF.

  IF L_COUNT > 1.
    IF MAILCOPY IS INITIAL.
      DELETE MAILADD INDEX 1.
    ELSE.
      MAILADD-LOW = MAILCOPY.
      MODIFY MAILADD INDEX 1 TRANSPORTING LOW.
    ENDIF.
  ENDIF.

  IF SY-UCOMM = 'MAILBUTT'.
    PERFORM SHOW_BOX.
  ENDIF.

*&---------------------------------------------------------------------*
*&      Form  SHOW_BOX
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM SHOW_BOX .

  TYPE-POOLS AQADH.
  DATA: TAB_AND_FIELD TYPE RSTABFIELD.

  TAB_AND_FIELD-TABLENAME = 'ADR6'.
  TAB_AND_FIELD-FIELDNAME = 'SMTP_ADDR'.

  CALL FUNCTION 'COMPLEX_SELECTIONS_DIALOG'
    EXPORTING
*   TITLE                   = ' '
       TEXT                    = 'SET E-Mail To'
*   SIGNED                  = 'X'
*   LOWER_CASE              = ' '
*   NO_INTERVAL_CHECK       = ' '
*   JUST_DISPLAY            = ' '
*   JUST_INCL               = ' '
*   EXCLUDED_OPTIONS        =
*   DESCRIPTION             =
*   HELP_FIELD              =
*   SEARCH_HELP             =
       TAB_AND_FIELD           = TAB_AND_FIELD
     TABLES
        RANGE                   = MAILADD[]
     EXCEPTIONS
       NO_RANGE_TAB            = 1
       CANCELLED               = 2
       INTERNAL_ERROR          = 3
       INVALID_FIELDNAME       = 4
       OTHERS                  = 5
              .

  IF NOT MAILADD IS INITIAL.
    READ TABLE MAILADD INDEX 1.
    MAILCOPY = MAILADD-LOW.
  ELSE.
    MAILCOPY = ' '.
  ENDIF.


ENDFORM.                    " SHOW_BOX

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值