函数技巧
长沙铁道学院-康帅傅
ABAP 7.58,你值得拥有
展开
-
ABAP2XLSX 自動優化列寬
【代码】ABAP2XLSX 自動優化列寬。原创 2023-06-27 13:59:36 · 279 阅读 · 0 评论 -
SAP MDG cross entity derivation data disppeared
MDG cross entity derivation failed原创 2023-04-10 01:01:09 · 148 阅读 · 1 评论 -
MDG cross entity data read from FPM feeder
【代码】MDG cross entity data read from FPM feeder。原创 2023-02-28 11:47:51 · 168 阅读 · 0 评论 -
ABAP转换数字为Excel列名(1->A)
使用ABAP2XLSX时,需要通过列名实现value方法调用,需要将列索引的数字12345转换为Excel列名ABCDE。原创 2023-01-17 12:49:51 · 326 阅读 · 0 评论 -
SAP请求TR管理小技巧(持续更新)
SAP TR变更请求管理原创 2022-09-02 09:11:20 · 705 阅读 · 0 评论 -
SAP ABAP Read Call Stack( for enhancement condtion)
Option1By classdata(lt_callstack) = cl_abap_get_call_stack=>get_call_stack( ).data(lt_format_stack) = cl_abap_get_call_stack=>format_call_stack_with_struct( lt_callstack ).Option 2By FMdata:callstack type abap_callstack, et_callstack原创 2022-05-25 18:01:21 · 299 阅读 · 0 评论 -
SAP message SV 597 fixed
BackgroundTry to build a custom view cluster as following, all the field dependence are correct.IssuesBut when I try to activate, a popup window appears, I choose Yes, then error occurred, try to debug the error message with /H, but no clues.Solutio原创 2022-05-20 00:03:21 · 342 阅读 · 0 评论 -
SAP SM30 upload and download data by excel
SAP table maintenance view (SM30) upload data by excel原创 2022-05-18 20:05:04 · 1236 阅读 · 6 评论 -
ABAP判断全半角字符的一种简单方法
实现方法CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH测试效果英文分号中文分号英文字母汉字原创 2022-03-09 11:32:03 · 644 阅读 · 0 评论 -
MDG删除客户主数据key mapping(键值映射)
背景同事导客户编码的key mapping弄错了,想要删除,但是执行程序FINS_CFIN_MAPPING一直报结构不匹配。解决方案生成模板并下载,分隔符选择逗号填入需要删除的key mapping(此处用WPS打开)执行删除程序(可先测试模式运行)查看执行结果备注程序FINS_CFIN_MAPPING可能无法直接执行,copy一个Z程序,删除53行关于central finace激活的校验即可。...原创 2022-01-13 16:18:33 · 426 阅读 · 0 评论 -
ABAP调试器查看memory id的方法
原文https://stackoverflow.com/questions/21905820/abap-memory-id-or-parameter-values-in-debugger操作截图转载 2021-09-09 10:20:02 · 1906 阅读 · 1 评论 -
SAP查看shared object共享对象
背景使用如下代码写入shared objectdata:lo_root type ref to ycl_shared_object.data(lo_shm_handle) = ypwk_area_emp=>attach_for_write( inst_name = 'YTEST' ).create object lo_root area handle lo_shm_handle.lo_shm_handle->set_root( lo_root ).lo_root->set_d原创 2021-01-28 10:47:26 · 500 阅读 · 0 评论 -
MDG context API的用法
背景实施BADI USMD_RULE_SERVICE进行实体数据校验时,需要判断当前的CR type以及CR step,严格控制增强生效的条件。源代码 method if_ex_usmd_rule_service~check_entity. if io_model is initial or io_model->d_usmd_model <> if_mdg_bp_constants=>gc_bp_model. return. endi原创 2020-12-18 14:03:34 · 368 阅读 · 0 评论 -
ABAP函数EVAL_FORMULA计算公式
背景ABAP实现动态的表达式计算,可以使用函数EVAL_FORMULA实现,参考代码在下面;同时也可以考虑用类CL_JAVA_SCRIPT调用js功能实现。执行效果参考代码*&---------------------------------------------------------------------**& Report YPWK_FORMULA_TEST*&--------------------------------------------------转载 2020-11-25 16:31:49 · 1492 阅读 · 0 评论 -
ABAP读取Excel方法大全
前言ABAP读取Excel文件可以使用多种方式实现,OLE是最常用的技术,但速度及兼容性较差;也可以使用DOI接口读取,最新的技术则通过XML技术进行解析,采用最新的面向对象编程,容易理解,且兼容性较好。方法标准函数函数名说明TEXT_CONVERT_XLS_TO_SAP基于OLE,需要内表结构与Exce列顺序一致ALSM_EXCEL_TO_INTERNAL_TABL基于OLE,按单元读取出来,最长只支持50个字符UPLOAD_XLS_FILE_2_ITAB(尚原创 2020-11-20 10:40:06 · 3216 阅读 · 2 评论 -
我用过的正则表达式(ABAP)
简单的如只包含数字或字母等,可以使用表达式CA或CO实现,参考F1关键字文档,正则表达式匹配可以用表达式match实现功能表达式备注非法字符[^[:print:]]检查SAP系统不支持的字符(显示异常)中文字符[^x00-xff]检查是否包含中文...原创 2020-11-19 16:56:55 · 333 阅读 · 0 评论 -
ABAP内表获取fieldcat
两种catalog, LVC和SLIS都可以。翻译 2020-11-11 14:39:51 · 1450 阅读 · 0 评论 -
ABAP读取SMW0 Excel模板并写入数据
背景做了一个批导程序,用于数据导入,为了方便用户使用,做了一个对应的导出程序,两者模板一致,这样用户需要修改数据时,先导出系统原有的,然后在这个基础上修改,再执行导入程序即可。原理读取Excel模板,并用开源库abap2xlsx完成编辑。示例代码data:lt_mime_data type table of w3mime, ls_id type wwwdataid, ls_key type wwwdatatab.data:lv_string原创 2020-11-04 20:37:56 · 2275 阅读 · 5 评论 -
SAP翻译自定义消息类
背景多语言开发,需要维护消息的多个版本,一般是维护中文以后进行翻译,但是会出现遗漏,到了测试和生产环境比较尴尬目的避免自定义消息类的翻译丢失状况,统一检查消息类翻译步骤事务代码SE63,选择翻译传输对象输入消息类ZMDG,原始语言和目标语言,点击编辑双击红色的条目,输入翻译文本,点击保存,则变为黄色。...原创 2020-11-03 17:28:48 · 629 阅读 · 0 评论 -
ABAP动态获取内表的字段列表
本例是获取内表ct_bp_basic的字段清单,基本类型是表类型,结构中包含include,故需要展开;无inlcude结构,则可忽略第二部分 data(lo_table_basic) = cast cl_abap_tabledescr( cl_abap_tabledescr=>describe_by_data( ct_bp_basic ) ). data(lo_struct_basic) = cast cl_abap_structdescr( lo_table_basic->get_t原创 2020-11-03 15:05:11 · 3132 阅读 · 0 评论 -
SAP SO10文本传输
背景通过SO10维护了变量,需要传输到生产环境方法通过SE38执行报表RSTXTRAN实现,点击执行选择需要传输的文本,点击Enter键(这一步很重要)-点击传输文本List item最终效果转载 2020-10-27 15:17:53 · 2170 阅读 · 0 评论 -
SAP选择屏幕1000通过变式设置不同的事务代码
背景通过常规的Ctrl+S保存变式,在SE93选择变式时,报错:DB253 There are no variants for screen 1000。解决方法变式名称命名用CUS&作为前缀即可,如CUS&Z_ADMIN。参考note:2800248 - SE93 Create Report Transaction: There are no variants for screen 1000备注若想通过变式对隐藏的字段赋值,可采用事务代码STVARV维护变量实现,如下...原创 2020-10-26 17:05:21 · 946 阅读 · 0 评论 -
ABAP读取BRF+决策表(decision table)
目的使用BRF+的决策表代替SM30配置表,目前是一个demo,尚未进行生产验证前提创建一个BRF+应用程序,包含一个或者多个决策表决策表仅包含简单决策,数据只能是单行,条件只能是等于(EQ/=),与SM30直观上感觉一致示例代码方法已封装,传入应用程序ID(如ZMDG_BRF_TEST)以及决策表ID即可可传入与决策表结构一致的内表(参数ct_act_table),获取解析后的直观数据 method read_brf_descision_table. "--------原创 2020-09-19 13:09:43 · 995 阅读 · 0 评论 -
ABAP打开新的对话窗口(Session)
以调用事务代码MM01为例调用事务代码CALL FUNCTION 'ABAP4_CALL_TRANSACTION' STARTING NEW TASK 'A' EXPORTING TCODE = 'MM01'* SKIP_SCREEN = ' '* MODE_VAL = 'A'* UPDATE_VAL =原创 2020-09-18 09:24:16 · 790 阅读 · 0 评论 -
SAP BP客商维护BAPI&&API
前情提要仅列出常用的BAPI,大家可以到具体的函数组中发现更多用法;角色可以创建的时候直接维护,或者单独维护;找不到BAPI的,比如公司代码,使用API来维护。BAPI清单创建BPBAPI功能BAPI_BUPA_CREATE_FROM_DATA创建BP, 包括中心数据、地址等BAPI_BUPA_FS_CREATE_FROM_DATA2功能同上,多一个角色分配功能角色维护BAPI功能BAPI_BUPA_ROLES_GET_2获取分配的Role原创 2020-09-16 11:38:28 · 6103 阅读 · 3 评论 -
ABAP代码获取事务代码需要的权限对象清单
源代码tables: tstc, tobjt, usobt, tactz, tobj, sscrfields.* AUTH_FIELD_GET_INFO DDIF_FIELDINFO_GET AUTH_FIELDINFO_GETdata: begin of itab occurs 0. include structure usobt.data: end of itab.data: begin of i_tc occurs 0, tcode_l转载 2023-12-04 17:43:34 · 1188 阅读 · 3 评论 -
ABAP调用启信宝API
方法参数定义如下源代码如下 method qxb_http_get. data:lv_url type string. "===============初始化=============================================== "获取http实例 cl_http_client=>create_by_destination( exporting destination = space importing原创 2020-08-19 14:16:21 · 1014 阅读 · 0 评论 -
DB01 SQL编辑器的一个例子
select "/1MD/ZXZKUNNR", "/1MD/ZXBP_ID_NUM", "/1MD/ZXNAME_ORG1", "/1MD/ZXZZZLX", "/1MD/ZGZLIFNR", "/1MD/ZGBP_ID_NUM", "/1MD/ZGNAME_ORG1"from "/1MD/MD______0A0"inner join "/1MD/MD____原创 2020-08-06 10:21:11 · 430 阅读 · 0 评论 -
ABAP校验系统不能支持的非法字符
背景接口开发过程中,上游传输的特殊字符,虽然可以存储,但是在Proxy接口返回时,却无法转换为xml,情况如下思路校验系统不支持的字符,返回错误;换个思路来想,不能用write正常打印的字符大概就是不支持的。解决方案没错,就是正则表达式,如果有非法字符,匹配结果表会有内容find all occurrences of regex '[^[:print:]]' in lv_string results data(result_tab)ignoring case....原创 2020-07-30 15:16:38 · 719 阅读 · 0 评论 -
ABAP定时刷新选择屏幕
parameters : p_time type i default 3.class lcl_event definition. public section. methods m_timer_finished for event finished of cl_gui_timer.endclass.class lcl_event implementation. method m_timer_finished. " cl_gui_cfw=>set_new_原创 2020-06-12 15:51:12 · 1580 阅读 · 0 评论 -
ABAP单元测试(UT)的两个简单例子
背景最近写的接口分支太复杂,每次修改以后手工测试较为耗时,且无法考虑所有场景,为保证代码的质量和稳定,决定学习ABAP unit test相关知识,以下是自己实现的几个例子,Step by Step的参考链接如下Understanding ABAP Unit Testing源代码针对class*&---------------------------------------------------------------------**& Report YPWK_UT*&a原创 2020-06-02 19:04:37 · 1686 阅读 · 0 评论 -
ABAP-暗黑骚操作
MB52通过调整表MMIM_REP_PRINT可展示不同样式结构和字段互相转换,在unicode系统中可能会报错(,可以使用以下方式将结构赋值给字段: cl_abap_container_utilities=>fill_container_c从结构中获取字段: cl_abap_container_utilities=>read_container_c工具类 cl_abap_codepage提供如下方法CONVERT_TO:转换string至xtringCONVERT_..原创 2020-06-02 14:32:59 · 581 阅读 · 1 评论 -
ABAP内表动态排序
背景内表的排序是ABAP最常见的操作,但是遇到动态内表时,无法静态指定内表组件,因此需要动态实现解决方案变量+小括号()系统标准类cl_abap_itab_utilities=>virtual_sort()常见的时第一种方式,但是排序组件较多时,需要定义的变量也相对较多,复杂且不美观示例代码types: begin of line, col1 type i, ...原创 2021-03-19 22:26:55 · 2789 阅读 · 1 评论 -
ABAP邮件发送Excel附件
背景开发中需要将内表和结构数据,写入到邮件的附件当中,因为是结构化数据,考虑用Excel附件实现实现原理一开始考虑用模板加OLE技术,读写Excel, 但使用模板限制较多,且维护和变更过程复杂;通过查询BING搜索引擎,获知可通过BCS相关的工具类实现内表/结构到Excel文件的转换(另外通过XML技术,也可以读写文件,可以参考ABAP开源项目ABAP2XLSX)参考链接:Send an...原创 2020-01-02 15:07:19 · 3417 阅读 · 0 评论 -
ABAP AES加密解密
背景接口开发中,上游系统需要加密数据,SAP负责解密,经过研究决定使用AES加密,不了解加密算法的可以查看https://www.cnblogs.com/sochishun/p/7028056.html原理使用Github开源项目AES algorithm implementation by ABAP, 地址如下https://github.com/Sumu-Ning/AES...原创 2019-11-21 16:00:05 · 3507 阅读 · 2 评论 -
ABAP submit程序获取ALV数据的方法
1、使用标准ALV类方法数据定义field-symbols : <lt_pay_data> type any table .field-symbols : <lt_test> type any . "LIKE LINE OF it_tab .data lr_pay_data type ref to data.具体用法cl_s...原创 2019-06-26 10:07:37 · 2839 阅读 · 0 评论 -
SAP零售商品主数据-逻辑分销视图更新
业务背景在零售行业中,商品主数据可通过批量复制实现逻辑分销视图的扩充,实际业务中后每个分销中心的数据有差异,本例实现对不同分销中心的利润中心字段的更改实现思路原始程序使用BAPI_MATERIAL_MAINTAINDATA_RT修改marc-prctr, 在测试环境发现程序运行非常慢,不符合百万级商品的批量修改需求:再查询SAP社区资料后,获知MATERIAL_UPDATE_LOGIS...原创 2019-06-25 15:30:44 · 1107 阅读 · 0 评论 -
ABAP常用弹出窗口函数
展示消息POPUP_TO_CONFIRM:可以自由发挥POPUP_TO_DECIDE_LOCKED_DATA:传入用户名,显示数据锁定信息POPUP_DISPLAY_MESSAGE :显示消息POPUP_TO_DISPLAY_TEXT 显示两行文本RSDC_SHOW_MESSAGES_POPUP:弹出窗口,显示批量消息,同ME21N采购订单界面弹出C14Z_MESSAGES_SHOW...原创 2019-06-17 09:54:05 · 4172 阅读 · 0 评论 -
我用过的ABAP开源项目
abapOpenChecks定制化、自动化、定期的代码检查Clean ABAP ABAP开发的一些规范SAPlink 通过文件上传下载开发对象ABAPGit 通过git方式上传下载开发对象JSON2ABAPType通过json自动生成对应的ABAP结构,用于解析json...原创 2020-12-17 22:09:48 · 878 阅读 · 3 评论 -
ABAP动态内表三种实现方法
创建动态内表的集中方法已知表结构名称使用函数实现(常用)首先使用DDIF_FIELDINFO_GET或者NAMETAB_GET等方法获取结构中的组件信息,再调用cl_alv_table_create=>create_dynamic_table()使用反射实现(未测试)tr_struct ?= cl_abap_structdescr=>describe_by_da...原创 2019-06-18 20:52:06 · 2121 阅读 · 0 评论