SD--如何增強是同一類出庫單使用不同號碼段

JackWu發表於2015-07-22

在現實的業務中,一個公司有多個銷售組織,它們使用同一個出庫型別,業務往往希望它們建立的出庫單的號碼採用不同號碼範圍。但在sap裡出庫單號碼範圍是在出庫單型別裡設定,也就是使用相同的出庫單型別,也就使用相同的號碼範圍。如果要達到上需業務需求,我們可以使用增強實現。具體實現參見下面的步驟:

步驟1:建立多個號碼段:

path: Spro->Sales and Distribution->Sales->Sales Documents->Sales Document Header->Define Number Ranges For Sales Documents

or

path: Spro->Logistics Execution->Shipping->Deliveries->Define Number Ranges for Deliveries

TCODE: VN01
 
步驟二:設定出庫單型別的號碼範圍

path: Spro->Logistics Execution->Shipping->Deliveries->Define Delivery Types
TCODE: 0VLK
 

步驟三:修改SAP增強程式碼

modify the source code to control use different number range for different sale organiztion
3.1 you can use se38 to open source code MV50AFZ1 and find the form userexit_number_range.

*---------------------------------------------------------------------*
*       FORM USEREXIT_NUMBER_RANGE                                    *
*---------------------------------------------------------------------*
*       This userexit can be used to determine the numberranges for   *
*       the internal document number.                                 *
*                                                                     *
*       US_RANGE_INTERN - internal number range                       *
*                                                                     *
*       This form is called from form BELEG_SICHERN                   *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_NUMBER_RANGE USING US_RANGE_INTERN.

* Example: Numer range from TVLK like in standard
* US_RANGE_INTERN = TVLK-NUMKI.
*{   INSERT         DEVK943692                                        1
 DATA: z_werks TYPE lips-werks,
        z_vkorg TYPE likp-vkorg,
        z_nrnr  TYPE nrnr,
        z_vbtyp TYPE likp-vbtyp.
  DATA: wa_xlikp LIKE likpvb,
        wa_xlips LIKE lipsvb.
US_RANGE_INTERN = TVLK-NUMKI.
data t(1).
t = TVLK-LFART(1).
if t = 'Z'.
  LOOP AT xlikp INTO wa_xlikp.
    LOOP AT xlips INTO wa_xlips.
      CASE wa_xlikp-vbtyp.
        WHEN OTHERS.
          MOVE: wa_xlikp-vbtyp TO z_vbtyp.
      ENDCASE.
      IF z_vbtyp EQ 'J' or        "outbound del.
         z_vbtyp eq 'T'.          "return del. "V003
        MOVE: wa_xlips-werks TO z_werks,       "V002  "SBr16072007
              wa_xlikp-vkorg TO z_vkorg.
      ELSEIF z_vbtyp EQ '7'.      "shipp.notification
        MOVE: space          TO z_vkorg,
              wa_xlips-werks TO z_werks.
      ENDIF.
      if z_vkorg = '6001'.
         if  z_vbtyp eq 'J'.
            Case z_werks.
              WHEN '6255'.
                US_RANGE_INTERN = 'D1'.
              WHEN '6245'.
                US_RANGE_INTERN = 'D2'.
              WHEN '6254'.
                US_RANGE_INTERN = 'D3'.
              WHEN '6234'.
                US_RANGE_INTERN = 'D4'.
              WHEN '6101'.
                US_RANGE_INTERN = 'D5'.
            endcase.
         elseif z_vbtyp EQ 'T' .
            Case z_werks.
              WHEN '6255'.
                US_RANGE_INTERN = 'R1'.
              WHEN '6245'.
                US_RANGE_INTERN = 'R2'.
              WHEN '6254'.
                US_RANGE_INTERN = 'R3'.
              WHEN '6234'.
                US_RANGE_INTERN = 'R4'.
              WHEN '6101'.
                US_RANGE_INTERN = 'R5'.
            endcase.
         endif.
      endif.
      EXIT.
    ENDLOOP.
    EXIT.
  ENDLOOP.
endif.
*}   INSERT

ENDFORM.

 

相關連結:

如何控制同一個訂單型別的使用多個號碼範圍

 

相關文章