- 博客(55)
- 收藏
- 关注
原创 CDS学习(二)---CDS中的函数使用
在CDS Views中使用嵌入式函数在CDS中,可以使用一些计算函数来进行计算,同时还能使用CASE来进行分类处理,ABAP CDS提供了以下这些内置函数来进行处理货币和单位的转换使用 => 进行参数赋值,下面的例子使用unit_conversion函数将DISTANCE转换成MI,即计量单位是MI,总共进行了两次转换,在括弧里指定了target unit,语义对象又指定了一次。与ABAP中的汇率函数类型,金额的转换也包含类似的参数日期的计算函数,日期格式为YYYYMMDD,on_error
2023-02-06 10:01:06
1083
原创 CDS学习(一)---简介
''Core Data Services to build design-time data-persistence models''“构建设计阶段数据持久性模型的核心数据服务(CDS)”它是一个基础结构,数据库开发人员可以使用它来创建应用程序服务向UI客户端公开的底层(持久)数据模型。ABAP和HANA平台都支持CDS。
2022-10-10 14:31:12
2457
原创 Python进行模糊匹配
Mr Chen昨天提出了一个问题一起探讨,问题如下:Python库里有fuzzywuzzy和difflib,两个库均可实现词粒度的模糊匹配,同时可设定模糊阈值,实现关键词的提取、地址匹配、语法检查等。针对fuzzywuzzy的process模块做了下测试,将旧物料描述和新物料描述分别存放不同的文件中。循环新描述中的明细,逐个匹配所有旧描述,得到返回值和匹配度后将结果写入新描述文件的B列和C列。具体实现代码如下:from fuzzywuzzy import processimport xlwin
2022-03-02 10:11:24
8695
4
原创 Odata服务同时返回多个表数据
Odata服务有时候需要同时返回多个表的结果,比如查询采购订单,需要同时返回采购订单抬头信息和明细信息。通过Odata的Assosiation 功能可以实现这个需求。效果:一个xml同时含有抬头和行项目部分使用/?$expand=时候,可出现以下xml效果访问方式:(这种只能得到item)/sap/opu/odata/SAP/YHJWTEST_ACTIVE_SRV/ee_PO_HEADERSet(‘4100000220’)增加/EE_PO_ITEMSet(这种可以同时得到header和ite
2022-01-07 13:27:20
1293
原创 微信小程序调用域名服务器的服务
微信小程序得益于它的简单便捷,在日常生活中应用的很普遍。做过开发的同学都知道,微信的前端比较简单易懂,并且微信自带云开发,提供云存储,可以满足一些商家或者自媒体的需求。如果企业类的用户使用小程序,数据是存在企业自己的服务器上,小程序也提供了访问域名服务器服务的方法。因为小程序的统一入口都在微信开发上,所以对域名的管控比较严格。域名会指向一台或几台服务器,域名实名制其实就是用来确定谁对被访问的服务负责。之前我们提出想用小程序来实现员工自助,但是供应商推脱说小程序访问企业域名有限制,他们遇到过怎么连也连不上的
2021-12-24 09:16:45
3829
原创 如何设置Fiori Launchpad主题中的公司logo
标准的Fiori 主题中的公司logo替换为自己要设置的logo1、 在前端服务器打开UI主题设计器执行事务码:/UI5/THEME_DESIGNER2、 打开sap_bluecrystal3、 如果没有应用程序就新建一个,并指定URL。4、 修改右侧属性参数5、 修改完成后另存为自定义的主题,并重新构建。构建完成后可以通过事务码/UI5/THEME_TOOL查看主题的详细信息双击Info,查看主
2021-12-11 14:09:45
857
原创 在Fiori LaunchPad上配置FPM App
之前做过的东西时间长了不用都快忘记了,感谢呆牛和yiqiong的帮助,终于让我配置出来了,在此与大家分享,欢迎收藏。简单来说分为两步,第一步配置LaunchPad上的磁贴目录和磁贴组,第二步配置SAP端用户的权限。而Fiori的版本不同,配置磁贴的方式也不同。1 配置磁贴目录和磁贴组Fiori 2.0版本,由于磁贴目录处可以选择URL,故可直接配置wda的链接在GUI执行程序/UI2/START_URL,选择定制,执行后会打开fiori Launchpad的配置界面选择目录并新建
2021-10-25 13:19:18
834
原创 RPA机器人批量处理excel
之前写过一篇《Python批量处理excel》,主要需求就是根据excel里的数据批量修改文件名称。今天就用RPA机器人来实现这个功能。RPA产品有很多,我们选用的是i-search艺赛旗的开发软件,点下面的链接可以下载不同的艺赛旗版本。https://support.i-search.com.cn/article/1574399503397这就是开发软件的工作台,如果你在家教过孩子scratch,那么对这一套开发流程应该会感到亲切。不需要懂代码,通过拖拉拽就可以编辑好流程,系统自动编译生成pytho
2021-10-15 14:07:22
3597
1
原创 标准搜索帮助的增强
需求描述:MIGO A01 R01 采购订单收货时,采购订单的搜索帮助增加页签,可通过自定义的字段查找采购订单。解决方法:F1查找屏幕字段的搜索帮助,找到采购订单的搜索帮助MEKKSE11打开此搜索帮助,发现这是一个集合搜索帮助。添加自定义的搜索帮助ZMMSH_EXCNTNO在这个附加的搜索帮助里添加自定义的搜索帮助ZMMSH_EXCNTNO_IZMMSH_EXCNTNO_I可以选择“搜索帮助出口”的方式函数ZFM_MM_SELEXCNTNO通过拷贝F4IF_SHLP_EXIT_EXA
2021-09-01 14:56:03
1476
原创 BW抽取ECC后勤数据源
1、 确定数据源。在ECC系统执行事务码RSA5,找到数据源SAP-R/3 –> SD –> 2LIS_13_VDKON 并激活。2、 在BW系统复制元据源 RSA13、 右键数据源,创建信息包4、 在信息提供者里,找到数据抽取层,创建数据存储对象5、 创建转换6、 创建数据传输进程创建2个数据传输进程,一个全量,一个增量,在命名时添加D或者F,便于维护此时执行数据抽取会发现抽不到数据,原因是ECC的后勤数据需要做一些操作。7、 回到ECC系统,执行事务
2021-08-12 15:15:49
1408
原创 创建销售订单的BAPI
创建销售订单的函数有3个:BAPI_SALESORDER_CREATEFROMDAT2BAPI_CUSTOMERRETURN_CREATESD_SALESDOCUMENT_CREATE前面2个BAPI都是调用的第三个函数SD_SALESDOCUMENT_CREATE,区别在于里面的业务类型是固定的,BAPI_SALESORDER_CREATEFROMDAT2限制了业务对象为BUS2032,创建退货类型的销售订单时会提示BUS2032与H类型不匹配,需要使用函数SD_SALESDOCUMENT_CRE
2021-08-06 14:34:29
1588
原创 多级视图簇的创建
SAP标准功能里经常会看到分级的视图维护,下一级的数据维护是以上一级的数据为基础,例如NACE的视图维护,就是通过视图簇的方式实现的。下面介绍一下4级视图簇的实现方式。1、创建4个有关联关系的透明表2、4个透明表分别创建视图3、创建维护视图ZHRV001,添加表ZHRT009后,点击关系按钮,选中其它三个表添加4、事务码SE54创建视图簇维护视图簇的描述双击左侧“对象结构”节点,维护4个表,注意顺序;逐个选中行条目后点上面的“字段相关”从第二条数据开始逐条选择后双击左侧
2021-07-22 15:27:33
598
原创 使用函数创建多个备选BOM
SAP标准函数CSAP_MAT_BOM_MAINTAIN可以增删改BOM,但是不能创建多个备选BOM,比如MAST表里已经存在BOM抬头信息,使用函数继续创建备选BOM会报错。解决办法:copy函数CSAP_MAT_BOM_MAINTAIN所在的函数组CSAP到ZCSAP,函数CSAP_MAT_BOM_MAINTAIN到ZCSAP_MAT_BOM_MAINTAIN,修改下面的代码:这样就可以快乐的创建备选BOM了。函数CSAP_MAT_BOM_CREATE也存在同样的问题,可以参考博客https:
2021-06-16 14:05:55
743
原创 BAPI创建委外采购订单
使用BAPI BAPI_PO_CREATE1创建委外采购订单,组件为手工输入时,有几个点需要注意:1、已通过CS01创建过BOM的物料,创建时会自动带出components。如果要修改当前组件清单,可以通过设置pocomponents-change_id = 'E’来实现 lv_sline = lv_sline + 1. ls_pocomponents-po_item = l_ebelp + 10. ls_pocomponents-ITEM_NO = l
2021-04-27 15:14:12
2404
原创 ABAP生成多层嵌套XML
多层嵌套的XML对ABAP来说,多少有些复杂,但凡有PI系统,也不至于让开发费这么大劲儿。但是保不齐对方的开发是个二把刀,非要你传输一个xml的字符串过去,有PI系统也没法给他mapping。先看一下下面这个XML的结构,包括HEAD和ITEM两部分,HEAD和ITEM里面的node名称还有相同的,里面的内容还分别包含多层嵌套。具体传输的字段内容是以字段名、字段值的方式传输,这样复杂的XML有没有办法生成呢?<?xml version="1.0" encoding="UTF-8"?><
2021-04-21 16:04:16
725
原创 SAP Data Service操作简介
SAP Data Service是通过SAP HANA认证的ETL工具,其主要功能就是将数据从多个业务系统中抽取出来,进行必要的处理,如转换、合并、过滤、清洗,然后加载到BW系统或者HANA.DS的主界面如下:介绍一下几个名词:1、project。 项目是允许对作业进行分组的可重用的对象,简单来说,就是个文件夹,方便对作业的分类管理。2、Job. 作业是唯一可以执行的对象。可以在开发过程中手动执行来测试作业。在生产过程中,可以调度批作业并将实时作业设置为服务,当Data Integrator
2021-04-19 11:42:36
9694
3
原创 PS项目批量技术性完成
针对大量的历史项目进行“技术性完成”系统状态设置,手工一个个操作显然不现实,那批量操作用程序怎么实现呢?一开始我想用BDC录屏,简简单单实现了功能就好,代码也很简单 PERFORM bdc_dynpro USING 'SAPLCNPB_M' '1000'. PERFORM bdc_field USING 'BDC_OKCODE' '=OPEN'. PERFORM bdc_dynpro USING 'SAPLCNPB_W'
2021-04-07 16:19:00
926
原创 PI SOAP Receiver中的Header参数
在做SOAP接口的时候,经常会遇到服务提供方的web service有header参数的情况,如果是通过PI来配置的话,该如何配置呢。简单来说,在配置channel的时候,可以使用AF_Modules/AddSOAPHeaderBean函数来进行传参。场景一,一般参数传输参数namespace是必输字段,赋值类似http://customheader.com,其它的参数就根据需要自己命名,例如hdr1,值为1234。配置完成后参数就被添加到SOAP Header结果如下:<SOAP:He
2021-03-30 14:21:28
1416
原创 泛微OA单点登录帆软报表
帆软提供很多种单点登录有很多种方式,基于不开发的前提,可以使用URL登录插件的方式,即使用get方式将用户名密码发送给帆软服务器进行身份验证。泛微端配置:泛微OA的版本: 8.100.0531,提供SSL的方式有限在集成登录中创建新的集成登录设置,功能就是拼接出一个URL。因为帆软URL插件的原因,不接受用户名、密码的加密。新建的ds01应用到菜单上,这样的话,点击菜单就自动重定位到ds01拼接的url上了。链接地址/interface/Entrance.jsp?id=ds01帆软端配置:
2021-03-20 12:37:12
3742
原创 跨公司销售自动生成IDOC财务凭证过账日期的确定
在由多个公司组成的企业集团中,通常会有公司间的业务。一般来说,涉及到公司间的业务有两类,分别是跨公司销售和公司间采购。还有一类库存调拨(一步法/两步法),可用于公司间采购,也可用于公司内调拨。跨公司销售指销售单据中,发货工厂对应的公司和销售组织对应的公司为不同的公司。销售公司针对最终客户,下达一张销售订单,发货时发货工厂直接给客户发货,销售公司开对客户的标准发票,发货公司开公司间发票,产生的IDOC自动记销售公司成本和生产公司收入,不用做采购发票校验。公司间采购是STO模式(销售和采购通过一张采购订单,
2021-03-11 13:26:09
2734
原创 单独计算年终奖个税
需求:原年终奖个税是在工资项/404,但由于计算规则的改变,需要单独导入年终奖个税,不再使用原工资项/404。这对HR顾问来说可能都不是个事,无奈小问题难坏了门外汉。研究了半天PE01也没明白。请教了HR专家老马,轻松搞定。解决方法:定界原年终奖工资项后,将工资项设置为不记个税;拷贝扣减金额的工资项,作为新的年终奖个税。1、定界年终奖工资项SM30打开视图V_512W_D将工资项按需求定界后,把处理类66置空,不再计算个税2、拷贝工资项M520到新建工资项执行PU30,拷贝M520到XXX
2021-02-27 13:43:44
390
原创 创建计划行确认数量为0的销售订单
需求:通过BAPI函数创建销售订单,并且计划行里的确认的数量为0.解决方法:使用BAPI BAPI_SALESORDER_CREATEFROMDAT2创建SO后,再使用函数 SD_BACKORDER_UPDATE 对确认的数量进行修改。tips:使用BAPI_SALESORDER_CREATEFROMDAT2创建SO时,订单的数量只在参数表order_items_in中设置target_qty不起作用,需要在参数表order_schedules_in中设置REQ_QTY。*"------------
2021-02-26 10:23:18
3034
1
原创 BW拉取ECC中视图的数据
BW拉取ECC数据有多种方式,可以通过ECC端的数据源,也可以调用RFC函数。今天说一下数据源的方式。总体来说,就是先在ECC端创建数据源,然后在BW端建模,与数据源匹配后,通过后台作业拉取数据。ECC端的操作:1、创建视图,包含要传输数据的表2、RSO2创建数据源3、数据源抽取数据测试BW中的操作1、RSA1打开信息类型维护界面2、创建源系统从源系统复制数据源创建信息包3、维护信息对象如果没有标准的关键指标和特性,可自行创建创建信息范围,一般分为3层,如下
2021-02-07 14:09:51
629
原创 Python批量修改网页端邮箱设置
前两天基础架构的同事遇到个问题,需要批量设置集团用户的邮箱设置,但是手工一个个操作实在是费时间,于是我就想到了用python来解决。需求描述:登录腾讯企业邮箱点击设置点击客户端设置收取选项设置为全部后,保存更改点击右上角的退出账号、密码保存在excel文件里。解决方法:使用selenium包来操作网页,实现批量修改遇到的问题点:1、定位网页中的元素位置定位“设置”时我使用的find_element_by_xpath,很容易找到了元素qqmail.find_element_b
2021-02-05 12:50:12
644
2
原创 Python批量处理excel
今天老马提了个需求,HR模块经常会用到导照片的功能,收集上来的照片文件名称都是姓名.jpg的格式,需要根据excel里的姓名员工号数据统一刷成姓名+员工号.jpg的格式。使用python代码实现此功能,示例代码如下:import osimport xlwings as wxdef listdir(path, list_name): #传入存储的list for file in os.listdir(path): # 排除临时的文件 if '~$' in
2021-02-03 13:57:41
305
1
原创 ME2N增加列输出
需求:ME2N输出ALV中增加“需求提报人”字段解决方法:在结构MEREP_OUTTAB_PURCHDOC中增加字段,如果是EKKO/EKPO里的字段,添加完后在ALV里正常使用;如果是其它字段,需要在程序LMEREPI02的方法build_base_list增加增强点,使用代码赋值。查看ME2N的执行结果PS:喜欢的同学可以关注微信公众号...
2021-01-18 13:27:54
933
1
原创 接口访问https的服务
PO REST服务端配置访问https的接口,一般在访问端需要安装服务器端的证书,否则可能报以下错误Peer certificaterejected by ChainVerifier解决方法:1、从访问的服务地址上下载证书2、在PI的nwa上安装证书,注意,此处有两个地方需要安装证书首先是TrustedCAs ,这个是默认的keyStore如果服务器端有进一步的校验,还需要在ICM_SSL中安装证书安装完成后服务正常访问。PS:喜欢的同学可以关注微信公众号...
2021-01-11 12:51:23
1240
原创 SOAP Receiver中的SOAP Action
PI SOAP adapter中,作为receiver端时有一个参数SOAP Action,这个参数是做什么的呢?SOAP 1.1规范是这么定义HTTP SOAP Action header的:SOAP Action HTTP request header被用来标识SOAP HTTP请求的目的地,其值是个URI地址。SOAP发送并不限制格式、URI特征,那么在这种情况下,发送一个HTTP SOAP请求时,其HTTP客户端必须使用或指明SOAP Action HTTP request header。简
2021-01-07 16:30:56
1947
原创 记录自定义维护视图的修改日志
上次在《创建自定义表的日志》里聊了如何记录日志,今天聊聊自定义维护视图如何记录修改日志。一、首先为表创建一个SCDO对象ZSD001二、然后在SE11创建完维护视图,并为其创建视图的维护程序之后为视图创建事件创建如下两个事件01事件是在保存前记录日志,02事件更新数据库通用示例代码如下,直接copy了放进去即可,但是我调试的时候总是有问题,逻辑是动态取视图中的表所对应的SCDO对象,通过执行动态程序来更新数据。有兴趣的同学可以调试下*&--------------------
2021-01-04 16:10:32
862
3
原创 PI配置receiver REST适配器
上次说了sender REST的配置,今天来探讨下receiver的配置。需求背景:服务方API对请求有特殊需求,如http header里固定传某些值,可能为动态。请求中需要包含签名字段sign和时间戳timestamp,都放进header中,sign使用sha256加密算法。sha256加密算法需要中要求将header中的参数以及body中的一级字段拼接后进行加密,这样就涉及到body中的表数据转化为json。1、 表数据转化为json因为body中的结构可能为多级套表,首先将要转化的
2020-12-25 17:02:15
3454
原创 FPM的一点总结
FPM的全称是Floorplan Manager,直译是平面图管理工具,说的简单点就是一些UI样式的自由组合,如果有Webdynpro for ABAP的基础,学习FPM就简单多了。SAPCODE网站有FPM的step by step的示例,我自认写的不会比这个更详细了,所以这里只分享一下我对FPM的一点理解,让没接触过的同学了解一些大概的工作原理。FPM是SAP的UI框架,何为框架?就像给了你一些固定的积木,每个积木就代表一个UI组件,你只能基于已有的积木来搭建一些你想要的建筑。并且这些积木都是有卡槽的
2020-12-22 16:00:11
928
原创 wda中使用OVS事件创建搜索帮助
Webdynpro for ABAP中页面上的的搜索帮助,除了参考表字段外,也可以借助WDR_OVS组件,实现像GUI里面通过函数输出自定义的搜索帮助列表的做法。方法:1、在COMPONENTCONTROLLER引用组件WDR_OVS2、在COMPONENTCONTROLLER的方法里添加Event Handle,Event引用WDR_OVS3、编辑此方法,打开时里面已有部分代码,对代码进行修改即可4、在需要添加F4的字段所在的NODE上,属性里添加此搜索帮助method NAMEF4 .
2020-12-18 13:42:28
513
2
原创 SAP与SFTP文件传输
FTP服务器与SAP之间文件传输,这种方式有很多的实施案例。假设SAP中的数据要放到FTP服务器,可以通过点对点的方式,将数据形成文件放在应用服务器的某一路径下,然后使用标准的FTP函数进行文件传输;也可以通过PI进行数据集成,PI有专门的FTP adapter。这些是FTP相关的一些报表:RSFTP001 - SAPFTP 版本检查RSFTP002 - 执行 FTP 命令RSFTP003 - 测试RSFTP004 - FTP 复制RSFTP005 - SAPFTP 检查RSFTP006 -
2020-12-14 11:03:42
6763
原创 Fiori清除缓存
Fiori开发中遇到某项修改在页面显示时死活不起作用,这时候你可能需要清一下缓存了,下面列出了清缓存的方法。Clear metadata cache1、在网关服务器上运行事务码 /IWFND/CACHE_CLEANUP2、在后台服务器和网关服务器上运行事务码 /IWBEP/CACHE_CLEANUP3、运行报表 /UI2/CHIP_SYNCHRONIZE_CACHE。确保表 /UI2/CHIP_CHDR里没有错误。4、运行报表 /UI2/DELETE_CACHE_AFTER_IMP和/UI2/D
2020-12-03 15:07:18
475
原创 创建自定义表的日志
随着对系统依赖度的增长,用户对数据的要求也越来越高。除了对数据多维度的查询汇总,用户也经常会用到查询表数据的修改日志。标准表有很多字段都自带修改日志,那么自定义表如何做到用标准报表来查询修改日志呢?一、创建一个自己的change document object1、执行事务码SCDO,进入修改文档对象界面。不需要名字空间,在下面的凭证对象输入自定义的ID,点继续点击“是”继续操作保存后进入编辑界面,相关的字段说明如下:名称表:需要记录数据更新的自建表名称复制为内部表:如果更新的数据想要用内
2020-12-02 15:15:30
587
原创 ABAP程序间数据共享与传递
ABAP提供了IMPORT/EXPORT 和 SET/GET PARAMETER语句,可对用户内存/服务器内存/数据库进行存储和访问。EXPORT 语句EXPORT {p1 = dobj1 p2 = dobj2 ...} | {p1 FROM dobj1 p2 FROM dobj2 ...} | (ptab) TO | { MEMORY ID id } | { DATABASE dbtab(ar) [FROM wa] [CLIENT cl] ID id } | { SHARED ME
2020-12-01 14:17:54
1915
原创 任务提醒的使用
业务背景:在员工试用期或合同期到期前15天,需要提醒人力专员,以便提前准备下一步的流程。解决办法:通过配置SAP业务工作台的分配清单来实现自动发送任务提醒到人力专员的邮箱。前提条件:人员信息维护了信息类型0016和0019假设员工李宜丰合同在2020/11/25日到期维护过信息类型0019执行标准的query对应的程序为AQZZ/SAPQUERY/H2DATE_MONITOR==,其中/SAPQUERY/H2是用户组,DATE_MONITOR是query名称执行结果我们的需求是将
2020-11-30 16:00:43
780
原创 不同程序间获取ALV执行结果
开发顾问经常会遇到需求中某段逻辑参考某某程序的运行结果这样的情况,有时候被参考的程序是自开发程序,有时候是标准程序。运气好的话,被调用程序逻辑很清晰,可以直接复制出来,但多数情况是计算逻辑复杂的令人挠头,那么我们在SUBMIT程序的时候,怎么得到返回结果呢?假设程序ZTESTJI0002是一个ALV报表程序,ZTESTJI0001需要调用ZTESTJI0002的执行结果。使用内存变量是一个办法,将ZTESTJI0002的结果EXPORT到内存变量,ZTESTJI0001调用ZTESTJI0002后,IMP
2020-11-26 16:19:31
280
原创 表控制Table Control设置某列隐藏
表控制是ABAP开发中经常用到的技术,它的字段控制相比ALV更加灵活,适用于一些复杂的应用场景,例如ME23N采购订单的信息显示。如果对表控制中的某一列字段进行隐藏,我们首先想到的肯定是LOOP SCREEN, 然后设置字段属性ACTIVE=0,可惜这个方法对表控制不奏效。正确的做法是:修改表控制中COLS的字段可见长度属性。我写了一点简单的代码来测试。未修改字段属性前,共有3个字段通过修改表控制中COLS的字段属性隐藏列EBELN,在PBO增加处理MODULE具体代码如下:MODULE
2020-11-25 14:21:21
987
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人