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

SAP-Fiori:系列(4)Gateway ODATA (V2) CURD之Delete

在 OData V2 服务中DELETE操作用于删除指定的实体资源。本文将从客户端调用、HTTP 协议细节、ABAP 后端实现、常见错误等方面全面介绍 OData 的删除功能。如果你已经熟悉了 OData 的查询GET和创建POSTDELETE 会非常简单——只需知道目标资源的 URI发送一个带正确认证和 CSRF token 的 DELETE 请求即可。1. DELETE 操作的核心概念HTTP 方法DELETEURI 格式/sap/opu/odata/服务路径/实体集(主键值)CSRF 防护SAP Gateway 默认要求所有写操作POST、PUT、DELETE都必须携带有效的X-CSRF-Token头。2. 完整的 DELETE 请求示例假设我们要删除ZUSERSet中Id为 3的用户。2.1 请求 URLhttp://主机端口/sap/opu/odata/SAP/ZXKJ_USER_SRV/ZUSERSet(3)2.2 请求头DELETE /sap/opu/odata/SAP/ZXKJ_USER_SRV/ZUSERSet(5) HTTP/1.1 Host: X-CSRF-Token:注意DELETE 请求通常不需要请求体body。只需 URI 和头部即可。2.3 操作示例这是系统存在的ZUSERSet中Id为 3的用户删除成功示例2.4 成功的响应HTTP 状态码204 No Content最常见表示删除成功且无内容返回响应体空某些服务也可能返回200 OK并在响应体中包含被删除实体的元数据但 OData V2 规范推荐使用204。4. ABAP 后端实现SAP Gateway在 SAP 系统中DELETE 操作的逻辑实现在DPC_EXT类的DELETE_ENTITY方法中。重写DELETE_ENTITY方法代码如下:DATA: ls_key TYPE zkjuser, lv_id TYPE int1. 1. 从 iv_key_tab 中提取主键值 READ TABLE it_key_tab INTO DATA(ls_key_tab) WITH KEY name Id. IF sy-subrc 0. lv_id ls_key_tab-value. ELSE. RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception EXPORTING textid /iwbep/cx_mgw_busi_exceptionbusiness_error message 主键 Id 未提供. ENDIF. 2. 检查记录是否存在可选DELETE 语句本身会检查 SELECT COUNT(*) FROM zkjuser INTO DATA(lv_mandt) WHERE id lv_id . IF sy-subrc 0. RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception EXPORTING textid /iwbep/cx_mgw_busi_exceptionbusiness_error message |用户 Id { lv_id } 不存在|. ENDIF. 3. 执行删除 DELETE FROM zkjuser WHERE id lv_id. IF sy-subrc 0. COMMIT WORK. ELSE. ROLLBACK WORK. RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception EXPORTING textid /iwbep/cx_mgw_busi_exceptionbusiness_error message 删除失败请重试. ENDIF.关键点解析主键提取参数it_key_tab是一个表每行包含字段名name和值value。你需要根据实体定义从其中提取所有主键字段。存在性检查可选但推荐可以给出明确的业务错误提示如“记录不存在”。事务提交删除成功后务必COMMIT WORK失败则ROLLBACK WORK。异常抛出用RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception返回错误客户端会收到400 Bad Request或500状态码及错误消息。5. 完整的 OData CRUD 对照表操作HTTP 方法URI 示例常见状态码是否需要请求体CSRF TokenCreatePOST/ZUSERSet201是 (Atom/JSON)必须ReadGET/ZUSERSet(3)200否不需要UpdatePUT / MERGE/ZUSERSet(3)204是必须DeleteDELETE/ZUSERSet(3)204否必须注意UPDATE 既可以通过 PUT完整替换实现也可以通过 MERGE/PATCH部分更新实现具体取决于服务配置。6 . 总结如果你已经完成了 OData 的查询和创建功能实现删除会非常顺畅。希望本文能帮助你快速掌握 OData DELETE 的使用。如果有任何问题欢迎在评论区留言讨论

相关文章:

SAP-Fiori:系列(4)Gateway ODATA (V2) CURD之Delete

在 OData V2 服务中,DELETE 操作用于删除指定的实体资源。本文将从客户端调用、HTTP 协议细节、ABAP 后端实现、常见错误等方面全面介绍 OData 的删除功能。如果你已经熟悉了 OData 的查询(GET)和创建(POST)&#xff0…...

Transformer模型中的LayerNorm与RMS Norm对比与实践

1. 标准化技术在现代Transformer模型中的核心地位Transformer架构自2017年问世以来,已经成为自然语言处理领域的基石技术。在这个架构中,标准化(Normalization)层扮演着神经网络的"稳定器"角色,直接影响模型的训练动态和最终性能。…...

3个步骤快速掌握MTK设备修复:新手完整救砖指南

3个步骤快速掌握MTK设备修复:新手完整救砖指南 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient MTKClient是一款强大的开源联发科设备修复工具,能够帮助用户解决手机…...

