SAP ABAP 选择屏幕语法整理

1、在工具栏添加自定义按钮

"需要先申明 SSCRFIELDS
TABLES: SSCRFIELDS.

*&---------------------------------------------------------------------*
*& SELECTION-SCREEN
*&---------------------------------------------------------------------*
SELECTION-SCREEN: FUNCTION KEY 1."系统预留了5个按钮

*&---------------------------------------------------------------------*
*& INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
  "给自定义按钮添加图标和文本
  PERFORM FRM_INIT_DATA1."通过 ICON_CREATE 函数添加
  PERFORM FRM_INIT_DATA2."通过 smp_dyntxt 结构添加

*&----------------------------------------------------------------------
* AT SELECTION-SCREEN
*&----------------------------------------------------------------------
AT SELECTION-SCREEN.
  "自定义按钮点击事件处理
  CASE SSCRFIELDS-UCOMM.
    WHEN 'FC01'."第一个按钮的功能码    系统预留的
      PERFORM FRM_FC01.
    WHEN OTHERS.
  ENDCASE.
  
*&----------------------------------------------------------------------
* END-OF-SELECTION
*&----------------------------------------------------------------------
END-OF-SELECTION.

*&---------------------------------------------------------------------*
*& Form FRM_INIT_DATA1
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_INIT_DATA1 .

  DATA:LV_ICON_STR(255) TYPE C.
  LV_ICON_STR =  ICON_CHANGE."
  CALL FUNCTION 'ICON_CREATE'
    EXPORTING
      NAME                  = LV_ICON_STR      "图标名称  可在ICON表中查找
      TEXT                  = '图标展示文本'     "图标展示文本
      INFO                  = '工具提示文本'     "工具提示文本
    IMPORTING
      RESULT                = LV_ICON_STR
    EXCEPTIONS
      ICON_NOT_FOUND        = 1
      OUTPUTFIELD_TOO_SHORT = 2
      OTHERS                = 3.
  SSCRFIELDS-FUNCTXT_01 = LV_ICON_STR."按钮图标和文本赋值

ENDFORM.

*&---------------------------------------------------------------------*
*& Form FRM_INIT_DATA2
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_INIT_DATA2 .

  DATA: lv_functxt TYPE smp_dyntxt.
  lv_functxt-icon_id   = icon_export.   "显示图标
  lv_functxt-quickinfo = TEXT-003.      "鼠标指向显示信息--下载模板
  lv_functxt-icon_text = TEXT-003.      "菜单文本--下载模板
  SSCRFIELDS-FUNCTXT_01 = lv_functxt.   "按钮图标和文本赋值

ENDFORM.

*&---------------------------------------------------------------------*
*& Form FRM_FC01
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_FC01 .
  "这里是点击自定义按钮后触发的处理逻辑
  "下面是通过函数打开视图进行维护的功能逻辑,类似于SM30
  CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
    EXPORTING
      ACTION                       = 'U'  "S = Display U = Change T=Transport
      SHOW_SELECTION_POPUP         = ' '  "是否显示选择画面
      VIEW_NAME                    = 'ZMMV_R001'  "视图名
      NO_WARNING_FOR_CLIENTINDEP   = 'X'  "跨客户端是否显示警告
      VARIANT_FOR_SELECTION        = ' '  "变式名
      CHECK_DDIC_MAINFLAG          = ' '  "查看是否为可维护对象
    EXCEPTIONS
      CLIENT_REFERENCE             = 1
      FOREIGN_LOCK                 = 2
      INVALID_ACTION               = 3
      NO_CLIENTINDEPENDENT_AUTH    = 4
      NO_DATABASE_FUNCTION         = 5
      NO_EDITOR_FUNCTION           = 6
      NO_SHOW_AUTH                 = 7
      NO_TVDIR_ENTRY               = 8
      NO_UPD_AUTH                  = 9
      ONLY_SHOW_ALLOWED            = 10
      SYSTEM_FAILURE               = 11
      UNKNOWN_FIELD_IN_DBA_SELLIST = 12
      VIEW_NOT_FOUND               = 13
      MAINTENANCE_PROHIBITED       = 14
      OTHERS                       = 15.

ENDFORM.

效果:

2、通过PUSHBUTTON语句添加按钮


"需要先申明 SSCRFIELDS
TABLES: SSCRFIELDS.

