all user exit mv45afzz (implicit user exit )

MV45AFZZ this is included here all code put related to sales order creation while creating a sales order

 va01 this exit trigger so as per your requirement we can write your code here I going to listed different type exit as per the real requirement you find the code and develop your business scenario





INCLUDE MV45AFZZ .


Modify Screen VA01/VA02/VA03

How to Activated and Deactivated Screen 



Export Memory example While Creating a sales order 

How to Call workflow While Creating a sales order 

















TYPES BEGIN OF ty_vbak,
          KVGR1 TYPE vbak-KVGR1,
          KVGR2 TYPE vbak-KVGR2,
        END OF ty_vbak.

DATA ls_vbak TYPE ty_vbak.

IF sy-tcode 'VA02' and sy-uname 'FREDDIE'.
BREAK freddie.

*SELECT SINGLE KVGR1 KVGR2
*  FROM vbak
*  INTO ls_vbak
* WHERE vbeln = vbak-vbeln.
*
*IF vbak-KVGR1 <> ls_vbak-KVGR1 or vbak-KVGR2 <> ls_vbak-KVGR2.
*  VBAK-FAKSK = '05'.
*ENDIF.

IF YVBAK-faksk IS INITIAL.
  vbak-faksk '05'.
ENDIF.
ENDIF.

ENDENHANCEMENT.
ENHANCEMENT 1  ZSALES_CHANGE_MOVE_VBAK.    "active version

*BREAK ANJALIV.
DATA Lv_kvgr1 TYPE VBAK-kvgr1.
DATA lv_kvgr2 TYPE vbak-kvgr2.
DATA FAKSK TYPE vbak-faksk.
DATA kvgr1 TYPE flag.     "FLG_KVGR1 TYPE FLAG.
DATA kvgr2  TYPE flag.  "FLG_KVGR2 TYPE FLAG.
  if sy-tcode 'VA02' AND SY-uname 'ANJALIV'.
      SELECT SINGLE kvgr1
    FROM vbak
    INTO LV_KVGR1
    WHERE vbeln vbak-vbeln.

   SELECT SINGLE kvgr2
    FROM vbak
    INTO LV_KVGR2
    WHERE vbeln vbak-vbeln.

   IF LV_KVGR1 <> xvbak-kvgr1.
     kvgr1 'X'.

     EXPORT kvgr1 FROM kvgr1 TO MEMORY ID 'KVGR1'.
   ENDIF.

  IF LV_KVGR2 <> xvbak-kvgr2.
    kvgr2 'X'.
   EXPORT kvgr2 FROM kvgr2 TO MEMORY ID 'KVGR2'.
  ENDIF.
ENDIF.
ENDENHANCEMENT.
ENHANCEMENT 1  ZSALES_CH_WRKF_MB.    "active version
*break-point.
if sy-tcode 'VA02' AND SY-uname 'MANISHAB'.
      SELECT SINGLE kvgr1
    FROM vbak
    INTO LV_KVGR1
    WHERE vbeln vbak-vbeln.

   SELECT SINGLE kvgr2
    FROM vbak
    INTO LV_KVGR2
    WHERE vbeln vbak-vbeln.

   IF LV_KVGR1 <> xvbak-kvgr1.
     kvgr1 'X'.

     EXPORT kvgr1 FROM kvgr1 TO MEMORY ID 'KVGR1'.
   ENDIF.

  IF LV_KVGR2 <> xvbak-kvgr2.
    kvgr2 'X'.
   EXPORT kvgr2 FROM kvgr2 TO MEMORY ID 'KVGR2'.
  ENDIF.
ENDIF.

ENDENHANCEMENT.
ENHANCEMENT 1  ZSM_WF_TRIGGER.    "active version

*  BREAK sunilm.
*  IF sy-tcode = 'VA02' and sy-uname = 'SUNILM'."'BHAVESH'.
*  data :lv_ord type vbeln_va,
*        lv_new type BNAME_V.
*  lv_ord = xvbak-vbeln.
*  select single bname from vbak into lv_new where vbeln = lv_ord.
*
* IF lv_new NE vbak-bname.   "xvbak-bname.
*data wa_vbak type vbak.
*select single * from vbak into wa_vbak where vbeln = lv_ord.
*
**  if sy-subrc = 0.
**    wa_vbak-augru = '460'.
**    modify vbak from wa_vbak.
**    UPDATE vbak set augru = '460' where vbeln = lv_ord.
**    endif.
*    endif.
*    endif.

