根据选择条件展示sm30表维护
首先创建表维护 ZYKTFI0063B,然后通过以下程序调用SM30
*&---------------------------------------------------------------------*
*& Report ZFIR0137
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zfir0137.
INCLUDE zfir0137_top.
INCLUDE zfir0137_sel.
START-OF-SELECTION.
CALL FUNCTION 'VIEW_GET_DDIC_INFO'
EXPORTING
viewname = 'ZYKTFI0063B'
TABLES
sellist = gt_dba_sellist
x_header = gt_x_header
x_namtab = gt_x_namtab
EXCEPTIONS
no_tvdir_entry = 1
table_not_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST' "添加第一个筛选条件
EXPORTING
fieldname = 'BUKRS'
TABLES
sellist = gt_dba_sellist
rangetab = s_bukrs.
CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST' "添加第二个筛选条件
EXPORTING
fieldname = 'GJAHR'
append_conjunction = 'AND'
TABLES
sellist = gt_dba_sellist
rangetab = s_gjahr.
CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST' "添加第三个筛选条件
EXPORTING
fieldname = 'MONAT'
append_conjunction = 'AND'
TABLES
sellist = gt_dba_sellist
rangetab = s_monat.
CALL FUNCTION 'VIEW_ENQUEUE'
EXPORTING
view_name = 'ZYKTFI0063B'
action = 'E'
enqueue_mode = 'E'
EXCEPTIONS
foreign_lock = 1
system_failure = 2
table_not_found = 5
client_reference = 7.
IF sy-subrc NE 0.
MESSAGE 'Data locked by' && sy-msgv1 TYPE 'S' DISPLAY LIKE 'E'.
RETURN.
ENDIF.
" tabix是根据上面函数VIEW_GET_DDIC_INFO找到的位置,不要乱填tabix,不然会出异常或者筛选不生效
LOOP AT gt_dba_sellist ASSIGNING FIELD-SYMBOL(<fs_dba>).
CASE <fs_dba>-viewfield.
WHEN 'BUKRS'.
<fs_dba>-tabix = 2.
WHEN 'GJAHR'.
<fs_dba>-tabix = 3.
WHEN 'MONAT'.
<fs_dba>-tabix = 4.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
CALL FUNCTION 'VIEW_MAINTENANCE'
EXPORTING
view_action = 'U'
view_name = 'ZYKTFI0063B'
complex_selconds_used = 'X'
TABLES
dba_sellist = gt_dba_sellist
dpl_sellist = gt_dba_sellist
excl_cua_funct = gt_excl_cua_funct
x_header = gt_x_header
x_namtab = gt_x_namtab
EXCEPTIONS
missing_corr_number = 1
no_database_function = 2
no_editor_function = 3
no_value_for_subset_ident = 4
OTHERS = 5.
CALL FUNCTION 'VIEW_ENQUEUE'
EXPORTING
view_name = 'ZYKTFI0063B'
action = 'D'
enqueue_mode = 'E'
EXCEPTIONS
foreign_lock = 1
system_failure = 2
table_not_found = 5
client_reference = 7.
*&---------------------------------------------------------------------*
*& 包含 ZFIR0137_TOP
*&---------------------------------------------------------------------*
TABLES:zyktfi0063b .
DATA:gt_dba_sellist TYPE TABLE OF vimsellist,
gt_excl_cua_funct TYPE TABLE OF vimexclfun,
gt_x_header TYPE TABLE OF vimdesc,
gt_x_namtab TYPE TABLE OF vimnamtab,
gt_dpl_sellist TYPE TABLE OF vimsellist.
DATA:lockuser TYPE sy-uname,
answer(1) TYPE c.
*&---------------------------------------------------------------------*
*& 包含 ZFIR0137_SEL
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Selection Screen/选择屏幕
*&---------------------------------------------------------------------*
*&---选择屏幕块
SELECTION-SCREEN BEGIN OF BLOCK blk01 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:s_bukrs FOR zyktfi0063b-bukrs MODIF ID m4 NO-EXTENSION NO INTERVALS,
s_gjahr FOR zyktfi0063b-gjahr MODIF ID m4 NO-EXTENSION NO INTERVALS,
s_monat FOR zyktfi0063b-monat MODIF ID m4 NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN END OF BLOCK blk01.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」