- 博客(124)
- 资源 (6)
- 收藏
- 关注
原创 SE16N 外键校验报错问题
DEBUG过程中,定位到数据校验部分,发现当外键定义的关联字段中存在某些不在对应维护表中的字段时,系统生成的动态WHERE条件会自动将这些不存在的字段设置为空值。SE16N维护时,偶尔有一些莫名奇妙的校验报错,条目XX在表XX中不存在,但是实际数据时存在的。该外键将导致ALV表格维护时无论怎么填写数据均报错(外键检查不止检查当前更新字段)1 设置外键的时候将不在该表的字段设置默认值。以PA0008中的薪资等级为例。2 配置表维护上对应为空的数据。
2024-11-30 21:07:25
289
原创 SAP SM69命令无法处理带空格文件名
通过demo测试,发现通过函数SXPG_STEP_COMMAND_START调用OS命令无法处理文件名带空格的场景,最终增加一步脚本移除文件名中空格,考虑到脚本执行的可监控性,没有全部通过脚本处理。经过测试发现对接系统生成的文件名含空格(文件生成为已有功能,不同意修改),当执行命令时解密失败。猜测标准函数处理时,将命令按空格分割后将文件名使用单引号或者双引号包含,因此无法通过转义符,单引号和双引号处理。项目中有读取FTP加密文件并解密的需求,由于加密算法的限制,考虑采用OS命令解密的方式。
2024-11-30 21:07:12
432
原创 SAP Native SQL 的简单说明
Native SQL使用特定于数据库的SQL语句,但是可以访问比Open SQL 更多的表,更多的操作,缺点也很明显,比如没有语法检查,导致一些问题在运行时才能发现。测试表为随机生成的100W条数据,根据单主键获取多条数据,通过选择条件和执行顺序排除缓存的影响,大概结果为Open SQL 和Static Native SQL的效率相差不多,均优于Dynamic Native SQL,其中一次的输入截图如下。2 访问仅在数据库中的表,比如常见的慢SQL查询,以及处理SE14报错的表。
2024-11-30 21:06:52
489
原创 ABAP OPEN SQL 执行成功时的判断误区
使用上述语句时不能使用sy-subrc判断是否有对应数据,考虑到使用场景,这里可以使用取出值判断后续逻辑(取出值无法区分存在数据为空和不存在数据的情况)使用该语句时,需要使用取出值判断是否存在对应数据,这一点和常使用的判定存在值的COUNT( * )不一样。COUNT( * ) 输出结果如下。
2024-11-30 21:06:31
326
原创 SAP HR 逻辑数据库PNP简单说明
当pnp_sw_skip_pernr = 'N'.时,如果需要使用逻辑数据库权限过滤人员,由于此时所有人均会走GET PERNR节点,所以需要增加人员过滤逻辑。该节点在START-OF-SELECTION和END-OF-SELECTION事件流之间,逻辑数据库的筛选逻辑以及信息类型取值逻辑均在这一步骤处理,使用REJECT语句可直接终止该节点,执行END-OF-SELECTION事件流。该步骤内部逻辑是将员工分包处理,更改选择屏幕参数后,当前包内的员工执行完,进行下一个包的处理时会生效。
2024-08-26 20:48:00
742
原创 SE11 没有激活的名称表存 No active nametab exists for
OPEN SQL 中无法执行数据库表删除操作,这一步骤可以让basis协助处理或者使用方法cl_sql_statement->execute_ddl 进行操作。SE11中减少某个非空表的字段的长度后,在SE14中的操作不当,并且对该表进行了删除重建的操作后,发生SE11激活该表报错。2. 查出数据库表中数据后,放弃使用该表名,并更换新表名进行创建激活。出现了一些未知原因,导致该表在底层数据库存在,但是运行时对象不存在。1. 删除或者重命名数据库表,再进行激活操作。
2024-08-26 20:47:41
250
原创 SAP 有趣的‘bug‘ 选择屏幕输入框没了
此时将代码修改到上一个版本,并在AT SELECTION-SCREEN OUTPUT下清除该值,仍然没有输入框。如果我们给这个字段设置一个默认值,参考如下代码,这时将会输出什么呢?如下代码将会输出一个P_U的字段。
2024-08-26 20:47:25
579
原创 ABAP 代码执行中断时ST22无对应DUMP记录
比如代码调用中抛出了异常,却没有在当前层级处理,对于此类异常需要通过其它日志查看,比如odata接口错误日志。比如memory dump会记录在SM21日志下,ST22无对应记录,参考note2238247。比如查询超过保留期限的dump日志或者对应日志已被删除,需要结合st03n等日志进行判断。比如仅可查看当前client的dump,参考note1974263。3. 异步RFC或者odata接口中发生了未被捕获的可捕获异常。2. 记录在SM21。
2024-08-26 20:47:05
286
原创 ABAP 发送正文含图片邮件
使用ABAP发送正文中带图片的邮件,使用ABAP在SICF发布直接通过URL访问的文件,ABAP发送HTML邮件,导入MIME对象到系统,通过URL访问MIME对象,发送邮件内容中含mime对象的邮件
2024-07-06 13:22:02
430
原创 ABAP 生成word文档
简单文件的输出,对于下载后不需要数据处理的文件来说,更优于excel文件的生成。参考ZABAPDOCX包下示例程序,可直接执行下载word文档。选中要设为变量的文本,点击格式文本,然后在属性页签设置变量名。如果需要做格式转换,建议借助OLE或者其它工具进行格式转换。通过开发工具->空间->格式文本为word添加变量。模板使用示例参考ZABAPDOCX包下的模板。需要下载word文档以供打印签字或者查看。如下示例为OLE方式转换为PDF文件。
2024-07-06 13:21:42
576
原创 DUMP SYSTEM_NO_ROLL/TSV_TNEW_PAGE_ALLOC_FAILED
TSV_TNEW_PAGE_ALLOC_FAILED data(2048) type c 等冗余的数据定义由于该声明会使用空格填充未到4096长度的部分,会占用过多空间,导致SYSTEM_NO_ROLL 的dump。稍作调整,会导致TSV_TNEW_PAGE_ALLOC_FAILED的dump。dump产生的原因为内存不足,考虑从两方面解决,调整内存参数和减少内存使用。推荐使用string替代此类长字符串的定义。
2024-05-19 08:55:39
572
原创 FPM 快速报表开发
将FPM报表开发简化为类似GUI端ALV的开发过程::定义数据对象,选择屏幕;4. 创建search UIBB 和list UIBB并填写feeder 类。需要继承基础类并重写对应方法,复制或新建FPM应用,使用新报表对应的类。使用FPM开发报表时,如果报表字段过多,页面拖拽等操作不方便。可扩展实现一个FPM应用根据不同的URL参数,来展示报表。如下以新建FPM应用为例(可直接拉至文末查看代码)可添加权限,数据源可配置等功能,作为报表中心。报表数量过多时,新建应用操作步骤较为繁琐。
2024-04-25 21:54:27
537
原创 SAP ABAP 打开URL链接
SAP ABAP打开URL链接,ABAP打开超过255位长度URL链接,FPM应用访问URL链接,ABAP设置打开URL链接的浏览器,ABAP使用内置浏览器打开URL链接
2024-04-25 21:53:44
1147
原创 ABAP 遗传算法求解
INIT Instance Method Public 初始化ADD_VAR Instance Method Public 添加变量GET_RESULT Instance Method Public 获取最佳结果GET_RECORD Instance Method Public 获取过程记录CALCU_FITNESS Instance Method Protected 适应度计算ELIMINATE Instance Method Protected 淘汰个体。
2024-04-25 21:53:19
294
原创 ABAP数值运算
反正弦函数 结果-π/2到π/2,参数-1到1。正弦函数,结果-1到1,参数-π/2到π/2。反余弦函数,结果0到π,参数-1到1。符号,负数=-1,0=0,正数=1。余弦函数,结果-1到1,参数0到π。反正切函数 结果-π/2到π/2。自然常数e为底的指数函数。不小于该值的最小整数。不大于该值的最大整数。自然对数,参数大于0。
2024-04-25 21:52:54
643
原创 SAP fiori 第三方网页认证登录(伪)
从需求来讲,一般使用第三方网页登录针对的是单个网页,所以对SAP账号的标准功能依赖度不是很高,可以通过代码逻辑处理。基于这种思路,使用预先设置登录数据的fiori应用页面,在页面打开时调用后端接口进行认证,认证成功则返回对应的账号,认证失败,则跳转错误页面,或者认证登录页面。查询资料,翻阅官方文档,咨询basis顾问,sap fiori暂不支持基于oauth2.0的第三方认证登录的,此处提供一种曲线实现第三方网页登录的实现方式。2. 免登录页面登录验证需要优先其它标准登录验证,保证正常登录验证。
2024-04-25 21:51:55
607
原创 ABAP json解析使用引用代替预定义数据结构
处理:使用引用类型来定义结构中的纵深部分来达到“省事”的目的,缺点在于访问时需要使用指针动态访问。也可以参考XX根据已处理好的json(不压缩且包含所有数据)来生成定义部分的代码。背景:在解析JSON数据时,通常会事先为定义相应的ABAP数据结构。但是,当遇到一些结构纵深较为复杂的情况时,会比较麻烦。
2024-04-25 21:51:26
489
1
原创 SAP问题 OPEN SQL 取不到值
数据库中有数据,但是open sql取不到数据,ST05跟踪发现无数据库访问记录,仅有缓存访问记录,确定表缓存的问题,使用/$TAB清除表缓存,也可以在AL12中操作或者上报Basis。排除原因1和2,根据报错消息,调试测试和生产走向不同分支的节点,发现正式环境一个SQL语句取不到数据导致最终报错。SE16N同样条件能查询到数据,且未转换的值和查询条件值一致,进一步使用DB02 SQL判断同样数据的确存在。
2023-12-29 17:16:29
891
原创 SAP缓存 表缓存( Table Buffering)
在单记录缓冲和通用缓冲中,也会保存表或视图中不存在的行的信息。在通用缓冲和完全缓冲中,表或视图的所有数据都在一个步骤中加载并在数据库中排序。第二步:缓存中无该查询数据的记录,查询数据库该表当前client所有记录(表设置为通用区域缓冲,通用键值为client)并更新缓冲区(无数据,仍然记录键值,以备下一次查询)在较大的表中,只有在频繁读取大量数据的情况下,完全缓冲才是值得的。访问具有单个记录缓冲的表或视图,而不指定(在WHERE条件中)主键的所有键字段的所有由AND连接的相等条件。
2023-12-29 17:14:56
2597
原创 ABAP算法 模拟退火
模拟退火算法包含退火过程和Metropolis算法两个部分,体现在外循环和内循环中,外循环就是退火过程,将固体从较高的温度按照降温系数k使温度按照一定的比例下降,当达到终止温度tn时,退火过程结束。内循环为在固定温度下,不断迭代寻求当前温度下能量的最低值,Metropolis 算法可以使得结果跳出局部最优值。在求解复杂问题时,模拟退火算法可以跳出局部最优解获取全局最优解。算法求解过程中主要的两个重要数据,扰动量的多少以及新解接受概率,由于这两个参数依托于实际计算场景,因此使用两个参数控制。
2023-11-28 22:48:22
842
原创 SE11数据表外键应用-SM30 表维护
外键作为数据库表的一个重要属性,但是在SAP中却很少使用,此处简单说明外键在表维护中起到的作用。为数据库表字段设置外键,并生成表维护后,默认使用外键表作为搜索帮助,且可以校验字段有效值;设置外键在创建维护视图时带出关联视图,可以实现表维护时带出键值描述的功能。
2023-07-30 19:45:00
957
原创 SAP 自定义BADI增强点
标准化代码中预留客制化部分,保证代码主体完整性,可以在预留增强位置预留两种类型的增强处理,其一为标准增强类型的,增强部分代码属于增加的逻辑,其二对于部分多样化的逻辑,使用优先执行默认逻辑,有增强实施则执行增强实施中的代码逻辑。CL_BADI_QUERY 查询对应BADI实施数量。BADI默认调用类-在过滤器无对应实施时调用,否则不调用。BADI实例创建模式为创建实例化时,输出结果。BADI实例创建模式为重用实例时,输出结果。创建增强点包含的BADI定义。创建BADI定义对应的接口。创建BADI实施示例。
2023-07-30 10:59:03
958
原创 SAP客制化区域菜单和IMG配置清单
事务代码 SE43,操作如下添加菜单对象事务代码 SIMGH IMG structure需要创建dummy表并设置表维护页面设置参考对应代码参考--实现跳转到对应程序的编辑页面。
2023-07-23 10:21:50
967
原创 SAP 后台作业简单介绍 job
主要事务代码:SM36、SM37 debug调试 后台作业,代码启动执行后台作业,代码监控作业执行,多步骤执行作业
2023-07-23 10:20:42
1313
原创 SAP 删除SM58 rfc错误记录
SM58中积累了大量无需处理的错误记录,影响系统使用。在SM58页面点击删除,提示需要trfc账号才能删除。如下菜单路径,跳转删除功能。对应程序 RSARFCER。根据transactionID删除--程序 RSTRFCQD。
2023-07-23 10:19:48
1190
1
原创 SAP 执行失败JOB及dump日志监控
系统使用时间较长,存在大量的后台作业,用户量较大,需要及时监控后台作业状况及系统dump情况,以便及时处理。2. 查询屏幕填写日期前n秒系统中的dump记录--客制化程序。1. 查询屏幕填写日期前n秒状态为错误及未知的后台作业。3. 将上述记录发送邮件通知。PS:展示效果及发送邮件格式较为简陋。
2023-07-23 10:18:50
1207
原创 SAP工作流任务
灵活工作流沿用的传统工作流的活动节点,只是不再体现在流程图上,工作流的活动根据是否需要代理人可以分为两类,一类是自动后台处理的步骤,另外一类是需要代理人处理的步骤(一般为决策节点),其中需要代理人处理的步骤有两种实现:1. 使用dummy方法任务,通过事件来驱动节点的执行2. 复制标准决策任务调整,走标准方法处理任务节点。
2023-01-09 22:10:22
1111
6
原创 SAP灵活工作流运行时处理类
其它方法根据业务场景决定是否重写,每个方法的重写都可视为对流程逻辑的增强处理,比如方法IF_SWF_FLEX_IFS_RUN_APPL_STEP~AFTER_COMPLETION_CALLBACK在节点创建完成后调用,可以填充邮件通知逻辑等。重写方法IF_SWF_FLEX_IFS_RUN_APPL~RESULT_CALLBACK。该方法在流程完成后调用,用来处理流程结束后的逻辑可以获取工作流容器对象使用。
2023-01-09 22:10:10
482
原创 SAP灵活工作流条件增强
通过增强设置更为灵活的条件判断,增强点SWF_PROCESS_WORKFLOW_CONDITION。对象节点类型配置 node type for leading object could not found;IF_SWF_FLEX_IFS_CONDITION_DEF~GET_CONDITIONS 定义工作流条件输入值IF_SWF_FLEX_IFS_CONDITION_EVAL~EVALUATE_CONDITION 判断条件输入值是否满足逻辑。
2023-01-08 13:37:14
669
原创 SAP灵活工作流场景模板创建
事务代码:SWDD_SCENARIO 创建灵活工作流模板,并激活工作流模版创建示例1. 创建流程对象容器2. 编辑模板中的灵活块3. 设置工作流启动事件4. 设置工作流运行时事件5. 设置工作流输出结果(可选)6. 工作流控制类7. 创建流程活动8. 创建流程条件9. 代理规则9. 值帮助10. 参考时间11. 电子邮件模版12. 激活灵活工作流场景
2023-01-08 13:35:10
984
原创 SAP工作流对象类
工作流对象类的创建工作流触发IF_WORKFLOW Business Workflow工作流的数据内核为BOR或对象类,此处示例为工作流对象类的创建。
2023-01-08 13:34:34
1132
原创 SAP灵活工作流客制化值帮助
设置灵活工作流自定义值帮助1. 创建值帮助CDS视图2. 添加值帮助CDS视图对应的ODATA服务3. 在灵活工作流中设置搜索帮助4. 效果展示
2023-01-08 13:34:15
688
原创 SAP灵活工作流场景配置及Demo测试
配置灵活工作流场景,和收件箱操作按钮文本,测试流程触发和重启,撤回事件的响应1. 在Fiori app 管理工作流中配置流程场景2. 配置Fiori收件箱中对应任务的操作按钮文本3. 测试流程触发4. 测试其它事件效果
2023-01-08 13:33:48
1157
原创 SAP Webservice 发布外网SAP端代理配置
SAP Webservice接口发布外网的需求不算少见,一般是通过代理形式替换Webservice地址中的域名,但是完整的Webservice接口发布外网还需要以下步骤(如果调用方在不做这些配置的情况下可以正常调用,则无需处理。/webdynpro/sap/* - 条目对 /sap/bc/webdynpro/sap/ 下的所有 ICF 服务有效。/webdynpro/* - 条目有效对于 /sap/bc/webdynpro/ 下的所有 ICF 服务。NWBC 事务,APPLICATN 是 /NWBC/
2023-01-08 13:33:12
1774
原创 SAP灵活工作流(Flexible Workflow)
自定义灵活工作流、工作流对象类、灵活工作流工作流运行时处理类、工作流规则、灵活工作流节点逻辑条件增强、工作流活动任务、灵活工作流场景模板、灵活工作流场景配置、灵活工作流Demo测试、灵活工作流Inbox收件箱数据展示、灵活工作流搜索帮助、灵活工作流开发对象、浅谈灵活工作流的实现效果、标准灵活工作流、PR启用灵活工作流、标准灵活工作流邮件增强、标准工作流inbox页面配置
2023-01-08 13:32:02
2371
原创 ABAP Excel文件数据读取(xstring文件流)
使用标准类 CL_FDT_XL_SPREADSHEET,读取xlsx格式文件流数据,该类在note。2468709 – 标准类 CL_FDT_XL_SPREADSHEET 的使用 中说明不建议常规使用,可能有问题。使用ABAP2XLSX中的类zcl_excel_reader_2007。适用于通过接口传输的exce文件数据读取。读取数据,需要在系统中安装。
2022-09-21 21:33:29
2130
原创 SAP 标准附件下载
PR,PO 发票标准附件使用代码下载GOS 附件 Achive Link使用函数ARCHIV_GET_CONNECTIONS,BDS_GOS_CONNECTIONS_GET等也可以实现。
2022-09-20 20:32:17
788
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人