- 博客(31)
- 收藏
- 关注
原创 SAP-HCM模块-生成和修改工作日程表
背景:十月份过了国庆之后,有HR同事反馈部分班次设置的工作日不对,导致考勤核算异常。方式1.SPRO-时间管理-工作日程表规则和月工作日程表-手工生成工作日程表。方式2:直接进入事务码PT02进行修改。仅作记录,自我学习。
2024-10-16 11:26:55 168
原创 Oracle 11g数据库与某个表的最新一笔记录进行关联
这个sql语句中用到了row_number()的窗口函数(Oracle内置函数),它根据B表中的XXX和XXXXX字段分组,然后根据B表中的INDATE进行了排序。背景:最近在写Power BI的看板,而表中的数据都是上亿条记录的,各个表的关联关系非常复杂。with c as 则是将结果集存放到内存中,建一个临时表c存储这些结果数据,然后a表直接跟c关联,c.rn = 1 就是最新的记录。但是,由于我所在公司的数据量太大,这样跑的效率仍然很低。举个例子,比如A关联B表,正常来说看板是这样写的。
2024-08-23 15:05:23 404
原创 上传PDF、DOC文件到SAP HCM系统中案例
背景:公司最近在上电子签系统,以实现劳动合同、保密协议等文件的去纸质化,保存为电子档文件,而企业的信息化的中心是SAP ERP,于是领导要求将签好的电子文件存储到HCM中。
2024-08-22 11:56:54 409
原创 SAP HCM 失败的HR结构权限
作者接了写入数据到HCM的任务,故想在测试系统自己做一笔数据试试,但是奇怪的是,作者本身是sap_all的权限,却在pa30无法读取人员信息。于是乎,通过各种手段查询资料,这方面作者要提一句,不要问AI,可能因为受众少的原因,ai在这方面回答的不算出色,甚至有点误导。注意SU53中的这张图,提示缺少什么类型就给他配什么类型,如图缺少P就给P,提示计划版本01,就给配01.(SU53如下图)第二步,进入OOSB--用户(结构权限),给用户配上上一步配好的参数文件,点击保存。2.OOSB--用户(结构权限)
2024-05-31 15:36:43 270
原创 ABAP--SQL语句查询程序(开箱即用)
& 包括 ZOPENSQLF01。*& 包括 ZOPENSQLTOP。*& 包括 ZOPENSQLF02。*& 包括 ZOPENSQLF04。*& 包括 ZOPENSQLF06。*& 包括 ZOPENSQLI01。*& 包括 ZOPENSQLI01。
2024-03-29 17:55:50 1502
原创 Oracle数据库中的提示(hint)
咨询同事后,发现应该是数据库CBO帮我基于成本优化了代码,虽然本人写得sql是查询temp表的tss字段,但是数据库还是帮我找了c表中的tpd_value字段,并尝试转化为number类型(C表中,tpd_value字段有很多空值,所以必然转化不成功),出现报错提示ora-01722.我们写的sql,数据库CBO会自动帮我们优化成节省成本的代码去执行,当然,这也会带来一些不必要的麻烦。图中,TPD_VALUE是字符串类型,本人本意将其转为数字类型后,存储到TEMP表中,然后与1比对,没想到,这样会报错。
2024-03-11 18:29:18 689
原创 ABAP那些坑
背景:作者所在公司的SAP系统,工单有关联关系,比如说有A,B,C三张工单,A可以关联到B,B可以关联到C,但是生产线始终有A工单进行生产,B,C工单仅用于统计报工,不会下发到MES系统。ABAP认为,作者是声明了两个变量,但是l_rpl_aufnr的类型是C(1),而l_rpl_aufnr_f的类型是afko-aufnr,由于工单是0开头的12位字符串,这里into甚至不会报错,直接给工单里的第一个字符0到l_rpl_aufnr,直接导致死循环。吃过此亏,谨以为记。写完之后,自信回头,传到生产机。
2024-03-02 16:26:20 258
原创 MES&WMS分BU项目经验教训(2)
Parallel.For处理同样的数据时间会比直接使用for循环快300s左右,效率大概加快20%,这是因为单次循环里面每一笔数据都跑得很快导致,如果单次循环里面的速度越慢,Parallel.For的优势就会更明显。在上一篇文章中,博主是放弃了调用一次sap,一次性处理所有数据的方式,从而选择了多次调用sap,一次处理一笔货物移动的方式。// 设置最大并行数为系统可用的逻辑处理器核心数量。这次案例说明了,即便处理相同的数据,也不是并行的速度一定会比单线程运行有很大的提升,这算是一个小小的经验教训吧。
2024-01-03 09:56:33 450 1
原创 MES&WMS分BU项目经验教训
涉及到MES和WMS改造非常多,例如:SAP下达工单到MES要带MRP范围、MES下达备料需求给WMS也要带对应的BU标识、WMS要根据BU标识划分仓位库位等等。此次经验教训来自于WMS拆分BU上线后,仓库部门会提供一份历史库存清单,这份清单包含历史库存料号、现有库存、旧仓位、分BU后的新仓位等信息,而博主需要根据这份清单,做一个程序批量移动WMS和SAP的库存。SAP移动库存的程序很简单,整合一下excel的信息,调用标准的货物移动BAPI即可。
2024-01-02 12:05:02 2010
原创 基于.NET的一些C#小技巧
1.关于Task类和Tread类,很明显,他们都是微软提供给开发者控制线程的类,理论上Task类应该用得更多,甚至百度上搜C#多线程都是介绍Task类的。后面经排查发现,其他线程跑完的时候,关闭了数据流,因为用的是同一个数据库对象,所以这个跑得慢的线程就没法把数据写入数据库了,增加一段代码解决。介绍一下背景,公司日常生产中遇到一个BUG,发现某些电池的电压值不存在于系统中,经排查,原生文件中有该电压值,只是代码获取不到。//循环声明线程去获取文件里的电压值,假设资源足够,暂时也没遇到过资源不足的情况。
2023-12-24 17:19:37 78 1
原创 计算点到点集合的最短距离问题
在本文中,我们讨论了点到点集合距离计算的问题,并介绍了使用 KD 树和并行处理的解决方案。这种方法能够显著提高计算效率,特别是在处理大量数据时。希望本文能为读者提供有价值的参考,鼓励在实际应用中探索更高效的数据处理和计算方法。
2023-12-18 23:07:31 386
原创 OOALV的一个实例
重要的是要会调用标准类中的方法,sap中方法的返回值并不会很明显,很多时候需要读文档和调试才行,当然现在也可以问ai,但是ai准确度不高。gr_column->set_short_text( '物料编号123123' ).* " 填充内部表 gt_table(这里是示例,你需要替换为实际的数据源)" 获取 ALV 列对象。" 显示 ALV 表格。" 创建 ALV 对象。纯手敲实例,复制粘贴可运行。
2023-12-18 18:49:43 50
原创 项目实战:使用C#字符串拼接将DataTable批量插入Oracle 11g数据库
1.oracle数据库中split函数估计大家都不陌生,这个函数用于拆分字符串,但是由于我们的字符串太大了,使用的是clob类型进行存储,所以要写一个clob_split的函数,将clob拆分成对应。最后总结:做项目中由于现实条件的制约,总是会存在各种各样奇怪的因素,如此次项目,原本只是一个简单的功能,利用OracleBulkCopy 类可以轻松解决,但是由于行业生产线方面的原因,//接下来,要在存储过程中,将字符串的信息解析出来并插入预先定义好的表中,在此之前,需要依赖两个自定义函数。
2023-12-13 16:17:38 620 1
原创 谈谈佛教-空性
初读这个故事,大家从字面上都会觉得惠能的佛歇胜神秀一筹,但是仔细一想,从普世价值和教育意义上来说,“时时勤拂拭,勿使惹尘埃”明显更实用和实际的指导意义,适用于日常生活中的各种情境,提醒人们时刻保持内心的清净和警觉,避免被世俗的烦恼所困扰。传统游戏中,玩家有固定的变强路线,而“时时勤拂拭,勿使惹尘埃”则告诉我们,玩游戏应该用心运营,这才能一步一步变强。但是“本来无一物,何处惹尘埃”出来就告诉你,规则都是假的,我玩游戏不需要规则,变强是一部分人的游戏玩法,而我不喜欢做游戏的榜一之类的。这里强调的是自由度。
2023-12-11 23:56:52 87
原创 设计模式之工厂模式(C#)
工厂模式是最简单且最常用的设计模式之一,主要利用接口的特性:允许实现类来实例化接口类型的变量。由于 ConcreteShapeFactory 类实现了 IShapeFactory 接口,因此可以将一个实现了接口的类的实例赋值给接口类型的变量。由于本人职业原因,目前只会发C#和ABAP两种编程语言的文章,发文也是为了自我总结和学习,但是代码都是相通的,希望文章能带给大家帮助。接口的一个重要特性:允许用实现了该接口的类的实例来实例化接口类型的变量。// 实现形状的工厂接口的具体形状工厂类。
2023-12-10 17:28:10 47 2
原创 软件工程中的设计模式
不久前的面试过程中,面试官问了一些设计模式的概念。老规矩,所有光讲概念,不讲代码的文章都是耍流氓,下面展示一段由C#编写的桥接模式的示例(ps:桥接模式属于结构型模式的一种,强调类和对象的组合)3. **行为型模式**:用于对象之间的通信和职责分配,包括观察者模式、策略模式、模板方法模式、命令模式等。2. **结构型模式**:用于处理类和对象的组合,包括适配器模式、装饰器模式、代理模式、组合模式等。1. **创建型模式**:用于对象的创建机制,包括工厂模式、抽象工厂模式、建造者模式、单例模式等。
2023-12-09 17:27:35 98
原创 C#委托机制的作用和优势
下面我们来讲讲委托的作用,光说理论,不写代码举例的都是耍流氓,文章底部有使用委托的最简单例子,起码可以增加代码的可读性哈哈哈~总的来说,委托是 C# 中非常重要的一种特性,它在事件驱动、异步编程、解耦和灵活性等方面发挥着重要作用,提供了一种强大而灵活的方法来处理方法的动态调用和处理。委托可以帮助降低代码的耦合度,提高代码的灵活性和可维护性。C# 提供的泛型委托类型(如 `Func` 和 `Action`)允许定义各种不同类型的方法签名,使得委托能够表示不同参数和返回值类型的方法。
2023-12-09 14:24:06 890
原创 abap并行处理框架
由于abap不像C#,java等编程语言,它没有多线程机制,但是sap官方提供了一个并行处理框架,来实现在sap系统内处理大量数据的方法。lt_jobs TYPE TABLE OF bgRFC_JOBHANDLE, " 存储并行处理作业句柄。DATA: lt_tasks TYPE TABLE OF i WITH EMPTY KEY, " 存储任务列表。lt_results TYPE TABLE OF ty_result, " 存储结果。* 调用并行处理框架。
2023-12-09 13:52:22 145
原创 C#异步多线程的例子
下面用C#写一段伪代码来使用异步多线程实现一个简单的任务调度器,可以接受多个任务,并使用多线程并行执行这些任务。Console.WriteLine($"任务 {taskNumber} 开始执行...");Console.WriteLine($"任务 {taskNumber} 执行完成.");// 这里延时2秒来模拟任务执行时间。Console.WriteLine("所有任务已完成。// 模拟创建多个任务,这里假设有5个任务。// 模拟任务执行的时间。// 等待所有任务完成。// 模拟任务执行的异步方法。
2023-12-09 13:36:46 72
原创 SAP中锁的概念
管理员和开发人员需要了解不同类型的锁以及它们如何影响系统的性能和并发访问,以便有效地设计和管理数据访问策略。在SAP中,锁是用于管理并发访问数据的机制。:当一个事务尝试获取某个数据的锁时,如果该数据已经被其他事务锁定,就会发生锁冲突。当一个事务正在对数据执行操作时,系统会对相关数据进行锁定,以确保事务能够完成并维护数据的完整性。:SAP使用锁来管理并发访问,以防止多个用户同时对相同数据进行修改或访问,从而避免数据混乱和不一致。:一旦事务完成了对数据的操作,系统会释放相应的锁,以允许其他事务访问这些数据。
2023-12-09 13:14:53 117
原创 C#使用多线程读取多个XML文件
所以,即使有100个XML文件,但在整个处理过程中,同时处理的任务数量始终不会超过限制的最大并行任务数量(10个)。在给定的示例代码中,通过限制最大并行任务数量为10个,尽管有100个XML文件,但代码仅同时处理最多10个文件。循环中的任务创建部分,会检查当前并行任务数量,并在达到最大并行任务数量时停止创建新的任务,直到某些任务完成并释放了资源。因此,该代码能够处理所有100个XML文件,但处理的同时最多只有10个任务在执行。),然后移除已完成的任务,以便腾出一个空位来启动新的任务。
2023-12-09 00:56:27 184
原创 C#将字符串反射成可执行语句
在项目中,我们时常遇到要将字符串转化为可执行语句的需求。但是我百度上找了一圈竟发现没几个人能正确写出反射的具体代码。Console.WriteLine($"计算结果:{result}");Console.WriteLine("编译错误:");// 通过反射获取 Calculator 类型和其方法。// 创建 CSharpCodeProvider 实例。// 获取编译后的程序集。// 调用方法并输出结果。// 添加需要的程序集引用。// 要执行的代码字符串。// 编译代码字符串。
2023-12-09 00:40:46 137 1
原创 SAP报工接口
E_MESSAGE = '获取工作订单属性时发生错误。'. " 错误消息。E_MESSAGE = '报工和物料移动操作成功。E_MESSAGE = '创建物料移动时发生错误。'. " 错误消息。E_MESSAGE = '报工过程中发生错误。E_SUCCESS = 'S'. " 成功标志。E_SUCCESS = 'E'. " 错误标志。E_SUCCESS = 'E'. " 错误标志。E_SUCCESS = 'E'. " 错误标志。E_SUCCESS = 'E'. " 错误标志。
2023-12-09 00:20:53 210
原创 C#将DataTable中的数据导出到Excel
作为一名程序猿,常常遇到用户要导出数据的情况,其中将DataTable中的数据导出到excel最为频繁。saveDialog.Filter = "Excel 文件 (*.xlsx)|*.xlsx";Console.WriteLine("导出失败:" + ex.Message);saveDialog.FileName = "导出数据.xlsx";// 将 DataTable 中的数据导入 Excel 工作表。// 调用导出到 Excel 的方法。// 保存 Excel 文件。
2023-12-08 23:51:36 976
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人