ABAP根据不同的radion button显示不同的选择条件实例

[选择画面]根据不同的radion button显示不同的选择条件实例

REQUIRED:控制文本框、下拉列表屏幕元素的必输性,使用此属性后会忽略OBLIGATORY选项。取值如下:

0:不必输,框中前面也没有钩
1:必输,框中前面有钩,系统会自动检验是否已输入,相当于OBLIGATORY选项
2:不必输,但框中前面有钩,系统不会检查是否已输入,此时需要手动检验

*&---------------------------------------------------------------------*
*& Report ZTEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
  REPORT ztest.

*&---------------------------------------------------------------------*
* Tables/声明数据库表
*----------------------------------------------------------------------*
  DATA: g_werks TYPE vbap-werks,
        g_vbeln TYPE vbak-vbeln.
  DATA: g_field(11) TYPE c.

*------------------------------------------------------------------------------*
*                             SELECTION-SCREEN                                 *
*------------------------------------------------------------------------------*
  SELECTION-SCREEN  BEGIN  OF  BLOCK  blk1 WITH  FRAME  TITLE  TEXT-001 .
  PARAMETERS: r_down TYPE c RADIOBUTTON GROUP c1 USER-COMMAND sel DEFAULT  'X'.   "download
  PARAMETERS: r_upld TYPE c RADIOBUTTON GROUP c1.   "upload
  SELECTION-SCREEN  END    OF  BLOCK  blk1.

* download condition
  SELECTION-SCREEN  BEGIN  OF  BLOCK  blk2 WITH  FRAME  TITLE  TEXT-002 .
  SELECT-OPTIONS: s_werks FOR g_werks MODIF ID m1 NO INTERVALS.  "plant
  SELECT-OPTIONS: s_vbeln FOR g_vbeln MODIF ID m1.               "sales order
  SELECTION-SCREEN  END    OF  BLOCK  blk2.

* upload condition
  SELECTION-SCREEN  BEGIN  OF  BLOCK  blk3 WITH  FRAME  TITLE  TEXT-002 .
  PARAMETERS: p_file TYPE rlgrap-filename MODIF ID m2.
  SELECTION-SCREEN  END    OF  BLOCK  blk3.

*------------------------------------------------------------------------------*
*                             INITIALIZATION                                 *
*------------------------------------------------------------------------------*

************************************************************************
* at selection screen output
************************************************************************
  AT SELECTION-SCREEN OUTPUT.
* set screen fields attributes
    PERFORM frm_screen_output.

************************************************************************
* at selection screen on value request for
************************************************************************
  AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
    PERFORM frm_get_fielpath.  "选择路径

*------------------------------------------------------------------------------*
*                             AT SELECTION-SCREEN                              *
*------------------------------------------------------------------------------*
  AT SELECTION-SCREEN.
* check mandatory input fields
    PERFORM frm_check_input.

*------------------------------------------------------------------------------*
*                             START-OF-SELECTION                               *
*------------------------------------------------------------------------------*
  START-OF-SELECTION.
*  PERFORM P_GET_DATA.
*  PERFORM P_DISPLAY.

*&---------------------------------------------------------------------*
*&      Form  FRM_SCREEN_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
  FORM frm_screen_output .

    LOOP AT SCREEN .
      CASE screen-group1.
        WHEN 'M1' .
          IF r_down =  'X' .
            screen-active = 1 .
            IF screen-name = 'S_WERKS-LOW'  OR "PLANT
               screen-name = 'S_VBELN-LOW' .
              screen-required = '2'.  "2-显示为必输项,但是系统不做检查,需要自己写检查逻辑
            ENDIF.
          ELSE .
            screen-active = 0 .
          ENDIF .
        WHEN 'M2' .
          IF r_upld = 'X' .
            screen-active = 1 .
            screen-required = '2'.
          ELSE .
            screen-active = 0 .
          ENDIF .
      ENDCASE .
      MODIFY SCREEN .
    ENDLOOP .