ENDENHANCEMENT.
ENHANCEMENT 1  ZVBAK_WF_K.    "active version
*
*  BREAK krutis.
  DATAgs_vbak TYPE vbak.
  DATAgs_vbkd TYPE vbkd.
  DATAflag_zterm(1type c,
        flag_kvgr1(1TYPE c,
        flag_kvgr2(1TYPE c.

IF sy-tcode 'VA02' and sy-uname 'KRUTIS'.
   SELECT SINGLE *
    FROM vbak
    INTO gs_vbak
    WHERE vbeln vbak-vbeln.
IF gs_vbak-kvgr1 <> xvbak-kvgr1.
  flag_kvgr1 'X'.
ENDIF.

IF gs_vbak-kvgr2 <> xvbak-kvgr2.
  flag_kvgr2 'X'.
ENDIF.

EXPORT flag_kvgr1 FROM flag_kvgr1 TO MEMORY ID 'KVGR1'.
EXPORT flag_kvgr2 FROM flag_kvgr2 TO MEMORY ID 'KVGR2'.


ENDIF.

ENDENHANCEMENT.
*$*$-End:   (3)---------------------------------------------------------------------------------$*$*

*  vbak-zzfield = xxxx-zzfield2.

ENDFORM.
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_MOVE_FIELD_TO_VBAP                              *
*---------------------------------------------------------------------*
*       This userexit can be used to move some fields into the sales  *
*       dokument item workaerea VBAP                                  *
*                                                                     *
*       SVBAP-TABIX = 0:  Create item                                 *
*       SVBAP-TABIX > 0:  Change item                                 *
*                                                                     *
*       This form is called at the end of form VBAP_FUELLEN.          *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_MOVE_FIELD_TO_VBAP.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(4) Form USEREXIT_MOVE_FIELD_TO_VBAP, Start                                                                                                           A
*$*$-Start: (4)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 2  ZIMPLENTATION.    "active version
*BREAK-POINT.
ENDENHANCEMENT.
ENHANCEMENT 1  ZSALES_CHANGE_MOVE_VBAP.    "active version

* BREAK Gunjan.
ENDENHANCEMENT.
*$*$-End:   (4)---------------------------------------------------------------------------------$*$*

*  VBAP-zzfield = xxxx-zzfield2.

ENDFORM.
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_MOVE_FIELD_TO_VBEP                              *
*---------------------------------------------------------------------*
*       This userexit can be used to move some fields into the sales  *
*       dokument schedule line workaerea VBEP                         *
*                                                                     *
*       SVBEP-TABIX = 0:  Create schedule line                        *
*       SVBEP-TABIX > 0:  Change schedule line                        *
*                                                                     *
*       This form is called at the end of form VBEP_FUELLEN.          *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_MOVE_FIELD_TO_VBEP.

*  VBEP-zzfield = xxxx-zzfield2.

ENDFORM.
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_MOVE_FIELD_TO_VBKD                              *
*---------------------------------------------------------------------*
*       This userexit can be used to move some fields into the sales  *
*       dokument business data workaerea VBKD                         *
*                                                                     *
*       SVBKD-TABIX = 0:  Create data                                 *
*       SVBKD-TABIX > 0:  Change data                                 *
*                                                                     *
*       This form is called at the end of form VBKD_FUELLEN.          *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_MOVE_FIELD_TO_VBKD.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(5) Form USEREXIT_MOVE_FIELD_TO_VBKD, Start                                                                                                           A
*$*$-Start: (5)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZENHANCE_VBKD.    "active version


*BREAK krushal.
*IF sy-tcode = 'VA02' and sy-uname = 'FREDDIE'.
*  DATA : lv_bstkd TYPE bstkd.
*
*  IMPORT lv_bstkd FROM MEMORY ID 'bstkd'.
*  vbkd-bstkd = lv_bstkd.
*
*ENDIF.
*
*IF sy-tcode = 'VA02' and sy-uname = 'FREDDIE'.
*
*TYPES : BEGIN OF it_vbak,
*          vbeln TYPE vbeln_va,
*          kvgr1 TYPE kvgr1,
*          kvgr2 TYPE kvgr2,
*        END OF it_vbak.
*
*DATA : lt_vbak TYPE STANDARD TABLE OF it_vbak,
*       ls_vbak TYPE it_vbak,
*       lv_bstkd TYPE bstkd.
*
*SELECT vbeln kvgr1 kvgr2
*  FROM vbak
*  INTO TABLE lt_vbak
* WHERE vbeln = vbak-vbeln.
**
*READ TABLE lt_vbak INTO ls_vbak WITH KEY vbeln = vbak-vbeln.
*  IF sy-subrc = 0.
*    IF vbak-kvgr1 NE ls_vbak-kvgr1 or vbak-kvgr2 NE ls_vbak-kvgr2.
*       VBKD-BSTDK+6(2) = VBKD-BSTDK+6(2) + 2.
*       lv_bstkd = VBKD-BSTDK.
*       EXPORT lv_bstkd TO MEMORY ID 'bstkd'.
*    ENDIF.
*  ENDIF.
*ENDIF.


*BREAK anju_d.
*DATA : lv_zterm TYPE dzterm,
*       flag_zterm TYPE flag.
*IF sy-tcode = 'VA02'.
*  SELECT SINGLE zterm FROM vbkd
*    INTO lv_zterm
*    WHERE vbeln = vbak-vbeln.
*  IF vbkd-zterm <> lv_zterm.
*    flag_zterm = 'X'.
*    EXPORT flag_zterm FROM flag_zterm TO MEMORY ID 'SY-UCOMM'.
*  ENDIF.
*ENDIF.
*DATA :lt_container TYPE STANDARD TABLE OF swr_cont,
*      ls_container TYPE swr_cont.
*IF sy-tcode = 'VA02'.
*  SELECT SINGLE zterm FROM vbkd
*    INTO lv_zterm
*    WHERE vbeln = vbak-vbeln.
*  IF vbkd-zterm = lv_zterm.
*  ELSE.
**    PERFORM call_workflow.
*    flag_zterm = 'X'.
*    ls_container-element = 'DOC_NO'.
*    ls_container-value = vbak-vbeln.
*    APPEND ls_container TO lt_container.
*    CLEAR : ls_container.
*
*    CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*      EXPORTING
*        task                      = 'WS99900499'
*        language                  = sy-langu
*        do_commit                 = 'X'
*        user                      = sy-uname
**       START_ASYNCHRONOUS        = ' '
**       DESIRED_START_DATE        =
**       DESIRED_START_TIME        =
**       DESIRED_START_ZONLO       = SY-ZONLO
**       IFS_XML_CONTAINER         =
**     IMPORTING
**       RETURN_CODE               =
**       WORKITEM_ID               =
**       NEW_STATUS                =
*      TABLES
*        input_container           = lt_container
**       MESSAGE_LINES             =
**       MESSAGE_STRUCT            =
**       AGENTS                    =
*              .
*    IF sy-subrc = 0.
*      EXPORT flag_zterm FROM flag_zterm TO MEMORY ID 'SY-UCOMM'.
*    ENDIF.
*  ENDIF.
*ENDIF.
ENDENHANCEMENT.
ENHANCEMENT 2  ZSALES_CHANGE_MOVE_VBAK.    "active version
*break-point. "MB
DATA Lv_kvgr1 TYPE VBAK-kvgr1.
DATA lv_kvgr2 TYPE vbak-kvgr2.
DATA FAKSK TYPE vbak-faksk.
DATA kvgr1 TYPE flag.     "FLG_KVGR1 TYPE FLAG.
DATA kvgr2  TYPE flag.  "FLG_KVGR2 TYPE FLAG.

if sy-tcode 'VA02' AND SY-uname 'MANISHAB'.
      SELECT SINGLE kvgr1
    FROM vbak
    INTO LV_KVGR1
    WHERE vbeln vbak-vbeln.

   SELECT SINGLE kvgr2
    FROM vbak
    INTO LV_KVGR2
    WHERE vbeln vbak-vbeln.

   IF LV_KVGR1 <> xvbak-kvgr1.
     kvgr1 'X'.

     EXPORT kvgr1 FROM kvgr1 TO MEMORY ID 'KVGR1'.
   ENDIF.

  IF LV_KVGR2 <> xvbak-kvgr2.
    kvgr2 'X'.
   EXPORT kvgr2 FROM kvgr2 TO MEMORY ID 'KVGR2'.
  ENDIF.
ENDIF.

ENDENHANCEMENT.
ENHANCEMENT 1  ZSALES_CHANGE_MOVE_VBKD.    "active version

  DATA gs_zterm TYPE VBKD-zterm.
  DATA zterm  TYPE flag.
*  BREAK ANJALIV.
  IF SY-tcode 'VA02' AND SY-uname 'ANJALIV'.
    SELECT SINGLE zterm
      FROM vbkd
      INTO gs_zterm
      WHERE vbeln vbak-vbeln.
    IF gs_zterm <> xvbkd-zterm.
      zterm  'X'.
      EXPORT zterm  FROM zterm TO MEMORY ID 'ZTERM'.
    ENDIF.
  ENDIF.


ENDENHANCEMENT.
ENHANCEMENT 1  ZSALES_CH_ZTERM_WRKF_MB.    "active version
*break-point.
  IF SY-tcode 'VA02' AND SY-uname 'MANISHAB'.
    SELECT SINGLE zterm
      FROM vbkd
      INTO gs_zterm
      WHERE vbeln vbak-vbeln.
    IF gs_zterm <> xvbkd-zterm.
      zterm  'X'.
      EXPORT zterm  FROM zterm TO MEMORY ID 'ZTERM'.
    ENDIF.
  ENDIF.
ENDENHANCEMENT.
ENHANCEMENT 2  ZVBAK_WF_K.    "active version
*

*data : lv_zterm TYPE vbkd-zterm.
*if sy-tcode = 'VA01' or sy-tcode = 'VA02'.
*
*  CLEAR : sy-ucomm.
*  if vbkd-zterm ne 'ZXYZ' .
*    MESSAGE 'You Can enter Only One Payment term : ZXYZ' TYPE 'E' DISPLAY LIKE 'I'.
*   endif.
*  ENDIF.
******
******DATA: flag_zterm(1) type c,
******      gs_vbkd TYPE vbkd.
*******BREAK krutis.
******IF sy-tcode = 'VA02' and sy-uname = 'KRUTIS'.
******  SELECT SINGLE *
******      FROM vbkd
******      INTO gs_vbkd
******      WHERE vbeln = vbak-vbeln.
******     IF gs_vbkd-zterm <> xvbkd-zterm.
******       flag_zterm = 'X'.
******     ENDIF.
******EXPORT flag_zterm FROM flag_zterm TO MEMORY ID 'ZTERM'.
******ENDIF.



ENDENHANCEMENT.
*$*$-End:   (5)---------------------------------------------------------------------------------$*$*

*  VBKD-zzfield = xxxx-zzfield2.

ENDFORM.
*eject

*---------------------------------------------------------------------*
*       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 TVAK like in standard
* US_RANGE_INTERN = TVAK-NUMKI.

ENDFORM.
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_PRICING_PREPARE_TKOMK                           *
*---------------------------------------------------------------------*
*       This userexit can be used to move additional fields into the  *
*       communication table which is used for pricing:                *
*                                                                     *
*       TKOMK for header fields                                       *
*                                                                     *
*       This form is called from form PREISFINDUNG_VORBEREITEN.       *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_PRICING_PREPARE_TKOMK.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(6) Form USEREXIT_PRICING_PREPARE_TKOMK, Start                                                                                                        A
*$*$-Start: (6)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZGR_ENH.    "active version

ENDENHANCEMENT.
*$*$-End:   (6)---------------------------------------------------------------------------------$*$*

*  TKOMK-zzfield = xxxx-zzfield2.

ENDFORM.
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_PRICING_PREPARE_TKOMP                           *
*---------------------------------------------------------------------*
*       This userexit can be used to move additional fields into the  *
*       communication table which is used for pricing:                *
*                                                                     *
*       TKOMP for item fields                                         *
*                                                                     *
*       This form is called from form PREISFINDUNG_VORBEREITEN.       *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_PRICING_PREPARE_TKOMP.

*  TKOMP-zzfield = xxxx-zzfield2.
*{   INSERT         ID3K933021                                        1
* SL Ocean Carrier Demo Setup
datalv_adrnr like vbpa-adrnr.
datawa_xvbap like vbap.

if vbak-auart 'ZZOR' or
   vbak-auart 'ZZQT' or
   vbak-auart 'ZZSC'.
  tkomp-kvgr2 vbak-kvgr2.
  loop at xvbpa
    where parvw 'ZV'.
    tkomp-zzporcit  xvbpa-lifnr.
    tkomp-zzporland xvbpa-land1.
  endloop.
  loop at xvbpa
    where parvw 'ZW'.
    tkomp-zzpodcit  xvbpa-lifnr.
    tkomp-zzpodland xvbpa-land1.
  endloop.

* 29.12.2005 Achim Rink, D029766
* move city of partners YV (Load port) and YW (Discharge Port) into comm
* structure
loop at xvbpa
   where parvw 'YV'.
   tkomp-zzloadport xvbpa-lifnr.
 endloop.
loop at xvbpa
   where parvw 'YW'.
   tkomp-zzdischport xvbpa-lifnr.
 endloop.
* end of inser
* 29.12.2005 Achim Rink, D029766
endif.

* Material Freight Group for THC and CYD
if not vbap-uepos is initial and
   not vbap-stlkn is initial and
   vbap-pstyv eq 'ZSLC'.
   read table xvbap with key posnr vbap-uepos
              into wa_xvbap.
   tkomp-mfrgr wa_xvbap-mfrgr.
endif.

* Reference document for pricing agreements in Contract Process
if not vbak-vgbel is initial
   and vbap-pstyv eq 'ZLSC'.
   tkomp-vgbel vbak-vgbel.
endif.

*}   INSERT

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(7) Form USEREXIT_PRICING_PREPARE_TKOMP, End                                                                                                          A
*$*$-Start: (7)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZENH_SD_PRICING.    "active version

ENDENHANCEMENT.
*$*$-End:   (7)---------------------------------------------------------------------------------$*$*
ENDFORM.
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_READ_DOCUMENT                                   *
*---------------------------------------------------------------------*
*       This userexit can be used to read data in additional tables   *
*       when the program reads a sales document.                      *
*                                                                     *
*       This form is called at the end of form BELEG_LESEN.           *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_READ_DOCUMENT.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(8) Form USEREXIT_READ_DOCUMENT, Start                                                                                                                A
*$*$-Start: (8)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZENH_SD_READ_DOC.    "active version
*
ENDENHANCEMENT.
*$*$-End:   (8)---------------------------------------------------------------------------------$*$*

ENDFORM.
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_SAVE_DOCUMENT                                   *
*---------------------------------------------------------------------*
*       This userexit can be used to save data in additional tables   *
*       when 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 from form BELEG_SICHERN, before COMMIT *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_SAVE_DOCUMENT.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(9) Form USEREXIT_SAVE_DOCUMENT, Start                                                                                                                A
*$*$-Start: (9)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 2  ZCUST_WF_SO.    "active version
*********************************************************mihir**************************

break rajesh.
****if sy-tcode = 'VA01' or Sy-tcode = 'VA02'.
****  if vbkd-zterm ne 'ZXYZ'.
****    MESSAGE 'You Can take Only One Payment term : ZXYZ' TYPE 'S' DISPLAY LIKE 'E'.
****    PERFORM FOLGE_GLEICHSETZEN(SAPLV00F).
****    FCODE = 'ENT1'.
****    SET SCREEN SYST-DYNNR.
****    LEAVE SCREEN.
****   endif.
****ENDIF.
**********************************************************mihir**************************
*IF 1 = 2.
*  BREAK chiragb.
*  DATA : lv_bname TYPE bname_v.
*  CLEAR : lv_bname.
*  SELECT SINGLE bname
*    FROM vbak
*    INTO lv_bname
*    WHERE vbeln = vbak-vbeln.
*
*    IF lv_bname <> xvbak-bname.
*      xvbak-name_flg = 'X'.
*      yvbak-name_flg = 'X'.
*      vbak-name_flg = 'X'.
**      xvbak-augru = '000'.
**      vbak-augru = '000'.
*
*      DATA: LT_CONT TYPE STANDARD TABLE OF SWR_CONT,
*            LS_CONT TYPE SWR_CONT.
*
*      LS_CONT-ELEMENT = 'DOCNO'.
*      LS_CONT-VALUE = vbak-vbeln.
*      APPEND LS_CONT TO LT_CONT.
*      CLEAR LS_CONT.
*
*      CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*        EXPORTING
*          TASK            = 'WS99900502'
*          LANGUAGE        = SY-LANGU
*          DO_COMMIT       = 'X'
*          USER            = SY-UNAME
*        TABLES
*          INPUT_CONTAINER = LT_CONT.
*
*    ENDIF.
*
*ENDIF.
**IF sy-uname = 'CHIRAGB'.
*
*
**ENDIF.
*
*
*
*
*
*
*
*

*  break aditya.
*  DATA: LT_CONTAINER TYPE STANDARD TABLE OF SWR_CONT,
*        LS_CONTAINER TYPE SWR_CONT.
*
*
*  LS_CONTAINER-ELEMENT = 'SALES_ORDER'.
*  LS_CONTAINER-VALUE = vbak-vbeln.
*  APPEND LS_CONTAINER TO LT_CONTAINER.
*  CLEAR LS_CONTAINER.
*
*
*
*CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*  EXPORTING
*    TASK            = 'WS99900247'
*    LANGUAGE        = SY-LANGU
*    DO_COMMIT       = 'X'
*    USER            = SY-UNAME
*  TABLES
*    INPUT_CONTAINER = LT_CONTAINER.

*BREAK anju_d.
*DATA: LT_CONTAINER TYPE STANDARD TABLE OF SWR_CONT,
*      LS_CONTAINER TYPE SWR_CONT.
*
*LS_CONTAINER-ELEMENT = 'DOC_NO'.
*LS_CONTAINER-VALUE = vbak-vbeln.
*APPEND LS_CONTAINER TO LT_CONTAINER.
*CLEAR LS_CONTAINER.
*
*
*
*CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*  EXPORTING
*    TASK            = 'WS99900425'
*    LANGUAGE        = SY-LANGU
*    DO_COMMIT       = 'X'
*    USER            = SY-UNAME
*  TABLES
*    INPUT_CONTAINER = LT_CONTAINER.

*BREAK anju_d.
*DATA : lv_zterm TYPE dzterm,
*       flag_zterm TYPE flag.
*DATA : lv_kvgr2 TYPE kvgr2,
*       flag_kvgr2 TYPE flag.
*DATA :lt_container TYPE STANDARD TABLE OF swr_cont,
*      ls_container TYPE swr_cont.
*IF sy-tcode = 'VA02'.
*  SELECT SINGLE zterm FROM vbkd
*    INTO lv_zterm
*    WHERE vbeln = vbak-vbeln.
*  SELECT SINGLE kvgr2 FROM vbak
*    INTO lv_kvgr2
*    WHERE vbeln = vbak-vbeln.
*  IF vbak-kvgr2 <> lv_kvgr2.
*    flag_kvgr2 = 'X'.
*    EXPORT flag_zterm FROM flag_zterm TO MEMORY ID 'SY-UNAME'.
*  ENDIF.
*  IF vbkd-zterm <> lv_zterm.
*    flag_zterm = 'X'.
*    EXPORT flag_zterm FROM flag_zterm TO MEMORY ID 'SY-UCOMM'.
*  ENDIF.
***************************************************************************
*BREAK anju_d.
*IF sy-tcode = 'VA02'.
DATA flag_kvgr2 TYPE flag.
*       flag_zterm TYPE flag.
*
DATA :lt_container TYPE STANDARD TABLE OF swr_cont,
      ls_container TYPE swr_cont.
*
*IMPORT flag_kvgr2 TO flag_kvgr2 FROM MEMORY ID 'SY-UNAME'.
*IMPORT flag_zterm TO flag_zterm FROM MEMORY ID 'SY-UCOMM'.
*wait UP TO 2 SECONDS.
*  IF flag_kvgr2 <> ''. "OR
*     "flag_zterm <> ''.
*

*    ls_container-element = 'DOC_NO'.
*    ls_container-value = vbak-vbeln.
*    APPEND ls_container TO lt_container.
*    CLEAR : ls_container.
*
*    ls_container-element = 'FLAG_KVGR2'."'flag_kvgr2'.
*    ls_container-value = flag_kvgr2.
*    APPEND ls_container TO lt_container.
*    CLEAR : ls_container.
*
**    ls_container-element = 'FLAG_ZTERM'."'flag_zterm'.
**    ls_container-value = flag_zterm.
**    APPEND ls_container TO lt_container.
**    CLEAR : ls_container.
*
*    CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*      EXPORTING
*        task                      = 'WS99900499'
*        language                  = sy-langu
*        do_commit                 = 'X'
*        user                      = sy-uname
**       START_ASYNCHRONOUS        = ' '
**       DESIRED_START_DATE        =
**       DESIRED_START_TIME        =
**       DESIRED_START_ZONLO       = SY-ZONLO
**       IFS_XML_CONTAINER         =
**     IMPORTING
**       RETURN_CODE               =
**       WORKITEM_ID               =
**       NEW_STATUS                =
*      TABLES
*        input_container           = lt_container
**       MESSAGE_LINES             =
**       MESSAGE_STRUCT            =
**       AGENTS                    =
*              .
*  ENDIF.
*
*  wait UP TO 2 SECONDS.
*  IF flag_zterm <> ''.
*    refresh lt_container.
*    ls_container-element = 'DOC_NO'.
*    ls_container-value = vbak-vbeln.
*    APPEND ls_container TO lt_container.
*    CLEAR : ls_container.
*
*    ls_container-element = 'FLAG_ZTERM'."'flag_zterm'.
*    ls_container-value = flag_zterm.
*    APPEND ls_container TO lt_container.
*    CLEAR : ls_container.
*
*    CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*      EXPORTING
*        task                      = 'WS99900499'
*        language                  = sy-langu
*        do_commit                 = 'X'
*        user                      = sy-uname
**       START_ASYNCHRONOUS        = ' '
**       DESIRED_START_DATE        =
**       DESIRED_START_TIME        =
**       DESIRED_START_ZONLO       = SY-ZONLO
**       IFS_XML_CONTAINER         =
**     IMPORTING
**       RETURN_CODE               =
**       WORKITEM_ID               =
**       NEW_STATUS                =
*      TABLES
*        input_container           = lt_container
**       MESSAGE_LINES             =
**       MESSAGE_STRUCT            =
**       AGENTS                    =
*              .
*
*  ENDIF.
*
*ENDIF.
*******************************************************************************
IF sy-tcode 'VA02' and sy-UNAME 'BHAVESH'.
DATA flg_audat TYPE flag.
IMPORT flg_audat TO flg_audat FROM MEMORY ID 'FLG_AUDAT'.
  IF flg_audat <> ''.
*  DATA :lt_container TYPE STANDARD TABLE OF swr_cont,
*        ls_container TYPE swr_cont.

    ls_container-element 'SONO'.
    ls_container-value vbak-vbeln.
    APPEND ls_container TO lt_container.
    CLEAR ls_container.

    ls_container-element 'FLG_AUDAT'.
    ls_container-value flg_audat.
    APPEND ls_container TO lt_container.
    CLEAR ls_container.

    CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
      EXPORTING
        task                      'WS99900504'
        language                  sy-langu
        do_commit                 'X'
        user                      sy-uname
      TABLES
        input_container           lt_container.
  ENDIF.
ENDIF.
ENDENHANCEMENT.
ENHANCEMENT 2  ZDOC_DATE_VALIDATION.    "active version
*
ENDENHANCEMENT.
ENHANCEMENT 3  ZFM_VA02_DATE.    "active version
DATA lv_bstkd TYPE bstkd.
IMPORT lv_bstkd FROM MEMORY ID 'bstkd'.

vbkd-bstkd lv_bstkd.
ENDENHANCEMENT.
ENHANCEMENT 2  ZNK_DATEVALIDATION.    "active version
*BREAK NAVEENC.
*if sy-ucomm = 'SICH'.
**  FCODE = 'ENT1'.
*  IF VBAK-audat < SY-datum.
*    MESSAGE 'SO DATE should not be less than the current date' TYPE 'E'.
*  endif.

* PERFORM folge_gleichsetzen(saplv00f).
*         fcode = 'ENT1'.
*         SET SCREEN syst-dynnr.
*         LEAVE SCREEN.
*endif.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(10) Form USEREXIT_SAVE_DOCUMENT, Start, Enhancement ZNK_DATEVALIDATION, End                                                                          A
*$*$-Start: (10)--------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZSALES_CHANGE.    "active version







*BREAK ANJALIV.

*DATA : lv_ZTERM TYPE vbkd-zterm.
*DATA : LV_KVGR1 TYPE VBAK-kvgr1.
*DATA : LV_KVGR2 TYPE vbak-kvgr2.

DATA Lv_kvgr1 TYPE VBAK-kvgr1.
DATA lv_kvgr2 TYPE vbak-kvgr2.
DATA lv_zterm TYPE VBKD-zterm.
*DATA : FAKSK TYPE VBAK-faksk.
DATA kvgr1 TYPE FLAG.
DATA kvgr2 TYPE FLAG.
DATA zterm  TYPE flag.

    DATA gt_cont2_zterm TYPE STANDARD TABLE OF swr_cont,
           gs_cont2_zterm TYPE swr_cont.

    DATA gt_con2_zkvgr1 TYPE STANDARD TABLE OF swr_cont,
           gs_con2_zkvgr1 TYPE swr_cont.

    DATA gt_con2_zkvgr2 TYPE STANDARD TABLE OF swr_cont,
           gs_con2_zkvgr2 TYPE swr_cont.

**  IF sy-tcode = 'VA02' AND sy-uname = 'ANJALIV'. Commented by Manisha bh.
**
**     SELECT SINGLE zterm
**      FROM vbkd
**      INTO lv_ZTERM
**      WHERE vbeln = VBAK-vbeln.
**
**     SELECT SINGLE kvgr1
**    FROM vbak
**    INTO LV_KVGR1
**    WHERE vbeln = vbak-vbeln.
**
**   SELECT SINGLE kvgr2
**    FROM vbak
**    INTO LV_KVGR2
**    WHERE vbeln = vbak-vbeln.
**
**
**    if lv_ZTERM <> xvbkd-zterm.
**    clear : gt_cont2_zterm[].
**    IMPORT ZTERM TO ZTERM FROM MEMORY ID 'ZTERM'.
**    VBAK-zzterm = 'X'.
**
**     gs_cont2_zterm-element = 'SO_NO'.
**     gs_cont2_zterm-value = vbak-vbeln.
**     APPEND gs_cont2_zterm to gt_cont2_zterm.
**     CLEAR: gs_cont2_zterm.
**
**      gs_cont2_zterm-element = 'ZTERM'.
**     gs_cont2_zterm-value = zterm.
**     APPEND gs_cont2_zterm to gt_cont2_zterm.
**     CLEAR: gs_cont2_zterm.
**
**     CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
**       EXPORTING
**         task                     = 'WS99900543'
**        LANGUAGE                  = SY-LANGU
**        DO_COMMIT                 = 'X'
**        USER                      = SY-UNAME
**      TABLES
**        INPUT_CONTAINER           = gt_cont2_zterm.
**   ENDIF.
**
**  if LV_KVGR1 <> xvbak-kvgr1.
**    clear : gt_cont2_zterm[].
**    IMPORT KVGR1 TO KVGR1 FROM MEMORY ID 'KVGR1'.
**    VBAK-zzkvgr1 = 'X'.
**
**     gs_con2_zkvgr1-element = 'SO_NO'.
**     gs_con2_zkvgr1-value = VBAK-vbeln.
**     APPEND gs_con2_zkvgr1 to gt_con2_zkvgr1.
**     CLEAR : gs_con2_zkvgr1.
**
**     gs_con2_zkvgr1-element = 'KVGR1'.
**     gs_con2_zkvgr1-value = KVGR1.
**     APPEND gs_con2_zkvgr1 to gt_con2_zkvgr1.
**     CLEAR : gs_con2_zkvgr1.
**
**     CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
**       EXPORTING
**         task                     = 'WS99900543'
**        LANGUAGE                  = SY-LANGU
**        DO_COMMIT                 = 'X'
**        USER                      = SY-UNAME
**      TABLES
**        INPUT_CONTAINER           = gt_con2_zkvgr1.
**   ENDIF.
**
**   if Lv_kvgr2 <>  xvbak-kvgr2.
**     clear : gt_cont2_zterm[].
**     IMPORT KVGR2 TO KVGR2 FROM MEMORY ID 'KVGR2'.
**     vbak-zzkvgr2 = 'X'.
**
**     gs_con2_zkvgr2-element = 'SO_NO'.
**     gs_con2_zkvgr2-value = VBAK-vbeln.
**     APPEND gs_con2_zkvgr2 to gt_con2_zkvgr2.
**     CLEAR : gs_con2_zkvgr2.
**
**     gs_con2_zkvgr2-element = 'KVGR2'.
**     gs_con2_zkvgr2-value = KVGR2.
**     APPEND gs_con2_zkvgr2 to gt_con2_zkvgr2.
**     CLEAR : gs_con2_zkvgr2.
**
**      CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
**       EXPORTING
**         task                     = 'WS99900543'
**        LANGUAGE                  = SY-LANGU
**        DO_COMMIT                 = 'X'
**        USER                      = SY-UNAME
**      TABLES
**        INPUT_CONTAINER           = gt_con2_zkvgr2.
**   ENDIF.
**ENDIF.



**********Workflow For Multi Level****
DATA lv_matkl TYPE vbap-MVGR1.
DATA zmatkl TYPE flag.
DATA GS_VBAP TYPE vbapvb.


DATA gt_cont2_zmatkl TYPE STANDARD TABLE OF swr_cont,
       gs_cont2_zmatkl TYPE swr_cont.

*BREAK ANJALIV.
*break rajesh.
if sy-tcode 'VA02' AND sy-uname 'ANJALIV'.
 read table xvbap into gs_vbap index 1.
 if sy-subrc 0.
  SELECT SINGLE MVGR1
    FROM vbap
    INTO lv_matkl
    WHERE vbeln =  xvbap-vbeln
      and posnr '000010'.
 endif.
 clear gs_vbap.

 READ TABLE xvbap into gs_vbap with KEY posnr '000010'.
  if lv_matkl <> gs_vbap-mvgr1.  "xvbap-mvgr1.
    CLEAR gt_cont2_zmatkl[].
*    IMPORT zmatkl to zmatkl FROM MEMORY id 'ZMATKL'.
*    VBAp-zmatkl = 'X'.

     gs_cont2_zmatkl-element 'VBELN'.
     gs_cont2_zmatkl-value vbak-vbeln.
     APPEND gs_cont2_zmatkl to gt_cont2_zmatkl.
     CLEARgs_cont2_zmatkl.

    gs_cont2_zmatkl-element 'ZMATKL'.
     gs_cont2_zmatkl-value xvbap-zmatkl.
     APPEND gs_cont2_zmatkl to gt_cont2_zmatkl.
     CLEARgs_cont2_zmatkl.


     CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
       EXPORTING
         task                     'WS99900552'
        LANGUAGE                  SY-LANGU
        DO_COMMIT                 'X'
        USER                      SY-UNAME
      TABLES
        INPUT_CONTAINER           gt_cont2_zmatkl.
   ENDIF.

*    READ TABLE yvbap into gs_vbap with KEY vbeln = xvbap-vbeln
*                                        posnr = '000010'.
*  if lv_matkl <> gs_vbap-mvgr1.  "xvbap-mvgr1.
*    CLEAR : gt_cont2_zmatkl[].
**    IMPORT zmatkl to zmatkl FROM MEMORY id 'ZMATKL'.
**    VBAp-zmatkl = 'X'.
*
*     gs_cont2_zmatkl-element = 'VBELN'.
*     gs_cont2_zmatkl-value = vbak-vbeln.
*     APPEND gs_cont2_zmatkl to gt_cont2_zmatkl.
*     CLEAR: gs_cont2_zmatkl.
*
*    gs_cont2_zmatkl-element = 'ZMATKL'.
*     gs_cont2_zmatkl-value = zmatkl.
*     APPEND gs_cont2_zmatkl to gt_cont2_zmatkl.
*     CLEAR: gs_cont2_zmatkl.
*
*
*     CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*       EXPORTING
*         task                     = 'WS99900552'
*        LANGUAGE                  = SY-LANGU
*        DO_COMMIT                 = 'X'
*        USER                      = SY-UNAME
*      TABLES
*        INPUT_CONTAINER           = gt_cont2_zmatkl.
*   ENDIF.

ENDIF.


ENDENHANCEMENT.
ENHANCEMENT 1  ZSALES_CH_WRKF.    "active version
*-----Added by Manisha bh.Dt:28.04.2017--------------*
DATA wa_kvgr1 TYPE VBAK-kvgr1.
DATA wa_kvgr2 TYPE vbak-kvgr2.
DATA wa_zterm TYPE VBKD-zterm.
DATA fkvgr1 TYPE FLAG.
DATA fkvgr2 TYPE FLAG.
DATA fzterm  TYPE flag.

    DATA it_cont2_zterm TYPE STANDARD TABLE OF swr_cont,
           wa_cont2_zterm TYPE swr_cont.

    DATA it_con2_zkvgr1 TYPE STANDARD TABLE OF swr_cont,
           wa_con2_zkvgr1 TYPE swr_cont.

    DATA it_con2_zkvgr2 TYPE STANDARD TABLE OF swr_cont,
           wa_con2_zkvgr2 TYPE swr_cont.

  IF sy-tcode 'VA02' AND sy-uname 'MANISHAB'.

     SELECT SINGLE zterm
      FROM vbkd
      INTO wa_ZTERM
      WHERE vbeln VBAK-vbeln.

     SELECT SINGLE kvgr1
    FROM vbak
    INTO wa_KVGR1
    WHERE vbeln vbak-vbeln.

   SELECT SINGLE kvgr2
    FROM vbak
    INTO wa_KVGR2
    WHERE vbeln vbak-vbeln.

break-point.
    if wa_ZTERM <> xvbkd-zterm.
    clear gt_cont2_zterm[].
    IMPORT ZTERM TO fZTERM FROM MEMORY ID 'ZTERM'.
    VBAK-zzterm 'X'.

     wa_cont2_zterm-element 'VBELN'.
     wa_cont2_zterm-value vbak-vbeln.
     APPEND wa_cont2_zterm to it_cont2_zterm.
     CLEARwa_cont2_zterm.

     wa_cont2_zterm-element 'ZTERM'.
     wa_cont2_zterm-value fzterm.
     APPEND wa_cont2_zterm to it_cont2_zterm.
     CLEARwa_cont2_zterm.

*-----Commented & Added by Manisha bh.Dt:26.05.2017 testin g purpose---*
*     CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*       EXPORTING
*         task                     = 'WS99900554'
*        LANGUAGE                  = SY-LANGU
*        DO_COMMIT                 = 'X'
*        USER                      = SY-UNAME
*      TABLES
*        INPUT_CONTAINER           = it_cont2_zterm.
     CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
       EXPORTING
         task                     'WS99900562'
        LANGUAGE                  SY-LANGU
        DO_COMMIT                 'X'
        USER                      SY-UNAME
      TABLES
        INPUT_CONTAINER           it_cont2_zterm.
   ENDIF.

*break-point.
*  if wa_KVGR1 <> xvbak-kvgr1.
*    clear : gt_cont2_zterm[].
*    IMPORT KVGR1 TO fKVGR1 FROM MEMORY ID 'KVGR1'.
*    VBAK-zzkvgr1 = 'X'.
*
*     wa_con2_zkvgr1-element = 'VBELN'.
*     wa_con2_zkvgr1-value = VBAK-vbeln.
*     APPEND wa_con2_zkvgr1 to it_con2_zkvgr1.
*     CLEAR : wa_con2_zkvgr1.
*
*     wa_con2_zkvgr1-element = 'KVGR1'.
*     wa_con2_zkvgr1-value = fKVGR1.
*     APPEND wa_con2_zkvgr1 to it_con2_zkvgr1.
*     CLEAR : wa_con2_zkvgr1.

*-----Commented by Manisha bh.Dt:26.05.2017 testin g purpose---*
*     CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*       EXPORTING
*         task                     = 'WS99900554'
*        LANGUAGE                  = SY-LANGU
*        DO_COMMIT                 = 'X'
*        USER                      = SY-UNAME
*      TABLES
*        INPUT_CONTAINER           = it_con2_zkvgr1.
*     CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*       EXPORTING
*         task                     = 'WS99900562'
*        LANGUAGE                  = SY-LANGU
*        DO_COMMIT                 = 'X'
*        USER                      = SY-UNAME
*      TABLES
*        INPUT_CONTAINER           = it_con2_zkvgr1.
*
*   ENDIF.

break-point.
   if wa_kvgr2 <>  xvbak-kvgr2.
     clear it_con2_zkvgr1[].
     IMPORT KVGR2 TO fKVGR2 FROM MEMORY ID 'KVGR2'.
     vbak-zzkvgr2 'X'.

     wa_con2_zkvgr2-element 'VBELN'.
     wa_con2_zkvgr2-value VBAK-vbeln.
     APPEND wa_con2_zkvgr2 to it_con2_zkvgr2.
     CLEAR wa_con2_zkvgr2.

     wa_con2_zkvgr2-element 'KVGR2'.
     wa_con2_zkvgr2-value fKVGR2.
     APPEND wa_con2_zkvgr2 to it_con2_zkvgr2.
     CLEAR wa_con2_zkvgr2.

*-----Commented by Manisha bh.Dt:26.05.2017 testin g purpose---*
*      CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*       EXPORTING
*         task                     = 'WS99900554'
*        LANGUAGE                  = SY-LANGU
*        DO_COMMIT                 = 'X'
*        USER                      = SY-UNAME
*      TABLES
*        INPUT_CONTAINER           = it_con2_zkvgr2.
     CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
       EXPORTING
         task                     'WS99900562'
        LANGUAGE                  SY-LANGU
        DO_COMMIT                 'X'
        USER                      SY-UNAME
      TABLES
        INPUT_CONTAINER           it_con2_zkvgr2.

   ENDIF.
ENDIF.

*----------------------------------------------------*
ENDENHANCEMENT.
*$*$-End:   (10)--------------------------------------------------------------------------------$*$*
ENDENHANCEMENT.
ENHANCEMENT 1  ZSALES_WF_K.    "active version
*
  BREAK krutis.
  DATAgs_vbkd TYPE vbkd.
  DATAgs_vbak TYPE vbak.
  IF sy-tcode 'VA02' and sy-uname 'KRUTIS'.
    DATA:lt_cont_zterm TYPE STANDARD TABLE OF swr_cont,
         ls_cont_zterm TYPE swr_cont.
    DATA:lt_cont_kvgr2 TYPE STANDARD TABLE OF swr_cont,
         ls_cont_kvgr2 TYPE swr_cont.
    DATA:ls_txt(50TYPE c.
    DATA:flag_zterm(1TYPE c.
*         flag_kvgr2(1) TYPE c.

      SELECT SINGLE *
        FROM vbkd
        INTO gs_vbkd
        WHERE vbeln vbak-vbeln.

      SELECT SINGLE *
        FROM vbak
        INTO gs_vbak
        WHERE vbeln vbak-vbeln.

    IF gs_vbkd-zterm <> xvbkd-zterm.
      clear flag_zterm.
      flag_zterm 'X'.
*      IMPORT flag_zterm TO flag_zterm FROM MEMORY ID 'ZTERM'.
      VBAK-zzterm1 flag_zterm.

      ls_cont_zterm-element 'VBELN'.
      ls_cont_zterm-value vbak-vbeln.
      APPEND ls_cont_zterm to lt_cont_zterm.
      CLEARls_cont_zterm.

      ls_cont_zterm-element 'ZTERM'.
      ls_cont_zterm-value flag_zterm.
      APPEND ls_cont_zterm to lt_cont_zterm.
      CLEARls_cont_zterm.

      ls_txt 'Payment Terms'.
      ls_cont_zterm-element 'LS_TEXT'.
      ls_cont_zterm-value ls_txt.
      APPEND ls_cont_zterm to lt_cont_zterm.
      CLEARls_cont_zterm.


      CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
        EXPORTING
          task                      'WS99900551'
         LANGUAGE                  SY-LANGU
         DO_COMMIT                 'X'
         USER                      SY-UNAME
       TABLES
         INPUT_CONTAINER           lt_cont_zterm.
    ENDIF.

      IF gs_vbak-kvgr2 <> xvbak-kvgr2.
        CLEAR:flag_kvgr2.
      IMPORT flag_kvgr2 TO flag_kvgr2 FROM MEMORY ID 'KVGR2'.
      VBAK-zzkvgr2 flag_kvgr2.

      ls_cont_kvgr2-element 'VBELN'.
      ls_cont_kvgr2-value vbak-vbeln.
      APPEND ls_cont_kvgr2 to lt_cont_kvgr2.
      CLEARls_cont_kvgr2.

      ls_cont_kvgr2-element 'KVGR2'.
      ls_cont_kvgr2-value flag_kvgr2.
      APPEND ls_cont_kvgr2 to lt_cont_kvgr2.
      CLEAR:ls_cont_kvgr2.

      ls_txt 'Customer Group2'.
      ls_cont_kvgr2-element 'LS_TEXT'.
      ls_cont_kvgr2-value ls_txt.
      APPEND ls_cont_kvgr2 to lt_cont_kvgr2.
      CLEARls_cont_kvgr2.

     CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
       EXPORTING
        task                      'WS99900551'
       LANGUAGE                  SY-LANGU
        DO_COMMIT                 'X'
        USER                      SY-UNAME
     TABLES
       INPUT_CONTAINER           lt_cont_kvgr2.
      ENDIF.
ENDIF.


*    DATA: lt_cont2 TYPE STANDARD TABLE OF swr_cont,
*          ls_cont2 TYPE swr_cont.
*
*    DATA: lt_cont_kvgr1 TYPE STANDARD TABLE OF swr_cont,
*          ls_cont_kvgr1 TYPE swr_cont.
*
*    DATA: lt_cont_kvgr2 TYPE STANDARD TABLE OF swr_cont,
*          ls_cont_kvgr2 TYPE swr_cont.
*    data : flag_zterm(1) type c,
*           flag_kvgr1(1) TYPE c,
*           flag_kvgr2(1) TYPE c.
*
*    SELECT SINGLE *
*      FROM vbkd
*      INTO gs_vbkd
*      WHERE vbeln = vbak-vbeln.
*
*    SELECT SINGLE *
*      FROM vbak
*      INTO gs_vbak
*      WHERE vbeln = vbak-vbeln.
*
*   IF gs_vbkd-zterm <> xvbkd-zterm.
*      clear : flag_zterm.
*      flag_zterm = 'X'.
**      IMPORT flag_zterm TO flag_zterm FROM MEMORY ID 'ZTERM'.
*      VBAK-zzterm1 = flag_zterm.
*
*      ls_cont2-element = 'VBELN'.
*      ls_cont2-value = vbak-vbeln.
*      APPEND ls_cont2 to lt_cont2.
*      CLEAR: ls_cont2.
*
*      ls_cont2-element = 'ZTERM'.
*      ls_cont2-value = flag_zterm.
*      APPEND ls_cont2 to lt_cont2.
*      CLEAR: ls_cont2.
*
*    CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*      EXPORTING
*        task                      = 'WS99900540'
*       LANGUAGE                  = SY-LANGU
*       DO_COMMIT                 = 'X'
*       USER                      = SY-UNAME
*     TABLES
*       INPUT_CONTAINER           = lt_cont2.
*    ENDIF.
*
*    IF gs_vbak-kvgr1 <> xvbak-kvgr1.
**      flag_kvgr1 = 'X'.
*      IMPORT flag_kvgr1 TO flag_kvgr1 FROM MEMORY ID 'KVGR1'.
*      VBAK-zzkvgr1_1 = flag_kvgr1.
*
*      ls_cont_kvgr1-element = 'VBELN'.
*      ls_cont_kvgr1-value = vbak-vbeln.
*      APPEND ls_cont_kvgr1 to lt_cont_kvgr1.
*      CLEAR: ls_cont_kvgr1.
*
*      ls_cont_kvgr1-element = 'KVGR1'.
*      ls_cont_kvgr1-value = flag_kvgr1.
*      APPEND ls_cont_kvgr1 to lt_cont_kvgr1.
*      CLEAR:ls_cont_kvgr1.
*
*      CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*      EXPORTING
*        task                      = 'WS99900540'
*       LANGUAGE                  = SY-LANGU
*       DO_COMMIT                 = 'X'
*       USER                      = SY-UNAME
*     TABLES
*       INPUT_CONTAINER           = lt_cont_kvgr1.
*    ENDIF.
*   IF gs_vbak-kvgr2 <> xvbak-kvgr2.
**      flag_kvgr2 = 'X'.
*      IMPORT flag_kvgr2 TO flag_kvgr2 FROM MEMORY ID 'KVGR2'.
*      VBAK-zzkvgr2 = flag_kvgr2.
*
*      ls_cont_kvgr2-element = 'VBELN'.
*      ls_cont_kvgr2-value = vbak-vbeln.
*      APPEND ls_cont_kvgr2 to lt_cont_kvgr2.
*      CLEAR: ls_cont_kvgr2.
*
*      ls_cont_kvgr2-element = 'KVGR2'.
*      ls_cont_kvgr2-value = flag_kvgr2.
*      APPEND ls_cont_kvgr2 to lt_cont_kvgr2.
*      CLEAR:ls_cont_kvgr2.
*
*
*     CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*       EXPORTING
*        task                      = 'WS99900540'
*       LANGUAGE                  = SY-LANGU
*        DO_COMMIT                 = 'X'
*        USER                      = SY-UNAME
*     TABLES
*       INPUT_CONTAINER           = lt_cont_kvgr2.
*    ENDIF.
*  ENDIF.
*IF sy-tcode = 'VA02' and sy-uname = 'KRUTIS'.
*  DATA: LT_CONT2 TYPE STANDARD TABLE OF SWR_CONT,
*        LS_CONT2 TYPE SWR_CONT.
*
*     SELECT SINGLE *
*       FROM vbkd
*       INTO gs_vbkd
*       WHERE vbeln = vbak-vbeln.
*
*    IF gs_vbkd-zterm <> xvbkd-zterm.
*      ls_cont2-element = 'VBELN'.
*      ls_cont2-value = vbak-vbeln.
*      APPEND ls_cont2 to lt_cont2.
*      CLEAR: ls_cont2.
*
*      ls_cont2-element = 'KUNNR'.
*      ls_cont2-value = vbak-KUNNR.
*      APPEND ls_cont2 to lt_cont2.
*      CLEAR: ls_cont2.
**      ls_cont2-element = 'ZTERM'.
**      ls_cont2-value = xvbkd-zterm.
**      APPEND ls_cont2 to lt_cont2.
**      CLEAR  ls_cont2.
*
*    CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*      EXPORTING
*        TASK                      = 'WS99900534'
*       LANGUAGE                   = SY-LANGU
*       DO_COMMIT                  = 'X'
*       USER                       = SY-UNAME
**       START_ASYNCHRONOUS        = ' '
**       DESIRED_START_DATE        =
**       DESIRED_START_TIME        =
**       DESIRED_START_ZONLO       = SY-ZONLO
**       IFS_XML_CONTAINER         =
**     IMPORTING
**       RETURN_CODE               =
**       WORKITEM_ID               =
**       NEW_STATUS                =
*     TABLES
*       INPUT_CONTAINER           = lt_cont2
**       MESSAGE_LINES             =
**       MESSAGE_STRUCT            =
**       AGENTS                    =              .
*
* ENDIF.
*
*ENDIF.

ENDENHANCEMENT.
ENHANCEMENT 1  ZWF_SO_CHANGE.    "active version
IF sy-uname 'CHIRAGB'.
BREAK chiragb.
    IF xvbak-name_flg 'X'." lv_name <> xvbak-bname.

      DATALT_CONT1 TYPE STANDARD TABLE OF SWR_CONT,
            LS_CONT1 TYPE SWR_CONT.

      LS_CONT1-ELEMENT 'VBELN'.
      LS_CONT1-VALUE vbak-vbeln.
      APPEND LS_CONT1 TO LT_CONT1.
      CLEAR LS_CONT1.

      CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
        EXPORTING
          TASK            'WS99900502'
          LANGUAGE        SY-LANGU
          DO_COMMIT       'X'
          USER            SY-UNAME
        TABLES
          INPUT_CONTAINER LT_CONT1.

    ENDIF.

ENDIF.
ENDENHANCEMENT.
ENHANCEMENT 1  ZWF_TRIGGER.    "active version
**
*  BREAK SUNILM.

*
*  IF SY-TCODE = 'VA02' AND SY-UNAME = 'BHAVESH'.    "'SUNILM'.
*    DATA LV_DATE TYPE MAHDT.
*
*  IF XVBAK-BNAME IS NOT INITIAL AND XVBAK-BNAME = 'BHAVESH'."'SUNILM' .
*    DATA: GT_CONT TYPE STANDARD TABLE OF SWR_CONT,
*          GS_CONT TYPE SWR_CONT.
*    GS_CONT-ELEMENT = 'ORD NO'.
*    GS_CONT-VALUE =  VBAK-VBELN.
*    APPEND GS_CONT TO GT_CONT.
*    CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*      EXPORTING
*        TASK                      = 'WS99900512'
*       LANGUAGE                  = SY-LANGU
*       DO_COMMIT                 = 'X'
*       USER                      = SY-UNAME
*      TABLES
*       INPUT_CONTAINER           = GT_CONT.
*  ENDIF.
*  ENDIF.

*IF sy-tcode = 'VA02' and sy-uname = 'BHAVESH'."'BHAVESH'.
*
*  data :lv_ord type vbeln_va,
**        lv_old type BNAME_V,
*        lv_new type BNAME_V.
*  lv_ord = xvbak-vbeln.
*  select single bname from vbak into lv_new where vbeln = lv_ord.
* IF lv_new NE vbak-bname.   "xvbak-bname.
*   TYPES:BEGIN OF TY_TYAU,
*  AUGRU TYPE TVAUT-AUGRU,
**  VAUNA TYPE TVAUT-VAUNA,
*  BEZEI TYPE TVAUT-BEZEI,
*  END OF TY_TYAU.
*
*  DATA :GT_TYAU TYPE STANDARD TABLE OF TY_TYAU,
*        GS_TYAU TYPE TY_TYAU.
*  SELECT SINGLE  AUGRU BEZEI FROM TVAUT INTO GS_TYAU WHERE AUGRU = 460 AND SPRAS = 'E' .
*
*   DATA: GT_CONT TYPE STANDARD TABLE OF SWR_CONT,
*          GS_CONT TYPE SWR_CONT.
*
*    GS_CONT-ELEMENT = 'ORD NO'.
*    GS_CONT-VALUE =  VBAK-VBELN.
*    APPEND GS_CONT TO GT_CONT.
*
**    types: begin of ty_xvbak,
**      vbeln type vbeln_va,
**      augru type augru,
**      end of ty_xvbak.
**
**      data : gt_xvbak type TABLE OF ty_xvbak,
**            gs_xvbak type ty_xvbak.
*
** gs_xvbak-vbeln = xvbak-vbeln.
**  gs_xvbak-augru = gs_tyau-augru.
**  append gs_xvbak to gt_xvbak.
**
**  xvbak-augru = gs_tyau-augru.
**  VBAK-AUGRU = GS_TYAU-AUGRU.
**  modify xvbak from xvbak.
**data wa_vbak type vbak.
**select single * from vbak into wa_vbak where vbeln = lv_ord.
**  if sy-subrc = 0.
**    wa_vbak-augru = 460.
**    modify vbak from wa_vbak.
**    UPDATE vbak set augru =  GS_TYAU-augru where vbeln = lv_ord.
**    endif.
**
*   CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
*      EXPORTING
*        TASK                      = 'WS99900512'
*       LANGUAGE                  = SY-LANGU
*       DO_COMMIT                 = 'X'
*       USER                      = SY-UNAME
*      TABLES
*       INPUT_CONTAINER           = GT_CONT.
* ENDIF.
*  endif.

ENDENHANCEMENT.
*$*$-End:   (9)---------------------------------------------------------------------------------$*$*

* Example:
* CALL FUNCTION 'ZZ_EXAMPLE'
*      IN UPDATE TASK
*      EXPORTING
*           ZZTAB = ZZTAB.
*{   INSERT         IDTK919292                                        2
* Pharma DEA demo script
*TABLES:
*   zzdea_qty.          "quantity per license, material and period --> global in MV45ATZZ

DATA:
    v_zzdea_qty_in_dea_units TYPE i,
    v_zzdea_ship_to          LIKE vbpa-kunnr.


  LOOP AT xvbap
    WHERE updkz NE updkz_delete
    AND zzdea_license IS NOT INITIAL
    and ABGRU IS initial.

* Determine ship-to partner for this item
    READ TABLE xvbpa WITH KEY vbeln xvbap-vbeln
                              posnr xvbap-posnr
                              parvw 'WE'.
    IF sy-subrc NE 0.
      READ TABLE xvbpa WITH KEY vbeln xvbap-vbeln
                                posnr '000000'
                                parvw 'WE'.
      IF sy-subrc NE 0.
        MESSAGE e100(zzdea_msg).
      ENDIF.
    ENDIF.
    MOVE xvbpa-kunnr TO v_zzdea_ship_to.


    SELECT SINGLE FOR UPDATE *
      FROM zzdea_qty
      WHERE ship_to EQ v_zzdea_ship_to AND
            material EQ xvbap-matnr.
    IF sy-subrc 0.

* Convert order quantity to the DEA quantity unit
        CALL FUNCTION 'MATERIAL_UNIT_CONVERSION'
          EXPORTING
            input                xvbap-klmeng
            kzmeinh              space
            matnr                xvbap-matnr
            meinh                zzdea_qty-qty_unit
          IMPORTING
            output               v_zzdea_qty_in_dea_units
          EXCEPTIONS
            conversion_not_found 1.

      zzdea_qty-cumulative_qty zzdea_qty-cumulative_qty +
                                 v_zzdea_qty_in_dea_units.
      zzdea_qty-order_items    zzdea_qty-order_items + 1.
      zzdea_qty-avg_qty        zzdea_qty-cumulative_qty /
                                 zzdea_qty-order_items.
      UPDATE zzdea_qty FROM zzdea_qty.
    ENDIF.
  ENDLOOP.

*}   INSERT
*{   INSERT         DH3K911961                                        3
* D037609
* Insert Mobile Push Function
if T180-TRTYP eq 'H' or T180-TRTYP eq 'V' or T180-TRTYP eq 'L' .
if vbak-KUNNR eq '0000301185'
or vbak-KUNNR eq '0000301194'
or vbak-KUNNR eq '0000100239'
or vbak-KUNNR eq '0000301200'.

CALL FUNCTION 'Z_MOBILEIDES_ORDER_PUSH' IN UPDATE TASK
  EXPORTING
    vbeln          vbak-VBELN
    customer       vbak-KUNNR
    TASK       =  T180-TRTYP.


endif.
endif.

*--

*}   INSERT
*{   INSERT         IDTK932476                                        4
* include for IDES Exposure Mgmt Demo
* inserted by d047969 at 30.11.2009
include ztr_exposure_from_sales_order.
*}   INSERT

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(11) Form USEREXIT_SAVE_DOCUMENT, End                                                                                                                 A
*$*$-Start: (11)--------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZCUST_WF_SO.    "active version
*





ENDENHANCEMENT.
*$*$-End:   (11)--------------------------------------------------------------------------------$*$*
ENDFORM.
*eject
*---------------------------------------------------------------------*
*       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.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(12) Form USEREXIT_SAVE_DOCUMENT_PREPARE, Start                                                                                                       A
*$*$-Start: (12)--------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZCS_DATEVALIDATION.    "active version

*IF sy-tcode = 'VA01' or sy-tcode = 'VA02'.
*IF VBAK-AUDAT < SY-DATUM.
*   FCODE = 'ENT1'.
*  MESSAGE E040(ZCS_MSG).
*    ENDIF.
*endif.
ENDENHANCEMENT.
ENHANCEMENT 3  ZCUST_WF_SO.    "active version
*************

*BREAK krutis.
*IF vbak-audat < sy-datum.
*  FCODE = 'ENT1'.
*  MESSAGE 'Sales order created date should be greather than system date' TYPE 'E'.
*ENDIF.
*BREAK anjaliv.
*IF vbak-audat < sy-datum.
*  PERFORM FOLGE_GLEICHSETZEN(SAPLV00F).
*  FCODE = 'ENT1'.
*  MESSAGE 'Sales Order Date Should not be in past' TYPE 'E'.
*  SET SCREEN SYST-DYNNR.
*  LEAVE SCREEN.
*

*if vbak-bstdk is INITIAL.
*  MESSAGE 'Please Enter date' TYPE 'E'.
*
*  PERFORM FOLGE_GLEICHSETZEN(SAPLV00F).
*  FCODE = 'ENT1'.
*  MESSAGE e000(38) WITH  'Please Enter date'.
*  SET SCREEN SYST-DYNNR.
*  LEAVE SCREEN.
*ENDIF.
***************
*BREAK anju_d.
*IF vbak-audat < sy-datum.
*  PERFORM FOLGE_GLEICHSETZEN(SAPLV00F).
*  FCODE = 'ENT1'.
*  MESSAGE 'Sales Order Date Should not be in past' TYPE 'E'.
*  SET SCREEN SYST-DYNNR.
*  LEAVE SCREEN.
*
*ENDIF.

*************************************MIHIR ************************************* Date :16/12/2016
*if vbak-audat lt sy-datum.
*  PERFORM folge_gleichsetzen(SAPLV00F).
*  fcode = 'ENT1'.
*  MESSAGE 'Please Enter Current Date & Future Date' TYPE 'E'.
*  set SCREEN SYST-DYNNR.
*  LEAVE SCREEN.
*  ENDIF.
*DATA : lv_kvgr2 TYPE kvgr2,
*       flag_kvgr2 TYPE flag.
*IF sy-tcode = 'VA02'.
*  SELECT SINGLE kvgr2 FROM vbak
*    INTO lv_kvgr2
*    WHERE vbeln = vbak-vbeln.
*  IF vbak-kvgr2 <> lv_kvgr2.
*    flag_kvgr2 = 'X'.
*    EXPORT flag_kvgr2 FROM flag_kvgr2 TO MEMORY ID 'SY-UNAME'.
*  ENDIF.
*ENDIF.


******************************************  END OF ******************************************
ENDENHANCEMENT.
ENHANCEMENT 1  ZDOC_DATE_VALIDATION.    "active version
*BREAK payald.
*if sy-uname = 'PAYALD'.
*IF  vbak-audat < sy-datum.
*  fcode = 'ENT1'.
*  MESSAGE 'SO Date Should Not be Less Than Current Date.' TYPE 'E'.
*  SET SCREEN SYST-DYNNR.
*  LEAVE SCREEN..
*ENDIF.
*ENDIF.
ENDENHANCEMENT.
ENHANCEMENT 1  ZENHANCEMENT.    "active version
** start change by rohini kumar
*    IF sy-uname = 'rohinik'.
*    IF VBAK-kunnr IS INITIAL.
*      DATA: lv_kunnr(10) TYPE C VALUE 'BNAYAK'.
*      VBAK-kunnr = LV_KUNNR.
*      ENDIF.
*    IF  VBAP-matnr IS INITIAL.
*     DATA : LV_MATNR(12) TYPE C VALUE 'BNAYAK'.
*    VBAP-matnr = LV_MATNR.
*    ENDIF.
*    IF VBAP-kwmeng IS INITIAL.
*      DATA: LV_KWMENG TYPE MENG15 VALUE '1.00'.
*         VBAP-kwmeng = LV_KWMENG.
*         ENDIF.
*    IF VBAP-werks IS INITIAL.
*          DATA: LV_WERKS(4) TYPE C VALUE 'B100'.
*    VBAP-werks = LV_WERKS.
*    ENDIF.
*    ENDIF.
*BREAK ROHINIK.
*if sy-uname = 'ROHINIK'.
*IF  vbak-audat < sy-datum.
*  fcode = 'ENT1'.
*  MESSAGE 'SO Date Should Not be Less Than Current Date.' TYPE 'E'.
*  SET SCREEN SYST-DYNNR.
*  LEAVE SCREEN.
*ENDIF.
*ENDIF.
* end change by rohini kumar
ENDENHANCEMENT.
ENHANCEMENT 1  ZENHT.    "active version
*****
*****if sy-tcode = 'VA01' or sy-tcode ='VA02'.
****************************************************MIHir****************************
***** IF VBAK-audat < SY-datum.
*****    MESSAGE 'Document Date should not be less than the System Date' TYPE 'S' DISPLAY LIKE 'E'.
*****    PERFORM FOLGE_GLEICHSETZEN(SAPLV00F).
*****    FCODE = 'ENT1'.
*****    SET SCREEN SYST-DYNNR.
*****    LEAVE SCREEN.
*****   endif.
*****ENDIF.
***********************************************MIHir****************************
*  if VBKD-BSTDK IS INITIAL.
*  PERFORM FOLGE_GLEICHSETZEN(SAPLV00F).
*  FCODE = 'ENT1'.
*  SET SCREEN SYST-DYNNR.
*  LEAVE SCREEN.
*   MESSAGE s000(38) WITH 'Please Enter Purchase order date'.
*ENDIF.

*BREAK guru.
*
*DATA: wa_vbak TYPE vbak.
*
*  IF vbak is NOT INITIAL.
*     wa_vbak = vbak.
*  ENDIF.






ENDENHANCEMENT.
ENHANCEMENT 1  ZENH_SO_DATE_VALIDATION.    "active version
*
*break freddie.
*IF sy-tcode = 'VA01' or sy-tcode = 'VA02'.
*  IF vbak-audat < sy-datum.
*    MESSAGE 'Document Date Cannot be before System Date' TYPE 'E'.
*  ENDIF.
*ENDIF.

ENDENHANCEMENT.
ENHANCEMENT 2  ZFM_VA02_DATE.    "active version
*BREAK freddie.
*DATA : lv_bstkd TYPE bstkd.
*IMPORT lv_bstkd FROM MEMORY ID 'bstkd'.
*vbkd-bstkd = lv_bstkd.
*IF sy-tcode = 'VA02' and sy-uname = 'FREDDIE'.
*
*TYPES : BEGIN OF it_vbak,
*          vbeln TYPE vbeln_va,
*          kvgr1 TYPE kvgr1,
*          kvgr2 TYPE kvgr2,
*        END OF it_vbak.
*
*DATA : lt_vbak TYPE STANDARD TABLE OF it_vbak,
*       ls_vbak TYPE it_vbak,
*       lv_bstkd TYPE bstkd.
*
*SELECT vbeln kvgr1 kvgr2
*  FROM vbak
*  INTO TABLE lt_vbak
* WHERE vbeln = vbak-vbeln.
**
*READ TABLE lt_vbak INTO ls_vbak WITH KEY vbeln = vbak-vbeln.
*  IF sy-subrc = 0.
*    IF vbak-kvgr1 NE ls_vbak-kvgr1 or vbak-kvgr2 NE ls_vbak-kvgr2.
*       VBKD-BSTDK+6(2) = VBKD-BSTDK+6(2) + 2.
*       lv_bstkd = VBKD-BSTDK.
*       EXPORT lv_bstkd TO MEMORY ID 'bstkd'.
*    ENDIF.
*  ENDIF.
*ENDIF.
ENDENHANCEMENT.
ENHANCEMENT 1  ZKS_TEST.    "active version
*FCODE = 'ENT1'.
*  if sy-tcode = 'VA01' or sy-tcode ='VA02'.
*BREAK krushal.
*data : it_tkomk TYPE STANDARD TABLE OF vbkd,
*     wa_vbak TYPE vbkd.
* IF   vbkd-ZTERM = '0012' or vbkd-ZTERM = '0006' or vbkd-ZTERM = '0007' or vbkd-ZTERM = '0008' or vbkd-ZTERM = '0009' or vbkd-ZTERM = '0010' or vbkd-ZTERM = '0011'.
*  MESSAGE 'Payment Term Not Valid' TYPE  'E'.
* ENDIF.
*ENDIF.
*if VBAK-AUDAT < sy-datum.
*  MESSAGE 'So Date should not be less than the Current Date' TYPE 'S' Display like 'E'.
*  ENDIF.


ENDENHANCEMENT.
ENHANCEMENT 1  ZNK_DATEVALIDATION.    "active version
*BREAK NAVEENC.
*if sy-ucomm = 'SICH'.
**  FCODE = 'ENT1'.
*  IF VBAK-audat < SY-datum.
*    MESSAGE 'SO DATE should not be less than the current date' TYPE 'S' DISPLAY LIKE 'E'.
*  endif.
*
* PERFORM folge_gleichsetzen(saplv00f).
*         fcode = 'ENT1'.
*         SET SCREEN syst-dynnr.
*         LEAVE SCREEN.
*endif.
ENDENHANCEMENT.
ENHANCEMENT 1  ZPLANT_JEXP_CHK.    "active version
*******avinash
*break avinash.
*  DATA : LS_J_1IWRKCUS TYPE J_1IWRKCUS.
*
* IF SY-TCODE = 'VA01' OR SY-TCODE = 'VA02'.
***   SELECT SINGLE * FROM J_1IWRKCUS INTO LS_J_1IWRKCUS WHERE J_1IWERKS = VBAP-WERKS.
***     IF LS_J_1IWRKCUS IS NOT INITIAL.
*
*       READ TABLE XKOMV WITH KEY KSCHL = 'ZA00' TRANSPORTING NO FIELDS.
*       IF SY-SUBRC = 0.
*         IF ( XKOMV-KBETR IS INITIAL OR XKOMV-KBETR EQ '0' ).
*             MESSAGE  'Amount Field  Should be not Blank OR 0' TYPE 'S' DISPLAY LIKE 'E'.
*
*             PERFORM FOLGE_GLEICHSETZEN(SAPLV00F).
*             FCODE = 'ENT1'.
*             SET SCREEN SYST-DYNNR.
*             LEAVE SCREEN.
*         ENDIF.
*        ELSE.
*          MESSAGE  'Condation type ZA00 not exist' TYPE 'S' DISPLAY LIKE 'E'.
*
*          PERFORM FOLGE_GLEICHSETZEN(SAPLV00F).
*             FCODE = 'ENT1'.
*             SET SCREEN SYST-DYNNR.
*             LEAVE SCREEN.
*       ENDIF.
*
*    ENDIF.
*  ENDIF.


ENDENHANCEMENT.
ENHANCEMENT 2  ZSALES_WF_K.    "active version
* change start date 22/12/2017 by rohini kumar pandey
****BREAK krutis.
***  DATA:flag_zterm(1) TYPE c,
***       flag_kvgr1(1) TYPE c,
***       flag_kvgr2(1) TYPE c.
***  DATA:gs_vbak TYPE vbak,
***       gs_vbkd TYPE vbkd.
***IF sy-tcode = 'VA02' and sy-uname = 'KRUTIS' .
***    SELECT SINGLE *
***      FROM VBAK
***      INTO gs_vbak
***      WHERE vbeln = vbak-vbeln.
***    SELECT SINGLE *
***      FROM vbkd
***      INTO gs_vbkd
***      WHERE vbeln = vbak-vbeln.
***
***     IF gs_vbak-kvgr1 <> xvbak-kvgr1.
***       IMPORT flag_kvgr1 TO flag_kvgr1 FROM MEMORY ID 'KVGR1'.
***       VBAK-zzkvgr1_1 = flag_kvgr1.
***     ENDIF.
***     IF gs_vbak-kvgr2 <> xvbak-kvgr2.
***       IMPORT flag_kvgr2 TO flag_kvgr2 FROM MEMORY ID 'KVGR2'.
***       VBAK-zzkvgr2 = flag_kvgr2.
***     ENDIF.
***     IF gs_vbkd-zterm <> xvbkd-zterm.
***       IMPORT flag_zterm TO flag_zterm FROM MEMORY ID 'ZTERM'.
***       VBAK-zzterm1 = flag_zterm.
***     ENDIF.
***ENDIF.
***
****BREAK anjaliv.
***
***DATA : Lv_kvgr1 TYPE VBAK-kvgr1.
***DATA : lv_kvgr2 TYPE vbak-kvgr2.
***DATA : lv_zterm TYPE VBKD-zterm.
***
***IF sy-tcode = 'VA02' AND sy-uname = 'ANJALIV'.
***       SELECT SINGLE zterm
***      FROM vbkd
***      INTO lv_ZTERM
***      WHERE vbeln = VBAK-vbeln.
***
***     SELECT SINGLE kvgr1
***    FROM vbak
***    INTO LV_KVGR1
***    WHERE vbeln = vbak-vbeln.
***
***   SELECT SINGLE kvgr2
***    FROM vbak
***    INTO LV_KVGR2
***    WHERE vbeln = vbak-vbeln.
***
***    if lv_ZTERM <> xvbkd-zterm.
***    VBAK-zzterm = 'X'.
***    ENDIF.
***
***    if LV_KVGR1 <> xvbak-kvgr1.
***       VBAK-zzkvgr1 = 'X'.
***  ENDIF.
***
***  if Lv_kvgr2 <>  xvbak-kvgr2.
***    vbak-zzkvgr2 = 'X'.
***  ENDIF.
***ENDIF.
***
***
***********Multilevel workflow **
****BREAK ANJALIV.
***DATA : gs_vbap TYPE vbapvb.
***DATA : zmatkl TYPE flag.
***DATA : lv_matkl TYPE vbap-mvgr1.
***
***
***IF sy-tcode = 'VA02' AND sy-uname = 'ANJALIV'.
*** SELECT SINGLE MVGR1
***    FROM vbap
***    INTO lv_matkl
***    WHERE vbeln = yvbap-vbeln
***      and posnr = '000010'.
***
***
***loop at xvbap into gs_vbap where vbeln = yvbap-vbeln
***                             and posnr = '000010'.
***  if lv_matkl <> gs_vbap-mvgr1.
***    gs_vbap-zmatkl = 'X'.
***    modify xvbap from gs_vbap TRANSPORTING zmatkl.
***    clear : gs_vbap.
***  endif.
***endloop.
***
***loop at yvbap into gs_vbap where vbeln = xvbap-vbeln
***                             and posnr = '000010'.
***  if lv_matkl <> gs_vbap-mvgr1.
***    gs_vbap-zmatkl = 'X'.
***    modify yvbap from gs_vbap TRANSPORTING zmatkl.
***    clear : gs_vbap.
***  endif.
***endloop.
***ENDIF.
****break anjaliv.
***
***
***
***
****----------Added by Manisha bh.Dt:28.04.2017---------*
****
****BREAK-point.
****  DATA:flag_zterm(1) TYPE c,
****       flag_kvgr1(1) TYPE c,
****       flag_kvgr2(1) TYPE c.
***  DATA: wa_vbak TYPE vbak,
***        wa_vbkd TYPE vbkd.
***IF sy-tcode = 'VA02' and sy-uname = 'MANISHAB' .
***    SELECT SINGLE *
***      FROM VBAK
***      INTO wa_vbak
***      WHERE vbeln = vbak-vbeln.
***    SELECT SINGLE *
***      FROM vbkd
***      INTO wa_vbkd
***      WHERE vbeln = vbak-vbeln.
***
***     IF wa_vbak-kvgr1 <> xvbak-kvgr1.
***       IMPORT kvgr1 TO flag_kvgr1 FROM MEMORY ID 'KVGR1'.
***       VBAK-zzkvgr1_1 = flag_kvgr1.
***     ENDIF.
***     IF wa_vbak-kvgr2 <> xvbak-kvgr2.
***       IMPORT kvgr2 TO flag_kvgr2 FROM MEMORY ID 'KVGR2'.
***       VBAK-zzkvgr2 = flag_kvgr2.
***     ENDIF.
***     IF wa_vbkd-zterm <> xvbkd-zterm.
***       IMPORT zterm TO flag_zterm FROM MEMORY ID 'ZTERM'.
***       VBAK-zzterm1 = flag_zterm.
***     ENDIF.
***ENDIF.
* change end by rohini kumar date on 22/12/2018
ENDENHANCEMENT.
*$*$-End:   (12)--------------------------------------------------------------------------------$*$*
*{   INSERT         DE3K903284                                        1
DATAlv_simulation TYPE c.
DATAlv_func_pref_sd0a_r3
      LIKE rs38l-name VALUE '/SAPSLL/PREF_SD0A_R3'.

CALL FUNCTION 'FUNCTION_EXISTS'
  EXPORTING
    funcname           lv_func_pref_sd0a_r3
  EXCEPTIONS
    function_not_exist 1
    OTHERS             2.
IF sy-subrc <> 0.
  EXIT.
ENDIF.

lv_simulation 'X'.

CALL FUNCTION '/SAPSLL/PREF_SD0A_R3'
  EXPORTING
    is_header             vbak
    iv_business_object    businessobjekt
    iv_simulation         lv_simulation
    iv_deletion_indicator yvbak_updkz
    is_document_type      tvak
  TABLES
    it_partner_new        xvbpa
    it_partner_old        yvbpa
    ct_item_new           xvbap
    it_item_old           yvbap
    it_item_status_new    xvbup
    it_sched_line_vb      xvbep
    it_business_data      xvbkd
    it_partner_address    xvbadr
  EXCEPTIONS
    OTHERS                1.                            "#EC EXISTS

*}   INSERT
*{   INSERT         DH3K911961                                        2
*
*}   INSERT


ENDFORM.
*eject

Comments

Popular posts from this blog

How to Give Dropdown in alv report in sap abap programming Language

MB_MIGO_BADI THIS BADI USED TO POSTING DATA IN MIGO