• 如何对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.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
  • 相关阅读:
    0基础跟我学python---进阶篇(1)
    spring---第四篇
    编程新时代:Amazon CodeWhisperer 助您轻松驾驭代码世界
    [论文阅读|博士论文]面向农作物叶片病害鲁棒性识别的深度卷积神经网络研究
    激光雷达反射率标定可提高自动驾驶道路安全
    百趣代谢组学资讯:“二代和三代宏基因组+代谢组”三剑合璧,揭秘健康个体间的肠道菌群SV突变
    操作系统:服务接口
    web前端大作业:旅游网页主题网站设计——武汉旅游网页设计(11页)HTML+CSS+JavaScript
    Studio One6.5最新版本新增了对Linux的支持
    [Codeforces] combinatorics (R1200) Part.1
  • 原文地址:https://blog.csdn.net/stone0823/article/details/126823964