*&---------------------------------------------------------------------*
*& Report ZBW2LIS_11_VASCL *
*& *
*&---------------------------------------------------------------------*
*& *
*& 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.
IF SY-SUBRC EQ 0.
L_S_ICCTVBEP-ZZACTZIP = wa_ADRC-POST_CODE1.
L_S_ICCTVBEP-LAND1 = wa_ADRC-COUNTRY.
L_S_ICCTVBEP-REGIO = wa_ADRC-REGION.
ENDIF.
ELSE. "RECORDS FOR WHICH NO ITEM NUMBER EXISTS (POSNR = '000000').
READ TABLE itab_VBPA
INTO wa_VBPA
WITH KEY VBELN = l_s_icctvbep-VBELN
POSNR = c_ZEROES
BINARY SEARCH.
IF SY-SUBRC EQ 0.
READ TABLE itab_ADRC
INTO wa_ADRC
WITH KEY ADDRNUMBER = wa_VBPA-ADRNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
L_S_ICCTVBEP-ZZACTZIP = wa_ADRC-POST_CODE1.
L_S_ICCTVBEP-LAND1 = wa_ADRC-COUNTRY.
L_S_ICCTVBEP-REGIO = wa_ADRC-REGION.
ENDIF.
ENDIF.
ENDIF.
MODIFY c_t_data FROM l_s_icctvbep INDEX i_tabix.
ENDLOOP.
ENDFORM. "ZBW2LIS_11_VASCL