之前写过几篇:
如何对SAP数据库表进行增删改查操作 如何对SAP数据库表进行增删改查操作(2) Functional ALV系列 (05) - ALV 作为数据编辑界面
本次来看看如何在不用编码的方式来修改 SAP 表中的数据,主要解决临时性修改的需求。
RS_TABLE_LIST_CREATE 函数
经测试,RS_TABLE_LIST_CREATE 函数在表没有维护维护视图的时候,可以作为一个方便的数据维护方法。在进入界面之前,可以对需要维护的数据进行选择。在我的 SAP 系统中,有两个用于测试的表,zemployee 创建了 table maintenance generator (即可以用 SM30 来维护),zemployee1 没有创建 table maintenance generator。
此时,通过 SE37 对 RS_TABLE_LIST_CREATE 函数的使用进行测试。
可以进入 display 界面,但不能维护数据:
而 zemployee1 数据表,因为没有创建 table maintenance generator,则可以用此函数来维护:
对于没有创建“维护视图”的表,这种方法比其它方法更加便捷,对于维护了维护视图的表来说,该函数也是调用 view_maintenance_call。需要能找到响应的 view,比如 T001 表,V_T001 表就是用于维护 T001 表的视图。
SE16N_INTERFACE 函数
该函数对任意表都可以进行增删改查操作,如果表的行数太多,可能不方便找到相应的行项目。假设我们想要修改 T001 表:
将 I_EDIT 参数和 I_SAPEDIT 参数的值设置为 X 即可。
网上比较流行的基于调试更改 gd-edit 参数和 gd-sapedit 参数的方式,跟这个方法是相同的原理。
因为讲述这个方法的文章太多,这里就不必重复了。如果需要临时修改表数据,调试的方法比 SE16N_INTERFACE 容易定位行一些。
DB**TABLE 函数
SAP 提供了一系列函数,用于操作数据库表的数据,包括:
由于这些函数需要基于内表来操作数据,使用 SE37 测试的方式来执行并不合适,这些函数也不能在外部使用。简单演示以下 ABAP 方式如何使用。
report z_update_db.
data: gt_zstu like table of zstu,
gs_zstu like line of gt_zstu.
start-of-selection.
clear gs_zstu.
gs_zstu-mandt = '001'.
gs_zstu-zstuid = '6'.
gs_zstu-zsname = '布鲁克'.
append gs_zstu to gt_zstu.
call function 'DB_UPDATE_TABLE'
exporting
tablename = 'ZSTU'
* IMPORTING
* SQLCODE =
tables
inttab = gt_zstu
exceptions
db_error = 1
not_found = 2
wrong_param = 3
internal_error = 4
others = 5
.
if sy-subrc <> 0.
if sy-subrc eq 1.
write 'Database error'.
elseif sy-subrc eq 2.
write 'Not found'.
else.
write 'Other errors'.
endif.
endif.
report z_insert_db.
data: gt_zstu like table of zstu,
gs_zstu like line of gt_zstu.
start-of-selection.
clear gs_zstu.
gs_zstu-mandt = '001'.
gs_zstu-zstuid = '7'.
gs_zstu-zsname = '罗宾劳利'.
append gs_zstu to gt_zstu.
call function 'DB_INSERT_TABLE'
exporting
tablename = 'ZSTU'
* IMPORTING
* SQLCODE =
tables
inttab = gt_zstu
exceptions
db_error = 1
duplicate_key = 2
wrong_param = 3
internal_error = 4
others = 5
.
if sy-subrc <> 0.
if sy-subrc eq 1.
write 'Database error'.
elseif sy-subrc eq 2.
write 'duplicate key'.
else.
write 'Other errors'.
endif.
endif.
|