* 设定光标
    CASE ''.
      WHEN s_werks-low.
        SET CURSOR FIELD 'S_WERKS-LOW'.
      WHEN s_vbeln-low.
        SET CURSOR FIELD 'S_VBELN-LOW'.
    ENDCASE.

  ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_CHECK_INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
  FORM frm_check_input .


    IF sy-ucomm <> 'SEL' AND
       sy-ucomm <> '%011'.
      IF r_down = 'X'.  "download
        IF s_werks-low IS INITIAL.
          MESSAGE ID '00' TYPE 'S' NUMBER '55' DISPLAY LIKE 'E'.
          STOP.
        ENDIF.
        IF s_vbeln-low IS INITIAL.
          MESSAGE ID '00' TYPE 'S' NUMBER '55' DISPLAY LIKE 'E'.
          STOP.
        ENDIF.
      ELSE.
        IF p_file IS INITIAL.  "upload
          MESSAGE ID '00' TYPE 'S' NUMBER '55' DISPLAY LIKE 'E'.
          STOP.
        ENDIF.
      ENDIF.
    ENDIF.

  ENDFORM.

*&---------------------------------------------------------------------*
*& Form FRM_GET_FIELPATH
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
  FORM frm_get_fielpath .

    CALL FUNCTION 'TB_LIMIT_WS_FILENAME_GET'
      IMPORTING
        filename         = p_file
      EXCEPTIONS
        selection_cancel = 1
        selection_error  = 2
        OTHERS           = 3.

  ENDFORM.
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP 中,你可以通过以下步骤来根据选择按钮改变选择屏字段: 1. 首先,你需要在屏幕上定义一个选择按钮,并将其与相应的屏幕字段关联起来。这可以通过在屏幕绘制中使用 SELECTION-SCREEN BEGIN OF BLOCK 和 SELECTION-SCREEN END OF BLOCK 语句来完成。 2. 接下来,你需要在 ABAP 程序中定义这个选择按钮的事件处理程序。这可以通过在程序中使用 AT SELECTION-SCREEN OUTPUT 语句来完成。在事件处理程序中,你可以使用 SET PARAMETER 语句来设置选择屏字段的值。 3. 最后,你需要在 ABAP 程序中定义选择按钮的处理逻辑。这可以通过在程序中使用 AT SELECTION-SCREEN 语句来完成。在处理逻辑中,你可以检查选择按钮的状态,并根据需要更改选择屏字段的值。 下面是一个示例 ABAP 程序,演示如何根据选择按钮改变选择屏字段: ``` REPORT Z_MY_REPORT. SELECTION-SCREEN BEGIN OF BLOCK my_block WITH FRAME TITLE text-001. PARAMETERS: p_my_checkbox TYPE c AS CHECKBOX USER-COMMAND my_checkbox. SELECTION-SCREEN END OF BLOCK my_block. AT SELECTION-SCREEN OUTPUT. IF p_my_checkbox = 'X'. SET PARAMETER 'P_MY_FIELD' 'VALUE1'. ELSE. SET PARAMETER 'P_MY_FIELD' 'VALUE2'. ENDIF. AT SELECTION-SCREEN. IF sy-ucomm = 'MY_CHECKBOX'. IF p_my_checkbox = 'X'. " Do something when checkbox is checked ELSE. " Do something when checkbox is unchecked ENDIF. ENDIF. ``` 在上面的示例中,我们在选择屏上定义了一个名为 p_my_checkbox 的选择按钮,并将其与选择屏字段 P_MY_FIELD 关联起来。在 AT SELECTION-SCREEN OUTPUT 事件处理程序中,我们根据选择按钮的状态设置 P_MY_FIELD 的值。在 AT SELECTION-SCREEN 处理逻辑中,我们检查选择按钮的状态,并根据需要执行不同的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值