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  
时间: 2024-10-10 17:44:22

20170228 交货单过账增强 MV50AFZ1的相关文章

交货单过账后 过账日期

交货单过账后 过账日期等于 实际发货日期 ,如实际发货日期填写为5.30 但是当前日期为5.27 那么过账后的凭证显示过账日期为5.30 但是文件操作日期是当前日期 原文地址:https://www.cnblogs.com/hdchen/p/8986439.html

SAP 公司间STO场景中外向交货单过账后自动触发内向交货单功能的实现

如下STO,是从公司代码SZSP转入CSAS, 如下图示的内向交货单180018660.该内向交货单是在外向交货单80016325 发货过账的时候自动触发的, 如何实现这个功能? 1)定义输出类型(output type)SPED SPRO > Logistic Execution > Shipping > Basic Shipping Functions > Output Control > Output Determination > Maintain Output

交货单过账

CTS FUNCTION Z_SD_DN_PGI1. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" REFERENCE(I_VBELN) TYPE VBELN *" REFERENCE(I_BUDAT) TYPE BUDAT DEFAULT SY-DATUM *"

交货单过账报错

DATA:LT_LIPS TYPE TABLE OF LIPS. DATA:LS_LIPS TYPE LIPS. DATA:LT_VBPOK_TAB TYPE TABLE OF VBPOK. DATA:LS_VBPOK_TAB TYPE VBPOK. DATA:LT_ITEM_DATA_SPL TYPE TABLE OF /SPE/BAPIOBDLVITEMCHG. DATA:LS_ITEM_DATA_SPL TYPE /SPE/BAPIOBDLVITEMCHG. DATA:LS_HEADER_

SAP模块常用增强总结{转载}

MM模块: 采购订单增强: BADI :ME_GUI_PO_CUST ME_PROCESS_PO_CUST 物料凭证增强: BADI:MB_DOCUMENT_BADI USER-EXIT:MBCF0002 实现功能1.当参照预留过帐时,检查填入数量是否小于预留数量 2.移动类型是***的时候,查看RSNUM是否为空 3.检查原始单据工厂和库存地点与物料凭证的工厂和库存地点一致 MBCF0009 实现功能1.当移动类型是***的时候,库存地点只能是**** 2.工单下达日期+时间小于预留需求日期+

交货单和销售订单增强不能报错误消息导致DUMP问题解决;

1.销售订单增强  报 E 和 W 类型消息 导致报错 ,后面加上 一句代码: LEAVE TO TRANSACTION 'VA02' AND SKIP FIRST SCREEN . 或者用这种消息方式 MESSAGE ID 'ZSD01' TYPE 'E' NUMBER '187' WITH L_MATNR_STR ZATWRT_NEW LS_ZAPP_MTR_SMZQ-ZYJHFSJ. 2.交货单增强报错误消息 *eject *--------------------------------

表likp新增第一次过账输入日期字段,vl02n/vl01n/vl03n/vl06o的增强

在程序:MV50AFZ1的 FORM USEREXIT_SAVE_DOCUMENT_PREPARE. *begin of ADD CRQ000000012135 CAIZJIAN 2014/3/25(更新第一次交货日期likp-zzsysdat)* IF SY-TCODE = 'VL02N' OR SY-TCODE = 'VL03N' OR SY-TCODE = 'VL01N'. "ADD 'VL03N ' CRQ000000012135 caizjian 2014/5/8 add CRQ000

SAP 金税接口增强 BADI

  SAP与金税连接有两种方式:组件接口及文本接口. 文本接口为例: 1.SAP取发票数据.主要来自合同,销售订单,交货单.发票,客户供应商主数据等 2.SAP处理:合并.拆分,折扣等 3.导出TXT文本 4.金税开票机读取文本:通过參数传递数据,注意1分钱误差问题(參数传递导致) 5.回写     收票方名称  出具发票地址的增强BADI:   IDGTCN_CUST_ADDR   接口回传后将金税发票号回写相应的財务凭证的reference字段的增强BADI: IDGTCN_WRITEBAC

MIGO 屏幕增强

实现不步骤: 第一步.新建一个自定义的透明表:zmkpf,同时维护它的SM30的可编辑性(se55).如图: 第二步: se80 选择program:输入SAPLMIGO_BADI_EXAMPLE,可以看到下面的FOUNCITON MODULE(MIGO_BADI_EXAMPLE),或者自己新建一个F类型的founction module 程序, 在MIGO_BADI_EXAMPLE中新增三个funciton ,用于输入,显示和保存 第三步: 在BADI:MB_MIGO_BADI中做屏幕增强 0