********************************************************************
* 事务代码:ZPPT008 *
* 程序名称:ZPPT008 *
* 程序目的: *
* 设 计 人: *
* 开 发 人:Seele *
* 设计时间:2023-03-01 *
* 程序类型: ABAP/4 程序 *
* 应用类型: PP *
* 描 述: *
*(修改日志)--------------------------------------------------------*
* *
* 日志号 修改人 修改时间 修改说明 传输号码 *
* ---- ---- ------ -----------
* 001 Seele 2023-03-01 创建程序 *
********************************************************************
REPORT ZPPT008.
*----------------------------------------------------------------------*
* 数据库表声明/Database table declaration
*----------------------------------------------------------------------*
TABLES:afpo . " 销售凭证 : 抬头数据
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.
" 使用该程序的目的是在不分配用户SM30权限的条件下,仍然能够进入某一特定表维护视图
*&---------------------------------------------------------------------*
*& Selection Screen/选择屏幕
*&---------------------------------------------------------------------*
*&---选择屏幕块
SELECTION-SCREEN BEGIN OF BLOCK BLK01 WITH FRAME TITLE TEXT-001.
*&---范围
SELECT-OPTIONS:S_AUFNR FOR AFPO-AUFNR MODIF ID M4 OBLIGATORY NO-EXTENSION NO INTERVALS,
S_MATNR FOR AFPO-MATNR MODIF ID M4 NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN END OF BLOCK BLK01.
CALL FUNCTION 'VIEW_GET_DDIC_INFO'
EXPORTING
viewname = 'ZPPT008'
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 = 'AUFNR'
TABLES
SELLIST = gt_dba_sellist
RANGETAB = S_AUFNR.
CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST' "添加第二个筛选条件
EXPORTING
FIELDNAME = 'MATNR'
APPEND_CONJUNCTION = 'AND'
TABLES
SELLIST = gt_dba_sellist
RANGETAB = S_MATNR.
CALL FUNCTION 'VIEW_ENQUEUE'
EXPORTING
view_name = 'ZPPT008'
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 'AUFNR'.
<fs_dba>-tabix = 3.
WHEN 'MATNR'.
<fs_dba>-tabix = 4.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
CALL FUNCTION 'VIEW_MAINTENANCE'
EXPORTING
view_action = 'U'
view_name = 'ZPPT008'
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 = 'ZPPT008'
action = 'D'
enqueue_mode = 'E'
EXCEPTIONS
foreign_lock = 1
system_failure = 2
table_not_found = 5
client_reference = 7.
ABAP 带选择屏幕的SM30
于 2023-03-23 13:55:06 首次发布