AT SELECTION-SCREEN OUTPUT 用法实例 动态屏幕

"选择屏幕设计,第一个框架:"
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
  SELECTION-SCREEN COMMENT 1(20) TXT01.

  PARAMETERS:
    PA TYPE C RADIOBUTTON GROUP G1 DEFAULT 'X' USER-COMMAND FLAG , "这里很关键,user-command xxx 表示这个组件改变时发出事件信息。"
    PB TYPE C RADIOBUTTON GROUP G1.
SELECTION-SCREEN END OF BLOCK B1.

"第二个框架"
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
  SELECTION-SCREEN:BEGIN OF LINE ,
  COMMENT 1(8) TXT02 FOR FIELD P1 .
  PARAMETER P1 TYPE C LENGTH 20 MODIF ID IN2.
  "这里是第二个关键,使用modif id xxx,注意这里不是modify 不要混淆,还有id名最多为三位,比如inp,如果超过三位会报错。P1即物料号,这里ID IN2。"
  SELECTION-SCREEN END OF LINE.

  SELECTION-SCREEN SKIP 1.

  SELECTION-SCREEN:BEGIN OF LINE,
  COMMENT 1(8) TXT03.
  PARAMETER P2 TYPE C LENGTH 30 MODIF ID IN2.
  "P2也就是物料描述,和P1一样modif id 为IN2"
  SELECTION-SCREEN  END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.

"第三个框架"
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.
  SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(10) TXT04 FOR FIELD P3.
    PARAMETER P3 TYPE C LENGTH 20 MODIF ID IN3."这里ID 为IN3。"
  SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF  BLOCK B3.

"第四个框架"
SELECTION-SCREEN BEGIN OF BLOCK B4 WITH FRAME TITLE TEXT-004.
  PARAMETER PC  AS CHECKBOX USER-COMMAND MARK."选择框"
  SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(10) TXT05.
    PARAMETER P4(20) TYPE C MODIF ID IN4 ."ID:IN4"
  SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B4.


INITIALIZATION.
  TXT01 = '请选择物料类型:'.
  TXT02 = '物料号:'.
  TXT03 = '物料描述:'.
  TXT04 = '采购订单号:'.
  TXT05 = '备注'.

  "如果说上面是给控制和被控制组件打上标记,这里就是逻辑控制实现控制组件改变被控制组件的属性。"


AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN."SCREEN为SAP系统结构,可以在se11中查看"
    IF SCREEN-GROUP1 = 'IN2' AND PA <> 'X'.
      SCREEN-INPUT = 0."input属性为1是可输入,0是无法输入。"
      CLEAR: P1,P2.
    ENDIF.

    IF SCREEN-GROUP1 = 'IN3' AND PB <> 'X'.
      SCREEN-INPUT = 0.
      CLEAR: P3.
    ENDIF.

    IF SCREEN-GROUP1 = 'IN4' AND PC <> 'X'.
      SCREEN-ACTIVE = 0."同理,ACTIVE为1显示,为0隐藏。"
      CLEAR:P4.
    ENDIF.

    MODIFY SCREEN."提交修改后的属性"
  ENDLOOP.
  "at selection-screen output,是一个动态的内容,也就是说当我们改变屏幕元素的时候,这里相应跟着改变。"

AT SELECTION-SCREEN."提交错误消息"
  CASE SY-UCOMM.

    WHEN 'ONLI'. "当点击执行时。"

      IF PA = 'X' .
        IF P1 IS INITIAL OR P2 IS INITIAL.
          MESSAGE '请填写相关物料信息!' TYPE  'E'.
        ENDIF.
      ELSEIF PB = 'X'.
        IF P3 IS INITIAL.
          MESSAGE '请填写采购订单号!' TYPE  'E'.
        ENDIF.

      ELSEIF PC = 'X'.
        IF P4 IS INITIAL.
          MESSAGE '请填写备注内容!' TYPE   'E'.
        ENDIF.
      ENDIF.
  ENDCASE.


START-OF-SELECTION.

  PERFORM DISPLAY.

END-OF-SELECTION.

  "这是简单的一个展示表格,不多赘述。"
FORM DISPLAY.
  DATA:STR1 TYPE STRING,
       STR2 TYPE STRING,
       STR3 TYPE STRING,
       STR4 TYPE STRING.

  IF PA = 'X' .
    STR1 = P1.
    STR2 = P2.
    STR3 = ' 无'.
    STR4 = P4.
  ELSEIF PB = 'X'.
    STR1 = 'WG0000000001'.
    STR2 = '外购物料'.
    STR3 = P3.
    STR4 = P4.

  ENDIF.

  WRITE:/30(20) '物料信息表' CENTERED .
  ULINE:/10(100)."画横线
  WRITE:/1(9)  ''  INTENSIFIED COLOR = 0,       AT 10 SY-VLINE,
         11(20)   '物料号' ,                    AT 31 SY-VLINE,
          32(30)  '物料描述',                   AT  63 SY-VLINE,
          64(20)  '采购订单',                   AT 85 SY-VLINE,
          86(20)  '备注',                       AT 109 SY-VLINE.

  ULINE:/10(100).

  WRITE:/1(9)  ''  INTENSIFIED COLOR = 0,      AT 10 SY-VLINE,
         11(20)   STR1,                        AT 31 SY-VLINE,
          32(30)  STR2,                        AT  63 SY-VLINE,
          64(20)  STR3,                        AT 85 SY-VLINE,
          86(20)  STR4,                        AT 109 SY-VLINE.

  ULINE:/10(100).


关键词: ABAP

网友评论

发表评论