点击蓝字关注我们
一
前言
SAP标准附件服务(workflow BOX)是在单据的处理界面左上角的程序标题旁边添加的一组按钮,这组按钮能处理和单据相关的工作流/附件/URL链接/备注等功能.
本文介绍怎么在自定义程序中启用标准附件功能及相关注意事项
二
标准附件功能
标准附件功能是否显示,取决与用户是否为DIALOG用户, 如果登录用户类型不是A 对话. 标准附件功能可能无法显示. (图一)
用户参数SD_SWU_ACTIVE的设置会影响VA02/VA03的标准附件功能的显示
图三是采购订单中显示的标准附件功能
图四是标准附件功能包含的菜单项
图一
图二
图三
图四
三
使用标准附件功能
在自己开发的程序中使用标准附件功能有两种方式,需要根据实际情况判断一下使用哪种方式. 方式一和方式二的本质时一样的. 都是调用类 CL_GOS_MANAGER 实现
进入界面时已有单号使用方式一
进入界面时没有单号,使用方式二
(方式二其实也整合了方式一, 可以直接使用方式二)
01
方式一
通过标准函数实现附件功能
SWU_OBJECT_PUBLISH
SWU_OBJECT_REFRESH
在PBO 创建模块调用函数
在PAI创建模块调用函数
02
方式二
直接通过类CL_GOS_MANAGER启用附件功能
PBO 中
创建对象
根据是否存在单号确定参数ip_no_instance 的值. 该参数的值会影响是否能显示对象已经存在的附件. 如果为空, 无法显示单号已经存在的附件
所以该参数需要根据单据是否为空来设置.
PAI
获取单号,并调用对象的方法 set_id_of_published_object 更新已经创建的附件和单据的关系. 最后需要通过COMMIT WORK语句提交一下. 以确保单据和附件的关系能成功保存.(COMMIT WORK 不是必须的, 程序结束会隐式提交以下,也能保存).
四
相关表
SRGBTBREL存放了GOS中的关联信息. 可以通过它获取附件的类型及数量.
五
附件功能的增强
标准附件功能的对象 CL_GOS_MANAGER 是一个封装的非常完整的类.
但是比较遗憾的是,在这个类中没有提供一个简单的方法查询单据的附件清单(也可能是我没有找到,如果你知道怎么获取,不吝赐教一下).
实现如下增强会比较麻烦: 单据保存时需要检查附件是否存在,如果不存在报错.
常规思路: 在单据保存前检查单据是否存在附件清单 .找到标准单据通过类CL_GOS_MANAGER定义的对象. 尝试通过对象获取附件清单. (如下图是采购订单检查中尝试获取对象清单. ) 跟踪了一天也啥结果.
所以改变思路. 在CL_GOS_MANAGER 特定的服务的类 (比如 CL_GOS_SRV_URL_CREATE 时创建URL的类) 中隐式增强,并且通过全局变量传递附件创建的结果. 订单检查增强中获取这个结果. 作为判断保存的依据之一
六
总结
SAP标准附件服务(workflow BOX)是一个封装度很高的服务. 在相应的屏幕定义时简单调用即可完成自定义单据的附件服务. 使用很方便. 并且这个服务同时支持GUI客户端及网页客户端.
THE
END
约定
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
(如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)
公众号 : syjf1976_abap
ABAP开发技巧
微信号 : 392077
请微信联系管理员:
syjf1976
sharry_xlp
Yannick_Duan
申请进入公众号讨论群提问或者参与话题讨论