*& * *&---------------------------------------------------------------------* *& * *& Please DO NOT CHANGE the name of the program or the form.The * *& dynamic call in the user exit is dependent on the name of this * *& program. * *& Standard naming convention for the called program is * *& "ZBW" + Datasource Name * *&---------------------------------------------------------------------*
*####################################################################### * Confidential and Proprietary Copyright 2006 Grainger, Inc. * All Rights Reserved ************************************************************************ * Name : ZBW2LIS_11_VASCL * Created By : YUXY001 * Created On : 03/10/2007 * * Purpose : CMOD User Exit Code for Transaction Datasource : 2LIS_11_VAS CL * * Overview : Populate zzdate (Schedule line date) * * Called from : Transaction CMOD, EXIT_SAPLRSAP_001. * * Files : None. * * Assumptions : None. * * Code Review : <USERID> <DATE mm/dd/yyyy> * *----------------------------------------------------------------------- * Revisions History: *----------------------------------------------------------------------- * Number Date Author Transport Description * ______ __________ _______ __________ ___________________________ * 1 03/10/2007 YUXY001 DRAK935927 Code copied from user exit * * 2 09/03/2009 PGJEG DRAK9 Added logic to read COUNTRY * and REGION from table ADRC. * ************************************************************************ *#######################################################################
REPORT ZBW2LIS_11_VASCL .
FORM ZBW2LIS_11_VASCL tables I_T_SELECT structure RSSELECT I_T_FIELDS structure RSFIELDSEL C_T_DATA structure MC11VA0SCL C_T_MESSAGES structure BALMI USING I_ISOURCE LIKE RSAAPI_IF-ISOURCE I_UPDMODE LIKE RSAAPI_IF-UPDMODE RSAP_CUSTOMER_ERROR.
************************************************************* * FOR 2LIS_11_VASCL EXTRACTOR ENHANCEMENT. PGJWM.04/19/2005. * FOR GETTING VBEP-EDATU(Schedule Line Date). ************************************************************* TABLES: vbep. "Sales Order Sched LIne DATA : l_s_icctvbep LIKE mc11va0scl, i_tabix LIKE sy-tabix.
DATA: c_ZEROES(6) TYPE C VALUE '000000'.
DATA: itab_MC11VA0SCL TYPE STANDARD TABLE OF MC11VA0SCL, s_MC11VA0SCL TYPE MC11VA0SCL.
TYPES: BEGIN OF typ_VBPA, VBELN TYPE VBPA-VBELN, POSNR TYPE VBPA-POSNR, PARVW TYPE VBPA-PARVW, ADRNR TYPE VBPA-ADRNR, END OF typ_VBPA.
TYPES: BEGIN OF typ_ADRC, ADDRNUMBER TYPE ADRC-ADDRNUMBER, POST_CODE1 TYPE ADRC-POST_CODE1, COUNTRY TYPE ADRC-COUNTRY, REGION TYPE ADRC-REGION, END OF typ_ADRC.
DATA: itab_VBPA TYPE STANDARD TABLE OF typ_VBPA, wa_VBPA TYPE typ_VBPA, itab_ADRC TYPE STANDARD TABLE OF typ_ADRC, wa_ADRC TYPE typ_ADRC.
IF NOT C_T_DATA[] IS INITIAL.
* COLLECT THE ENTRIES INTO INTERNAL TABLE itab_MC11VA0SCL
itab_MC11VA0SCL[] = C_T_DATA[].
* SORT THE ENTRIES BY VBELN POSNR AND DELETE DUPLICATES
SORT itab_MC11VA0SCL BY VBELN POSNR. DELETE ADJACENT DUPLICATES FROM itab_MC11VA0SCL COMPARING VBELN POSNR.
* SELECT ADDRESS NUMBERS FROM VBPA TABLE FOR THE RELAVENT DOCUMENT * NUMBERS FOR WHICH POSNR NE '000000'.
SELECT VBELN POSNR PARVW ADRNR FROM VBPA INTO TABLE itab_VBPA FOR ALL ENTRIES IN itab_MC11VA0SCL WHERE VBELN = itab_MC11VA0SCL-VBELN AND POSNR = itab_MC11VA0SCL-POSNR AND PARVW IN ('WE', 'SH').
* ELSE GET THE ADDRESS NUMBER OF HEADER RECORD
SELECT VBELN POSNR PARVW ADRNR FROM VBPA APPENDING TABLE itab_VBPA FOR ALL ENTRIES IN itab_MC11VA0SCL WHERE VBELN = itab_MC11VA0SCL-VBELN AND POSNR = '000000' AND PARVW IN ('WE', 'SH').
* SORT ITAB_VBPA BY ADDRESS
SORT itab_VBPA BY ADRNR.
* SELECT THE REQUIRED FIELDS FROM ADRC TABLE
IF NOT itab_VBPA[] IS INITIAL.
SELECT ADDRNUMBER POST_CODE1 COUNTRY REGION FROM ADRC INTO TABLE itab_ADRC FOR ALL ENTRIES IN itab_VBPA WHERE ADDRNUMBER = itab_VBPA-ADRNR.
ENDIF.
SORT itab_ADRC BY ADDRNUMBER.
DELETE ADJACENT DUPLICATES FROM itab_ADRC COMPARING ADDRNUMBER.
SORT itab_VBPA BY VBELN POSNR.
ENDIF.
LOOP AT c_t_data INTO l_s_icctvbep. i_tabix = sy-tabix.
* GET Delivery Number FROM VBRP. PGJWM. 04/19/2005. SELECT SINGLE * FROM vbep WHERE vbeln = l_s_icctvbep-vbeln AND posnr = l_s_icctvbep-posnr AND etenr = l_s_icctvbep-etenr.
IF sy-subrc = 0. l_s_icctvbep-zzdate = vbep-edatu. ENDIF.
* READ ITAB_VBPA FOR RECORDS WHERE POSNR NE '000000'.
READ TABLE itab_VBPA INTO wa_VBPA WITH KEY VBELN = l_s_icctvbep-VBELN POSNR = l_s_icctvbep-POSNR BINARY SEARCH.
IF SY-SUBRC EQ 0.
READ TABLE itab_ADRC INTO wa_ADRC WITH KEY ADDRNUMBER = wa_VBPA-ADRNR BINARY SEARCH.