`
evangxli
  • 浏览: 223556 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

ABAP:参数输入屏幕SELECTION-SCREEN中的事件

阅读更多
在SAP开发中,有用户提出,在输入参数的屏幕中,根据用户的选择对某些输入框进行屏蔽,防止用户在不需要的地方输入参数。这需要用到SELECTION-SCREEN的事件。

下面的选择屏幕中,要求根据用户选择的单选按钮,对不同的参数输入栏进行控制,不允许用户输入。

*//===========================================================//*
*  PARAMETERS
*//===========================================================//*
*屏幕条件查询显示界面
SELECTION-SCREEN BEGIN OF BLOCK blk01 WITH FRAME TITLE text-001 .
PARAMETERS:
  p_d1 TYPE c RADIOBUTTON GROUP pz DEFAULT 'X'
                                   USER-COMMAND rad_click ,  " 物料凭证
  p_d2 TYPE c RADIOBUTTON GROUP pz .                         " 预留单
SELECTION-SCREEN  END OF BLOCK blk01 .

SELECTION-SCREEN BEGIN OF BLOCK blk02 WITH FRAME TITLE text-002 .
PARAMETERS:
  p_mjahr LIKE mkpf-mjahr DEFAULT sy-datum+0(4) MODIF ID sa ." 年度
SELECT-OPTIONS:
  s_bldat FOR mkpf-bldat MODIF ID sa ,                       " 物料凭证日期
  s_mblnr FOR mkpf-mblnr MODIF ID sa ,                       " 物料凭证号码
  s_rsdat FOR rkpf-rsdat MODIF ID sb ,                       " 预留单凭证日期
  s_rsnum FOR rkpf-rsnum MODIF ID sb ,                       " 预留号
  s_matnr FOR mseg-matnr,                                    " 物料号码
  s_bwart FOR mseg-bwart.                                    " 移动类型
SELECTION-SCREEN  END OF BLOCK blk02.


为了方便单选按钮的控制,我们对输入控件进行了分组,使用MODIF ID name(name只能为3个字符以内),对这一组参数进行屏蔽或打开。在本例程中组名为sa/sb。
还需要注意,我们希望屏幕上的radiobutton能够触发事件,因此需要在第一个RadioButton上加上USER-COMMAND name的代码,它会触发屏幕标准的事件。


* 处理输入屏幕的互相锁定
AT SELECTION-SCREEN OUTPUT .
  LOOP AT SCREEN .
    IF screen-group1 = 'SA' AND SCREEN-GROUP3 <> 'OPU' AND SCREEN-GROUP3 <> 'TXT'.
      IF p_d1 = 'X' .
        screen-input = '1' .
      ELSE.
        screen-input = '0' .
      ENDIF.
    ELSEIF screen-group1 = 'SB' AND SCREEN-GROUP3 <> 'OPU' AND SCREEN-GROUP3 <> 'TXT'.
      IF p_d2 = 'X' .
        screen-input = '1' .
      ELSE.
        screen-input = '0' .
      ENDIF.
    ENDIF.
    MODIFY SCREEN.
  ENDLOOP.


AT SELECTION-SCREEN OUTPUT .事件会被单选控件触发。

Screen的Group1是给用户编程使用的,在前面给控件编组以后,这里可以得到控件的组名称。

Group3是保留属性,通过跟踪,猜测它可能是控件的类型属性,对于TXT和OPU的控件,我们不需要改变它的INPUT属性,因此将它们排出在外。


详细可查看http://help.sap.com/saphelp_470/helpdata/EN/9f/dbab6f35c111d1829f0000e829fbfe/frameset.htm
分享到:
评论

相关推荐

    ABAP 查询屏幕标签页搜索条件

    SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN. SELECT-OPTIONS:S_MATNR FOR MARC-MATNR. SELECTION-SCREEN END OF SCREEN 100. * SUBSCREEN 2 SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN. SELECT-...

    ABAP selection screen

    ABAP selection screen,SAP ABAP报表开发中的选择屏幕设计方法。

    SAP_ABAP_Dynamic_Selection_Screen-

    SAP_ABAP_Dynamic_Selection_Screen *动态项目在哪里共享内存,弹出窗口。

    ABAP代码规范二例

    Selection screen parameter: p_ select-options : s_ 函数参数命名规则: IMPORTING parameters IM_&lt;parameter name&gt; EXPORTING parameters EX_ CHANGING parameters CH_&lt;parameter name&gt; 返回参数 RE_&lt;result&gt;

    selection screen,dialog screen区别

    sap abap selection screen 与 dialog screen的区别

    ABAP Programming Standards ABAP Programming Standards

    INTRODUCTION: ABAP/4 DEVELOPMENT STANDARDS 5 ABAP/4 PROGRAMMING STANDARDS 6 HARD CODING 6 INTERNATIONAL CONSIDERATIONS 6 Date Formats 6 Currency Output Formats 7 Paper Size 7 AUTHORIZATION CHECKING 7 ...

    ABAP中的ALV操作

    CALL SCREEN 100. WRITE / '?除的内表??'. "get_deleted_rows WRITE / '______________'. "LCL_EVENT_RECEIVER DEFINITION CALL METHOD EVENT_RECEIVER-&gt;GET_DELETED_ROWS IMPORTING DELETED_ROWS = WADEL_...

    ABAP Program Tips.pdf

    这个文档对ABAP开发从业者有很大帮助,日常开发过程中碰到的基本上都包含在这个文档里面: Table of Contents 3.4 FILE PROCESSING-----------------------------23 CHAPTER 1 USEFUL TRANSACTIONS 3 3.4.1 ...

    在SAP如何调用OCX,从而解决报表和其它语言程序编写

    call screen 100 .”调用屏幕100 (需要能过屏幕设计器制作). 4.以下是屏幕的逻辑流 process before output.”屏幕的PBO事件块. module status_0100. ”屏幕的PBO事件块的module事件. process after input. ”屏幕...

    使用TVARVC,TVARV 表记录上次运行时间并且自动填充

    这是一段ABAP代码,针对selection screen上的date 字段,记录上次运行程序的时间,让下一次运行的时候selection screen 初始化自动填充

    SAP屠夫作品汇总

    Report painter外资公司如何出中方式报表. 234 FICO统驭和中间清算 245 Field status and Coding block subscreen 字段状态组实例 250 特别总帐标识 255 预付款处理 258 目的 258 流程 258 预付款结帐 258 发票冻结...

Global site tag (gtag.js) - Google Analytics