ABAP中常用函数

一、给选择屏幕按钮添加图标和文本:ICON_CREATE

1.定义按钮:

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON 2(15) but1 USER-COMMAND view. "定义搜索按钮
SELECTION-SCREEN PUSHBUTTON 30(15) but2 USER-COMMAND edit. "定义维护按钮
SELECTION-SCREEN END OF LINE.
INITIALIZATION.
  PERFORM frm_init_data

2,.调用函数:

FORM frm_init_data.
* 定义 but1 = '查看'  but2 = '维护'
*  给按钮添加图标和文本
  CALL FUNCTION 'ICON_CREATE'
    EXPORTING
      name   = icon_display
      text   = '查看'
      info   = '查看'
    IMPORTING
      result = but1
    EXCEPTIONS
      OTHERS = 0.

  CALL FUNCTION 'ICON_CREATE'
    EXPORTING
      name   = icon_display
      text   = '维护'
      info   = '维护'
    IMPORTING
      result = but2
    EXCEPTIONS
      OTHERS = 0.
ENDFORM.                    "FRM_INIT_DATA

二、下拉列表函数:VRM_SET_VALUES

1.选择屏幕定义下拉列表

SELECTION-SCREEN FUNCTION KEY 1.
PARAMETERS:p_tabnam TYPE dd02l-tabname AS LISTBOX VISIBLE LENGTH  35.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_tabnam.
  "下拉菜单函数
  PERFORM frm_set_vrm_list.

2.调用函数
这里是通过配置表获取对应值的,对于下拉列表赋值还可以手动赋值等。

FORM frm_set_vrm_list.
  DATA:lt_list TYPE vrm_values.
  
  SELECT tabname AS key ddtext AS text INTO TABLE lt_list FROM zps_set_tab.
  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = 'P_TABNAM'
      values = lt_list.

ENDFORM. 

三、按钮触发维护配置表,显示配置表信息,视图维护:VIEW_MAINTENANCE_CALL

1.通过定义屏幕按钮触发该事件

FORM frm_edit_ps_tab.
  DATA:lv_ok_code TYPE sy-ucomm.
  CLEAR lv_ok_code.
  lv_ok_code = sy-ucomm.
  CASE lv_ok_code.
      "编辑 对配置表维护的 配置表 ZPS_SET_TAB
    WHEN 'EDIT_TAB'.
      PERFORM frm_update_tab USING: 'U'
                                    'ZPS_SET_TAB'.
    WHEN 'VIEW'.
      PERFORM frm_update_tab USING: 'S'
                                    p_tabnam.
    WHEN 'EDIT'.
      PERFORM frm_update_tab USING: 'U'
                                    p_tabnam.
  ENDCASE.
ENDFORM.    

2.调用函数

FORM frm_update_tab USING value(p_action) TYPE c
                          value(p_tabname) TYPE dd02v-tabname.
  DATA: lt_excl_cua_funct TYPE TABLE OF vimexclfun WITH HEADER LINE.
  IF p_action = 'S'.
    lt_excl_cua_funct-function = 'AEND'.
    APPEND lt_excl_cua_funct.
  ENDIF.
* 调用函数 VIEW_MAINTENANCE_CALL         视图维护/通用模块
  CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
    EXPORTING
      action                               = p_action    "S查看/U修改
*     CORR_NUMBER                          = '          '
*     GENERATE_MAINT_TOOL_IF_MISSING       = ' '
*     SHOW_SELECTION_POPUP                 = ' '
      view_name                            = p_tabname
*     NO_WARNING_FOR_CLIENTINDEP           = ' '
*     RFC_DESTINATION_FOR_UPGRADE          = ' '
*     CLIENT_FOR_UPGRADE                   = ' '
*     VARIANT_FOR_SELECTION                = ' '
*     COMPLEX_SELCONDS_USED                = ' '
*     CHECK_DDIC_MAINFLAG                  = ' '
*     SUPPRESS_WA_POPUP                    = ' '
   TABLES
*     DBA_SELLIST                          =
     EXCL_CUA_FUNCT                       =  LT_EXCL_CUA_FUNCT
   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.
  IF sy-subrc <> 0.
   CASE sy-subrc.
   	WHEN '6'.
      MESSAGE I001(00) WITH '请先维护视图函数!'.
   	WHEN '8'.
      MESSAGE I001(00) WITH '请先维护自建表视图!'.
   	WHEN OTHERS.
      MESSAGE I001(00) WITH '没有维护自建表权限!'.
   ENDCASE.
  ENDIF.

ENDFORM.                    "FRM_UPDATE_TAB

猜你喜欢

转载自blog.csdn.net/weixin_43734184/article/details/112983500