一、介绍
对于开发或者顾问来说,查看 SAP 表内容是必要的。可以使用 SAP SE16N 事务来选择表从而来筛选记录,分析数据问题、查找示例记录,或者只是查找几个月前在客户端系统中创建的销售订单。
如果你没有被授权使用 SE16N 事务码的话,例如下图:
1. 通过SE38
而这段代码主要由程序 RK_SE16N 来完成的,代码如下:
REPORT RK_SE16N.
IF sy-tcode NE 'SE16N'. "1757450
call function 'AUTHORITY_CHECK_TCODE'
exporting
tcode = 'SE16N'
exceptions
ok = 0
not_ok = 1.
if sy-subrc ne 0.
message e059(eu) with 'SE16N'. " no authority
endif.
ENDIF. "1757450
CALL FUNCTION 'SE16N_START'.
而对于 T-Code 的检查就是这段函数 AUTHORITY_CHECK_TCODE ,如果我们直接运行这个功能模块的话,也能得到和前台相同的消息:
可以使用以下几种方式来跳过检查。
其实我们可以看到在 RK_SE16N 程序中看出,真正的 SE16N 的调用在功能模块 SE16N_START 当中,因此可以双击它,进入这个函数模块,然后点执行,就可以绕过权限检查使用 SE16N 的功能了:
2. 通过 SE37 调用函数模块 SE16N_EXTERNAL_CALL
3. 通过 SE37 调用函数模块 SE16N_INTERFACE
此方法适用于 SAP S4 HANA系统,通过函数模块 SE16N_INTERFACE
还可以通过将 I_EDIT 和 I_SAPEDIT 设置为 X 直接进入编辑模式。这种方式是最方便进入编辑模式的,当然还有如下两种方法进入编辑模式,支持对数据库表中非主键的编辑以及行数据的整体插入和删除。
二、进入编辑模式
- 通过
SE16N进入表显示,然后输入/H进入调试模式:
点击执行,然后将 GD-EDIT 和 GD-SAPEDIT 两个变量的值设置为 X ,如图所示:
然后再点击执行就可以激活编辑模式了,在编辑模式下,可以对非主键的字段进行编辑,也可以删除和插入行记录。
- 使用
RKSE16N_EDIT程序,激活编辑模式。
运行程序 RKSE16N_EDIT 并激活功能,现在启动 SE16N 并选择您的输入。在点击执行按钮之前,输入命令 &sap_edit:
按下执行。结果是完全可编辑的表格。
三、总结
将 SE16n 作为首选表显示工具的主要原因:
- 在不离开屏幕的情况下在表格之间快速切换
- 在主屏幕上查看字段名称和字段描述
- 只需单击一个按钮即可快速选择结果字段
- 使用内置设置调整报告输出选项
- 结果屏幕上的 ALV 格式设置
- 激活“技术视图”以查看技术字段详细信息。
如果有时,需要我们写一个查询系统表的报表,就可以偷懒不用重复 ALV 的开发流程,可以利用如下的代码实现:
*&---------------------------------------------------------------------*
*& Report ZALV_BY_SE16N
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zalv_by_se16n.
**// Definition
PARAMETERS p_tab TYPE se16n_tab.
CHECK p_tab IS NOT INITIAL.
**// START-OF-SELECTION.
START-OF-SELECTION.
** Authorization Check
* Check for SE16N access when it called by customer t-codes
IF sy-tcode NE 'SE16N'. " 1757450
CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
EXPORTING
tcode = 'SE16N'
EXCEPTIONS
ok = 0
not_ok = 1.
IF sy-subrc NE 0.
MESSAGE e059(eu) WITH 'SE16N'. " no authority
ENDIF.
ENDIF. " 1757450
*—–> Call the SE16N function Module
**// END-OF-SELECTION.
END-OF-SELECTION.
**// Call SE16N with a restriction of selection criteria
CALL FUNCTION 'SE16N_EXTERNAL_CALL'
EXPORTING
i_tab = p_tab
* i_variant = p_vari
* I_HANA_ACTIVE =
* I_DBCON =
* I_OJKEY =
* i_max_lines = p_max_l
* I_GUI_TITLE =
* I_FCAT_STRUCTURE =
* I_LAYOUT_GROUP =
* I_NO_LAYOUTS =
* I_DISPLAY_ALL =
* I_TEMPERATURE =
* I_TEMPERATURE_COLD =
* I_SESSION_CONTROL =
* i_edit = p_edit
* I_NO_CONVEXIT =
* I_CHECKKEY = ‘ ‘
* I_FORMULA_NAME =
* TABLES
* it_seltab = lt_stab
* IT_SUM_UP_FIELDS =
* IT_GROUP_BY_FIELDS =
* IT_ORDER_BY_FIELDS =
* IT_AGGREGATE_FIELDS =
* IT_TOPLOW_FIELDS =
* IT_SORTORDER_FIELDS =
* IT_CALLBACK_EVENTS =
* IT_OUTPUT_FIELDS =
* IT_HAVING_FIELDS =
EXCEPTIONS
no_values = 1
OTHERS = 2.
*// No Need to populate error
IF sy-subrc <> 0.
MESSAGE w002(wusl).
* Implement suitable error handling here
ENDIF.
几行代码,兼具 ALV 报表的功能,何乐而不为,赶快使用起来吧,如图所示:
本篇文章分享到这,喜欢的点点关注和收藏~