SAP GOS cl_gos_manager 添加附件功能

表:SGOSATTR SGOS: 一般服务的属性

标准附件功能

标准附件功能是否显示,取决与用户是否为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客户端及网页客户端.

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

令狐九剑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值