MTKClient终极指南:如何快速修复联发科设备变砖问题

MTKClient终极指南:如何快速修复联发科设备变砖问题 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient 当你的联发科手机或平板遭遇系统崩溃、无法开机、刷机失败等"变砖&quo…...

MySQL 远程访问实战:从基础操作到真实踩坑记录

MySQL 远程访问实战:从基础操作到真实踩坑记录本文记录了一次完整的 MySQL 远程连接踩坑过程,涵盖基础命令行操作、认证插件报错、IP 被拉黑等问题及解决方案。一、MySQL 基础命令行操作 1.1 登录与退出 # 本地登录(默认走 localhost&#xf…...

LangGraph 并发控制:如何防止多 Agent 同时操作资源导致的数据竞争

一、 引言 (Introduction) 钩子 (The Hook): 从ChatGPT的“分身乏术”到企业级多Agent的“致命混乱” 你有没有试过让ChatGPT帮你同时整理3份季度财报,同步核对5个不同来源的竞品价格,还要实时生成一封给投资人的更新邮件——然后看着它一会儿漏记了第三…...

Multi-Agent系统测试方法:确保协同效率与决策准确性

Multi-Agent系统测试方法:确保协同效率与决策准确性一、 引言 (Introduction) (预计字数12000,含场景示例、背景问题、核心预告、全文导读) 1.1 钩子:从自动驾驶车队的深夜惊魂说起 你有没有刷到过去年(202…...

规格驱动开发:用AI编码助手实现工程化协作与边界控制

1. 项目概述:当AI编码助手学会“看图纸”施工 如果你和我一样,长期在项目一线和各类AI编码助手(Claude Code、Cursor、GitHub Copilot等)打交道,那你肯定经历过这种场景:你给AI一个模糊的需求,比…...

AED设备原理与ECG信号处理技术解析

1. 自动体外除颤器(AED)的核心原理与医疗价值AED设备本质上是一个高度集成的嵌入式系统,它通过"感知-分析-决策-执行"的闭环工作流程挽救心脏骤停患者的生命。当患者出现心室颤动(VF)或无脉性室性心动过速(VT)时,心脏电活动处于混沌状态&#…...

Python在TVA算法架构优化中的创新应用(二)

前沿技术背景介绍:AI 智能体视觉系统(TVA,Transformer-based Vision Agent),是依托Transformer架构与因式智能体所构建的新一代视觉检测技术。它区别于传统机器视觉与早期AI视觉,代表了工业智能化转型与视觉…...

Python在TVA算法架构优化中的创新应用(一)

前沿技术背景介绍:AI 智能体视觉系统(TVA,Transformer-based Vision Agent),是依托Transformer架构与因式智能体所构建的新一代视觉检测技术。它区别于传统机器视觉与早期AI视觉,代表了工业智能化转型与视觉…...

使用yubikey-agent实现硬件级SSH密钥安全管理与无缝认证

1. 项目概述:为什么你需要一个硬件密钥管理代理 如果你是一名开发者,或者日常工作中需要频繁使用SSH密钥访问远程服务器、Git仓库,那么你一定对管理那一堆 id_rsa 、 id_ed25519 私钥文件感到头疼。它们要么躺在 ~/.ssh 目录里&#x…...

Pandas快速数据分析实战:紧急需求处理技巧

## 1. 项目概述:当数据分析遇上"快餐文化"上周三凌晨两点,市场部的同事突然发来一份300MB的销售数据,要求"天亮前给出关键趋势摘要"。这种场景下,优雅的代码架构和完美的数据管道都是奢侈品——我们需要的是像…...

VS Code MCP插件生态实战手册:从零搭建→性能压测→CI/CD集成的5步标准化流程

更多请点击: https://intelliparadigm.com 第一章:VS Code MCP 插件生态搭建手册对比评测报告 VS Code 的 MCP(Model Control Protocol)插件生态正处于快速演进阶段,主流实现方案包括官方预览版、社区维护的 mcp-serv…...

企业级Dev Containers标准化配置方案(已落地金融/云原生团队),含安全加固+CI/CD兼容+多架构支持

更多请点击: https://intelliparadigm.com 第一章:企业级Dev Containers标准化配置方案概览 企业级 Dev Containers 的核心目标是实现开发环境的一致性、可复现性与安全合规性。在大型组织中,不同团队使用各异的技术栈和依赖版本&#xff0c…...

从零搭建AI开发环境:手把手教你用Anaconda管理多个PyTorch+CUDA版本(Ubuntu 20.04/22.04实测)

从零搭建AI开发环境:手把手教你用Anaconda管理多个PyTorchCUDA版本(Ubuntu 20.04/22.04实测) 在深度学习项目开发中,不同项目往往需要不同版本的PyTorch和CUDA环境。比如一个项目可能基于PyTorch 1.8和CUDA 10.2开发,…...

Keras深度学习多分类任务实战与优化技巧

1. 深度学习多分类任务实战指南在机器学习领域,多分类问题就像一位超市理货员需要把上千种商品准确归到不同货架——每件商品只能放在一个正确位置,但选择范围却很广。Keras作为深度学习领域的"瑞士军刀",以其简洁的API和模块化设计…...

如何用Logitech鼠标宏实现PUBG零后坐力压枪?3步快速上手指南

如何用Logitech鼠标宏实现PUBG零后坐力压枪?3步快速上手指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 你是否还在为《绝地求生…...

别再只用K-Means了!用MATLAB手把手教你搞定更抗噪的K-Medoids聚类(附完整代码)

超越K-Means:用MATLAB实战K-Medoids聚类算法解决噪声数据难题 当你的数据集里混入了异常值,K-Means的表现往往会让你失望——那些偏离群体的数据点像磁铁一样把聚类中心拽离合理位置。这时候,K-Medoids算法就该登场了。与K-Means不同&#xf…...

Windows蓝牙图表突然不见了怎么办

重启电脑,注意不是关机后再启动,而是点击“重启”我试过一些其他的方法但都不奏效,只有这个快速解决了问题...

OpenOmniBot:端侧AI智能体实现Android自动化操作全解析

1. 项目概述:一个能“动手”的端侧AI助手在AI应用井喷的今天,我们早已习惯了与各种聊天机器人对话。它们能写诗、能编程、能解答疑问,但绝大多数都停留在“动口不动手”的阶段——它们理解你的指令,给出建议或生成文本&#xff0c…...

3秒破解百度网盘提取码:智能查询工具如何彻底改变你的资源获取体验

3秒破解百度网盘提取码:智能查询工具如何彻底改变你的资源获取体验 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾因找不到百度网盘提取码而错失重要资源?面对海量学习资料却卡在"请输入…...

智能体开发框架深度解析:从模块化设计到工程实践

1. 项目概述:从代码仓库到智能体开发框架的深度解构最近在GitHub上看到一个名为wshobson/agents的仓库,热度不低。乍一看标题“agents”,很容易让人联想到当下火热的AI智能体(Agent)领域。但作为一个在软件开发和AI应用…...

从‘内华达州离婚率’到‘A/B测试’:用可交换性思想理解分层模型的底层逻辑

从离婚率到A/B测试:用生活案例理解分层模型的底层逻辑 当内华达州的离婚率遇上统计学 1981年,美国内华达州的离婚率高达每千人13.9例,远高于其他州。这个看似简单的社会现象背后,隐藏着一个深刻的统计学问题:如何理解特…...

ComfyUI玩转WD1.4反推标签:避开onnxruntime-gpu与TensorRT的版本坑,保姆级环境配置指南

ComfyUI玩转WD1.4反推标签:避开onnxruntime-gpu与TensorRT的版本坑,保姆级环境配置指南 在AI图像生成领域,自动反推提示词(Tagging)功能正成为工作流中不可或缺的一环。WD1.4模型凭借其出色的识别准确率,成…...

从‘小乌龟’到命令行:一个老派Java程序员迁移到Git的心路历程与配置清单

从‘小乌龟’到命令行:一个老派Java程序员迁移到Git的心路历程与配置清单 第一次在IDEA终端里敲下git commit -m "initial"时,我的手悬在回车键上整整三秒——这行黑底白字的命令,怎么看都比TortoiseSVN那个绿色小乌龟图标少了些安…...

考场信号屏蔽器分布式信号屏蔽器手机信号屏蔽器

在当今信息时代,信号管控成为了众多场所的迫切需求。中科星月的分布式信号屏蔽器凭借其卓越的性能,成为了众多场所的理想选择。中科星月的分布式信号屏蔽器能有效屏蔽2.3.4.5G手机信号,还可屏蔽WiFi蓝牙信号。在学校考场中,曾有学…...

Python统计假设检验速查指南与实战技巧

## 1. 统计假设检验的核心价值与应用场景假设检验是数据分析师和研究人员最常使用的统计工具之一。在Python生态中,借助SciPy、StatsModels等库,我们可以快速实现各类统计检验。这个"17种统计检验速查表"的价值在于:当面对不同数据…...

家庭宽带问题(300兆带宽):手机能正常上网,但是笔记本电脑网速无法跑满。

一、首先是我的路由器设置如下: 二、一开始我手机连的是2.4G网络,使用“”全球网测“app测速如下: 测速网站:相对靠谱公正的22个测速网站(或APP或软件)大全(不断更新中)建议先收藏 后来我手机连上5Gwifi后…...

大模型这把锤子,能砸破多少芯片工程师的护城河

"大力出奇迹"——这是大模型最让人惊讶的地方。你以为某些任务需要专业积累,需要特定知识,需要领域经验,结果大模型上来就能给出一个像模像样的答案。这种"一力降十会"的感觉,出现的频率将会越来越高。现在很…...