基于标准 API 进行开发时 Netsuite 不能直接在数据库层面去重怎么实现数据唯一性处理

作者:郑德鼎 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发

贺享乐

基于标准API进行开发时,Netsuite不能直接在数据库层面去重,怎么实现数据唯一性处理?

原创 贺享乐 爱记不记的记忆碎片

你问我答

爱记不记

>>>>

基于标准API进行开发时,Netsuite不能直接在数据库层面去重,怎么实现数据唯一性处理?

1. 场景说明及处理方式

在标准Netsuite中,不支持数据库直接操作更新创建,代码只支持api操作,而在api中,没有像数据库那样建唯一性索引来防止重复的操作,所以我们根据各个场景来用代码限制,防止数据重复。

1.1  单据点击按钮

在Netsuite中,有时用户会快速重复点击,或者在网速不佳的时候,会延时代码反应,导致代码逻辑重复运行。

1、通过js控制按钮的disabled属性,如果双击速度快,也会重复提交。因此我们采用全局开关变量的方式来实现

2、多个人点击了同一个单据界面的同一个按钮

1)除了客户端控制按钮的显示,服务端也要判断是否满足处理条件

2)点按钮提交到后台处理的程序,需要先给单据打上标记“正在处理”,提交到后台处理时,先判断标记的值,不为正在处理才正常提交

3、用户多次点击同一个按钮

一次刷新,按钮只能点击一次

1)、通过进入对应方法的时候禁用按钮

2)、将标识存入缓存,完成之后再修改,每次进入按钮对应的方法都从缓存中取数校验是否正在运行

1.2 同一个提交界面,多个人同时操作,勾选了相同的数据进行处理

1、插入时根据唯一标识判断是否已经存在了,不存在才处理

2、处理数据之前,先给数据打上标记,有标记的数据不再处理

1.3 同一个后台请求,既设置了定时运行,又可以通过手工提交运行。可能会运行相同的数据

1.插入时根据唯一标识判断是否已经存在了,不存在才处理

2.处理数据之前,先给数据打上标记,有标记的数据不再处理

这里的处理方式类似1.2

3.控制同时只能有一个请求运行

eg:正在定时运行时不允许手工提交

1.4 接口

1、接口表的同一条数据,可能被多个来源同时抓去处理

通过限制单一触发点或者在处理时做唯一性校验再创建后续逻辑

2、接口表有重复的数据

从接口表生成正式表时需要有判断唯一性标识

3、外部系统多次调用接口传同一个数据

在从对方系统接取数据的时候,需要对接口做重复性校验

-END-

作者:贺享乐

审核:谭广源

编辑:朱思聪

郑德鼎

关于作者:郑德鼎

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「基于标准API进行开发时Netsuite不能直接在数据库层面去重怎么实现数据唯一性处理.docx」整理生成,仅用于内部技术分享与学习交流。