zoukankan      html  css  js  c++  java
  • ABAP学习(3):屏幕显示

    ABAP屏幕显示

    1write语句

        Write关键词,‘/’控制输出换行

        语法:write [/] <输出内容>

        语法:write at [/<数字>[(数字)]] <输出内容>

    示例:

    DATA testTxt TYPE String value 'hello world!'.
    
    WRITE at / testTxt."换行
    
    WRITE at /5 testTxt."从第5列开始输出
    
    WRITE at /(10) testTxt."只显示10位字符
    
    WRITE at /5(15) testTxt."从第5列开始显示15位字符
    
     
    
    WRITE:/'****************************'.
    
     
    
    "write <obj> <format> 按照固定格式显示
    
    WRITE / testTxt LEFT-JUSTIFIED. "靠左显示
    
    WRITE / testTxt RIGHT-JUSTIFIED. "靠右显示
    
    WRITE / testTxt CENTERED. "居中显示
    
    WRITE / testTxt NO-GAP. "无空格显示
    
     
    
    DATA testTime type String value '1234311111'.
    
    WRITE / testTime USING EDIT MASK '__:__:__'. "使用固定格式显示
    
    Data testData type String value '00000134'.
    
    WRITE / testData no-ZERO."不输出前面0, no-sign 不输出正负号
    
    DATA testData1 type F value '3.44444'.
    
    WRITE / testData1 DECIMALS 3 . "显示小数点后位数
    
    DATA testData2 type F value '3.44564'.
    
    WRITE / testData2 ROUND 3. "四舍五入小数位数
    
     
    
    "write as checkbox
    
    WRITE:/'****************************'.
    
    DATA:  FLAG1  VALUE  '',
    
           FLAG2  VALUE  'X'.
    
    WRITE: / 'CHECK FLAG 1:' , FLAG1  AS  CHECKBOX.
    
    WRITE: / 'CHECK FLAG 2:' , FLAG2  AS  CHECKBOX.
    
     
    
    "write as sinbol Icon
    
    INCLUDE  <SYMBOL>.
    
    INCLUDE  <ICON>.
    
    WRITE: / 'Phone Symbol:' ,  SYM_PHONE  AS   SYMBOL.
    
    WRITE: / 'Alarm Icon:' ,  ICON_ALARM  AS  ICON.
    
     
    
    "Skip产生空白列
    
    WRITE:/'****************************'.
    
    SKIP.  "产生空白列.
    
     
    
    DATA:temp LIKE TABLE OF spfli WITH HEADER LINE.
    
    SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE temp WHERE CARRID = 'AA'.
    
     
    
    WRITE:/1(5)'id',(4) '国家',(18) '出发城市',(18) '目标城市'.
    
    LOOP AT temp.
    
      WRITE:/1(5) temp-connid,(4) temp-countryfr,(18) temp-cityfrom,(18) temp-cityto.
    
    ENDLOOP.
    View Code

    2屏幕元素

    语法:

    输入框:

    Parameters: <变量名> type <数据类型>

    [default <值>]

    [lower case]

    [OBLIGATORY]

    多选按钮:

    Parameters:<变量名> as checkbox [default ‘X’].

    设置是否选中

    单选按钮:

    Parameters:<变量名> radiobutton group <组名>

    范围输入框:

    Select-options <变量名> for <数据类型>

    [NO DATABASE SELECTION]

    [NO-EXTENSION]

    [NO INTERVALS]

    No database selection:如果数据类型是数据库表,不用根据表现有内容选择值;

    No-extension: 范围选择框,不显示multi-option画面,

    No intervals:只显示一个输入框,不显示范围输入。

    单选按钮组:

    Selection-screen begin of block <按钮组名> with frame.

        Parameter <按钮名> radiobutton group <组名>.

        …………

    Selection-screen end of block <按钮组名>.

       

    示例1:

     

    "***************************************************
    
    *PARAMETERS, 一些输入框,button,radioButton
    
    ***************************************************
    
    PARAMETERS:  NAME(8) TYPE C DEFAULT 'lily',"设置默认值
    
                 addr(10) type C LOWER CASE,"将输入转换成小写,默认输入转换成大写
    
                 AGE  TYPE  I,
    
                 BIRTH  TYPE  D OBLIGATORY , "设置强制输入
    
                 dog as CHECKBOX DEFAULT 'x',"多选按钮
    
                 cat as CHECKBOX .
    
     
    
    PARAMETERS: boy RADIOBUTTON GROUP sex,"单选按钮
    
                girl RADIOBUTTON GROUP sex.
    
     
    
    TABLES  SPFLI.
    
    SELECT-OPTIONS  AIRLINE  FOR  SPFLI-CONNID."范围选择框
    
    SELECT-OPTIONS  AIRLINE1  FOR  SPFLI-CONNID NO-EXTENSION."范围选择框,不显示multi-option画面
    
    SELECT-OPTIONS  AIRLINE2  FOR  SPFLI-CONNID NO INTERVALS."范围选择框,不显示区间画面
    
     
    
    SELECTION-SCREEN SKIP 1. "产生两个空白列
    
    SELECTION-SCREEN ULINE 20(30). "产生底线,位置(长度)
    
    "选择屏幕
    
    SELECTION-SCREEN  BEGIN  OF  BLOCK  RADIO  WITH  FRAME .
    
    PARAMETER  R1  RADIOBUTTON  GROUP  GR1.
    
    PARAMETER  R2  RADIOBUTTON  GROUP  GR1.
    
    PARAMETER  R3  RADIOBUTTON  GROUP  GR1.
    
    SELECTION-SCREEN  END  OF  BLOCK  RADIO.
    View Code

    示例2:

    *选择屏幕pushbutton
    
    SELECTION-SCREEN BEGIN OF BLOCK main WITH FRAME TITLE text-001. "带边框和标题
    
      "显示在一行
    
      SELECTION-SCREEN BEGIN OF LINE.
    
      "user-command,绑定命令,使用sy-ucomm可以获取到
    
      "pushbutton 位置(长度),指定按钮出现位置和长度
    
      SELECTION-SCREEN PUSHBUTTON 1(20) but1 USER-COMMAND bt1.
    
      SELECTION-SCREEN PUSHBUTTON 23(20) but2 USER-COMMAND bt2.
    
      SELECTION-SCREEN END OF LINE.
    
    SELECTION-SCREEN END OF BLOCK main.
    
     
    
    "选择屏幕,不带标题
    
    SELECTION-SCREEN BEGIN OF BLOCK main1 WITH FRAME .  "只带边框
    
    SELECTION-SCREEN BEGIN OF LINE.
    
    SELECTION-SCREEN PUSHBUTTON 1(20) but3 USER-COMMAND bt3.
    
    SELECTION-SCREEN PUSHBUTTON 22(20) but4 USER-COMMAND bt4.
    
    SELECTION-SCREEN END OF LINE.
    
    SELECTION-SCREEN END OF BLOCK main1.
    
     
    
    INITIALIZATION.
    
    *  t1 = '输入栏名称'.
    
      "but1 = '按键'.
    
      CALL FUNCTION 'ICON_CREATE' "给按钮添加图标和文本
    
        EXPORTING
    
          name   = icon_check   "按钮的图片的名字
    
          text   = 'button1 按钮1'                   "按钮的文本
    
          info   = '按钮1'
    
        IMPORTING
    
          result = but1
    
        EXCEPTIONS
    
          OTHERS = 0.
    
     
    
      CALL FUNCTION 'ICON_CREATE' " 给按钮添加图标和文本
    
        EXPORTING
    
          name   = icon_execute_object   " 按钮的图片的名字
    
          text   = 'button2 按钮2'                   "按钮的文本
    
          info   = '按钮2'
    
        IMPORTING
    
          result = but2
    
        EXCEPTIONS
    
          OTHERS = 0.
    
     
    
        CALL FUNCTION 'ICON_CREATE' " 给按钮添加图标和文本
    
        EXPORTING
    
          name   = icon_execute_object   " 按钮的图片的名字
    
          text   = 'button3 按钮3'                   "按钮的文本
    
          info   = '按钮3'
    
        IMPORTING
    
          result = but3
    
        EXCEPTIONS
    
          OTHERS = 0.
    
     
    
        CALL FUNCTION 'ICON_CREATE' " 给按钮添加图标和文本
    
        EXPORTING
    
          name   = icon_execute_object   " 按钮的图片的名字
    
          text   = 'button4 按钮4'                   "按钮的文本
    
          info   = '按钮4'
    
        IMPORTING
    
          result = but4
    
        EXCEPTIONS
    
          OTHERS = 0.
    
     
    
     
    
    AT SELECTION-SCREEN.
    
      CASE sy-ucomm.
    
        WHEN 'BT1'.
    
          MESSAGE  '您单击了自定义按钮'  TYPE 'S'.
    
        WHEN 'BT2'.
    
          MESSAGE  '您单击了自定义按钮2'  TYPE 'S'.
    
      ENDCASE.
    View Code

    3屏幕弹窗

    示例:

    ********************************************************定义弹窗
    
    "screen 定义窗体
    
    SELECTION-SCREEN BEGIN OF SCREEN 200 as window.
    
      PARAMETERS:s_name(10) TYPE C.
    
      PARAMETERS:type as CHECKBOX.
    
    SELECTION-SCREEN END OF SCREEN 200 .
    
     
    
    "设置弹窗位置
    
    call SCREEN 200
    
    STARTING AT 50 2
    
    ENDING AT 100 2.  "调用screen ,第一个横坐标,第二个纵坐标
    
     
    
    "不设置默认include window 显示
    
    call SCREEN 100.

    4子屏幕

    示例:

    "用于screen painter 创建屏幕
    
    SELECTION-SCREEN BEGIN OF SCREEN 300 as SUBSCREEN.
    
      PARAMETERS:s_name1(10) TYPE C.
    
      PARAMETERS:type1 as CHECKBOX.
    
    SELECTION-SCREEN END OF SCREEN 300.

    5block和screen

    示例:

    "*******************************************************block
    
    *该语法在屏幕中定义一个BLOCK,其扩展语法包括:
    
    *WITH FRAME:创建一个框架。
    
    *TITLE title:创建一个带标题的框架。
    
    *NO INTERVALS:所创建的框架中限制SELECT 只有一个输入项。
    
     
    
    SELECTION-SCREEN BEGIN OF BLOCK blk1.
    
      PARAMETERS:s_name2(10) TYPE C.
    
    SELECTION-SCREEN END OF BLOCK blk1.
    
     
    
    SELECTION-SCREEN BEGIN OF SCREEN 401.
    
      SELECTION-SCREEN BEGIN OF BLOCK blk3 .
    
        SELECTION-SCREEN BEGIN OF LINE.  "同一行显示
    
            SELECTION-SCREEN POSITION 50. "空格
    
            PARAMETERS:s_name4(10) TYPE C.
    
            PARAMETERS:s_name5(10) TYPE C.
    
        SELECTION-SCREEN END OF LINE.
    
      SELECTION-SCREEN END OF BLOCK blk3.
    
    SELECTION-SCREEN END OF SCREEN 401.
    
     
    
    SELECTION-SCREEN BEGIN OF SCREEN 400.
    
     "block可以在screen内
    
      SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-001 NO INTERVALS.
    
        PARAMETERS:s_name3(10) TYPE C.
    
        SELECT-OPTIONS s_type FOR SY-REPID.
    
        SELECTION-SCREEN ULINE. "换行线
    
        SELECTION-SCREEN SKIP 2. "产生空行
    
      SELECTION-SCREEN END OF BLOCK blk2.
    
      SELECT-OPTIONS s_type1 FOR SY-REPID.
    
     
    
      "include blk,调用其他屏幕定义的block
    
      SELECTION-SCREEN INCLUDE BLOCKS blk3.
    
    SELECTION-SCREEN END OF SCREEN 400.
    
     
    
    "调用屏幕
    
    CALL SCREEN 400.
    View Code

    6图示和pushbutton

    "**********************************************pushbutton 按钮
    
    INCLUDE <ICON>.     "图示 “TCODE”:ICON 查看图示
    
     
    
    SELECTION-SCREEN PUSHBUTTON /1(20) btn1 USER-COMMAND btn.
    
    SELECTION-SCREEN PUSHBUTTON /1(20) btn2 USER-COMMAND btn.
    
     
    
    AT SELECTION-SCREEN OUTPUT.
    
      MOVE 'my btn1' TO btn1.   "为按钮1 赋值添加描述
    
      WRITE ICON_GRAPHICS AS ICON TO btn2. "添加图示
    
      CONCATENATE btn2 'my btn2' INTO btn2 SEPARATED BY SPACE. "按钮2赋值,并连接图示,空格连接

    7组件文本显示

    "*****************************************selection-screen comment 重设本地元素注释
    
    "必须是在同一line
    
    SELECTION-SCREEN BEGIN OF LINE.
    
      "文本显示
    
      SELECTION-SCREEN COMMENT (40) text-002 FOR FIELD p1.
    
      SELECTION-SCREEN POSITION 45.
    
      PARAMETERS p1(10) TYPE C.
    
    SELECTION-SCREEN END OF LINE.
    
     
    
    SELECTION-SCREEN BEGIN OF LINE.
    
      PARAMETERS:TYPE AS CHECKBOX.
    
      "文本显示
    
      SELECTION-SCREEN COMMENT (40) text-003 FOR FIELD TYPE.
    
    SELECTION-SCREEN END OF LINE.

    8自定义菜单

    示例1:

    "******************************************SELECTION-SCREEN FUNCTION KEY n.
    
    "用于在工具栏上新增一个功能按钮。该按钮的定义保存在系统结构体SSCRFIELDS中,
    
    "n为一个整数的序数,例如当n等于1时,其按钮描述保存在字段SSCRFIELDS-FUNCTXT_01中,
    
    "其按钮对象命名为“FC01",保存在字段SSCRFIELDS-UCOMM中。
    
    "
    
    *
    
    TABLES SSCRFIELDS.
    
    SELECTION-SCREEN FUNCTION KEY 1.
    
    SELECTION-SCREEN FUNCTION KEY 2.
    
     
    
    PARAMETERS:s_name(10) TYPE C.
    
     
    
    INITIALIZATION.
    
    MOVE 'BUTTON1' TO SSCRFIELDS-FUNCTXT_01.
    
    MOVE 'BUTTON2' TO SSCRFIELDS-FUNCTXT_02.
    
     
    
    AT SELECTION-SCREEN.
    
      if SSCRFIELDS-UCOMM = 'FC01'.
    
        MESSAGE i000 WITH 'press button1'.
    
      ELSEIF SSCRFIELDS-UCOMM = 'FC02'.
    
        MESSAGE i000 WITH 'press button2'.
    
      ENDIF.

    示例2:

    "**********************工具栏菜单,通过菜单制作器
    
    TYPE-POOLS ICON.
    
    TABLES SSCRFIELDS.
    
    DATA FUNCTXT TYPE SMP_DYNTXT."SMP_DYNTXT(菜单制作器:动态文本的程序接口)
    
    
    PARAMETERS: P_CARRID TYPE S_CARR_ID,
    
                P_CITYFR TYPE S_FROM_CIT.
    
    SELECTION-SCREEN: FUNCTION KEY 1,
    
                      FUNCTION KEY 2.
    
     
    
    INITIALIZATION. "屏幕初始化
    
      FUNCTXT-ICON_ID   = ICON_WS_PLANE."文本字段中的图标(替换显示,别名)
    
      FUNCTXT-QUICKINFO = 'Preselected Carrier'."菜单制作器:信息文本 (4.0),鼠标移去过去显示的信息TIP
    
      FUNCTXT-ICON_TEXT = 'LH'."菜单制作器:图标文本 (4.0),菜单名称
    
      SSCRFIELDS-FUNCTXT_01 = FUNCTXT.
    
     
    
      FUNCTXT-ICON_TEXT = 'UA'.
    
      SSCRFIELDS-FUNCTXT_02 = FUNCTXT.
    
     
    
    AT SELECTION-SCREEN.
    
      CASE SSCRFIELDS-UCOMM.
    
        WHEN 'FC01'.
    
          P_CARRID = 'LH'.
    
          P_CITYFR = 'Frankfurt'.
    
        WHEN 'FC02'.
    
          P_CARRID = 'UA'.
    
          P_CITYFR = 'Chicago'.
    
      ENDCASE.
    
     

    9卷标子屏幕

    示例:

    "*********************************************tab 标签分页
    
    "用于在屏幕上定义一个分页控件(tab),每个页签都是由一个子屏幕控制,n代表分页控件的高度,
    
    "屏幕加载时必须先通过INTIALIZATION事件初始化
    
    SELECTION-SCREEN BEGIN OF SCREEN 100 as SUBSCREEN .
    
      SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.
    
        PARAMETERS:s_name(10) TYPE C.
    
      SELECTION-SCREEN END OF BLOCK blk1.
    
    SELECTION-SCREEN END OF SCREEN 100.
    
     
    
    SELECTION-SCREEN BEGIN OF SCREEN 200 as SUBSCREEN.
    
      PARAMETERS:s_name1(10) TYPE C.
    
    SELECTION-SCREEN END OF SCREEN 200.
    
     
    
    *定义一个TAB空间,取名为MYTAB,控件高为5,共人两个选项卡BUTTON1\BUTTON2
    
    *两个选项卡的功能代码分别为btn1\btn2
    
    SELECTION-SCREEN:BEGIN OF TABBED BLOCK MYTAB FOR 5 LINES, "指框框高度为5LINES.
    
                        TAB (20) BUTTON1 USER-COMMAND btn1,
    
                        TAB (20) BUTTON2 USER-COMMAND btn2,
    
                     END OF BLOCK MYTAB.
    
     
    
    INITIALIZATION.
    
      BUTTON1 = TEXT-010.
    
      BUTTON2 = TEXT-020.
    
      MYTAB-PROG = SY-REPID.
    
      MYTAB-DYNNR = 100.
    
     
    
    AT SELECTION-SCREEN.
    
      CASE  SY-UCOMM.
    
        WHEN 'BTN1'.
    
          MYTAB-DYNNR = 100.
    
          MYTAB-ACTIVETAB = 'BUTTON1'.
    
        WHEN 'BTN2'.
    
          MYTAB-DYNNR = 200.
    
          MYTAB-ACTIVETAB = 'BUTTON2'.
    
      ENDCASE.
    View Code

    10页签子屏幕

    示例:

    TABLES SSCRFIELDS.
    
    * 定义子屏幕为100
    
    SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
    
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-010.
    
    PARAMETERS: P1(10) TYPE C,
    
                P2(10) TYPE C,
    
                P3(10) TYPE C.
    
    SELECTION-SCREEN END OF BLOCK B1.
    
    SELECTION-SCREEN END OF SCREEN 100.
    
     
    
    * 定义子屏幕为200
    
    SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
    
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-020.
    
    PARAMETERS: Q1(10) TYPE C,
    
                Q2(10) TYPE C,
    
                Q3(10) TYPE C.
    
    SELECTION-SCREEN END OF BLOCK B2.
    
    SELECTION-SCREEN END OF SCREEN 200.
    
     
    
    *定义子屏幕为300
    
    SELECTION-SCREEN BEGIN OF SCREEN 300 AS SUBSCREEN.
    
    SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-030.
    
    PARAMETERS: R1(10) TYPE C,
    
                R2(10) TYPE C,
    
                R3(10) TYPE C.
    
    SELECTION-SCREEN END OF BLOCK B3.
    
    SELECTION-SCREEN END OF SCREEN 300.
    
     
    
    * STANDARD SELECTION SCREEN
    
    SELECTION-SCREEN: FUNCTION KEY 1, "工具栏按钮
    
                      FUNCTION KEY 2.
    
     
    
    SELECTION-SCREEN: BEGIN OF TABBED BLOCK SUB FOR 10 LINES,
    
                       END OF BLOCK SUB.
    
     
    
    INITIALIZATION.
    
      SSCRFIELDS-FUNCTXT_01 = '@0D@'. "按钮描述字段,图标形貌
    
      SSCRFIELDS-FUNCTXT_02 = '@0E@'. "按钮描述字段,图标形貌
    
      SUB-PROG = SY-REPID. "必选项
    
      SUB-DYNNR = 100.
    
     
    
    AT SELECTION-SCREEN.
    
      CASE SY-DYNNR. "当前显示屏幕的名称
    
        WHEN 100.
    
          IF SSCRFIELDS-UCOMM = 'FC01'. "触发事件的TOOL BAR CONTROL
    
            SUB-DYNNR = 300.  "指定显示哪个屏幕
    
          ELSEIF SSCRFIELDS-UCOMM = 'FC02'.
    
            SUB-DYNNR = 200.
    
          ENDIF.
    
        WHEN 200.
    
          IF SSCRFIELDS-UCOMM = 'FC01'.
    
            SUB-DYNNR = 100.
    
          ELSEIF SSCRFIELDS-UCOMM = 'FC02'.
    
            SUB-DYNNR = 300.
    
          ENDIF.
    
        WHEN 300.
    
          IF SSCRFIELDS-UCOMM = 'FC01'.
    
            SUB-DYNNR = 200.
    
          ELSEIF SSCRFIELDS-UCOMM = 'FC02'.
    
            SUB-DYNNR = 100.
    
          ENDIF.
    
      ENDCASE.
    View Code

    11动态屏幕

    示例:

     

    TABLES:aufk,afvv.
    
     
    
    SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-002.
    
    PARAMETERS: p1  RADIOBUTTON GROUP g1 USER-COMMAND uc DEFAULT 'X',
    
                p2  RADIOBUTTON GROUP g1 .
    
    SELECTION-SCREEN END OF BLOCK bl1.
    
     
    
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    
    SELECT-OPTIONS:s_date FOR afvv-fssld MODIF ID ty1.
    
    SELECTION-SCREEN END OF BLOCK blk1.
    
     
    
    SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-003.
    
    PARAMETERS:p_werks LIKE aufk-werks MODIF ID ty2.
    
    SELECT-OPTIONS:s_aufnr FOR aufk-aufnr MODIF ID ty2.
    
    SELECTION-SCREEN END OF BLOCK blk2.
    
     
    
    AT SELECTION-SCREEN OUTPUT.
    
      LOOP AT SCREEN.
    
    *    CASE screen-group1.
    
    *      WHEN 'TY1'.
    
    *        IF p1 IS INITIAL.
    
    *          screen-active = '0'.
    
    *        ELSE.
    
    *          screen-active = '1'.
    
    *        ENDIF.
    
    *      WHEN 'TY2'.
    
    *        IF p2 IS INITIAL.
    
    *          screen-active = '0'.
    
    *        ELSE.
    
    *          screen-active = '1'.
    
    *        ENDIF.
    
    *    ENDCASE.
    
        if p1 = 'X' AND screen-group1 = 'TY2' .
    
            screen-active = '0'.
    
        ELSEif p2 = 'X' AND screen-group1 = 'TY1'.
    
            screen-active = '0'.
    
        ENDIF.
    
        MODIFY SCREEN.
    
      ENDLOOP.
    
     
    
    AT SELECTION-SCREEN.
    
    * CLEAR sy-ucomm.
    View Code

    示例2:加上动态必输栏位

    TABLES:aufk,afvv.
    
    SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-002.
    PARAMETERS: p1  RADIOBUTTON GROUP g1 USER-COMMAND uc DEFAULT 'X',
                p2  RADIOBUTTON GROUP g1 .
    SELECTION-SCREEN END OF BLOCK bl1.
    
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS:s_date FOR afvv-fssld MODIF ID ty1.
    SELECTION-SCREEN END OF BLOCK blk1.
    
    SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-003.
    PARAMETERS:p_werks LIKE aufk-werks MODIF ID ty2.
    SELECT-OPTIONS:s_aufnr FOR aufk-aufnr MODIF ID ty2.
    SELECTION-SCREEN END OF BLOCK blk2.
    
    
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
    *    CASE screen-group1.
    *      WHEN 'TY1'.
    *        IF p1 IS INITIAL.
    *          screen-active = '0'.
    *        ELSE.
    *          screen-active = '1'.
    *        ENDIF.
    *      WHEN 'TY2'.
    *        IF p2 IS INITIAL.
    *          screen-active = '0'.
    *        ELSE.
    *          screen-active = '1'.
    *        ENDIF.
    *    ENDCASE.
        “screen-group1对应MODIF ID
        if p1 = 'X' AND screen-group1 = 'TY2' .
            "screen-active值为0,隐藏;为1,显示
            screen-active = '0'.
        ELSEif p2 = 'X' AND screen-group1 = 'TY1'.
            screen-active = '0'.
        ENDIF.
    
        MODIFY SCREEN.
      ENDLOOP.
    
    "动态设置字段必输
      LOOP AT SCREEN.
        "这里设置modif id=TY1为必输,只是有必输标志,真正控制需要其他代码检查
        IF p1 = 'X' AND screen-group1 = 'TY1'.
           "必输,screen-required = '2',必输标志
          screen-required = '2'.
        ENDIF.
        IF p2 = 'X' AND screen-group1 = 'TY2'.
           "必输,screen-required = '2',必输标志
          screen-required = '2'.
        ENDIF.
        MODIFY SCREEN.
      ENDLOOP.
    
    AT SELECTION-SCREEN.
    * CLEAR sy-ucomm.
      "这里真正控制字段必输
      IF p1 = 'X' AND s_date IS INITIAL.
        MESSAGE s000 WITH 'Please fill all required fields'.
        STOP.
      ENDIF.
      IF p2 = 'X' AND ( p_werks IS INITIAL OR s_aufnr IS INITIAL ).
        MESSAGE s000 WITH 'Please fill all required fields'.
        STOP.
      ENDIF.
    View Code

    12弹出框

        调用function,‘POPUP_WITH_TABLE_DISPLAY_OK’显示弹窗。

    示例:

    DATA :BEGIN OF itab OCCURS 0,
    
          name(100) type c,
    
          END OF itab.
    
    itab-name = 'tang'.
    
    APPEND itab.
    
    itab-name = 'tang'.
    
    APPEND itab.
    
    call FUNCTION 'POPUP_WITH_TABLE_DISPLAY_OK'
    
              EXPORTING endpos_col = 80
    
                        endpos_row = 8
    
                        startpos_col = 40
    
                        startpos_row = 1
    
                        titletext = 'test pop'
    
              TABLES   valuetab = itab.

      参数endpos_col、endpos_row、startpos_col、startpos_row指定弹窗在主屏幕中显示位置。

    调用funtion ’POPUP_TO_CONFIRM’显示一个确认弹窗。

    示例:

    DATA:answer(10) type c.
    
    CALL FUNCTION 'POPUP_TO_CONFIRM'
    
      EXPORTING
    
        TITLEBAR                    = '确认弹窗'
    
    *   DIAGNOSE_OBJECT             = ' '
    
        TEXT_QUESTION               = '请确认'
    
    *   DEFAULT_BUTTON              = '1'
    
        DISPLAY_CANCEL_BUTTON       = ''
    
    *   USERDEFINED_F1_HELP         = ' '
    
    *   START_COLUMN                = 25
    
    *   START_ROW                   = 6
    
    *   POPUP_TYPE                  =
    
    *   IV_QUICKINFO_BUTTON_1       = ' '
    
    *   IV_QUICKINFO_BUTTON_2       = ' '
    
      IMPORTING
    
        ANSWER                      = answer
    
    * TABLES
    
    *   PARAMETER                   =
    
    * EXCEPTIONS
    
    *   TEXT_NOT_FOUND              = 1
    
    *   OTHERS                      = 2
    
              .
    
    IF SY-SUBRC <> 0.
    
    * Implement suitable error handling here
    
    else.
    
    WRITE:answer.    "选择yes 返回1 ; 选择no 返回2; 选择cancel 返回A
    
    ENDIF.
    View Code

    调用function,‘POPUP_TO_DECIDE_LIST’显示一个带单选选择列表的弹窗。

    示例:

    DATA: t_spopli like spopli OCCURS 0 WITH HEADER LINE.
    
    DATA: answer(10) type c.
    
    t_spopli-selflag = 'X'.           "默认选中选项
    
    t_spopli-varoption = 'hello world'.
    
    t_spopli-inactive = 'X'.          "是否可用
    
    APPEND t_spopli to t_spopli.
    
     
    
    t_spopli-selflag = 'X'.
    
    t_spopli-varoption = 'world'.
    
    t_spopli-inactive = ' '.
    
    APPEND t_spopli to t_spopli.
    
     
    
    t_spopli-selflag = ' '.
    
    t_spopli-varoption = 'hello'.
    
    t_spopli-inactive = ' '.
    
    APPEND t_spopli to t_spopli.
    
    CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
    
      EXPORTING
    
        CURSORLINE               = 2
    
    *   MARK_FLAG                = ' '
    
    *   MARK_MAX                 = 1
    
    *   START_COL                = 0
    
    *   START_ROW                = 0
    
        TEXTLINE1                = '请选择'
    
    *   TEXTLINE2                = ' '
    
    *   TEXTLINE3                = ' '
    
        TITEL                    = '选择弹窗'
    
    *   DISPLAY_ONLY             = ' '
    
      IMPORTING
    
        ANSWER                   = answer
    
      TABLES
    
        T_SPOPLI                 = t_spopli
    
    * EXCEPTIONS
    
    *   NOT_ENOUGH_ANSWERS       = 1
    
    *   TOO_MUCH_ANSWERS         = 2
    
    *   TOO_MUCH_MARKS           = 3
    
    *   OTHERS                   = 4
    
              .
    
    IF SY-SUBRC <> 0.
    
    * Implement suitable error handling here
    
    ELSE.
    
      WRITE:answer.     "反馈选中的选项数
    
    ENDIF.
    
     
    View Code

    调用function,‘FILENAME_GET’显示一个输入栏,返回输入内容弹窗。

    示例:

    "弹出弹窗获取用户输入文件路径
    
    DATA:filename type SDOK_FILNM.
    
    CALL FUNCTION 'FILENAME_GET'
    
      EXPORTING
    
        IV_FILENAME       = 'D:\record\test.txt'  "默认文件路径
    
        TITLE             = '选择文件'
    
     IMPORTING
    
        EV_FILENAME       = filename.
    
    WRITE:filename.

    调用function,‘POPUP_TO_SELECT_MONTH’显示一个日期选择弹窗。

    DATA:select_month like ISELLIST-MONTH.
    
    DATA:return like sy-subrc.
    
    CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
    
      EXPORTING
    
        ACTUAL_MONTH                     = 11    "默认选择月份
    
        FACTORY_CALENDAR                 = 'CN'  "选择年份范围由factory_calendar决定
    
        HOLIDAY_CALENDAR                 = 'CN'
    
    *   LANGUAGE                         = SY-LANGU
    
    *   START_COLUMN                     = 8
    
    *   START_ROW                        = 5
    
       IMPORTING
    
        SELECTED_MONTH                   = select_month
    
        RETURN_CODE                      = return
    
    * EXCEPTIONS
    
    *   FACTORY_CALENDAR_NOT_FOUND       = 1
    
    *   HOLIDAY_CALENDAR_NOT_FOUND       = 2
    
    *   MONTH_NOT_FOUND                  = 3
    
    *   OTHERS                           = 4
    
              .
    
    IF SY-SUBRC <> 0.
    
    * Implement suitable error handling here
    
    ELSE.
    
      WRITE:'选择了',select_month,''.
    
    ENDIF.
    View Code

    调用function,‘F4_DATE’显示日期选择弹窗。

    DATA:date like WORKFLDS-GKDAY.
    
    DATA:week like SCAL-WEEK.
    
    DATA:week_begin like sy-datum.
    
    DATA:week_end like sy-datum.
    
     
    
    CALL FUNCTION 'F4_DATE'
    
      EXPORTING
    
        DATE_FOR_FIRST_MONTH               = '20180901'  "初始日期,可以不传
    
    *   DISPLAY                            = 'x'
    
        FACTORY_CALENDAR_ID                = 'CN'
    
    *   GREGORIAN_CALENDAR_FLAG            = ' '
    
        HOLIDAY_CALENDAR_ID                = 'CN'
    
    *   PROGNAME_FOR_FIRST_MONTH           = ' '
    
    *   DATE_POSITION                      = 'x'
    
      IMPORTING
    
        SELECT_DATE                        = date
    
    *    SELECT_WEEK                        = week
    
    *    SELECT_WEEK_BEGIN                  = week_begin
    
    *    SELECT_WEEK_END                    = week_end
    
      EXCEPTIONS
    
        CALENDAR_BUFFER_NOT_LOADABLE       = 1
    
        DATE_AFTER_RANGE                   = 2
    
        DATE_BEFORE_RANGE                  = 3
    
        DATE_INVALID                       = 4
    
        FACTORY_CALENDAR_NOT_FOUND         = 5
    
        HOLIDAY_CALENDAR_NOT_FOUND         = 6
    
        PARAMETER_CONFLICT                 = 7
    
        OTHERS                             = 8
    
              .
    
    IF SY-SUBRC <> 0.
    
    * Implement suitable error handling here
    
      CASE sy-subrc.
    
        WHEN 1.
    
          WRITE:/'CALENDAR_BUFFER_NOT_LOADABLE'.
    
        WHEN 2.
    
          WRITE:/ 'DATE_AFTER_RANGE'.
    
        WHEN 3.
    
          WRITE:/ 'DATE_BEFORE_RANGE'.
    
        WHEN 4.
    
          WRITE:/ 'DATE_INVALID'.
    
        WHEN 5.
    
          WRITE:/ 'HOLIDAY_CALENDAR_ID_MISSING'.
    
        WHEN 6.
    
          WRITE:/ 'HOLIDAY_CALENDAR_NOT_FOUND'.
    
        WHEN 7.
    
          WRITE:/ 'PARAMETER_CONFLICT'.
    
        WHEN OTHERS.
    
          WRITE:/ 'other exception'.
    
      ENDCASE.
    
    ELSE.
    
      WRITE:/'date=',date,'week=',week,'week_begin',week_begin,'week_end',week_end.
    
    ENDIF.
    View Code

    13下拉选择框

    实例1:

    "****************************屏幕显示下拉选择框
    
    DATA:lv_id TYPE vrm_id.
    
    DATA:t_list TYPE vrm_values.
    
    DATA:wa_value LIKE LINE OF t_list.
    
     
    
    "下拉选择框
    
    PARAMETERS:s_box TYPE C AS LISTBOX VISIBLE LENGTH 20 DEFAULT '2'.
    
     
    
    "初始化
    
    INITIALIZATION.
    
      PERFORM init_listbox.
    
     
    
    START-OF-SELECTION.
    
      PERFORM get_sel_value.
    
     
    
    "初始化多选框
    
    FORM init_listbox.
    
      wa_value-key = '1'.
    
      wa_value-text = '选择1'.
    
      APPEND wa_value TO t_list.
    
      wa_value-key = '2'.
    
      wa_value-text = '选择2'.
    
      APPEND wa_value TO t_list.
    
     
    
      CALL FUNCTION 'VRM_SET_VALUES'
    
        EXPORTING
    
          ID                    = 'S_BOX'
    
          VALUES                = t_list
    
        EXCEPTIONS
    
          ID_ILLEGAL_NAME       = 1
    
          OTHERS                = 2
    
                .
    
      IF SY-SUBRC <> 0.
    
    * Implement suitable error handling here
    
      ENDIF.
    
    ENDFORM.
    
     
    
    "获取多选框值
    
    FORM get_sel_value.
    
      "s_box值为key值
    
      WRITE:/ s_box.
    
    ENDFORM.
    View Code
  • 相关阅读:
    网站描述description如何编写
    网站关键词布局设置,这样添加关键词排名很容易上来!
    长尾关键词挖掘工具和使用方法
    小站点如何做好长尾词库(600个长尾词排名的经验分享!)
    如何利用seo技术霸屏你的行业关键词排名
    利用seo技术排名热点新闻词引流(日IP增加2万+)
    yagmail模块的使用
    python--接口自动化
    Python--unittest参数化
    Python--日志模块
  • 原文地址:https://www.cnblogs.com/tangToms/p/11642640.html
Copyright © 2011-2022 走看看