当前位置: 首页 > news >正文

如何对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.

相关文章:

  • Spring-06 Xml和注解方式配置Aop
  • 同步请求和异步请求(利用axios)
  • 猿创征文|瑞吉外卖——移动端_笔记
  • SpringBoot异常处理——异常显示的页面
  • 高等数学二从零开始学习的总结笔记(持续更新)
  • 无服务器学习01:基本概念+优点+面临的挑战
  • C#实验二
  • 熟悉c语言结构体
  • uboot源码分析(基于S5PV210)之启动第二阶段
  • 【分布式】分布式系统、Redis中间件 、Cache穿透、击穿、雪崩
  • Rust基础语法
  • 电子知识学习网站
  • 全站最简单 “数据滚动可视化大屏” 【JS基础拿来即用】
  • Vue项目实战——【基于 Vue3.x + Vant UI】实现一个多功能记账本(开发导航栏及公共部分)
  • ScalableViT网络模型
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • bearychat的java client
  • ES6系列(二)变量的解构赋值
  • ES6语法详解(一)
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Javascript基础之Array数组API
  • leetcode388. Longest Absolute File Path
  • python学习笔记 - ThreadLocal
  • Twitter赢在开放,三年创造奇迹
  • windows下使用nginx调试简介
  • 工作中总结前端开发流程--vue项目
  • 每天一个设计模式之命令模式
  • 如何实现 font-size 的响应式
  • 网页视频流m3u8/ts视频下载
  • 异常机制详解
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 智能网联汽车信息安全
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 数据可视化之下发图实践
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #define,static,const,三种常量的区别
  • #mysql 8.0 踩坑日记
  • #大学#套接字
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $.ajax()参数及用法
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (2)nginx 安装、启停
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (算法)Travel Information Center
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)c++ std::pair 与 std::make
  • (转)详解PHP处理密码的几种方式