在me21n中创建po之前,必须先在dyna中使附件成为必需

2020-08-21 22:04发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) Good Day Team, ...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


Good Day Team,

我有一项要求,在ME21N中创建PO时,至少应将一个文档附加到该PO。 如果没有附加文档,在检查和保存时,我需要显示一条错误消息。

我找到了一个如下所示的网址,但idid在这里没有任何解决方法,

https: //answers.sap.com/questions/9991690/how-to-make-document-attachment-mandatory-for-po-c.html

我实现了如下代码,但是ididnt在保存并检查之前会得到任何附件。

* DATA:gs_lporb类型sibflporb,
* lt_links类型obl_t_link。
* gs_lporb-instid = lw_header_data-ebeln。
* gs_lporb-typeid ='BUS2012'。
* gs_lporb-cat 'BO'。
*
*调用方法cl_binary_relation => read_links_of_binrel
*导出
* is_object = gs_lporb
* ip_relation ='ATTA'
* ip_role ='GOSAPPLOBJ'
*正在导入
* et_links = lt_links。

您能帮我们实现这个方法吗?我需要在哪里实现逻辑?

快速解决问题,高度赞赏。

感谢与认可

卡尔帕纳(Kalpana)

3条回答
骆驼绵羊
2020-08-21 22:43

如果通过ME21N开始创建采购订单,附加文件并保存(创建)采购订单,会发生以下情况:

  1. 当您通过GOS服务"创建附件"附加文件时,附件将被保存并提交到数据库,但是由于采购订单尚无编号(仅在保存时分配),因此未创建链接。 附件的链接保存在CL_GOS_SRV_ATTACHMENT_CREATE的私有实例属性GT_ATTACHMENTS中的内存中。
  2. 保存采购订单时:
  3. A/进行检查(检查BAdI的方法) B/自动编号分配给采购订单,GOS服务被告知该编号,因此,GOS在采购订单和附件之间创建链接。

如果按照提供的链接中的说明在CHECK方法中获取GOS管理器实例,则还应该找到一种查询属性GT_ATTACHMENTS的方法,这并不容易,因为您不知道该实例。 CL_GOS_SRV_ATTACHMENT_CREATE,并且该属性是私有的。

仅当您可以读取GOS管理器的属性GO_MODEL时,才可以获取后一个类的实例,但这是受保护的属性。

所以,我只看到一种解决方案:

  1. 使用新的ZZ方法增强CL_GOS_MANAGER和CL_GOS_SRV_ATTACHMENT_CREATE以分别返回GO_MODEL和GT_ATTACHMENTS的内容。 然后,很容易调用ZZ方法来了解是否存在附件。

CHECK中的代码示例(我让您创建了两个ZZ方法):

 如果IM_HEADER是CL_PO_HEADER_HANDLE_MM的实例。
   data(header2)=强制转换CL_PO_HEADER_HANDLE_MM(im_header)。
   data(gos)= header2-> get_gos_manager()。
   data(gos_model)= gos-> zz_get_model()。
   数据(gos_pcatta_crea)= gos_model-> get_service_by_name('PCATTA_CREA')。
   数据(附件)= gos_pcatta_crea-> zz_get_attachments()。
   "检查附件
 万一。
 

祝你好运!

NB:也许还有其他方法可以做到,也许更简单,但这是我想到的第一个方法。

一周热门 更多>