掘金 后端 ( ) • 2024-05-07 09:45

highlight: atelier-forest-light theme: arknights

原文标题:Create Selection Screen for SAP Table Maintenance View (SM30)

原文链接: https://www.saphub.com/abap-dictionary/sap-abap-tmg-selection-screen/

通常,带有单个屏幕的 SAP 表维护视图 (SM30) 会显示表中的所有记录,如下所示。

image.png

如果我们只想根据用户选择在 SAP 表维护视图 (SM30) 中显示某些记录怎么办?只需按照以下步骤操作即可。

  • 创建一个报告程序并根据您的要求设计表/视图的选择屏幕。
  • 使用 SAP 功能模块 VIEW_RANGETAB_TO_SELLIST 构建表维护视图的选择标准
  • 使用 SAP 功能模块 VIEW_MAINTENANCE_CALL 调用表维护视图( SM30
TABLES: zemployee.
CONSTANTS: c_view  TYPE   char30  VALUE 'ZEMPLOYEE',
           c_u     TYPE   char1   VALUE 'U',
           c_and   TYPE   char3   VALUE 'AND'.
DATA: gt_seltab    TYPE STANDARD TABLE OF vimsellist.
DATA: g_fieldname  TYPE vimsellist-viewfield.
DATA: gt_exclude   TYPE TABLE OF vimexclfun,
      gwa_exclude  TYPE vimexclfun.

SELECT-OPTIONS: s_id    FOR zemployee-id,
                s_name  FOR zemployee-name,
                s_place FOR zemployee-place.

*Add ID column to selection criteria of Table maintenanace view
g_fieldname = 'ID'.

CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
  EXPORTING
    fieldname          = g_fieldname
    append_conjunction = c_and
  TABLES
    sellist            = gt_seltab
    rangetab           = s_id.

*Add Name column to selection criteria of Table maintenanace view
g_fieldname = 'NAME'.

CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
  EXPORTING
    fieldname          = g_fieldname
    append_conjunction = c_and
  TABLES
    sellist            = gt_seltab
    rangetab           = s_name.

*Add Place column to selection criteria of Table maintenanace view
g_fieldname = 'PLACE'.

CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
  EXPORTING
    fieldname          = g_fieldname
    append_conjunction = c_and
  TABLES
    sellist            = gt_seltab
    rangetab           = s_place.

* Call to the 'VIEW_MAINTENANCE_CALL' function module
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
  EXPORTING
    action         = c_u
    view_name      = c_view
  TABLES
    dba_sellist    = gt_seltab.

选择屏幕:显示 SM30 中地点为 LONDON 的所有条目

image.png

表维护视图 (SM30)

image.png

使用 FM VIEW_MAINTENANCE_CALL 中的 ACTION 参数在更改或显示模式下调用表维护。

可以使用 FM VIEW_MAINTENANCE_CALL 的表参数 EXCL_CUA_FUNCT 停用表维护中的 GUI 功能代码(按钮)。

下面的程序可以停用 SM30 中的“新条目”、“复制”和“删除”按钮。

TABLES: zemployee.
CONSTANTS: c_view  TYPE   char30  VALUE 'ZEMPLOYEE',
           c_u     TYPE   char1   VALUE 'U',
           c_and   TYPE   char3   VALUE 'AND'.
DATA: gt_seltab    TYPE STANDARD TABLE OF vimsellist.
DATA: g_fieldname  TYPE vimsellist-viewfield.
DATA: gt_exclude   TYPE TABLE OF vimexclfun,
      gwa_exclude  TYPE vimexclfun.

SELECT-OPTIONS: s_id    FOR zemployee-id,
                s_name  FOR zemployee-name,
                s_place FOR zemployee-place.

*Add ID column to selection criteria of Table maintenanace view
g_fieldname = 'ID'.

CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
  EXPORTING
    fieldname          = g_fieldname
    append_conjunction = c_and
  TABLES
    sellist            = gt_seltab
    rangetab           = s_id.

*Add Name column to selection criteria of Table maintenanace view
g_fieldname = 'NAME'.

CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
  EXPORTING
    fieldname          = g_fieldname
    append_conjunction = c_and
  TABLES
    sellist            = gt_seltab
    rangetab           = s_name.

*Add Place column to selection criteria of Table maintenanace view
g_fieldname = 'PLACE'.

CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
  EXPORTING
    fieldname          = g_fieldname
    append_conjunction = c_and
  TABLES
    sellist            = gt_seltab
    rangetab           = s_place.

*Deactivate New Entries
gwa_exclude-function = 'NEWL'.  " Function Code for New Entries
APPEND gwa_exclude TO gt_exclude.

*Deactivate Copy
gwa_exclude-function = 'KOPE'.  " Function Code for Copy
APPEND gwa_exclude TO gt_exclude.

*Deactivate Delete
gwa_exclude-function = 'DELE'.  " Function Code for Delete
APPEND gwa_exclude TO gt_exclude.

* Call to the 'VIEW_MAINTENANCE_CALL' function module
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
  EXPORTING
    action         = c_u
    view_name      = c_view
  TABLES
    dba_sellist    = gt_seltab
    excl_cua_funct = gt_exclude.

输出:显示所有条目

image.png