- 博客(121)
- 资源 (3)
- 收藏
- 关注
原创 SAP中什么是虚拟装配?
虚拟装配指的是在 BOM 里被标记为虚拟件的物料,它并不对应实际存在的库存物料,主要作为一种结构上的组织元素,用于简化 BOM 的结构和管理。虚拟装配可以将多个相关的子项物料组合在一起,形成一个逻辑上的整体,方便进行计划、生产和成本核算等操作。
2025-02-26 17:08:19
555
原创 SAP中各种库存的概念
含义非限制性库存指的是那些在企业仓库中可以自由使用、不受任何特殊限制的库存。这些库存处于正常状态,可随时用于满足企业内部的各种业务需求,如生产领料、销售发货等,无需额外的审批或特殊处理流程。业务场景示例生产环节:制造型企业在安排生产计划时,可直接从非限制性库存中提取原材料投入生产。例如,一家家具制造公司计划生产一批椅子,其所需的木材、螺丝等原材料若存于非限制性库存,便可立即领用进行加工制作。销售环节:当企业接到客户订单后,可直接从非限制性库存中选取相应的成品进行发货。比如电子产品销售企业,在客户下单
2025-02-19 14:12:41
702
原创 PP模块常用事务代码
MD04:库存/需求清单(MRP结果分析)。MD07:MRP清单(按计划员显示需求)。MD05:MRP清单(按物料显示需求)。MD06:MRP清单(按工厂显示需求)。ME51N:创建采购申请(与PP集成)。ME21N:创建采购订单(与PP集成)。CA21:创建生产资源工具(PRT)。CA22:修改生产资源工具(PRT)。MD61:创建计划独立需求(PIR)。MD62:修改计划独立需求(PIR)。MD63:显示计划独立需求(PIR)。MD02:单项目计划运行(MRP)。MD03:多项目计划运行(MRP)。
2025-02-06 13:49:52
637
原创 MM和SD流程
原文链接:https://blog.csdn.net/qq_40977705/article/details/102627560。3、创建采购申请 ME51N 审批采购申请 ME54N 采购申请查询 ME5A。5、创建采购订单(参考合同创建) ME21N 审批采购订单 ME29N。7、创建销售订单(参考合同) VA01 >>编辑不完整日志。2、创建供应商 XK01 查询供应商 MKVZ。4、创建合同(参考采购申请创建) ME31K。3、创建合同 VA41。
2024-12-20 11:17:58
193
原创 MM模块常用表和表关系
在SAP系统中,MM(Materials Management,物料管理)模块涉及多个标准表及其字段关系,这些表存储了与物料管理相关的各种数据。
2024-12-20 09:32:47
1093
原创 ABAP中FIELD-SYMBOLS的使用
在ABAP(Advanced Business Application Programming)中,Field Symbols(字段符号)是一种特殊的数据类型,它提供了一种灵活的方式来操作内部表(Internal Table)和其他数据对象,而无需事先声明对应的数据类型。Field Symbols的主要作用是能够在运行时动态地绑定到任意数据对象上,从而实现对数据对象的引用和操作。
2024-12-19 14:45:04
418
原创 ABAP中范圍表的應用
在这个实际场景中,我们使用了Range表来定义和存储类别代码的范围条件,并基于这些条件从TVV1T表中筛选出了符合范围条件的产品记录。这里,我们使用RANGES语句来定义一个名为S_KVGR1的Range表,它参考TVV1T-KVGR1字段。假设在一个SAP系统中,有一个名为TVV1T的数据表,它记录了不同产品的类别代码(KVGR1字段)以及其他相关信息。现在,我们可以使用填充好的Range表S_KVGR1作为查询条件,从TVV1T表中筛选出符合范围条件的产品记录。这些记录就是我们需要的数据。
2024-12-19 14:19:12
324
原创 在Java中,为什么在lambda表达式中访问局部变量时,必须将其声明为final或等效的原因是?
如果在lambda表达式中访问非final的局部变量,并且该变量在执行过程中发生了改变,那么lambda表达式可能会使用已经失效的值。Lambda表达式的生命周期:Lambda表达式的生命周期可以超过包含它的方法的生命周期。如果在lambda表达式之外修改了一个非final的局部变量,那么在lambda表达式内部就无法获取到正确的值。需要注意的是,在Java 8之后,对于非final的局部变量,编译器会隐式地将其视为final(即具有隐式的final语义),以便在lambda表达式中使用。
2023-12-13 15:24:36
993
原创 记录一次nacos无法注册服务报错的问题
nacos注册报错显示java.lang.IllegalArgumentException: protocol = http host = null。否则就会报java.lang.IllegalArgumentException: protocol = http host = null。
2023-11-30 10:19:38
884
原创 【前端】使用json-server报错
当我们使用json-server模仿后端接口时需要运行json-server --watch index.json这个命令生成增删改查接口但是可能会报这个错误,如图。这时我们运行 npm i json-server -g命令即可,然后再重新运行json-server --watch index.json就行了。
2023-11-15 21:08:35
1400
1
原创 解决跨域的三种方案
因为跨域问题指的是浏览器和服务端的问题,服务端和服务端之间不存在跨域问题,可以让前端访问同源的nginx,然后nginx访问服务端,nginx再将结果返回给浏览器,这样也不会发生跨域问题了。服务端在响应头添加 Access-Control-Allow-Origin:*,表示服务端允许所有程序跨域访问服务,也可以把 * 改成允许的地址。前端直接使用script标签的src属性访问后端接口就不会产生跨域问题。由于服务端之间没有跨域,浏览器通过nginx去访问跨域地址。
2023-11-15 16:57:52
330
原创 private static final long serialVersionUID = 1L的作用是什么?
当一个类被序列化后,存储在文件或通过网络传输时,这些序列化数据会包含该类的结构信息。当反序列化操作发生时,Java虚拟机会根据序列化数据中的结构信息来还原对象。但是,如果在序列化之后,对类的结构进行了修改,例如添加或删除了字段、修改了继承关系等,那么旧版本的序列化数据可能无法正确地还原为新版本的类对象。这样就会导致反序列化失败,抛出异常。为了解决这个问题,Java提供了serialVersionUID这个变量。它是一个唯一标识符,用于标识一个类的版本。
2023-10-01 22:33:22
657
原创 分布式事务-TCC异常-空回滚
A服务调用服务C的try时服务出现异常服务B因为网络或其他原因还没执行try方法,TCC因为C的try出现异常让所有的服务执行cancel方法,比如B的try是扣减积分 cancel是增加积分,还没扣减就增加显然是有问题的。
2023-09-30 14:04:59
203
原创 分布式事务-TCC案例分析流程图
防止cancel方法在最后执行出现问题,用户收到提示已经退款成功但是由于cancel过慢或者出现问题(虽然最后会重试成功但是用户体验很差),可以做以下的业务sql模型优化(增加一个冻结金额)。
2023-09-29 22:16:19
1540
原创 记录一次关于嵌套事务传播机制的bug
这段代码是A嵌套B,B嵌套C,遇到的bug是C代码发生异常进行事务标记(因为使用的传播行为是默认的REQUIRED所以要等A事务进行rollback,C加入了A事务只能暂时进行标记),但是由于B代码进行了异常捕获返回给了A信息并没有抛出异常,导致A代码并没有进行rollback。
2023-09-24 17:01:36
91
原创 logback日志是怎么保证多线程输出日志线程安全的
logback日志框架使用了单例设计模式来进行日志输出。在logback中,Logger类是一个关键的组件,它负责记录和输出日志消息。Logger类使用了单例设计模式,确保在一个应用程序中只存在一个Logger实例。这样做的好处是可以确保所有的日志消息都被集中到同一个日志输出器中,避免了多个日志实例之间的冲突和混乱。通过单例模式,可以方便地访问Logger实例,并使用其方法来记录日志消息。例如,可以使用logger.info(“Log message”)来记录一条信息级别的日志消息。
2023-09-21 11:08:44
1135
2
原创 打印日志遇到的问题,logback与zookeeper冲突
在做项目时需要打印日志引入了logback打印日志,但是一直无法打印,于是一路查找原因。发现zookeeper中默认带的有个logback和我自己引入的logback版本冲突了,这样直接使用exclusions标签将zookeeper中自带的日志框架全部排除即可。按理说到这一步应该就没问题了,这次代码直接报错了,原来是最新版本的lockback与jdk8版本不匹配,于是我将logback版本进行降低就可以正常运行啦。
2023-09-13 22:36:52
472
原创 记录一次远程仓库删除.idea文件,Git提交冲突问题
刚开始传代码忘了写.gitignore文件了,然后给.idea文件也传到远程仓库里了,后来我给远程仓库的.idea文件手动删除,然后本地代码再提交就一直冲突。我寻思我给本地加的加上.gitignore文件,然后强制覆盖远程仓库,但是强制提交之后.idea还是被提交上了,.gitignore没生效。
2023-09-12 15:51:24
724
原创 springAop使用的动态代理是jdk还是cglib
需要注意的是,对于final类和方法,无法使用CGLIB动态代理,只能使用JDK动态代理。因此,当目标对象是final的或者目标方法是final的、static的、private的时候,Spring AOP会强制使用JDK动态代理。如果需要明确指定使用哪种代理方式,可以通过配置进行设置。CGLIB动态代理通过继承目标对象创建代理类,并重写目标对象的方法来实现代理功能。Spring AOP使用的动态代理可以是JDK动态代理或CGLIB动态代理,具体选择哪种代理方式取决于被代理的目标对象的类型和配置。
2023-09-10 09:02:36
798
原创 Zookeeper集群写操作的具体流程和数据同步
1.写操作和数据同步的流程写操作:zk中向leader进行一个节点的写操作时,leader会向所有的Follower发送这个写操作,当Follower的写操作超过半数成功时会将成功的结果返回给leader。数据同步:当写操作完成之后,zk集群会进行数据同步,leader将写操作完成的结果通知给所有的Follower节点,所有的Follwer节点会将leader节点的数据进行复制,确保自己的数据和leader上的数据保持一致。2.为什么Follower节点进行了写操作还要进行数据同步?因为并不是
2023-09-07 17:27:34
682
原创 什么是DMA操作?
在DMA操作中,有一个专门的DMA控制器,它负责管理数据传输的整个过程。DMA操作是一种计算机系统中的技术,用于实现设备之间的数据传输,而无需CPU的介入。通常情况下,数据传输需要通过CPU来进行中转,但是使用DMA可以绕过CPU,直接在设备和内存之间进行数据传输。需要注意的是,DMA操作需要特定的硬件支持,包括DMA控制器和相应的设备接口。此外,为了确保数据的安全性,DMA操作通常会设置权限和访问控制,以防止未经授权的设备访问内存。通过使用DMA操作,可以提高数据传输的效率,减少CPU的负载。
2023-09-02 23:35:58
501
原创 natApp内网穿透工作原理
如图所示,用户启动内网穿透工具会将token传入natapp服务器与我们自己的主机建立一个类似于websocket的长链接,当从外网访问我们主机的接口时,会进行一个本地接口地址的截取,然后进行拼接成我们主机应用的真实地址。然后将数据返回到natapp服务器,natapp服务器返回到浏览器。
2023-08-30 20:19:58
496
原创 支付宝支付流程分析--非对称加密
支付宝采用的是私钥加密,公钥解密。因为公钥是公众可知的如果使用公钥加密,那么黑客获取到公钥依然可以进行篡改信息。一般非对称加密两种方式 “公钥加密 私钥解密”,“私钥加密,公钥解密”图片有点小可以在新标签页打开查看或者保存到本地。支付宝支付为了防止信息被篡改采用的是非对称加密。
2023-08-29 22:51:33
264
3
原创 java中为什么自动装箱会有风险
为了避免自动装箱带来的风险,建议在需要频繁进行数值操作的情况下,尽量使用基本数据类型而不是包装类对象。另外,在进行自动装箱后,应该进行空值检查,并使用equals()方法来进行数值比较。每当进行自动装箱时,都会创建一个新的包装类对象,这会增加内存的使用量。如果多次进行频繁的自动装箱操作,可能会导致内存占用过高,从而影响程序的性能和运行效率。由于自动装箱对象是通过值传递的方式进行的,相同数值的包装类对象可能不是同一个实例。自动装箱将基本数据类型转换为对应的包装类对象,而包装类对象可以为null。
2023-08-23 13:18:33
134
原创 sql中判断日期是否是同一天
to_days(now())这样的方式进行比较,原因是由于日期数据类型在数据库中可能包含时间信息。如果直接比较两个日期,而不考虑时间部分,可能导致不准确的结果。使用to_days(start_date) = to_days(now())的方式是一种常见的方法,特别是在需要以天为单位进行日期比较时。
2023-08-09 22:10:31
2975
原创 RocketMQ集成Springboot --Chapter5
生产者,由于springboot没有专门对mq进行tag标记的方法,只是在topic:后面加上,所以只需 rocketMQTemplate.sendOneWay(“tagFilterBoot:TagA”,msg1);标记即可生产者代码如下消费者在注解处添加selectorExpression = "TagA || TagC"表达式选项即可。消费者代码如下。
2023-07-21 22:52:53
464
原创 RocketMQ集成Springboot --Chapter3
实际开发中如果没有顺序消费的必要需求,不建议使用顺序消费,顺序消费是单线程的效率比较低。
2023-07-21 19:32:38
474
原创 RocketMQ集成Springboot --Chapter1
实现一个监听器对象,重写其中的消费消息的方法。使用注解@RocketMQMessageListener(consumerGroup = “htpConsumerGroup”,topic = “helloTopicBoot”)consumerGroup组必须是唯一的,helloTopicBoot表示要监听的主题。最后生产者启动测试类发送消息,消费者运行主程序一直运行即可.
2023-07-21 12:21:58
370
練習無用的草稿11111111111111233333333
2025-03-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人