效果图:


demo代码

需要特别注意的是abap memory的应用


文本版:

*&---------------------------------------------------------------------*
*& Report ZLM_SCREEN3
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zlm_screen3.

TABLES:mara.

SELECTION-SCREEN BEGIN OF SCREEN 0100 AS SUBSCREEN .
PARAMETERS:
  p_dwms TYPE char1 AS LISTBOX VISIBLE LENGTH 30,
  p_dwm  TYPE string NO-DISPLAY.
SELECT-OPTIONS:
                s_matnr  FOR mara-matnr        .

SELECTION-SCREEN END OF SCREEN 0100.

SELECTION-SCREEN BEGIN OF SCREEN 0300 AS SUBSCREEN.
PARAMETERSrb_down RADIOBUTTON GROUP rad1,  "下载模版
            rb_up   RADIOBUTTON GROUP rad1,  "导入数据
            p_file  LIKE rlgrap-filename.   "文件路径

SELECTION-SCREEN END OF SCREEN 0300.


SELECTION-SCREEN BEGIN OF TABBED BLOCK mytab FOR LINES."子屏幕的行数
SELECTION-SCREEN TAB (6)  text1 USER-COMMAND but1.
SELECTION-SCREEN TAB (10text2 USER-COMMAND but2.
SELECTION-SCREEN END OF BLOCK mytab.

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

INITIALIZATION .         "给标签赋值
  PERFORM frm_init.

*----------------------------------------------------------------------*
*  AT SELECTION-SCREEN.
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
  CASE sy-dynnr.
    WHEN 1000.
      CASE sy-ucomm.
        WHEN 'BUT1'.           " 'BUT1'
          mytab-dynnr 0100.
        WHEN 'BUT2'.           " 'BUT2'
          mytab-dynnr 0300.
        WHEN OTHERS.
      ENDCASE.
  ENDCASE.

*----------------------------------------------------------------------*
*  事件处理
*----------------------------------------------------------------------*

START-OF-SELECTION.
  CASE mytab-dynnr.
    WHEN  0100.
      MESSAGE '1' TYPE 'I'.
    WHEN  0300"300屏幕的操作
      DATAlv_subscreen         TYPE string .
      "ABAP memory是为了能控制返回时返回到哪个页签
      lv_subscreen '0300'.
      EXPORT lv_subscreen  TO MEMORY ID 'M1'.
      MESSAGE '2' TYPE 'I'.
ENDCASE.


FORM frm_init .
  DATAlv_subscreen         TYPE string .

  text1 =  '页签一'.
  text2 =  '页签二'.

  IMPORT lv_subscreen  FROM MEMORY ID 'M1' .      "读取内存,获取当前处理页签

  DATA(v_dynnrlv_subscreen.

  mytab-prog sy-repid.

  IF v_dynnr space.
    mytab-dynnr 0100.
    mytab-activetab 'BUT1'.    " 'BUT1'
  ELSE.
    mytab-dynnr v_dynnr.

    IF v_dynnr 0300 .
      mytab-activetab 'BUT2'.   "'BUT2'
    ENDIF.
  ENDIF.
ENDFORM.                    " FRM_INIT


©著作权归作者所有:来自51CTO博客作者mb5fd8698f60f87的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. ALV显示红绿灯(FM ALV 和 OO ALV两种实现方式)
  2. FM实现F4帮助系列二:联动的搜索
  3. 点进垃圾网页后返回按钮失效?谷歌承诺将彻底解决这个问题!
  4. PHP基础:字符串函数的作用和练习
  5. php学习笔记(接口与抽象类的区别与联系)
  6. PHP高级编程函数的返回值和闭包与作用域
  7. php学习笔记(20个常用的字符串函数)
  8. 实用的php字符串函数总结
  9. 全面演示: 函数的作用域与闭包,回调的使用场景以及函数的多值返

随机推荐

  1. Android如何设置TextView的行间距、行高
  2. ndk完整编译cocos2dx项目总结
  3. Android 让一个控件或布局居于底部的办法
  4. Android蓝牙开发浅析
  5. android EditText输入限制
  6. Android中的消息机制-源码分析
  7. Android系统自带样式(android:theme)
  8. Android本地动作
  9. Android(安卓)禁止屏幕旋转和重启Activit
  10. Android(安卓)游戏开发中横竖屏切换问题