20170228 交货单过账增强 MV50AFZ1

Posted Rainystuday

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20170228 交货单过账增强 MV50AFZ1相关的知识,希望对你有一定的参考价值。

MV50AFZ1   这个程序里面找个FORM 用户出口,
FORM USEREXIT_SAVE_DOCUMENT_PREPARE.
 
用户出口如下:

 

例:需求:

 开发要求:制作交货单的人员,需要同一张单的交货仓位保持一致,设计成在保存前将所有行都改为和第一行项的仓位一致。

在发货过时会检查如发现不一致,不于过账。

*---------------------------------------------------------------------*  
*       FORM USEREXIT_SAVE_DOCUMENT_PREPARE                           *  
*---------------------------------------------------------------------*  
*       This userexit can be used for changes or checks, before a     *  
*       document is saved.                                            *  
*                                                                     *  
*       If field T180-TRTYP contents \'H\', the document will be        *  
*       created, else it will be changed.                             *  
*                                                                     *  
*       This form is called at the beginning of form BELEG_SICHERN    *  
*                                                                     *  
*---------------------------------------------------------------------*  
FORM userexit_save_document_prepare.  
  
  IF sy-uname = \'HS014\'.  
    BREAK-POINT.  
  ENDIF.  
  
  "只处理对客户发货,公司间交易不处理.  
  IF ( tcode = \'VL02N\' OR tcode = \'VL02\' OR tcode = \'VL01N\' OR tcode = \'VL01\' ) and ( xlikp-VKORG = \'1010\' or  xlikp-VKORG = \'1020\' ).  
  
              "DATA: XLIPS_C LIKE LIPSVB OCCURS 0 WITH HEADER LINE.  
              "DATA: I_LIPS LIKE LIPSVB OCCURS 0 WITH HEADER LINE.  
              data: c_lgort like xlips-lgort , i_idx type i,i_Cnt type i, msg type string.  
  
              IF sy-ucomm = \'WABU_T\'. "过账 需要检查 如果有不同仓位,则报错.  
               c_lgort = \'\'.  
               i_idx = 0.  
               loop at xlips  .  
                if i_idx = 0 . "取得第一行的库位  
                   i_idx = i_idx + 1.  
                   c_lgort = c_lgort = xlips-lgort.  
                endif.  
                if c_lgort <> xlips-lgort.  
                   message \'交货单内存在不同的交货仓位,请通知销售助理修改正确后再过账.\' type \'E\'.  
                endif.  
                clear xlips.  
               endloop.  
              endif.  
  
              IF sy-ucomm = \'SICH_T\' or sy-ucomm = \'YES\' .  "如果是保存(或退出提示保存) ,则统一更新仓位.  
               c_lgort = \'\'.  
               i_idx = 0.  
               i_Cnt = 0.  
               loop at xlips  .  
                  if i_idx = 0 . "取得第一行的仓位  
                     i_idx = i_idx + 1.  
                     c_lgort = c_lgort = xlips-lgort.  
                     if c_lgort = \'\'.  
                         message \'在保存交货单前请填写第一行项的交货仓位\' type \'E\'.  
                     else.  
                         concatenate  \'你在第一行项输入的仓是\' c_lgort \',增强系统将按此仓位更新所有行项\' into msg.  
                         message msg type \'I\'.  
                     endif.  
                  endif.  
  
                  if c_lgort <> xlips-lgort.  
                      "更新仓位  
                      xlips-lgort = c_lgort.  
  
                      "更新标识 U 表示该纪录被修改,需要更新,D表示删除,I表示新增  
                      if  xlips-updkz = \' \'.  
                        xlips-updkz = \'U\'.  
                      endif.  
                      modify xlips.  
                      i_Cnt = i_Cnt + 1.  
  
                  endif.  
                  clear xlips.  
               endloop.  
               if i_Cnt > 1.  
                    msg = i_Cnt .  
                    concatenate  \'更新了\' msg \'个行项的仓位\' into msg.  
                    message msg type \'I\'.  
               endif.  
              endif.  
   ENDIF.  
ENDFORM.                    "USEREXIT_SAVE_DOCUMENT_PREPARE  
*eject  

 

 

以上是关于20170228 交货单过账增强 MV50AFZ1的主要内容,如果未能解决你的问题,请参考以下文章

交货单过账报错

ABAP EWM PRDO交货单过账

ABAP EWM PRDO交货单过账

ABAP EWM PRDI交货单过账

交货单过账

ABAP EWM PRDI交货单过账