Monday, February 28, 2011

成功输出消息后的采购订单不能取消审核

症状:当PO已经使用ME9F输出后,无法取消订单的审核。  系统提示:
ME175 凭证已输出(功能不可用).
应管理要求,系统后台已设定PO在审核后不能进行更改,即“可更改”设为值1-不能更改.
依照网上搜的资料,实施了两个NOTE:
   Note 994269 - ME28 - release reset for already outputted POs
   Note 1133900 - ME28 - Release reset for already output purchasing message
 实施后发现问题依然存在。
根据用户反馈,这种已审核的订单,有的打印了可以反审核,有的不行。后来依据网上资料的线索及对有差异的订单对比发现,SAP是通过比较在PO中的MESSAGE的状态来判断能否撤消.如果PO中存在MESSAGE,并且全部正常输出,即状态全部为1,则PO不可撤消审核。如果其中一条MESSAGE的状态不是1,则可以撤消审核。
    正经方法是:
    使用事务ME9F,选择输出状态为 1-成功输出 ,点击执行,这里系统会列出所有成功输出过的消息,勾中任何一个,再点击消息细节.现在看到了类似于采购订单中的消息列表,选中任意一个后,点重复输出,系统会复制一个,并且看起来是黄色的,保存退出.这里,由于存在一个没有成功输出的消息,你可以使用ME28撤消这张PO了.
 
    非正经渠道解决方法有两种,且要求你有相当高的权限:
1、PO输出的MESSAGE放置在表NAST中,字段VSTAT即存放的MESSAGE状态的值。使用SE16N查看表,并在命令栏中输入&sap_edit,使得你可以直接修改表内容,在字段OBJKY中输入PO号,在结果中,将任一vstat字段值改成0。这时,你可以使用ME28撤消审核了。
SE16N查看并修改表:

搜索结果,同时修改值:



方法二:直接在DEBUG中更改变量值,绕过程序。
使用SE38,在程序FM06LFFR_FRG_RESET中设置断点
**********************************************************************
CLEAR GEDRUCKT.  "此外断点
  IF FEKKO-FRGDR EQ '1'.  
    GEDRUCKT = 'X'.
  ENDIF.

  CALL FUNCTION 'ME_REL_RESET'
       EXPORTING
            I_TITLE  = ' '
***********************************************************************
同样,使用事务ME28进行订单的撤消审核。程序运行时会自动弹出DEBUG窗口,强制将FEKKO-FRGDR的值改为0,继续往下执行即可完成订单的撤消审核。 原理不清楚。
如果你的配置场景与我们不一样,比如,你的采购订单在审核后是可以修改的,则可以按上边提到的原理,在PO的MESSAGE中,新增一个MESSAGE,不要输出,再使用ME28进行撤消审核。

No comments:

Post a Comment