*&---------------------------------------------------------------------*
*& SELECTION-SCREEN
*&---------------------------------------------------------------------*
SELECTION-SCREEN: BEGIN OF BLOCK B01 WITH FRAME TITLE TITLE1."定义一个框
  "在BLOCK中,按钮的起始位置和长度定义都不能超过79

  SELECTION-SCREEN: BEGIN OF LINE."里面的按钮都在同一行
    SELECTION-SCREEN: PUSHBUTTON  5(30)  BUT1 USER-COMMAND CLI1.
    SELECTION-SCREEN: PUSHBUTTON 40(30)  BUT2 USER-COMMAND CLI2.
    SELECTION-SCREEN: PUSHBUTTON 75(30)  BUT3 USER-COMMAND CLI3.
  SELECTION-SCREEN: END OF LINE.

  SELECTION-SCREEN: SKIP 1."空1行
  SELECTION-SCREEN: BEGIN OF LINE."里面的按钮都在同一行
    SELECTION-SCREEN: PUSHBUTTON  5(30)  BUT4 USER-COMMAND CLI4.
    SELECTION-SCREEN: PUSHBUTTON 40(30)  BUT5 USER-COMMAND CLI5.
    SELECTION-SCREEN: PUSHBUTTON 75(30)  BUT6 USER-COMMAND CLI6.
  SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: END OF BLOCK B01.

  "在BLOCK中,按钮的起始位置和长度定义都不能超过83
  SELECTION-SCREEN: SKIP 1."空1行
  SELECTION-SCREEN: BEGIN OF LINE."里面的按钮都在同一行
    SELECTION-SCREEN: PUSHBUTTON  7(30)  BUT7 USER-COMMAND CLI7.
    SELECTION-SCREEN: PUSHBUTTON 42(30)  BUT8 USER-COMMAND CLI8.
    SELECTION-SCREEN: PUSHBUTTON 77(30)  BUT9 USER-COMMAND CLI9.
  SELECTION-SCREEN: END OF LINE.

*&---------------------------------------------------------------------*
*& INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
  "给自定义按钮添加图标和文本
  BUT1 = ICON_CREATE && 'BUTTON1'."直接进行赋值
  BUT2 = |{ ICON_CREATE }BUTTON2|."直接进行赋值
  BUT3 = ICON_DELETE && 'BUTTON1'."直接进行赋值

  PERFORM FRM_INIT_DATA1 USING ICON_CREATE 'BUTTON4' 'BUTTON4' BUT4."通过 ICON_CREATE 函数添加
  PERFORM FRM_INIT_DATA1 USING ICON_CHANGE 'BUTTON5' 'BUTTON5' BUT5."通过 ICON_CREATE 函数添加
  PERFORM FRM_INIT_DATA1 USING ICON_DELETE 'BUTTON6' 'BUTTON6' BUT6."通过 ICON_CREATE 函数添加
  PERFORM FRM_INIT_DATA1 USING ICON_CREATE 'BUTTON7' 'BUTTON7' BUT7."通过 ICON_CREATE 函数添加
  PERFORM FRM_INIT_DATA1 USING ICON_CHANGE 'BUTTON8' 'BUTTON8' BUT8."通过 ICON_CREATE 函数添加
  PERFORM FRM_INIT_DATA1 USING ICON_DELETE 'BUTTON9' 'BUTTON9' BUT9."通过 ICON_CREATE 函数添加

  "无法通过 smp_dyntxt 结构添加图标和文本

*&----------------------------------------------------------------------
* AT SELECTION-SCREEN
*&----------------------------------------------------------------------
AT SELECTION-SCREEN.
  "自定义按钮点击事件处理
  CASE SSCRFIELDS-UCOMM.
    WHEN 'CLI1'."第一个按钮的功能码
      MESSAGE '您点击了按钮:' && BUT1 TYPE 'I'.
    WHEN 'CLI2'."第2个按钮的功能码
      MESSAGE '您点击了按钮:' && BUT2 TYPE 'I'.
    WHEN 'CLI3'."第3个按钮的功能码
      MESSAGE '您点击了按钮:' && BUT3 TYPE 'I'.
    WHEN 'CLI4'."第4个按钮的功能码
      MESSAGE '您点击了按钮:' && BUT4 TYPE 'I'.
    WHEN 'CLI5'."第5个按钮的功能码
      MESSAGE '您点击了按钮:' && BUT5 TYPE 'I'.
    WHEN 'CLI6'."第6个按钮的功能码
      MESSAGE '您点击了按钮:' && BUT6 TYPE 'I'.
    WHEN 'CLI7'."第7个按钮的功能码
      MESSAGE '您点击了按钮:' && BUT7 TYPE 'I'.
    WHEN 'CLI8'."第8个按钮的功能码
      MESSAGE '您点击了按钮:' && BUT8 TYPE 'I'.
    WHEN 'CLI9'."第9个按钮的功能码
      MESSAGE '您点击了按钮:' && BUT9 TYPE 'I'.
    WHEN OTHERS.
  ENDCASE.



*&----------------------------------------------------------------------
* END-OF-SELECTION
*&----------------------------------------------------------------------
END-OF-SELECTION.

*&---------------------------------------------------------------------*
*& Form FRM_INIT_DATA1
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_INIT_DATA1 USING PV_NAME
                          PV_TEXT
                          PV_INFO
                          PV_BUT.

  DATA:LV_ICON_STR(255) TYPE C.
  CALL FUNCTION 'ICON_CREATE'
    EXPORTING
      NAME                  = PV_NAME     "图标名称  可在ICON表中查找
      TEXT                  = PV_TEXT     "图标展示文本
      INFO                  = PV_INFO     "工具提示文本
    IMPORTING
      RESULT                = LV_ICON_STR
    EXCEPTIONS
      ICON_NOT_FOUND        = 1
      OUTPUTFIELD_TOO_SHORT = 2
      OTHERS                = 3.
  PV_BUT = LV_ICON_STR."按钮图标和文本赋值

ENDFORM.

效果:

注意:

1、在BLOCK中,按钮的起始位置和长度定义都不能超过79,否则会报错
 2、不在BLOCK中,按钮的起始位置和长度定义都不能超过83,否则会报错

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值