MIGO采购订单收货批次增强

这篇博客介绍了在SAP系统中,通过SAPLV01Z增强点和EXIT_SAPLV01Z_002函数,当执行101收货操作且采购订单批次为空时,如何自动为批次号赋值。赋值规则为当前日期后六位加上递增的四位流水号。内容涉及了ABAP代码实现逻辑,包括读取字段值、判断条件以及调用转换函数等步骤。
摘要由CSDN通过智能技术生成

场景: 当对某个采购订单进行101收货的时候,如果批次为空,则给它赋一个值,赋值的规则是当前日期的后六位+4位流水号

SMOD 增强点:SAPLV01Z

          函数:EXIT_SAPLV01Z_002

 

	*&---------------------------------------------------------------------*
	*& 包含               ZXVBZU02
	*&---------------------------------------------------------------------*
	DATA: lt_dyn   TYPE TABLE OF dynpread,
	      ls_dyn   TYPE dynpread,
	      lv_charg TYPE mchb-charg,
	      lv_seq   TYPE c LENGTH 4.
	
	CLEAR: lt_dyn,
	       ls_dyn,
	       lv_charg,
	       lv_seq.
	* 在对采购订单做MIGO 101收货的时候,判断当前是否有输入批次号,如果没有,则使用当前日期的后六位+四位流水号赋值
	IF sy-tcode = 'MIGO' AND x_bncom-bwart = '101' AND x_bncom-bstyp = 'F'.
	
	  ls_dyn-fieldname = 'GOITEM-CHARG'.
	  APPEND ls_dyn TO lt_dyn.
	  CLEAR: ls_dyn.
	
	  CALL FUNCTION 'DYNP_VALUES_READ'
	    EXPORTING
	      dyname               = 'SAPLMIGO'
	      dynumb               = '0335'
	*     TRANSLATE_TO_UPPER   = ' '
	*     REQUEST              = ' '
	*     PERFORM_CONVERSION_EXITS             = ' '
	*     PERFORM_INPUT_CONVERSION             = ' '
	*     DETERMINE_LOOP_INDEX = ' '
	*     START_SEARCH_IN_CURRENT_SCREEN       = ' '
	*     START_SEARCH_IN_MAIN_SCREEN          = ' '
	*     START_SEARCH_IN_STACKED_SCREEN       = ' '
	*     START_SEARCH_ON_SCR_STACKPOS         = ' '
	*     SEARCH_OWN_SUBSCREENS_FIRST          = ' '
	*     SEARCHPATH_OF_SUBSCREEN_AREAS        = ' '
	    TABLES
	      dynpfields           = lt_dyn
	    EXCEPTIONS
	      invalid_abapworkarea = 1
	      invalid_dynprofield  = 2
	      invalid_dynproname   = 3
	      invalid_dynpronummer = 4
	      invalid_request      = 5
	      no_fielddescription  = 6
	      invalid_parameter    = 7
	      undefind_error       = 8
	      double_conversion    = 9
	      stepl_not_found      = 10
	      OTHERS               = 11.
	  IF sy-subrc <> 0.
	* Implement suitable error handling here
	  ENDIF.
	
	  READ TABLE lt_dyn INTO ls_dyn INDEX 1.
	  IF sy-subrc = 0..
	    IF ls_dyn-fieldvalue IS INITIAL.
	      CLEAR: lv_charg,
	             lv_seq.
	      SELECT MAX( charg ) INTO  lv_charg
	        FROM mchb
	        WHERE matnr = x_bncom-matnr
	          AND werks = x_bncom-werks
	          AND lgort = x_bncom-lgort
	          AND ersda = sy-datum.
	      IF sy-subrc = 0 AND lv_charg+0(6) = sy-datum+2(6).
	        lv_seq = lv_charg+6(4).
	        lv_seq = lv_seq + 1.
	        IF lv_seq IS NOT INITIAL.
	          CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
	            EXPORTING
	              input  = lv_seq
	            IMPORTING
	              output = lv_seq.
	
	        ENDIF.
	        CONCATENATE sy-datum+2(6) lv_seq INTO new_charg.
	      ELSE.
	        CONCATENATE sy-datum+2(6) '0001' INTO new_charg.
	      ENDIF.
	
	    ENDIF.
	  ENDIF.
	ENDIF. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值