如何对SAP数据库表进行增删改查操作(3)

之前写过几篇:

如何对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.
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值