[go: up one dir, main page]

0% found this document useful (0 votes)
144 views155 pages

Dcsea LZ Ais Velo12f01 2022 07 29

The document contains the ABAP code for initializing variables and interpreting IDoc segments for a vehicle master IDoc. It includes forms to initialize fields, interpret various IDoc segments including vehicle master, invoice, and configuration data, and append the data to internal tables. It has been modified over time with various changes and additions.

Uploaded by

Chandrahas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
144 views155 pages

Dcsea LZ Ais Velo12f01 2022 07 29

The document contains the ABAP code for initializing variables and interpreting IDoc segments for a vehicle master IDoc. It includes forms to initialize fields, interpret various IDoc segments including vehicle master, invoice, and configuration data, and append the data to internal tables. It has been modified over time with various changes and additions.

Uploaded by

Chandrahas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 155

*----------------------------------------------------------------------*

***INCLUDE LZ_AIS_VELO12F01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form INIT_ALL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
* TA1K900110, Anbu (Infosys), 20/11/2002, VMS upgrade, Mask: VMSUPGD
*----------------------------------------------------------------------*
*-----------------------------------------------------------------------
*Change Track
* 1.0 07/04/2003 CM-1869 Additions For actions AGARWALN *
* ZIDI, ZVP8, ZVRV, ZVIP, (Mrunalini)*
* ZVT2, ZVPY, ZVHC,ZVT2
* 2.0 07/07/2003 CM-2034 Addition for action ZNAK AGARWALN *
* 3.0 09/07/2003 Ticket-1192194 Fix MARAMS *
* 4.0 17/11/2003 CM-2225 Moving ETD,ETA,STNCODE ALAPATK
* values from idoc segment
* to st_vlcvehicle
* 5.0 26/11/2003 Ticket-1486105 ZMD1 fix for GO Kerridge
* vehicle SRIVATSS *
* 6.0 09/01/2004 Ticket 1512438 New parameter added to GO FM
* SRIVATSS *
* 7.0 18/05/2004 CM-2475 Major Changes in VPC Ashish
*
* Interface (PUTHILLP)
*
* 8.0 18/06/2004 CM-2564 Creating or changing *
* for action ZAEC KALLIANM *
* 9.0 15/07/2004 Performance Tuning ANANDD *
* 10.0 15/07/2004 Additions for actions KHETERT *
* ZVHA, ZVNA, ZINS, ZINU *
* 11.0 09/12/2004 CM-2779 Changes to accomodate the DEA *
* field Title for partner type *
* ZALTNAECL1 *
* ---------------------------------------------------------------------*
* 12.0 20/03/2008 6854552 SWT Physical BHORCHIS
* Split & XI-LO
* ABAP changes for XI migration - This include has been modified to add
* all the ABAP related changes as part of migration to XI. All
* the new partner profiles and message types have been incoporated
* and all interface related select queries have been modified.
*----------------------------------------------------------------------*
* 13.0 13.03.2009 8808645 Add Partner profile VSS *
* GSAFAB_JP to the range *
* for entry in DCON table *
*----------------------------------------------------------------------*
* 14.0 16.09.2016 34670898 For Indicator ZVAS,ZVIB SWETHAR *
*----------------------------------------------------------------------*
* 15.0 08.12.2020 54479486 SG VEGA Changes GUPTRIS *

* 15.0 22-oct-2021 0059136446 Accessory change DDB MBUS CBHARIS *


* 16.0 16.11.2021 59373041 Updating value for *
* month_ind field in UDAKUMA *
* /DCSEA/ZAIS_SCC table *
*----------------------------------------------------------------------*

FORM init_all.

CLEAR:
st_int_edidd,
st_vlcvehiclem,
st_vlcinvoice,
st_vlcvehiclea,
st_vlcvehicleb,
st_vlcvehiclec,
st_e1cucfg,
st_e1cuins,
st_e1cuprt,
st_e1cuval,
st_errormsg,
st_vlcgoodsmvmt,
* ortegav 1/16/02
st_adrmasendcu,
idoc_status_no,
flag_po_exist,
flag_action_performed,
flag_zshm_action,
error_records,
v_action,
wf_date,
wf_time,
v_msgfn,
v_credit_note,
st_vlcsmod,
vlch_ord1_ls,
vlch_iniv_ls,
vlch_smod_ls,
wf_mtart,
wf_zfodmbch,
vlcbapicu_ls,
bapicucfg_temp,
vlcactdata_cs, " VMSUPGD
st_vlcvehicle, " VMSUPGD
vlcactdata_item_lt, " VMSUPGD
vlcadddata_cs, "PERIASAS for CM-1929
vlcadddata_gt, "RAMAKUMM 02-May-2004
*** Begin of Insertion by Ashish(PUTHILLP) on 18/05/2004 for CM-2475.
lv_vpcstatus,
*** End of Insertion by Ashish(PUTHILLP) on 18/05/2004 for CM-2475.
* Begin of changes by PPRAGYA for MBIL for CM 0051514725
st_vlcbilling,
* End of changes by PPRAGYA for MBIL for CM 0051514725
**Begin of insertion by DIROHAN for CM-0042697099 on 31.05.2018
gv_tstmp,
gv_vguid,
gv_matkl,
gv_vehicle,
wa_scc,
wa_incentivepts,
wa_pricecond,
wa_pgty.
**End of insertion by DIROHAN for CM-0042697099 on 31.05.2018
REFRESH:
tb_vlc_vehicle,
tb_vhcl_config,
tb_vhcl_cuins,
tb_vhcl_cuprt,
tb_vhcl_cuval,
tb_vhcl_cublb,
tb_curr_cuval,
tb_err_msg,
tb_errtab,
vlcsmod_vhcl_s_temp,
vlciniv_item_s_temp,
tb_vlch_actdata_lt,
ekbe_temp,
tb_vlcbapicu_lt,
* Following line inserted by PULLABHS for CM-10442289 on 20.05.2010
tb_extn,
bapicuval_temp,
bapicuins_temp,
vlcactdata_item_lt, "VMSUPGD
vlcadddata_gt, "RAMAKUMM 02-May-2004
**Begin of insertion by DIROHAN for CM-0042697099 on 31.05.2018
tb_scc,
tb_incentivepts,
tb_exten,
tb_pricecond.
**End of insertion by DIROHAN for CM-0042697099 on 31.05.2018

ENDFORM. " INIT_ALL

*&---------------------------------------------------------------------*
*& Form INTERPRET_IDOC_VEHMAS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM interpret_idoc_vehmas.
*--- Begin of changes by AJABOSE for CM 39989827 on 21/11/2017
DATA lo_xclass TYPE REF TO /dcsea/zais_xclass.
*--- End of changes by AJABOSE for CM 39989827 on 21/11/2017
* Begin of insert by MAAMARN for CM-0043084167(MBTH DIP Phase II) on 26.10.2018
DATA: lv_date TYPE sy-datum.
* End of insert by MAAMARN for CM-0043084167(MBTH DIP Phase II) on 26.10.2018
LOOP AT idoc_data
WHERE docnum = idoc_contrl-docnum.

CASE idoc_data-segnam.

* Vehicle Master Record


*Following 1 line modified by GUPTAGA for CM-20147110 on 26.03.2013
* when co_vhcl_mast_segmt.
WHEN co_vhcl_mast_segmt OR co_vhcl_mast_segmt1.
MOVE idoc_data-sdata TO st_vlcvehiclem.
PERFORM append_data_zvlcvehiclem.

* Invoice Segment
*Following 1 line modified by GUPTAGA for CM-20147110 on 26.03.2013
* when co_vhcl_inv_segmt.
WHEN co_vhcl_inv_segmt OR co_vhcl_inv_segmt1.
MOVE idoc_data-sdata TO st_vlcinvoice.
PERFORM append_data_zvlcinovice.

* Additional Vehicle Data


*Following 1 line modified by GUPTAGA for CM-20147110 on 26.03.2013
* when co_vhcl_addl_segmt.
WHEN co_vhcl_addl_segmt OR co_vhcl_addl_segmt1.
MOVE idoc_data-sdata TO st_vlcvehiclea.
PERFORM append_data_zvlcvehiclea.

* Global Template Vehicle Data B


*Following 1 line modified by GUPTAGA for CM-20147110 on 26.03.2013
* when co_vhcl_glbl_segmt.
WHEN co_vhcl_glbl_segmt OR co_vhcl_glbl_segmt1.
MOVE idoc_data-sdata TO st_vlcvehicleb.
PERFORM append_data_zvlcvehicleb.

* Global Template Vehicle Data - Extension of B


*Following 1 line modified by GUPTAGA for CM-20147110 on 26.03.2013
* when co_vhcl_glbl_segmt_x.
WHEN co_vhcl_glbl_segmt_x OR co_vhcl_glbl_segmt_x1.
MOVE idoc_data-sdata TO st_vlcvehiclec.
PERFORM append_data_zvlcvehiclec.

*--Start of insertion By agarwaln(Mrunalini) for CM-1869 on 07-04-2003--


* Local requirement for DC Japan
* To trigger VMS actions based on the interface from the VPC
* Idoc ZVEHMAS02

* Global Template Vehicle Data - Extension 2 of B


WHEN co_vhcl_glbl_segmt_x2.
MOVE idoc_data-sdata TO st_vlcvehicled.
PERFORM append_data_zvlcvehicled.

*--End of insertion By agarwaln(Mrunalini) for CM-1869 on 07-04-2003--

* Configuration data
WHEN co_vhcl_cfg_segmt.
MOVE idoc_data-sdata TO st_e1cucfg.
PERFORM append_data_e1cucfg.

* CU: Instance Data


WHEN co_vhcl_ins_segmt.
MOVE idoc_data-sdata TO st_e1cuins.
PERFORM append_data_e1cuins.

* CU: part-of data


WHEN co_vhcl_prt_segmt.
MOVE idoc_data-sdata TO st_e1cuprt.
PERFORM append_data_e1cuprt.

* CU: characteristics valuation


WHEN co_vhcl_val_segmt.
MOVE idoc_data-sdata TO st_e1cuval.
PERFORM append_data_e1cuval.
* CU: configuration-BLOB (SCE)
WHEN co_vhcl_blb_segmt.
MOVE idoc_data-sdata TO st_e1cublb.
PERFORM append_data_e1cublb.

* Error Messaging Segment


WHEN co_vhcl_err_segmt.
MOVE idoc_data-sdata TO st_errormsg.
PERFORM append_data_errormsg.

* Goods Movement Segment


WHEN co_vhcl_gds_segmt.
MOVE idoc_data-sdata TO st_vlcgoodsmvmt.

* Begin of changes by PPRAGYA for MBIL for CM 0051514725


WHEN co_vhcl_billing.
perform append_billing_data.
* End of changes by PPRAGYA for MBIL for CM 0051514725

* ortegav 1/16/02
* Goods Movement Segment
WHEN co_adrm_encu_segmt.
MOVE idoc_data-sdata TO st_adrmasendcu.

*begin of insert by KALLIANM for CM-2564 on 18.06.2004


WHEN co_adrm_encub_segmt.
MOVE idoc_data-sdata TO st_adrmasendcub.

WHEN co_cust_data_segmt.
MOVE idoc_data-sdata TO st_but000a3.
*end of insert by KALLIANM for CM-2564 on 18.06.2004

*Begin of insert by DEA for CM-2779 v1.1 on 8-Dec-2004


WHEN co_cust_data2_segmt.
MOVE idoc_data-sdata TO st_but000a1.
*End of insert by DEA for CM-2779 v1.1 on 8-Dec-2004
* Inserted by PERIASAS on 21/07/2003 for CM-1929
**Begin of insertion by DIROHAN for CM-0042697099 on 31.05.2018
WHEN co_cust_data3_segmt.
CLEAR : st_but000a2.
MOVE idoc_data-sdata TO st_but000a2.

WHEN co_pricecond_segmt.
MOVE idoc_data-sdata TO wa_pricecond.
APPEND wa_pricecond TO tb_pricecond.
**End of insertion by DIROHAN for CM-0042697099 on 31.05.2018
WHEN co_vhcl_adddata_segmt.
MOVE idoc_data-sdata TO st_vlcadddata.
PERFORM append_fill_adddata.
* Local Options (for Invoice Segment)
* WHEN CO_VHCL_LOPT_SEGMT.
* MOVE IDOC_DATA-SDATA TO ST_LOCALOPTIONS.
* PERFORM APPEND_DATA_ZLOCALOPTIONS.

*** Begin of Insertion by Ashish(PUTHILLP) on 18/05/2004 for CM-2475.


* Dynamic table name, field name, field value segment
WHEN co_vhcl_extn_segmt.
MOVE idoc_data-sdata TO st_extn.
**Begin of insertion by DIROHAN for CM-0042697099 on 31.05.2018
APPEND st_extn TO tb_exten.
**End of insertion by DIROHAN for CM-0042697099 on 31.05.2018
PERFORM append_data_extn.
*** End of Insertion by Ashish(PUTHILLP) on 18/05/2004 for CM-2475.

*Begin of insertion by Lavanya(CHATARAL) for CM-3170 on 19/07/2005.


PERFORM append_ekko_data.
*End of insertion by Lavanya(CHATARAL) for CM-3170 on 19/07/2005.
*Begin of insertion by TRIPATHIL for CM-10003589 v5.7T on 11/12/2009
PERFORM append_vlcadddata.
*END of insertion by TRIPATHIL for CM-10003589 v5.7T on 11/12/2009
***************************************************************
*Begin of insertion by SWETHAR for CM-34670898 v14 on 16/9/2016
***************************************************************
DATA:ls_para TYPE /dcsea/zais_para,
lv_flag_34670898(1) TYPE c,
ls_vehicle TYPE vlcvehicle.

CONSTANTS: co_au01(4) TYPE c VALUE 'AU01',


co_prixcar(7) TYPE c VALUE 'PRIXCAR',
co_34670898(8) TYPE c VALUE '34670898'.
***Begin of insert by REDDAMV for CM-0049780584 on 21.02.2019
DATA: lv_flag_49780584(1) TYPE c,
lv_filter TYPE /dcsea/z_cm_filter.
***End of insert by REDDAMV for CM-0049780584 on 21.02.2019
CLEAR: ls_para,
ls_vehicle,
lv_flag_34670898.
"HANA Code Remediation:Select Single not unique
" SELECT SINGLE * FROM vlcvehicle INTO ls_vehicle
" WHERE vhcex = st_vlcvehiclem-vhcex.
SELECT * UP TO 1 ROWS FROM vlcvehicle INTO ls_vehicle
WHERE vhcex = st_vlcvehiclem-vhcex ORDER BY PRIMARY KEY.
ENDSELECT.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_34670898
werks = ls_vehicle-werks
IMPORTING
active_flag = lv_flag_34670898.
***Begin of insert by REDDAMV for CM-0049780584 on 21.02.2019
CLEAR: lv_flag_49780584,
lv_filter.
SELECT * FROM mara INTO @DATA(ls_mara) UP TO 1 ROWS
WHERE matnr = @ls_vehicle-matnr ORDER BY PRIMARY KEY.
ENDSELECT.
lv_filter = ls_mara-mtart.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = /dcsea/zfuso_if_constants=>gc_49780584
werks = ls_vehicle-werks
filter = lv_filter
IMPORTING
active_flag = lv_flag_49780584.

IF lv_flag_49780584 IS NOT INITIAL.


IF wf_aktion EQ co_zvas OR wf_aktion EQ co_zvib
OR wf_aktion EQ co_zvhc OR wf_aktion EQ co_zidi.
IF st_extn IS NOT INITIAL.
IF st_extn-tabname EQ co_vlcvehicle.
SELECT * FROM /dcsea/zais_para INTO ls_para
UP TO 1 ROWS
WHERE domval1 = ls_vehicle-werks
AND domval2 = co_prixcar
AND param = st_extn-fieldval
AND fieldname = st_extn-fieldname
ORDER BY PRIMARY KEY.
ENDSELECT.
IF sy-subrc IS INITIAL.
st_vlcvehicle-lgort = ls_para-fieldval.
ENDIF.
st_vlcvehicle-zz_branch_code = st_extn-fieldval.
ENDIF.
ENDIF.
ENDIF.
ELSE.
***End of insert by REDDAMV for CM-0049780584 on 21.02.2019
IF lv_flag_34670898 IS NOT INITIAL AND
***Begin of change by REDDAMV for CM-0044918621 on 26.09.2018
***Begin of change by REDDAMV for CM-0049780584 on 21.02.2019
ls_vehicle-mmctr EQ 'AUL1'.
* ( ls_vehicle-mmctr EQ 'AUL1' OR
* /dcsea/zcl_au_fuso_int=>check_fuso( iv_matnr = ls_vehicle-matnr )
* IS NOT INITIAL ).
***End of change by REDDAMV for CM-0049780584 on 21.02.2019
***End of change by REDDAMV for CM-0044918621 on 26.09.2018
IF wf_aktion EQ co_zvas OR wf_aktion EQ co_zvib
***Begin of insertion by VREDDAM for CM-0034670898 on 01.02.2017
OR wf_aktion EQ co_zvhc OR wf_aktion EQ co_zidi.
***End of insertion by VREDDAM for CM-0034670898 on 01.02.2017
IF st_extn IS NOT INITIAL.
IF st_extn-tabname EQ co_vlcvehicle.
"HANA Code Remediation:Select Single not unique
" SELECT SINGLE * FROM /dcsea/zais_para
" INTO ls_para
"*Begin of Change by Bhupatp for CM-0036492642 on 08.09.2017
"* WHERE domval1 = co_au01
" WHERE domval1 = ls_vehicle-werks
"*End of Change by Bhupatp for CM-0036492642 on 08.09.2017
" AND domval2 = co_prixcar
" AND param = st_extn-fieldval
" AND fieldname = st_extn-fieldname.
SELECT * UP TO 1 ROWS FROM /dcsea/zais_para
INTO ls_para
*Begin of Change by Bhupatp for CM-0036492642 on 08.09.2017
* WHERE domval1 = co_au01
WHERE domval1 = ls_vehicle-werks
*End of Change by Bhupatp for CM-0036492642 on 08.09.2017
AND domval2 = co_prixcar
AND param = st_extn-fieldval
AND fieldname = st_extn-fieldname ORDER BY PRIMARY
KEY. ENDSELECT.
IF sy-subrc IS INITIAL.
st_vlcvehicle-lgort = ls_para-fieldval.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
***Begin of insert by REDDAMV for CM-0049780584 on 21.02.2019
ENDIF.
***End of insert by REDDAMV for CM-0049780584 on 21.02.2019
*************************************************************
*End of insertion by SWETHAR for CM-34670898 v14 on 16/9/2016
*************************************************************
*--- Begin of changes by AJABOSE for CM 39989827 on 21/11/2017
CREATE OBJECT lo_xclass
EXPORTING
iv_werks = ls_vehicle-werks.
*--- Begin of changes by AJABOSE for CM 39989827 on 05/12/2017
" pgl bug fix (additional check on material group)
* IF lo_xclass->gv_cm_active IS NOT INITIAL AND
" CM activation check is inside the method check_xclass_mgrp
IF lo_xclass->check_xclass_mgrp( iv_matnr = ls_vehicle-matnr )
IS NOT INITIAL AND
*--- Begin of changes by AJABOSE for CM 39989827 on 05/12/2017
( wf_aktion EQ co_zvas OR wf_aktion EQ co_zvib
OR wf_aktion EQ co_zvhc OR wf_aktion EQ co_zidi ).
IF st_extn-tabname EQ co_vlcvehicle.
"HANA Code Remediation:Select Single not unique
" SELECT SINGLE * FROM /dcsea/zais_para
" INTO ls_para
" WHERE domval1 = ls_vehicle-werks
" AND domval2 = lo_xclass->gv_vpc
" AND param = st_extn-fieldval
" AND fieldname = st_extn-fieldname.
SELECT * UP TO 1 ROWS FROM /dcsea/zais_para
INTO ls_para
WHERE domval1 = ls_vehicle-werks
AND domval2 = lo_xclass->gv_vpc
AND param = st_extn-fieldval
AND fieldname = st_extn-fieldname ORDER BY PRIMARY KEY.
ENDSELECT.
IF sy-subrc IS INITIAL.
st_vlcvehicle-lgort = ls_para-fieldval.
ENDIF.
ENDIF.
ENDIF.
*--- End of changes by AJABOSE for CM 39989827 on 21/11/2017
ENDCASE.

ENDLOOP.

*Begin of insertion by THELAKAK for CM-3130 on 14-07-2005.


READ TABLE tb_vlc_vehicle INDEX 1.

IF sy-subrc EQ 0.
* Append structure to table
MODIFY tb_vlc_vehicle FROM st_vlcvehicle INDEX sy-tabix.
ELSE.
* Append structure to table
APPEND st_vlcvehicle TO tb_vlc_vehicle.
ENDIF.
*End of insertion by THELAKAK for CM-3130 on 14-07-2005.

*Begin of insert KAMIRES for CM-0056783726 on 05/04/2021


SELECT werks
INTO @DATA(lv_werks)
UP TO 1 ROWS
FROM vlcvehicle
WHERE vhcex = @st_vlcvehiclem-vhcex.
ENDSELECT.
IF sy-subrc <> 0.
CLEAR: lv_werks.
ENDIF.

DATA(lv_0056783726) = abap_false.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = '0056783726'
werks = lv_werks
IMPORTING
active_flag = lv_0056783726.
IF ( NOT lv_0056783726 IS INITIAL AND ( wf_aktion = co_zmif OR wf_aktion =
co_zmip ) )
AND idoc_contrl-rcvprn = co_lsovp_au AND idoc_contrl-mestyp =
co_mestyp_zovp.
READ TABLE vlcadddata_gt TRANSPORTING NO FIELDS
WITH KEY fieldname = 'ZZ_DAMAGE_STS'
fieldvalue = 'SV2'.
IF sy-subrc EQ 0.
SELECT vlchistory~action
UP TO 1 ROWS
INTO @DATA(lv_action)
FROM vlchistory
JOIN vlcvehicle
ON vlchistory~vguid = vlcvehicle~vguid
WHERE vlcvehicle~zz_commnos = @tb_vlc_vehicle-zz_commnos
AND vlchistory~action = @co_zmip.
ENDSELECT.
IF sy-subrc <> 0.
PERFORM write_error USING co_msg_590 "ZMIP 1st stage not executed
co_zais_msg1.
ENDIF.
ENDIF.
ENDIF.
*End of insert KAMIRES for CM-0056783726 on 05/04/2021

**Begin of insertion by GASATHI for CM-0042934639 ON 18.07.2018


DATA : lv_0042934639 TYPE c.
CLEAR lv_0042934639.
REFRESH : tb_flttrg.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = '0042934639'
werks = st_vlcvehiclem-werks
IMPORTING
active_flag = lv_0042934639.
**End of insertion by GASATHI for CM-0042934639 ON 18.07.2018
**Begin of insertion by DIROHAN for CM-0050212384 ON 14.10.2019
DATA : gv_0050212384 TYPE c.
CLEAR gv_0050212384.
REFRESH : tb_flttrg.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = '0050212384'
werks = st_vlcvehiclem-werks
IMPORTING
active_flag = gv_0050212384.
**End of insertion by DIROHAN for CM-0050212384 ON 14.10.2019
**Begin of insertion by dirohan for CM-0042697099 ON 31.05.2018
CLEAR: gv_0042697099.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = '0042697099'
werks = st_vlcvehiclem-werks
IMPORTING
active_flag = gv_0042697099.
IF NOT gv_0042697099 IS INITIAL
OR lv_0042934639 IS NOT INITIAL "Modified by GASATHI for CM-0042934639 ON
18.07.2018
OR gv_0050212384 IS NOT INITIAL. " Modified by DIROHAN for CM-0050212384
ON 14.10.2019
IF idoc_contrl-rcvprn = co_rcvprn OR idoc_contrl-rcvprn =
'GSKEDMS_MY'"Modified by GASATHI for CM-0042934639 ON 18.07.2018
OR idoc_contrl-rcvprn = 'GSKEDMS_ID'. " Modified by DIROHAN for CM-
0050212384 ON 14.10.2019
IF idoc_contrl-mestyp = co_mestyp_zgen OR idoc_contrl-mestyp =
co_mestyp_zscc OR idoc_contrl-mestyp = co_mestyp_zreg
OR idoc_contrl-mestyp = co_mestyp_zrsc.
IF wf_aktion = co_zecu OR wf_aktion = co_zreg OR wf_aktion = co_zrsc.
PERFORM get_dip_data.
READ TABLE tb_vlc_vehicle INDEX 1.
wa_scc-plant = tb_vlc_vehicle-werks.
wa_scc-vhcle = gv_vehicle.

IF NOT gv_0050212384 IS INITIAL.


* Retrieve Dealer
SELECT kunnr
FROM vlcvehicle
UP TO 1 ROWS
INTO @DATA(lv_kunnr)
WHERE zz_commnos = @tb_vlc_vehicle-zz_commnos.
ENDSELECT.
IF sy-subrc IS INITIAL.
wa_scc-dealer_code = lv_kunnr.
ENDIF.

READ TABLE tb_exten INTO wa_exten WITH KEY tabname = co_tabname


fieldname = 'SALES_IND'.
IF sy-subrc IS INITIAL.
wa_scc-dms_sale_typ = wa_exten-fieldval.
CLEAR wa_exten.
ENDIF.
* wa_scc-dms_sale_typ = tb_vlc_vehicle-zz_flty.
ELSE.
wa_scc-dealer_code = tb_vlc_vehicle-kunnr.
ENDIF.

wa_scc-dealer_name = st_vlcvehiclec-/dcsea/zz_dealer_name.
READ TABLE tb_exten INTO wa_exten WITH KEY tabname = co_tabname
fieldname = 'Fleet_IND'.
IF sy-subrc IS INITIAL.
wa_scc-fleet_ind = wa_exten-fieldval.
ENDIF.
READ TABLE tb_pgty INTO wa_pgty WITH KEY plant = tb_vlc_vehicle-
werks sales_type = tb_vlc_vehicle-zz_flty.
IF sy-subrc IS INITIAL.
IF wa_scc-fleet_ind = 'Y'.
wa_scc-sales_ind = wa_pgty-program_type.
wa_scc-fleet_type = tb_vlc_vehicle-zz_flty.
wa_scc-subfleet_type = tb_vlc_vehicle-zz_subflty.
ELSE.
wa_scc-sales_ind = wa_pgty-program_type.
ENDIF.
ENDIF.
wa_scc-sales_card_date = idoc_contrl-upddat.
READ TABLE tb_exten INTO wa_exten WITH KEY tabname = co_tabname
fieldname = 'DEALER_SHOWROOM'.
IF sy-subrc IS INITIAL.
wa_scc-dlr_shwroom_code = wa_exten-fieldval.
ENDIF.
* Begin of insert by UDAKUMA for CM-59373041 on 12.11.2021
CONSTANTS: co_0059373041 TYPE /dcsea/z_cm_number
VALUE '0059373041'.
CONSTANTS: co_vlcvehicle(10) TYPE c VALUE 'VLCVEHICLE',
co_zz_flty(7) TYPE c VALUE 'ZZ_FLTY',
co_zz_subflty(10) TYPE c VALUE 'ZZ_SUBFLTY' ,
co_sales_ind(9) TYPE c VALUE 'SALES_IND',
co_month_ind(9) TYPE c VALUE 'MONTH_IND',
co_y TYPE c VALUE 'Y'.
TYPES: BEGIN OF ty_fieldval,
fieldval(50) TYPE c,
END OF ty_fieldval.
DATA: wf_0059373041 TYPE c,
tb_fieldval TYPE STANDARD TABLE OF ty_fieldval.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_0059373041
werks = st_vlcvehiclem-werks
IMPORTING
active_flag = wf_0059373041.
* End of insert by UDAKUMA for CM-59373041 on 12.11.2021
READ TABLE tb_exten INTO wa_exten WITH KEY tabname = co_tabname
fieldname = 'SALESMAN_CODE'.
IF sy-subrc IS INITIAL.
wa_scc-salesman_code = wa_exten-fieldval.
* Begin of insert by UDAKUMA for CM-59373041 on 12.11.2021
IF wf_0059373041 IS NOT INITIAL.
LOOP AT tb_exten ASSIGNING FIELD-SYMBOL(<fs_exten>)
WHERE tabname = co_tabname AND fieldname = co_sales_ind.
APPEND INITIAL LINE TO tb_fieldval ASSIGNING
FIELD-SYMBOL(<fs_fieldval>).
<fs_fieldval>-fieldval = <fs_exten>-fieldval.
ENDLOOP.
READ TABLE tb_exten INTO wa_exten WITH KEY tabname =
co_vlcvehicle
fieldname =
co_zz_flty.
IF sy-subrc IS INITIAL.
wa_scc-fleet_type = wa_exten-fieldval.
ENDIF.
READ TABLE tb_exten INTO wa_exten WITH KEY
tabname = co_vlcvehicle fieldname = co_zz_subflty.
IF sy-subrc IS INITIAL.
wa_scc-subfleet_type = wa_exten-fieldval.
ENDIF.
READ TABLE tb_exten INTO wa_exten WITH KEY
tabname = co_tabname fieldname = co_month_ind.
IF sy-subrc IS INITIAL.
wa_scc-month_ind = wa_exten-fieldval.
ENDIF.
ENDIF.
* End of insert by UDAKUMA for CM-59373041 on 12.11.2021
ENDIF.
wa_scc-product_type = '01'.
wa_scc-company_name = st_adrmasendcu-name_co.
wa_scc-action = wf_aktion.
wa_scc-action_exe_date = gv_tstmp.
wa_scc-mmctr = tb_vlc_vehicle-mmctr.
wa_scc-sdctr = tb_vlc_vehicle-sdctr.
* Begin of Modification by MAAMARN for CM-0046672944 on 13.03.2019
REPLACE ALL OCCURRENCES OF '-' IN tb_vlc_vehicle-zz_bbatx21 WITH
space.
CONDENSE tb_vlc_vehicle-zz_bbatx21.
* wa_scc-fleet_acct_num = st_but000a2-zfleet_no. "Changed the
IDOC mapping field for fleet_acct_num
wa_scc-fleet_acct_num = tb_vlc_vehicle-zz_bbatx21.
* End of Modification by MAAMARN for CM-0046672944 on 13.03.2019
wa_scc-fleet_count = tb_vlc_vehicle-pcount_u.
wa_scc-vendor = tb_vlc_vehicle-lifnr.
wa_scc-demo_regis_date = tb_vlc_vehicle-zz_retaildate.
wa_scc-invoice_account = tb_vlc_vehicle-zz_bbatx11.
wa_scc-registration_dt = tb_vlc_vehicle-immatdate.
wa_scc-endcustomer_name = tb_vlc_vehicle-cu_name1.
wa_scc-dms_user_name = tb_vlc_vehicle-zz_dms_user.
wa_scc-invoice_date = tb_vlc_vehicle-zz_retaildate.
wa_scc-owner_type = st_but000a3-jobgr.
wa_scc-customer_type = st_but000a1-type.

REPLACE ALL OCCURRENCES OF '-' IN tb_vlc_vehicle-zz_bbatx21 WITH


space.
CONDENSE tb_vlc_vehicle-zz_bbatx21.
wa_scc-company_reg_no = tb_vlc_vehicle-zz_bbatx21.
REPLACE ALL OCCURRENCES OF '-' IN tb_vlc_vehicle-zz_bbatx12 WITH
space.
CONDENSE tb_vlc_vehicle-zz_bbatx12.
wa_scc-vat_reg_no = tb_vlc_vehicle-zz_bbatx12.
READ TABLE tb_pricecond INTO wa_pricecond WITH KEY kschl = 'ZBNT'.
IF sy-subrc IS INITIAL .
wa_scc-msrp = wa_pricecond-kwert.
ENDIF.
READ TABLE tb_incentivepts INTO wa_incentivepts WITH KEY zplant
= st_vlcvehiclem-werks
class_type
= gv_matkl
matnr
= gv_matnr.
IF sy-subrc IS INITIAL.
wa_scc-mb_race_points = wa_incentivepts-points_eligible.
ENDIF.
wa_scc-mbfs_relevant = tb_vlc_vehicle-zz_bbatx13.
IF idoc_contrl-mestyp = co_mestyp_zgen OR idoc_contrl-mestyp =
co_mestyp_zscc.
wa_scc-transaction_type = 'SCC'.
ELSEIF idoc_contrl-mestyp = co_mestyp_zreg.
wa_scc-transaction_type = 'REG'.
ELSEIF idoc_contrl-mestyp = co_mestyp_zrsc.
wa_scc-transaction_type = 'RSC'.
ENDIF.
**Begin of insertion by GASATHI for CM-0042934639 ON 18.07.2018
wa_scc-zcommnos = st_vlcvehicleb-/dcsea/zz_commnos.
IF lv_0042934639 IS NOT INITIAL.
wa_scc-dealer_code = st_vlcvehiclem-kunnr.
**Populate DMS Sale Type
READ TABLE tb_exten INTO wa_exten WITH KEY tabname = co_tabname
fieldname = 'SALES_IND'.
IF sy-subrc IS INITIAL.
wa_scc-dms_sale_typ = wa_exten-fieldval.
ENDIF.
IF wf_0059373041 IS INITIAL. "Line inserted by UDAKUMA for CM- on
18.11.2021
* *Populate Sales Indicator from the above sale type
READ TABLE tb_pgty INTO wa_pgty WITH KEY plant = tb_vlc_vehicle-
werks sales_type = wa_scc-dms_sale_typ.
IF sy-subrc IS INITIAL.
wa_scc-sales_ind = wa_pgty-program_type.
ENDIF.
ENDIF. "Line inserted by UDAKUMA for CM- on
18.11.2021

* Populate DMS Registration Date


wa_scc-dms_reg_date = st_vlcvehiclec-/dcsea/zz_retaildate.
* Populate DMS Registration Number
wa_scc-dms_reg_number = st_vlcvehicleb-/dcsea/zz_rego_number .

* *Populate NRIC Number


READ TABLE tb_exten INTO wa_exten WITH KEY tabname = co_tabname
fieldname = 'NRIC_PVT_PURCHASE'.
IF sy-subrc IS INITIAL.
wa_scc-nric_number = wa_exten-fieldval.
ENDIF.

* *Populate Company Reg Number


READ TABLE tb_exten INTO wa_exten WITH KEY tabname = co_tabname
fieldname = 'COMPANY_REG_NO'.
IF sy-subrc IS INITIAL.
wa_scc-company_reg_no = wa_exten-fieldval.
ENDIF.

* *Populate company Name.


READ TABLE tb_exten INTO wa_exten WITH KEY tabname = co_tabname
fieldname = 'COMPANY_NAME'.
IF sy-subrc IS INITIAL.
wa_scc-company_name = wa_exten-fieldval.
ENDIF.

* *Populate Tenure.
READ TABLE tb_exten INTO wa_exten WITH KEY tabname = co_tabname
fieldname = 'TENURE'.
IF sy-subrc IS INITIAL.
wa_scc-tenure = wa_exten-fieldval.
ENDIF.

*Begin of insert by shkasif for CM-0047509137 on 26.03.2019

CLEAR : wa_fleet_target.
IF wa_scc-vhcle IS NOT INITIAL.
"Get model number using Vehicle number
SELECT matnr
FROM vlcvehicle
INTO @DATA(lv_matnr) UP TO 1 ROWS
WHERE vhcle EQ @wa_scc-vhcle.
ENDSELECT.
IF lv_matnr IS NOT INITIAL.

"Get Class-ID using model number (Matnr)


SELECT extwg
FROM mara
INTO @DATA(lv_extwg) UP TO 1 ROWS
WHERE matnr = @lv_matnr.
ENDSELECT.

"Get Fleet master data


SELECT * FROM /dcsea/my_fl_mst
INTO @DATA(wa_my_fl_mst) UP TO 1 ROWS
WHERE plant EQ @st_vlcvehiclem-werks
AND company_reg_num EQ @wa_scc-company_reg_no.
ENDSELECT.

"Check Company reg number / company group for update


IF wa_my_fl_mst-company_reg_num IS NOT INITIAL
AND wa_my_fl_mst-corporate_grp IS INITIAL.

SELECT * FROM /dcsea/my_fl_trg


INTO wa_fleet_target UP TO 1 ROWS
WHERE plant EQ wa_my_fl_mst-plant
AND company_reg_number EQ wa_my_fl_mst-company_reg_num
AND dealer_name EQ wa_scc-dealer_code
AND class_id EQ lv_extwg.
ENDSELECT.

ELSEIF wa_my_fl_mst-company_reg_num IS NOT INITIAL


AND wa_my_fl_mst-corporate_grp IS NOT INITIAL.

SELECT * FROM /dcsea/my_fl_trg


INTO wa_fleet_target UP TO 1 ROWS
WHERE plant EQ wa_my_fl_mst-plant
AND company_reg_number EQ wa_my_fl_mst-company_reg_num
AND dealer_name EQ wa_scc-dealer_code
AND class_id EQ lv_extwg.
ENDSELECT.

IF wa_fleet_target IS NOT INITIAL.


wa_fleet_target-current_count = wa_fleet_target-
current_count + 1.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

*End of insert by shkasif for CM-0047509137on 26.03.2019


ENDIF.
**End of insertion by GASATHI for CM-0042934639 ON 18.07.2018
wa_scc-idoc_no = idoc_contrl-docnum.
wa_scc-idoc_date = idoc_contrl-upddat.
wa_scc-idoc_msg_type = idoc_contrl-mestyp.
* Begin of insert by UDAKUMA for CM-0059373041 on 08/12/2021.
IF tb_fieldval[] IS NOT INITIAL AND
wf_0059373041 IS NOT INITIAL.
LOOP AT tb_fieldval ASSIGNING FIELD-SYMBOL(<fs_fieldval1>).
wa_scc-sales_ind = <fs_fieldval1>-fieldval.
APPEND wa_scc TO tb_scc.
ENDLOOP.
CLEAR wa_scc.
ELSE.
* End of insert by UDAKUMA for CM-0059373041 on 08/12/2021.
APPEND wa_scc TO tb_scc.
CLEAR wa_scc.
ENDIF. "Line inserted by UDAKUMA for CM-0059373041 on 08/12/2021.
READ TABLE tb_scc1 INTO wa_scc WITH KEY plant = st_vlcvehiclem-
werks
vhcle = gv_vehicle
sales_ind = 'RC'
BINARY SEARCH.
IF sy-subrc = 0.
wa_scc-sales_card_date = idoc_contrl-upddat.
APPEND wa_scc TO tb_scc.
CLEAR: wa_scc.
ENDIF.

READ TABLE tb_scc1 INTO wa_scc WITH KEY plant = st_vlcvehiclem-


werks
vhcle = gv_vehicle
sales_ind = 'VM'
BINARY SEARCH.
IF sy-subrc = 0.
wa_scc-sales_card_date = idoc_contrl-upddat.
APPEND wa_scc TO tb_scc.
CLEAR: wa_scc.
ENDIF.

ENDIF.
ENDIF.
ENDIF.
ENDIF.
**End of insertion by DIROHAN for CM-0042697099 on 31.05.2018
* Begin of insert by MAAMARN for CM-0043084167(MBTH DIP Phase II) on 26.10.2018
CLEAR: gv_0043084167.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = '0043084167'
werks = st_vlcvehiclem-werks
IMPORTING
active_flag = gv_0043084167.
IF gv_0043084167 IS NOT INITIAL.
IF idoc_contrl-rcvprn = co_rcvprn_th.
IF idoc_contrl-mestyp = co_mestyp_zgen.
IF wf_aktion = co_zecu.
* PERFORM get_dip_data.
PERFORM get_dip_data_th.
READ TABLE tb_vlc_vehicle INDEX 1.
CLEAR: wa_exten.
READ TABLE tb_exten INTO wa_exten WITH KEY tabname = co_slty
fieldname = 'ZSALETYPE_CODE'.
IF sy-subrc IS INITIAL.
wa_scc-zsaletype_code = wa_exten-fieldval.
ENDIF.
CLEAR: wa_exten.
READ TABLE tb_exten INTO wa_exten WITH KEY tabname = co_slty
fieldname = 'ZVEHICLE_TYPE'.
IF sy-subrc IS INITIAL.
wa_scc-zvehicle_type = wa_exten-fieldval.
ENDIF.
CLEAR: wa_exten.
READ TABLE tb_exten INTO wa_exten WITH KEY tabname = co_fanm
fieldname = 'ZFAN_NO'.
IF sy-subrc IS INITIAL.
wa_scc-fleet_acct_num = wa_exten-fieldval.
ENDIF.
IF wa_scc-fleet_acct_num IS NOT INITIAL.
SELECT * UP TO 1 ROWS FROM /dcsea/th_v_fanm
INTO @DATA(ls_fanm)
WHERE zfan_no = @wa_scc-fleet_acct_num.
ENDSELECT.
IF sy-subrc = 0.
wa_scc-zfleet_class = ls_fanm-zfleet_class.
wa_scc-zfleet_class_cat = ls_fanm-zfleet_class_cat.
ENDIF.
ENDIF.
wa_scc-plant = tb_vlc_vehicle-werks.
wa_scc-vhcle = wa_vlcvehicle-vhcle.
wa_scc-zcommnos = tb_vlc_vehicle-zz_commnos.
wa_scc-dealer_code = tb_vlc_vehicle-kunnr.
wa_scc-sales_card_date = idoc_contrl-upddat.
wa_scc-product_type = '01'.
wa_scc-action = wf_aktion.
wa_scc-action_exe_date = idoc_contrl-upddat.
wa_scc-mmctr = wa_vlcvehicle-mmctr.
wa_scc-sdctr = wa_vlcvehicle-sdctr.
wa_scc-vendor = wa_vlcvehicle-lifnr.
wa_scc-demo_regis_date = tb_vlc_vehicle-zz_retadt.
wa_scc-invoice_account = tb_vlc_vehicle-zz_bbatx11.
wa_scc-registration_dt = tb_vlc_vehicle-immatdate.
wa_scc-endcustomer_name = tb_vlc_vehicle-cu_name1.
wa_scc-dms_user_name = tb_vlc_vehicle-zz_dms_user.
IF tb_vlc_vehicle-zz_retadt IS NOT INITIAL.
CLEAR: lv_date.
CALL FUNCTION 'VELO03_CONVERT_FROM_TIMESTAMP'
EXPORTING
timestamp_iv = tb_vlc_vehicle-zz_retadt
IMPORTING
datlo_ev = lv_date.
wa_scc-invoice_date = lv_date.
ENDIF.
wa_scc-idoc_no = idoc_contrl-docnum.
wa_scc-idoc_date = idoc_contrl-upddat.
wa_scc-idoc_msg_type = idoc_contrl-mestyp.
wa_scc-zclaim_gen_y_n = 'N'.
REPLACE ALL OCCURRENCES OF '-' IN tb_vlc_vehicle-zz_bbatx21 WITH
space.
CONDENSE tb_vlc_vehicle-zz_bbatx21.
wa_scc-company_reg_no = tb_vlc_vehicle-zz_rego_number.
REPLACE ALL OCCURRENCES OF '-' IN tb_vlc_vehicle-zz_bbatx12 WITH
space.
CONDENSE tb_vlc_vehicle-zz_bbatx12.
wa_scc-vat_reg_no = tb_vlc_vehicle-zz_bbatx12.
IF idoc_contrl-mestyp = co_mestyp_zgen.
wa_scc-transaction_type = 'GEN'.
ENDIF.
*& Fleet Vehicles Count Update
IF ls_fanm IS NOT INITIAL
AND ls_fanm-zfleet_class = 'VF'
AND ls_fanm-zfleet_class_cat = 'INFA'.
SELECT * FROM /dcsea/th_v_pnnf
INTO TABLE @DATA(lt_pnnf)
WHERE zplant = @wa_scc-plant.

CLEAR: wa_tnnf.
SELECT * UP TO 1 ROWS FROM /dcsea/th_v_tnnf
INTO wa_tnnf
WHERE zplant = wa_scc-plant
AND zdealer = wa_scc-dealer_code
AND zfan_no = wa_scc-fleet_acct_num.
ENDSELECT.
IF wa_tnnf IS NOT INITIAL.
wa_tnnf-zvehicle_sold = wa_tnnf-zvehicle_sold + 1.
READ TABLE lt_pnnf ASSIGNING FIELD-SYMBOL(<lfs_pnnf>) WITH KEY
zplant = wa_tnnf-zplant

zsign = 'BT'.
IF sy-subrc IS INITIAL AND <lfs_pnnf> IS ASSIGNED.
IF wa_tnnf-zvehicle_sold BETWEEN <lfs_pnnf>-veh_units_from
AND <lfs_pnnf>-veh_units_to.
wa_tnnf-zcustomer_margin = <lfs_pnnf>-zcustomer_margin.
wa_tnnf-zdealer_margin = <lfs_pnnf>-zdealer_margin.
ELSE.
READ TABLE lt_pnnf ASSIGNING <lfs_pnnf> WITH KEY zplant =
wa_tnnf-zplant
zsign =
'GE'.
IF sy-subrc IS INITIAL AND <lfs_pnnf> IS ASSIGNED.
IF wa_tnnf-zvehicle_sold GE <lfs_pnnf>-veh_units_from.
wa_tnnf-zcustomer_margin = <lfs_pnnf>-zcustomer_margin.
wa_tnnf-zdealer_margin = <lfs_pnnf>-zdealer_margin.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ELSE.
wa_tnnf-zplant = wa_scc-plant.
wa_tnnf-zdealer = wa_scc-dealer_code.
wa_tnnf-zfan_no = wa_scc-fleet_acct_num.
wa_tnnf-zvehicle_sold = 1.
wa_tnnf-zvehicle_cumm = wa_tnnf-zvehicle_sold + wa_tnnf-
zvehicle_cumm.
ENDIF.
ENDIF.
*& Update the Dealer Sale Vehicle Count for Bonus - TPM Scenario
SELECT * UP TO 1 ROWS FROM /dcsea/th_v_spb
INTO @DATA(ls_spb)
WHERE plant_code = @wa_scc-plant
AND matnr = @wa_vlcvehicle-matnr
ORDER BY PRIMARY KEY.
ENDSELECT.
IF sy-subrc IS INITIAL.
SELECT * UP TO 1 ROWS FROM /dcsea/th_v_dtrg
INTO wa_dtrg
WHERE plant_code = wa_scc-plant
AND dealer_code = wa_scc-dealer_code
AND target_month = sy-datlo+4(2)
AND target_year = sy-datlo+0(4)
AND spb = ls_spb-spb
ORDER BY PRIMARY KEY.
ENDSELECT.
IF sy-subrc IS INITIAL.
wa_dtrg-target_acheived = wa_dtrg-target_acheived + 1.
ENDIF.

SELECT * UP TO 1 ROWS FROM /dcsea/th_v_dtpg


INTO wa_dtpg
WHERE plant_code = wa_scc-plant
AND dealer_code = wa_scc-dealer_code
AND target_month = sy-datlo+4(2)
AND target_year = sy-datlo+0(4)
AND bonus_group = ls_spb-bonus_group
ORDER BY PRIMARY KEY.
ENDSELECT.
IF sy-subrc IS INITIAL.
wa_dtpg-target_acheived = wa_dtpg-target_acheived + 1.
ENDIF.

SELECT * UP TO 1 ROWS FROM /dcsea/th_v_trgs


INTO @DATA(ls_trgs)
WHERE plant_code = @wa_scc-plant
AND dealer_code = @wa_scc-dealer_code
ORDER BY PRIMARY KEY.
ENDSELECT.
IF sy-subrc = 0.
SELECT * UP TO 1 ROWS FROM /dcsea/th_v_dtms
INTO wa_dtms
WHERE plant_code = wa_scc-plant
AND dealer_code = wa_scc-dealer_code
AND ( date_from LE sy-datlo
AND date_to GE sy-datlo )
AND spb = ls_spb-spb
ORDER BY PRIMARY KEY.
ENDSELECT.
IF sy-subrc = 0.
wa_dtms-target_acheived = wa_dtms-target_acheived + 1.
ENDIF.
ENDIF.
ENDIF.
APPEND wa_scc TO tb_scc.
CLEAR wa_scc.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
* End of insert by MAAMARN for CM-0043084167(MBTH DIP Phase II) on 26.10.2018
ENDFORM. " INTERPRET_IDOC_VEHMAS

*&---------------------------------------------------------------------*
*& Form APPEND_DATA_ZVLCVEHICLEM
*&---------------------------------------------------------------------*
* Adds vehicle master data to the vehicle internal table
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM append_data_zvlcvehiclem.

*Begin of insertion by MALAKAS for CM-0045722136 on 01.02.2019


DATA: lv_ship TYPE /dcsea/id_m_stp-shiptoparty,
wf_flag_45722136 TYPE c.
CONSTANTS:co_45722136(10) TYPE c VALUE '0045722136',
co_msgid TYPE sy-msgid VALUE '/DCSEA/ZAIS_MSG1',
co_msgty(1) TYPE c VALUE 'E',
co_msgno(3) TYPE c VALUE '158'.
*End of insertion by MALAKAS for CM-0045722136 on 01.02.2019

*Begin of insert by KPREETA on 12/08/2019 for Malyasia


DATA: lv_werks_my TYPE t001w-werks,
wf_flag_49520014 TYPE c,
wa_vlcvehicle_my TYPE /dcsea/z1vlcvehicleb.

CONSTANTS:co_49520014(10) TYPE c VALUE '0049520014',


co_sndprt(2) TYPE c VALUE 'LS',
co_sndprn(10) TYPE c VALUE 'GSKEDMS_MY',
co_mestyp(4) TYPE c VALUE 'ZGEN'.

CLEAR : wf_flag_49520014,
wa_vlcvehicle_my.

READ TABLE idoc_data INTO DATA(wa_data_my) WITH KEY segnam =


'/DCSEA/Z1VLCVEHICLEB'.
IF sy-subrc = 0.
MOVE wa_data_my-sdata TO wa_vlcvehicle_my.
ENDIF.
SELECT werks INTO lv_werks_my UP TO 1 ROWS FROM vlcvehicle
WHERE zz_commnos EQ wa_vlcvehicle_my-/dcsea/zz_commnos ORDER BY PRIMARY KEY.
ENDSELECT.

CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'


EXPORTING
cm_number = co_49520014
werks = lv_werks_my
IMPORTING
active_flag = wf_flag_49520014.

IF wf_flag_49520014 IS NOT INITIAL.


IF idoc_contrl-sndprt = co_sndprt AND idoc_contrl-sndprn = co_sndprn AND
idoc_contrl-mestyp = co_mestyp.
IF st_vlcvehiclem-werks IS INITIAL AND st_vlcvehiclem-aktion = co_zecu.
IF lv_werks_my IS NOT INITIAL.
st_vlcvehiclem-werks = lv_werks_my.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
*End of insert by KPREETA on 12/08/2019 for Malyasia

MOVE-CORRESPONDING st_vlcvehiclem TO st_vlcvehicle.

* Move ST_VLCVEHICLEM-MSGFN to variable


MOVE st_vlcvehiclem-msgfn TO v_msgfn.
MOVE st_vlcvehiclem-aktion TO wf_aktion.
* Begin of insert by TALESRAH for CM-7860218 on 06/10/2008.
* For MB Mexico, the value of LOCTN is placed into a global variable.
IF st_vlcvehicle-werks = 'MX01'.
MOVE st_vlcvehiclem-loctn TO wf_loctn.
ENDIF.
* End of insert by TALESRAH for CM-7860218 on 06/10/2008.
*Begin of insertion by MALAKAS for CM-0045722136 on 01.02.2019
CLEAR:wf_flag_45722136.

CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'


EXPORTING
cm_number = co_45722136
werks = st_vlcvehicle-werks
IMPORTING
active_flag = wf_flag_45722136.

*Get the value which is mapped to customer in table /DCSEA/ID_M_STP


IF wf_flag_45722136 = abap_true AND st_vlcvehicle-kunnr IS NOT INITIAL.

SELECT shiptoparty
FROM /dcsea/id_m_stp
INTO lv_ship
WHERE werks = st_vlcvehicle-werks
AND customercode = st_vlcvehicle-kunnr
ORDER BY PRIMARY KEY.
ENDSELECT.
IF sy-subrc = 0.
MOVE lv_ship TO st_vlcvehicle-kunnr.
*Start of insertion by MALAKAS for CM-0045722136 on 02.14.2019
ELSE.
tb_errtab-msgid = co_msgid.
tb_errtab-msgty = co_msgty.
tb_errtab-msgnr = co_msgno.
tb_errtab-msgv1 = st_vlcvehicle-kunnr.
APPEND tb_errtab.
ENDIF.
*End of insertion by MALAKAS for CM-0045722136 on 02.14.2019
ENDIF.
*End of insertion by MALAKAS for CM-0045722136 on 1.02.2019

* BEGIN OF INSERT PASCUAR 09-JAN-03


* If PDDATU is blank, initialize ST_VLCVEHICLE-PDDATU to same initial
* value of wf_date (00000000). A blank value is not considered an
* initial value once in user exit VMS_NEW_ACTIONS executing
* /DCSEA/Z_AIS_GET_PSTSP
IF st_vlcvehiclem-pddatu EQ space.
st_vlcvehicle-pddatu = wf_date.
EXIT. " No need to do rest of coding
ENDIF.
* END OF INSERT PASCUAR 09-JAN-03

* Convert production date & time to timestamp format (CM-1546)


MOVE st_vlcvehiclem-pddatu TO wf_date.
MOVE st_vlcvehiclem-pdtime TO wf_time.
PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-pdtsp.

ENDFORM. " APPEND_DATA_ZVLCVEHICLEM

*&---------------------------------------------------------------------*
*& Form APPEND_DATA_ZVLCINOVICE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM append_data_zvlcinovice.

MOVE-CORRESPONDING st_vlcinvoice TO st_vlcvehicle.

* Move /DCSEA/ZZ_CREDIT_NOTE to variable


MOVE st_vlcinvoice-/dcsea/zz_credit_note TO v_credit_note.

ENDFORM. " APPEND_DATA_ZVLCINOVICE

*&---------------------------------------------------------------------*
*& Form APPEND_DATA_ZVLCVEHICLEA
*&---------------------------------------------------------------------*
* Adds additional vehicle data to the vehicle internal table
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM append_data_zvlcvehiclea.

****Begin of Insert***KACHAND****MBID****CM:0041379963****CKD Kit CHassis restrict


for ZVDU****
IF lv_mbid IS NOT INITIAL AND gv_ckd IS NOT INITIAL.
CLEAR :st_vlcvehiclea-vhvin.
ENDIF.
****End of Insert***KACHAND****MBID****CM:0041379963****CKD Kit CHassis restrict
for ZVDU****

MOVE-CORRESPONDING st_vlcvehiclea TO st_vlcvehicle.

* ortegav 1/10/2002
* Move Kerridge DMS User ID to ZZ_Uname to be later saved in VLCHistory
* for ZCHA action (Logical Interface Name ?TKERDMSL4?
MOVE st_vlcvehiclea-/dcsea/zz_dms_user TO st_vlcvehicle-zz_dms_user.
* Begin of insert by Anil on 01/09/2004 for bug fixing
MOVE st_vlcvehiclea-carrier TO st_vlcvehicle-zz_carrier.
* End of insert by Anil on 01/09/2004 for bug fixing

ENDFORM. " APPEND_DATA_ZVLCVEHICLEA

*&---------------------------------------------------------------------*
*& Form APPEND_DATA_ZVLCVEHICLEB
*&---------------------------------------------------------------------*
* Add global template vehicle data to vehicle internal table
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM append_data_zvlcvehicleb.

DATA: lv_space(6) TYPE c. " Anil on 30/08/2004

* gather all the possible statuses cm-1615 crc 06/10/2002


DATA: BEGIN OF tb_tmp_sele OCCURS 0,
sign TYPE sign,
option TYPE option,
low LIKE /dcsea/zais_stpj-status,
high LIKE /dcsea/zais_stpj-status,
END OF tb_tmp_sele,

tb_tmp_stat LIKE /dcsea/zais_stpj OCCURS 0 WITH HEADER LINE.

lv_space = ''. " Anil on 30/08/2004

MOVE st_vlcvehicleb-/dcsea/zz_commnos
TO st_vlcvehicle-zz_commnos.

* Inserted by rpc 06/05/02 - CM 1615


SELECT SINGLE * FROM /dcsea/zais_mpre
WHERE prefix EQ st_vlcvehicleb-/dcsea/zz_commnos+0(3)
.

IF sy-subrc EQ 0.
*===Added validation for Pajero commnos lmp 8/30/01
* commented-out by rpc 06/05/02
* IF ST_VLCVEHICLEB-/DCSEA/ZZ_COMMNOS+0(2) EQ CO_COMMNOS_BS.
* clear st_vlcvehicle-zz_commnos.

CONCATENATE st_vlcvehicleb-/dcsea/zz_commnos '%' INTO


st_vlcvehicleb-/dcsea/zz_commnos.

* select all the possible statuses cm-1615 crc 06/10/2002


SELECT * FROM /dcsea/zais_stpj
INTO TABLE tb_tmp_stat
WHERE process EQ '2'. " vehicle data upd & prod
IF sy-subrc EQ 0.
* transfer (selection style) cm-1615 crc 06/10/2002
LOOP AT tb_tmp_stat.
CLEAR tb_tmp_sele.
MOVE: 'I' TO tb_tmp_sele-sign,
'EQ' TO tb_tmp_sele-option,
tb_tmp_stat-status TO tb_tmp_sele-low.
APPEND tb_tmp_sele.
ENDLOOP.

"HANA Code Remediation:Select Single not unique


" select single zz_commnos from vlcvehicle
" into st_vlcvehicle-zz_commnos
"*Begin of comment by anandd for Performance Tuning on 15/07/2004
"* where zz_commnos like st_vlcvehicleb-/dcsea/zz_commnos
"*End of comment by anandd for Performance Tuning on 15/07/2004
"*Begin of insert by anandd for Performance Tuning on 15/07/2004
" where vhcex like st_vlcvehicleb-/dcsea/zz_commnos
"*End of insert by anandd for Performance Tuning on 15/07/2004
" and mmsta in tb_tmp_sele. " cm-1615 crc 06/10/2002
SELECT zz_commnos UP TO 1 ROWS FROM vlcvehicle
INTO st_vlcvehicle-zz_commnos
*Begin of comment by anandd for Performance Tuning on 15/07/2004
* where zz_commnos like st_vlcvehicleb-/dcsea/zz_commnos
*End of comment by anandd for Performance Tuning on 15/07/2004
*Begin of insert by anandd for Performance Tuning on 15/07/2004
WHERE vhcex LIKE st_vlcvehicleb-/dcsea/zz_commnos
*End of insert by anandd for Performance Tuning on 15/07/2004
AND mmsta IN tb_tmp_sele ORDER BY PRIMARY KEY. ENDSELECT. "
cm-1615 crc 06/10/2002
* AND ( MMSTA EQ CO_MMSTA_LF03 OR MMSTA EQ CO_MMSTA_LF10 ).

* replaced & commented due to cm-1615 implementation crc 06/10/2002


* and ( mmsta eq co_mmsta_lf02 or mmsta eq co_mmsta_lf04 ).

ENDIF.
ELSE.
MOVE st_vlcvehicleb-/dcsea/zz_commnos TO st_vlcvehicle-zz_commnos.

ENDIF.
*===

MOVE st_vlcvehicleb-/dcsea/zz_engine_number
TO st_vlcvehicle-zz_engine_number.

****Begin of Insert***KACHAND****MBID****CM:0041379963****CKD Kit CHassis restrict


for ZVDU****
IF lv_mbid IS NOT INITIAL AND gv_ckd IS NOT INITIAL.
CLEAR st_vlcvehicle-zz_engine_number.
ENDIF.
****End of Insert***KACHAND****MBID****CM:0041379963****CKD Kit CHassis restrict
for ZVDU****

MOVE st_vlcvehicleb-/dcsea/zz_transm_number
TO st_vlcvehicle-zz_transm_number.

MOVE st_vlcvehicleb-/dcsea/zz_tyre
TO st_vlcvehicle-zz_tyre.

MOVE st_vlcvehicleb-/dcsea/zz_lights_produc
TO st_vlcvehicle-zz_lights_produc.

MOVE st_vlcvehicleb-/dcsea/zz_lock_number
TO st_vlcvehicle-zz_lock_number.

MOVE st_vlcvehicleb-/dcsea/zz_windscr_wiper
TO st_vlcvehicle-zz_windscr_wiper.
MOVE st_vlcvehicleb-/dcsea/zz_radio_code
TO st_vlcvehicle-zz_radio_code.

MOVE st_vlcvehicleb-/dcsea/zz_fin_miss_stamp
TO st_vlcvehicle-zz_fin_miss_stam.

MOVE st_vlcvehicleb-/dcsea/zz_rear_axle
TO st_vlcvehicle-zz_rear_axle.
* Following zz_rear_axle_3 added by BONDEP CM-1731 15/11/2002
MOVE st_vlcvehicleb-/dcsea/zz_rear_axle_3
TO st_vlcvehicle-zz_rear_axle_3.

MOVE st_vlcvehicleb-/dcsea/zz_front_axle
TO st_vlcvehicle-zz_front_axle.

MOVE st_vlcvehicleb-/dcsea/zz_steer_whl_typ
TO st_vlcvehicle-zz_steer_whl_typ.

MOVE st_vlcvehicleb-/dcsea/zz_fuel_tank
TO st_vlcvehicle-zz_fuel_tank.

MOVE st_vlcvehicleb-/dcsea/zz_elect_lock_no
TO st_vlcvehicle-zz_elect_lock_no.

MOVE st_vlcvehicleb-/dcsea/zz_trans_case_4wd
TO st_vlcvehicle-zz_tran_case_4wd.

MOVE st_vlcvehicleb-/dcsea/zz_eng_ctrl_unit
TO st_vlcvehicle-zz_eng_ctrl_unit.

MOVE st_vlcvehicleb-/dcsea/zz_coc_number
TO st_vlcvehicle-zz_coc_number.

MOVE st_vlcvehicleb-/dcsea/zz_type_key
TO st_vlcvehicle-zz_type_key.

MOVE st_vlcvehicleb-/dcsea/zz_airbag_sensor
TO st_vlcvehicle-zz_airbag_sensor.

MOVE st_vlcvehicleb-/dcsea/zz_airbag_driver
TO st_vlcvehicle-zz_airbag_driver.

MOVE st_vlcvehicleb-/dcsea/zz_airbag_beifah
TO st_vlcvehicle-zz_airbag_beifah.

MOVE st_vlcvehicleb-/dcsea/zz_sidebag
TO st_vlcvehicle-zz_sidebag.

MOVE st_vlcvehicleb-/dcsea/zz_sidebag_doors
TO st_vlcvehicle-zz_sidebag_doors.

MOVE st_vlcvehicleb-/dcsea/zz_egs_serie
TO st_vlcvehicle-zz_egs_serie.

MOVE st_vlcvehicleb-/dcsea/zz_egs_kennung
TO st_vlcvehicle-zz_egs_kennung.

MOVE st_vlcvehicleb-/dcsea/zz_egs_codierung
TO st_vlcvehicle-zz_egs_codierung.

MOVE st_vlcvehicleb-/dcsea/zz_vtweg
TO st_vlcvehicle-zz_vtweg.

MOVE st_vlcvehicleb-/dcsea/zz_vessel_name
TO st_vlcvehicle-zz_vessel_name.

MOVE st_vlcvehicleb-/dcsea/zz_voyage_number
TO st_vlcvehicle-zz_voyage_number.

MOVE st_vlcvehicleb-/dcsea/zz_bill_of_lad
TO st_vlcvehicle-zz_bill_of_lad.

MOVE st_vlcvehicleb-/dcsea/zz_etd
TO st_vlcvehicle-zz_etd.

MOVE st_vlcvehicleb-/dcsea/zz_eta
TO st_vlcvehicle-zz_eta.

* MOVE ST_VLCVEHICLEB-/DCSEA/ZZ_PRD_FLAG
* TO ST_VLCVEHICLE-ZZ_PRD_FLAG.

MOVE st_vlcvehicleb-/dcsea/zz_req_prod_dec
TO st_vlcvehicle-zz_req_prod_dec.

MOVE st_vlcvehicleb-/dcsea/zz_bill_of_lad
TO st_vlcvehicle-zz_bill_of_lad.

MOVE st_vlcvehicleb-/dcsea/zz_port_of_dest
TO st_vlcvehicle-zz_port_of_dest.

MOVE st_vlcvehicleb-/dcsea/zz_chrysler_year
TO st_vlcvehicle-zz_chrysler_year.

* MOVE ST_VLCVEHICLEB-/DCSEA/ZZ_CHASSIS
* TO ST_VLCVEHICLE-ZZ_CHASSIS.

MOVE st_vlcvehicleb-/dcsea/zz_fin_prod_dec
TO st_vlcvehicle-zz_fin_prod_dec.

MOVE st_vlcvehicleb-/dcsea/zz_prod_number
TO st_vlcvehicle-zz_prod_number.

MOVE st_vlcvehicleb-/dcsea/zz_low_arm
TO st_vlcvehicle-zz_low_arm.

MOVE st_vlcvehicleb-/dcsea/zz_upp_arm
TO st_vlcvehicle-zz_upp_arm.

MOVE st_vlcvehicleb-/dcsea/zz_amplifier_num
TO st_vlcvehicle-zz_amplifier_no.

* Convert from final inspect timestamp to date format


MOVE st_vlcvehicleb-/dcsea/zz_final_inspect TO wf_date.
MOVE st_vlcvehicleb-/dcsea/zz_final_inspect_time TO wf_time.

PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_final_inspect.

* Convert from factory promised date to date format


MOVE st_vlcvehicleb-/dcsea/zz_fpromdt_date TO wf_date.
MOVE st_vlcvehicleb-/dcsea/zz_fpromdt_time TO wf_time.

PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_fpromdt.

MOVE st_vlcvehicleb-/dcsea/zz_rego_number
TO st_vlcvehicle-zz_rego_number.

* Station Code
MOVE st_vlcvehicleb-/dcsea/zz_station_code
TO st_vlcvehicle-zz_chry_stncode.

* Start of insertion by ghain for CM-1825 on 12-Mar-2003


* Shipping Line
MOVE st_vlcvehicleb-/dcsea/zz_ship_line
TO st_vlcvehicle-zz_ship_line.

* Mode of Transport
MOVE st_vlcvehicleb-/dcsea/zz_mode_transp
TO st_vlcvehicle-zz_mode_transp.

* End of insertion by ghain for CM-1825 on 12-Mar-2003


*--Start of insertion By agarwaln(Mrunalini) for CM-1869 on 07-04-2003--
* Local requirement for DC Japan
* To trigger VMS actions based on the interface from the VPC
* Idoc ZVEHMAS02

* Government Vehicle Register Number


* Begin of changes by PULLABHS for CM-5410565v2.1 on 5/4/2007
IF ( ( idoc_contrl-rcvprn+0(10) NE co_jpvpcinl1
* Begin of Insertion by YAOD for CM-6854552 on 27.03.2008
*Another check for the new partner system and message type
*corresponding to 'JPVPCINL1' is required.
*This check is needed as a result of migration to XI.
OR ( idoc_contrl-rcvprn+0(8) NE 'LSVPC_JP' "LSVPC_JP
OR idoc_contrl-mestyp NE co_mestyp_zvpc ) ) "ZVPC
* END of Insertion by YAOD for CM-6854552 on 27.03.2008
AND ( wf_aktion NE co_zvpu ) ).
MOVE st_vlcvehicleb-/dcsea/zz_register_num
TO st_vlcvehicle-zz_register_num.
ENDIF.
* End of changes by PULLABHS for CM-5410565v2.1 on 5/4/2007

* Government Vehicle Registration Certificate Number


MOVE st_vlcvehicleb-/dcsea/zz_cert_num
TO st_vlcvehicle-zz_cert_num.
*--End of insertion By agarwaln(Mrunalini) for CM-1869 on 07-04-2003--
* Begin fo comment for QA transport by srivatss on 28/11/2003
**Begin of insert by ALAPATK for CM-2222 v1.1 on 17/11/2003
**Estimated Departure Date (ETD)
* IF NOT st_vlcvehicleb-/dcsea/zz_etd IS INITIAL.
* MOVE st_vlcvehicleb-/dcsea/zz_etd
* TO st_vlcvehicle-zz_etd.
* ENDIF.
**Estimated Estimated Arrival Date (ETA)
* IF NOT st_vlcvehicleb-/dcsea/zz_eta IS INITIAL.
* MOVE st_vlcvehicleb-/dcsea/zz_eta
* TO st_vlcvehicle-zz_eta.
* ENDIF.
**End of insert by ALAPATK for CM-2222 v1.1 on 17/11/2003
* End fo comment for QA transport by srivatss on 28/11/2003

*Begin of Insert by ramakumm for cm-2297 on 18-May-2004

MOVE st_vlcvehicleb-/dcsea/zz_cust_decl_no
TO st_vlcvehicle-zz_cust_decl_no.

CLEAR: wf_date, wf_time.

MOVE st_vlcvehicleb-/dcsea/zz_cust_decl_date TO wf_date.

MOVE st_vlcvehicleb-/dcsea/zz_cust_decl_time TO wf_time.

PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_cust_decl_dt.

*End of Insert by ramakumm for cm-2297 on 18-May-2004

* Begin of Modification MARAMS CM-1869 v1.5 29/05/03


IF wf_aktion = co_zidi.
* Get Domestic ETD from ETD
* Begin of insert by Anil on 05/08/2004 for bug fixing
CLEAR wf_date.
CLEAR wf_time.
wf_time = lv_space. "Anil on 30/08/2004
MOVE st_vlcvehicleb-/dcsea/zz_etd TO wf_date.
PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_dometd.
* End of insert by Anil on 05/08/2004 for bug fixing
* Next 2 lines commented by Anil on 05/08/2004
* move st_vlcvehicleb-/dcsea/zz_etd
* to st_vlcvehicle-zz_dometd.
* Get Domestic Vessel Name from Vessel Name
MOVE st_vlcvehicleb-/dcsea/zz_vessel_name
TO st_vlcvehicle-zz_domvssl.
ENDIF.
* End of Modification MARAMS CM-1869 v1.5 29/05/03
* Begin of changes by PPRAGYA for MBIL CM:0051514725
if ( idoc_contrl-sndprn eq /dcsea/in_cl_global=>co_logsys_lssap_in
and idoc_contrl-mestyp EQ /dcsea/in_cl_global=>gc_zinv ) .
select werks matnr
up to 1 rows
into ( gv_werks_in , gv_matnr_in )
from vlcvehicle
where vhcex eq st_vlcvehicleb-/dcsea/zz_commnos.
endselect.
IF sy-subrc EQ 0.
if /dcsea/in_cl_global=>check_cm_active( im_cm_no =
/dcsea/in_cl_global=>gc_cm_0051514725
im_werks = gv_werks_in )
is not initial.

* if sy-subrc eq 0.
call method /dcsea/in_cl_global=>check_build_type
exporting
i_matnr = gv_matnr_in
importing
e_is_cbu = /dcsea/in_cl_global=>gc_cbu_flag
e_is_ckd = /dcsea/in_cl_global=>gc_ckd_flag
exceptions
no_classification = 1
invalid_class_type = 2
others = 3.
if /dcsea/in_cl_global=>gc_ckd_flag is not initial.
data(gv_ckd_in) = /dcsea/in_cl_global=>gc_ckd_flag.
FREE MEMORY ID 'GV_CKD_IN'.
export gv_ckd_in to memory id 'GV_CKD_IN'.
endif.
endif.
endif.
endif.
* Begin of changes by PPRAGYA for MBIL CM:0051514725
ENDFORM. " APPEND_DATA_ZVLCVEHICLEB

*&---------------------------------------------------------------------*
*& Form APPEND_DATA_ZVLCVEHICLEG
*&---------------------------------------------------------------------*
* Add global template vehicle data to vehicle internal table
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
* RJV - 2000/11/07 - Replaced by Z1VLCVEHICLEB
* FORM APPEND_DATA_ZVLCVEHICLEG.

* MOVE-CORRESPONDING ST_VLCVEHICLEG TO ST_VLCVEHICLE.


* APPEND ST_VLCVEHICLE TO TB_VLC_VEHICLE.

* ENDFORM. " APPEND_DATA_ZVLCVEHICLEG

*&---------------------------------------------------------------------*
*& Form APPEND_DATA_E1CUCFG
*&---------------------------------------------------------------------*
* Adds the configuration data to the config internal table
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM append_data_e1cucfg.

DATA: xnum_posex LIKE vbap-posex.

CLEAR xnum_posex.
MOVE-CORRESPONDING st_e1cucfg TO tb_vhcl_config.
MOVE tb_vhcl_config-posex TO xnum_posex.
MOVE xnum_posex TO tb_vhcl_config-posex.
APPEND tb_vhcl_config.

ENDFORM. " APPEND_DATA_E1CUCFG

*&---------------------------------------------------------------------*
*& Form APPEND_DATA_E1CUINS
*&---------------------------------------------------------------------*
* Adds the instance data to the instance internal table
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM append_data_e1cuins.

MOVE-CORRESPONDING st_e1cuins TO tb_vhcl_cuins.


MOVE tb_vhcl_config-config_id TO tb_vhcl_cuins-config_id.
APPEND tb_vhcl_cuins.

ENDFORM. " APPEND_DATA_E1CUINS

*&---------------------------------------------------------------------*
*& Form APPEND_DATA_E1CUPRT
*&---------------------------------------------------------------------*
* Adds the part of instance data to the internal table
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM append_data_e1cuprt.

MOVE-CORRESPONDING st_e1cuprt TO tb_vhcl_cuprt.


MOVE tb_vhcl_config-config_id TO tb_vhcl_cuprt-config_id.
APPEND tb_vhcl_cuprt.

ENDFORM. " APPEND_DATA_E1CUPRT

*&---------------------------------------------------------------------*
*& Form APPEND_DATA_E1CUVAL
*&---------------------------------------------------------------------*
* Adds characteristics valuation data to the internal table
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM append_data_e1cuval.

MOVE-CORRESPONDING st_e1cuval TO tb_vhcl_cuval.


MOVE tb_vhcl_config-config_id TO tb_vhcl_cuval-config_id.
APPEND tb_vhcl_cuval.

ENDFORM. " APPEND_DATA_E1CUVAL


*&---------------------------------------------------------------------*
*& Form APPEND_DATA_E1CUBLB
*&---------------------------------------------------------------------*
* Adds configuration blob (SCE) to the internal table
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM append_data_e1cublb.

MOVE-CORRESPONDING st_e1cublb TO tb_vhcl_cublb.


MOVE tb_vhcl_config-config_id TO tb_vhcl_cublb-config_id.
APPEND tb_vhcl_cublb.

ENDFORM. " APPEND_DATA_E1CUBLB

*&---------------------------------------------------------------------*
*& Form WRITE_ERROR
*&---------------------------------------------------------------------*
* Write error messages in the internal table ERRTAB
*----------------------------------------------------------------------*
* -->pf_msgty Message Type
* -->pf_msgno Message Number
* -->pf_msgid Message ID
*----------------------------------------------------------------------*
FORM write_error USING pf_msgno
pf_msgid.

CLEAR tb_errtab.

* Get message text data


SELECT SINGLE * FROM t100
WHERE sprsl = sy-langu
AND arbgb = pf_msgid
AND msgnr = pf_msgno.

IF sy-subrc EQ 0.
* Move message data to errtab fields
tb_errtab-msgty = co_msgtyp_e.
tb_errtab-msgid = t100-arbgb.
tb_errtab-msgnr = t100-msgnr.
* There's no need to fill in the TEXT field of TB_ERRTAB
* MESSAGE ID T100-ARBGB TYPE CO_MSGTYP_E NUMBER T100-MSGNR
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 INTO TB_ERRTAB-TEXT.
* MOVE T100-TEXT TO TB_ERRTAB-TEXT.
* CONDENSE TB_ERRTAB-TEXT.
tb_errtab-msgv1 = sy-msgv1.
tb_errtab-msgv2 = sy-msgv2.
tb_errtab-msgv3 = sy-msgv3.
tb_errtab-msgv4 = sy-msgv4.
APPEND tb_errtab.
ENDIF. "sy-subrc eq 0
ENDFORM. " WRITE_ERROR

*&---------------------------------------------------------------------*
*& Form FILL_ORD2_DATA
*&---------------------------------------------------------------------*
* Fill VLCH_ORD2 structure
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM fill_ord1_data.
* begin of delete for VMS Upgrade. VMSUPGD
** Following line is commented by Anbu 20.11.2002
** data v_eindt type vlcord1-eindt.
*
** Following line is added by Anbu 20.11.2002
* data v_eindt type ZVLCH_vlcord1-eindt.
*
* clear vlch_ord1_ls.
* move co_ord1 to vlch_ord1_ls-aktion.
* move tb_vlc_vehicle-vhcle to vlch_ord1_ls-vhcle.
* move 'NB' to vlch_ord1_ls-bsart.
** SELECT SINGLE * FROM T001W WHERE WERKS EQ TB_VLC_VEHICLE-WERKS.
** IF SY-SUBRC EQ 0.
** MOVE T001W-EKORG TO VLCH_ORD1_LS-EKORG.
** ENDIF.
** { Assign CB01 to EKORD, For testing purpose only }
** MOVE 'CB01' TO VLCH_ORD1_LS-EKORG.
** Get Purchasing Organization - SantosG 02/15/2001
* select single infnr into (eina-infnr) from eina
* where matnr eq tb_vlc_vehicle-matnr and
* lifnr eq tb_vlc_vehicle-lifnr.
* if sy-subrc eq 0.
* select single ekorg into (eine-ekorg) from eine
* where infnr eq eina-infnr and
* werks eq tb_vlc_vehicle-werks and
* esokz eq co_zero.
* if sy-subrc eq 0.
* move eine-ekorg to vlch_ord1_ls-ekorg.
* endif.
* endif.
*
** Get Purchasing Group - SantosG 02/15/2001
* select single * from marc
* where ( matnr eq tb_vlc_vehicle-matnr ) and
* ( werks eq tb_vlc_vehicle-werks ).
* if sy-subrc eq 0.
* move marc-ekgrp to vlch_ord1_ls-ekgrp.
* endif.
** { Value is assigned for testing purpose only }
** For testing since there are no values for EKGRP in MARC
** IF ( VLCH_ORD1_LS-EKGRP EQ ' ' ).
** MOVE '005' TO VLCH_ORD1_LS-EKGRP.
** ENDIF.
*
* call function 'VELO03_CONVERT_FROM_TIMESTAMP'
* exporting
* timestamp_iv = tb_vlc_vehicle-pstsp
* tzone_iv = sy-zonlo
* importing
* datlo_ev = v_eindt
** TIMLO_EV =
* .
* if sy-subrc eq 0.
* move v_eindt to vlch_ord1_ls-eindt.
* endif.
** { Value is assigned for testing purpose only }
** For testing since PSTSP has no value
** IF VLCH_ORD1_LS-EINDT IS INITIAL.
** MOVE '20001127' TO VLCH_ORD1_LS-EINDT.
** ENDIF.
*
** Move value LIFNR - required by function ME_CREATE_PO_ITEM
* move tb_vlc_vehicle-lifnr to vlch_ord1_ls-lifnr.
* move vlch_ord1_ls to vlch_actdata_ls-vlch_ord1.
*
* append vlch_actdata_ls to tb_vlch_actdata_lt.
* end of delete. VMSUPGD

** begin of INSERT for VMS Upgrade."VMSUPGD


* Following line is commented by Anbu 20.11.2002
* data v_eindt type vlcord1-eindt.

* Following line is added by Anbu 20.11.2002


DATA v_eindt TYPE zvlch_vlcord1-eindt.

* clear vlch_ord1_ls.
* move co_ord1 to vlch_ord1_ls-aktion.
MOVE tb_vlc_vehicle-vhcle TO vlcactdata_item_lt-vhcle.
MOVE 'NB' TO vlcactdata_cs-bsart.
* SELECT SINGLE * FROM T001W WHERE WERKS EQ TB_VLC_VEHICLE-WERKS.
* IF SY-SUBRC EQ 0.
* MOVE T001W-EKORG TO VLCH_ORD1_LS-EKORG.
* ENDIF.
* { Assign CB01 to EKORD, For testing purpose only }
* MOVE 'CB01' TO VLCH_ORD1_LS-EKORG.
* Get Purchasing Organization - SantosG 02/15/2001
"HANA Code Remediation:Select Single not unique
" select single infnr into (eina-infnr) from eina
" where matnr eq tb_vlc_vehicle-matnr and
" lifnr eq tb_vlc_vehicle-lifnr.
SELECT infnr INTO (eina-infnr) UP TO 1 ROWS FROM eina
WHERE matnr EQ tb_vlc_vehicle-matnr AND
lifnr EQ tb_vlc_vehicle-lifnr ORDER BY PRIMARY KEY. ENDSELECT.
IF sy-subrc EQ 0.
"HANA Code Remediation:Select Single not unique
" select single ekorg into (eine-ekorg) from eine
" where infnr eq eina-infnr and
" werks eq tb_vlc_vehicle-werks and
" esokz eq co_zero.
SELECT ekorg INTO (eine-ekorg) UP TO 1 ROWS FROM eine
WHERE infnr EQ eina-infnr AND
werks EQ tb_vlc_vehicle-werks AND
esokz EQ co_zero ORDER BY PRIMARY KEY. ENDSELECT.
IF sy-subrc EQ 0.
MOVE eine-ekorg TO vlcactdata_cs-ekorg.
ENDIF.
ENDIF.

* Get Purchasing Group - SantosG 02/15/2001


SELECT SINGLE * FROM marc
WHERE ( matnr EQ tb_vlc_vehicle-matnr ) AND
( werks EQ tb_vlc_vehicle-werks ).
IF sy-subrc EQ 0.
MOVE marc-ekgrp TO vlcactdata_cs-ekgrp.
ENDIF.
* { Value is assigned for testing purpose only }
* For testing since there are no values for EKGRP in MARC
* IF ( VLCH_ORD1_LS-EKGRP EQ ' ' ).
* MOVE '005' TO VLCH_ORD1_LS-EKGRP.
* ENDIF.
CALL FUNCTION 'VELO03_CONVERT_FROM_TIMESTAMP'
EXPORTING
timestamp_iv = tb_vlc_vehicle-pstsp
tzone_iv = sy-zonlo
IMPORTING
datlo_ev = v_eindt
* TIMLO_EV =
.
IF sy-subrc EQ 0.
MOVE v_eindt TO vlcactdata_cs-eindt.
ENDIF.
* { Value is assigned for testing purpose only }
* For testing since PSTSP has no value
* IF VLCH_ORD1_LS-EINDT IS INITIAL.
* MOVE '20001127' TO VLCH_ORD1_LS-EINDT.
* ENDIF.

* Move value LIFNR - required by function ME_CREATE_PO_ITEM


MOVE tb_vlc_vehicle-lifnr TO vlcactdata_cs-lifnr.
* move vlch_ord1_ls to vlch_actdata_ls-vlch_ord1.

* append vlch_actdata_ls to tb_vlch_actdata_lt.

* end of insert. VMSUPGD


ENDFORM. " FILL_ORD2_DATA

*&---------------------------------------------------------------------*
*& Form FILL_INIV_DATA
*&---------------------------------------------------------------------*
* Fill VLCH_INIV structure
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM fill_iniv_data.

****Begin of Insertion By JALAMAR CM- 0040882212 on 20/12/2017

DATA:lv_40882212_flag LIKE /dcsea/zais_cm_a-z_active_flag.


DATA:ls_para_am TYPE /dcsea/zais_para,
ls_vehicle TYPE vlcvehicle.
CONSTANTS: co_40882212(10) TYPE c VALUE '0040882212',
co_zmo_amount(13) TYPE c VALUE 'ZMXO_AMOUNT_A'.

DATA:lv_plant LIKE t001w-werks.


****End of Insertion By JALAMAR CM- 0040882212 on 20/12/2017

READ TABLE tb_vlc_vehicle


WITH KEY zz_commnos = st_vlcvehicleb-/dcsea/zz_commnos.
* Fill VLCINIV structure
* begin of delete for VMSUPGD
* clear vlch_iniv_ls.
* vlch_iniv_ls-aktion = co_iniv.
* vlch_iniv_ls-doc_date = st_vlcinvoice-budat.
* vlch_iniv_ls-pstng_date = sy-datum.
* vlch_iniv_ls-gross_amount = st_vlcinvoice-rmwwr.
* vlch_iniv_ls-currency = st_vlcinvoice-waers.
* vlch_iniv_ls-ref_doc_no = st_vlcinvoice-xblnr.
* end of delete for VMSUPGD

* begin of insert for VMSUPGD.


* vlcactdata_cs-doc_date = st_vlcinvoice-budat.
* vlcactdata_cs-pstng_date = sy-datum.
* // Issue 23 - Integration test. VMSUPGD
* vlcactdata_cs-budat = st_vlcinvoice-budat.
* vlcactdata_cs-bldat = sy-datum.
* Begin of insertion by BATRAH for CM 12785517 on 20.12.2010
CLEAR : wf_active_flag.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = '12785517'
werks = tb_vlc_vehicle-werks
IMPORTING
active_flag = wf_active_flag.
IF NOT wf_active_flag IS INITIAL.
vlcactdata_cs-budat = sy-datlo.
ELSE.
* End of insertion by BATRAH for CM 12785517 on 20.12.2010
vlcactdata_cs-budat = sy-datum.
* Following line added by BATRAH for CM 12785517 on 20.12.2010
ENDIF.
vlcactdata_cs-bldat = st_vlcinvoice-budat.
* // Issue 23 - Integration test. VMSUPGD
vlcactdata_cs-gross_amount = st_vlcinvoice-rmwwr.
vlcactdata_cs-currency = st_vlcinvoice-waers.
vlcactdata_cs-ref_doc_no = st_vlcinvoice-xblnr.
* end of insert for VMSUPGD.
* Get company code from T001W/T001K
SELECT SINGLE * INTO t001w
FROM t001w
WHERE ( werks EQ tb_vlc_vehicle-werks ).
IF sy-subrc EQ 0.
SELECT SINGLE * INTO t001k
FROM t001k
WHERE ( bwkey EQ t001w-bwkey ).
IF sy-subrc EQ 0.
* vlch_iniv_ls-comp_code = t001k-bukrs."VMSUPGD
vlcactdata_cs-comp_code = t001k-bukrs."VMSUPGD
ENDIF.
ENDIF.
* { Assign I0 to tax code, For testing purpose only }

* ortegav 07/14/2001, comment out


* VLCH_INIV_LS-TAX_CODE = 'II'.

* Begin of changes by ZHUW for CM-12108209 V10.0 on 25.2.2011


* select single tax_code from /dcsea/zmpu_tcod
** into vlch_iniv_ls-tax_code "VMSUPGD
* into vlcactdata_cs-tax_code "VMSUPGD
** where bukrs eq vlch_iniv_ls-comp_code."VMSUPGD
* where bukrs eq vlcactdata_cs-comp_code."VMSUPGD
SELECT SINGLE tax_code FROM /dcsea/zmpu_vcod
INTO vlcactdata_cs-tax_code
WHERE bukrs EQ vlcactdata_cs-comp_code
AND partner_number EQ idoc_contrl-rcvprn.
* End of changes by ZHUW for CM-12108209 V10.0 on 25.2.2011
* { Assign value to tax amount, For testing purpose only }
* VLCH_INIV_LS-TAX_AMOUNT = 125.
* { Assign '0001' to payment terms, For testing purpose only }
* select single zterm into vlch_iniv_ls-pmnttrms "VMSUPGD
SELECT SINGLE zterm INTO vlcactdata_cs-pmnttrms "VMSUPGD
* from ekko where ebeln = vlcporder-ebeln. "VMSUPGD
FROM ekko WHERE ebeln = tb_order-ebeln. "VMSUPGD
* SELECT SINGLE ZTERM INTO VLCH_INIV_LS-PMNTTRMS
* FROM LFB1 WHERE LIFNR = TB_VLC_VEHICLE-LIFNR
* AND BUKRS = VLCH_INIV_LS-COMP_CODE.

************************************************************************
* Fill VLCINIV-INIV_ITEM table - BEGIN
************************************************************************
* begin of delete for VMSUPGD
* clear vlciniv_item_s_temp.
*
* vlciniv_item_s_temp-vguid = tb_vlc_vehicle-vguid.
* vlciniv_item_s_temp-vhcle = tb_vlc_vehicle-vhcle.
** VLCINIV_ITEM_S_TEMP-REF_DOC = ST_VLCINVOICE-XBLNR.
** VLCINIV_ITEM_S_TEMP-ITEM_AMOUNT = ST_VLCINVOICE-RMWWR.
*
** Base Amount and Currency
* vlciniv_item_s_temp-zenp_amount = st_vlcinvoice-zenp_amount.
* vlciniv_item_s_temp-zenp_currency = st_vlcinvoice-zenp_currency.
*
** Local Standard Amount and Currency
* vlciniv_item_s_temp-zmxs_amount = st_vlcinvoice-zmxs_amount.
* vlciniv_item_s_temp-zmxs_currency = st_vlcinvoice-zmxs_currency.
*
** Customer Option Amount and Currency
* vlciniv_item_s_temp-zmxo_amount = st_vlcinvoice-zmxo_amount.
* vlciniv_item_s_temp-zmxo_currency = st_vlcinvoice-zmxo_currency.
*
** Inward Freight Amount and Currency
* vlciniv_item_s_temp-zvfi_amount = st_vlcinvoice-zvfi_amount.
* vlciniv_item_s_temp-zvfi_currency = st_vlcinvoice-zvfi_currency.
*
** Insurance Amount and Currency
* vlciniv_item_s_temp-zvin_amount = st_vlcinvoice-zvin_amount.
* vlciniv_item_s_temp-zvin_currency = st_vlcinvoice-zvin_currency.
*
* vlciniv_item_s_temp-po_number = vlcporder-ebeln.
* vlciniv_item_s_temp-po_item = vlcporder-ebelp.
*
* append vlciniv_item_s_temp.
*
** Loop at TB_VHCL_LOPT table
** LOOP AT TB_VHCL_LOPT.
*
** CLEAR VLCINIV_ITEM_S_TEMP.
*
** VLCINIV_ITEM_S_TEMP-VGUID = TB_VLC_VEHICLE-VGUID.
** VLCINIV_ITEM_S_TEMP-VHCLE = TB_VLC_VEHICLE-VHCLE.
** VLCINIV_ITEM_S_TEMP-REF_DOC = ST_VLCINVOICE-XBLNR.
** VLCINIV_ITEM_S_TEMP-ITEM_AMOUNT = ST_VLCINVOICE-RMWWR.
*
** VLCINIV_ITEM_S_TEMP-PO_NUMBER = VLCPORDER-EBELN.
** VLCINIV_ITEM_S_TEMP-PO_ITEM = VLCPORDER-EBELP.
*
** Data from local options segment
** VLCINIV_ITEM_S_TEMP-ZSTUNR = TB_VHCL_LOPT-STUNR.
** VLCINIV_ITEM_S_TEMP-ZZAEHK = TB_VHCL_LOPT-ZAEHK.
** VLCINIV_ITEM_S_TEMP-ZCOND_AMOUNT = TB_VHCL_LOPT-COND_AMOUNT.
** VLCINIV_ITEM_S_TEMP-ZCOND_CURR = TB_VHCL_LOPT-COND_CURR.
*
** APPEND VLCINIV_ITEM_S_TEMP.
*
** ENDLOOP.
*
************************************************************************
*
** Fill VLCINIV-INIV_ITEM table - END
************************************************************************
*
*
** Following line is commented by Anbu 20.11.2002
** move vlciniv_item_s_temp[] to vlch_iniv_ls-iniv_item[].
*
** Following line is added by Anbu 20.11.2002
* move vlciniv_item_s_temp[] to vlch_iniv_ls-ZVLCH_iniv_item[].
* end of delete. VMSUPGD

* begin of insert for VMS Upgrade. "VMSUPGD


vlcactdata_item_lt-vguid = tb_vlc_vehicle-vguid.
vlcactdata_item_lt-vhcle = tb_vlc_vehicle-vhcle.

* Base Amount and Currency


vlcactdata_item_lt-zenp_amount = st_vlcinvoice-zenp_amount.
vlcactdata_item_lt-zenp_currency = st_vlcinvoice-zenp_currency.
vlcactdata_cs-zenp_amount = st_vlcinvoice-zenp_amount.
vlcactdata_cs-zenp_currency = st_vlcinvoice-zenp_currency.

* Local Standard Amount and Currency


IF NOT st_vlcinvoice-zmxs_amount IS INITIAL."JIJILALM CM-1821 13/05/03
vlcactdata_item_lt-zmxs_amount = st_vlcinvoice-zmxs_amount.
vlcactdata_item_lt-zmxs_currency = st_vlcinvoice-zmxs_currency.
vlcactdata_cs-zmxs_amount = st_vlcinvoice-zmxs_amount.
vlcactdata_cs-zmxs_currency = st_vlcinvoice-zmxs_currency.
*JIJILALM CM-1821 13/05/03
vlcactdata_cs-zmxs_amount_ch = st_vlcinvoice-zmxs_amount.
ENDIF.
* Customer Option Amount and Currency
IF NOT st_vlcinvoice-zmxo_amount IS INITIAL."JIJILALM CM-1821 13/05/03
vlcactdata_item_lt-zmxo_amount = st_vlcinvoice-zmxo_amount.
vlcactdata_item_lt-zmxo_currency = st_vlcinvoice-zmxo_currency.
vlcactdata_cs-zmxo_amount = st_vlcinvoice-zmxo_amount.
vlcactdata_cs-zmxo_currency = st_vlcinvoice-zmxo_currency.
*JIJILALM CM-1821 13/05/03
vlcactdata_cs-zmxo_amount_ch = st_vlcinvoice-zmxo_amount.

****Begin of Insertion By JALAMAR CM- 0040882212 on 20/12/2017


ELSE.

CLEAR: ls_para_am, ls_vehicle, lv_40882212_flag.

IF vlcvehicle-werks IS NOT INITIAL.


CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_40882212
werks = vlcvehicle-werks
IMPORTING
active_flag = lv_40882212_flag.

IF lv_40882212_flag IS NOT INITIAL.

"HANA Code Remediation:Select Single not unique


" SELECT SINGLE * FROM /dcsea/zais_para
" INTO ls_para_am
" Where domval1 = vlcvehicle-werks
" and domval2 = co_zmo_amount.
SELECT * UP TO 1 ROWS FROM /dcsea/zais_para
INTO ls_para_am
WHERE domval1 = vlcvehicle-werks
AND domval2 = co_zmo_amount ORDER BY PRIMARY KEY.
ENDSELECT.
IF sy-subrc EQ 0.
vlcactdata_item_lt-zmxo_amount = ls_para_am-fieldval.
vlcactdata_item_lt-zmxo_currency = st_vlcinvoice-zmxo_currency.
vlcactdata_cs-zmxo_amount = ls_para_am-fieldval.
vlcactdata_cs-zmxo_currency = st_vlcinvoice-zmxo_currency.
vlcactdata_cs-zmxo_amount_ch = ls_para_am-fieldval.
ENDIF.
ENDIF.
ENDIF.
****End of Insertion By JALAMAR CM- 0040882212 on 20/12/2017
ENDIF.
* Inward Freight Amount and Currency
IF NOT st_vlcinvoice-zvfi_amount IS INITIAL."JIJILALM CM-1821 13/05/03
vlcactdata_item_lt-zvfi_amount = st_vlcinvoice-zvfi_amount.
vlcactdata_item_lt-zvfi_currency = st_vlcinvoice-zvfi_currency.
vlcactdata_cs-zvfi_amount = st_vlcinvoice-zvfi_amount.
vlcactdata_cs-zvfi_currency = st_vlcinvoice-zvfi_currency.
*JIJILALM CM-1821 13/05/03
vlcactdata_cs-zvfi_amount_ch = st_vlcinvoice-zvfi_amount.
ENDIF.
*Begin of insert by RNEELAM for CM 0041034978 on date 29.10.2020
IF NOT wf_amount_ztce IS INITIAL.
vlcactdata_item_lt-ztce_amount = wf_amount_ztce.
vlcactdata_item_lt-ztce_currency = st_vlcinvoice-zvfi_currency.
vlcactdata_cs-ztce_amount = wf_amount_ztce.
vlcactdata_cs-zvfi_currency = st_vlcinvoice-zvfi_currency.
vlcactdata_cs-ztce_amount_ch = wf_amount_ztce.

ENDIF.
IF NOT wf_amount_zefr IS INITIAL.
vlcactdata_item_lt-zefr_amount = wf_amount_zefr.
vlcactdata_item_lt-zefr_currency = st_vlcinvoice-zvfi_currency.
vlcactdata_cs-zefr_amount = wf_amount_zefr.
vlcactdata_cs-zvfi_currency = st_vlcinvoice-zvfi_currency.
vlcactdata_cs-zefr_amount_ch = wf_amount_zefr.

ENDIF.
*End of insert by RNEELAM for CM 0041034978 on date 29.10.2020
* Begin of insert by MAAMARN for CM-0039003675 on 19.10.2017
DATA: lv_flag_0039003675 TYPE c.

CLEAR: lv_flag_0039003675.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = /dcsea/mbid_constants=>gc_0039003675
werks = tb_vlc_vehicle-werks
IMPORTING
active_flag = lv_flag_0039003675.
IF lv_flag_0039003675 IS NOT INITIAL.
IF gv_lux_tax IS NOT INITIAL.
vlcactdata_item_lt-zlut_amount = gv_lux_tax.
vlcactdata_cs-zlut_amount = gv_lux_tax.
vlcactdata_cs-zarticle22_amount = gv_article22.
vlcactdata_cs-tax_amount = gv_tax_amount.
vlcactdata_cs-tax_code = 'P1'.
ENDIF.
ENDIF.
*Begin of insert by SAEARLA for CM-0052128757 on 21.02.2020
DATA: lv_flag_0052128757 TYPE c.
CONSTANTS : C_0052128757(10) TYPE c VALUE '0052128757'.

CLEAR: lv_flag_0052128757.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = c_0052128757
werks = tb_vlc_vehicle-werks
IMPORTING
active_flag = lv_flag_0052128757.
IF lv_flag_0052128757 IS NOT INITIAL.
IF gv_lux_tax IS INITIAL.
vlcactdata_cs-zarticle22_amount = gv_article22.
vlcactdata_cs-tax_amount = gv_tax_amount.
vlcactdata_cs-tax_code = 'P1'.
ELSE.
CLEAR : vlcactdata_item_lt-zlut_amount,vlcactdata_cs-zlut_amount,
vlcactdata_cs-zarticle22_amount,vlcactdata_cs-tax_amount,
vlcactdata_cs-tax_code.
ENDIF.
ENDIF.
* End of of insert by SAEARLA for CM-0052128757 on 21.02.2020

* End of insert by MAAMARN for CM-0039003675 on 19.10.2017


* Insurance Amount and Currency
IF NOT st_vlcinvoice-zvin_amount IS INITIAL."JIJILALM CM-1821 13/05/03
vlcactdata_item_lt-zvin_amount = st_vlcinvoice-zvin_amount.
vlcactdata_item_lt-zvin_currency = st_vlcinvoice-zvin_currency.
vlcactdata_cs-zvin_amount = st_vlcinvoice-zvin_amount.
vlcactdata_cs-zvin_currency = st_vlcinvoice-zvin_currency.
*JIJILALM CM-1821 13/05/03
vlcactdata_cs-zvin_amount_ch = st_vlcinvoice-zvin_amount.

ENDIF.

* begin of delete for VMSUPGD


* vlcactdata_item_lt-po_number = vlcporder-ebeln.
* vlcactdata_item_lt-po_item = vlcporder-ebelp.
* end of delete "VMSUPGD
* begin of insert "VMSUPGD
vlcactdata_item_lt-po_number = tb_order-ebeln.
vlcactdata_item_lt-po_item = tb_order-ebelp.
* end of insert "VMSUPGD
APPEND vlcactdata_item_lt.
MOVE vlcactdata_item_lt[] TO vlcactdata_cs-actdata_item[].

* end of insert. VMSUPGD


ENDFORM. " FILL_INIV_DATA

*&---------------------------------------------------------------------*
*& Form STATUSRECORDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_TB_ERRTAB Internal table for storing errors in idoc data
* -->P_IDOC_STATUS_NO Idoc status '51' or '53'
*----------------------------------------------------------------------*
FORM statusrecords TABLES tb_errtab
STRUCTURE tb_errtab
USING pf_idoc_status_no
p_v_action.

* IDoc processing is successful


IF pf_idoc_status_no EQ co_posted.

idoc_status-docnum = idoc_contrl-docnum.
idoc_status-status = co_posted.
idoc_status-msgty = 'I'.
idoc_status-msgid = co_velo.
idoc_status-msgno = '035'.
idoc_status-msgv1 = p_v_action.
* idoc_status-msgv2 = ?????????????????
* idoc_status-msgv3 = ?????????????????
* idoc_status-msgv4 = ?????????????????
* idoc_status-segnum = ?????????????????
* idoc_status-segfld = ?????????????????
* idoc_status-uname = ?????????????????
idoc_status-repid = 'SAPLZAIS'.
* idoc_status-routid = ?????????????????
APPEND idoc_status.

* Begin of insertion by RUSTAGIN for CM-3490 on 01/02/2006


* Idoc processed is to be archived.
ELSEIF pf_idoc_status_no EQ co_archive. "If idoc is to be archived
idoc_status-docnum = idoc_contrl-docnum.
idoc_status-status = co_archive.
idoc_status-msgty = 'I'.
idoc_status-msgid = co_zais_msg.
idoc_status-msgv1 = p_v_action.
idoc_status-repid = sy-repid.
APPEND idoc_status.
* End of insertion by RUSTAGIN for CM-3490 on 01/02/2006

* IDoc processing with error


ELSE.

LOOP AT tb_errtab.

idoc_status-docnum = idoc_contrl-docnum.
* idoc_status-status = co_error. " Comented by Anil on 04/10/2004
idoc_status-status = pf_idoc_status_no. "Added by Anil-04/10/2004
idoc_status-msgty = tb_errtab-msgty.
idoc_status-msgid = tb_errtab-msgid.
idoc_status-msgno = tb_errtab-msgnr.
idoc_status-msgv1 = tb_errtab-msgv1.
idoc_status-msgv2 = tb_errtab-msgv2.
idoc_status-msgv3 = tb_errtab-msgv3.
idoc_status-msgv4 = tb_errtab-msgv4.
* idoc_status-segnum = ?????????????????
* idoc_status-segfld = ?????????????????
* idoc_status-uname = ?????????????????
idoc_status-repid = 'SAPLZAIS'.
* idoc_status-routid = ?????????????????
APPEND idoc_status.

ENDLOOP.
ENDIF.

* Delete all error table entries for processing a new Idoc


REFRESH tb_errtab.

ENDFORM. " STATUSRECORDS

*&---------------------------------------------------------------------*
*& Form CHECK_IF_CREDIT_NOTE
*&---------------------------------------------------------------------*
* Check if received data is credit note
* If credit note, write error in errtab
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM check_if_credit_note.

READ TABLE tb_vlc_vehicle INDEX 1.


IF sy-subrc EQ 0.
IF v_credit_note EQ co_credit_note_g.
PERFORM write_zais_factory_inv_data.

* Write error in errtab, idoc_data is a credit note


PERFORM write_error USING co_msg_132
co_velo.
ENDIF.
ELSE.

* Write error in errtab, no data transmitted


PERFORM write_error USING co_msg_052
co_velo.
ENDIF.
ENDFORM. " CHECK_IF_CREDIT_NOTE

*&---------------------------------------------------------------------*
*& Form WRITE_ZAIS_FACTORY_INV_DATA
*&---------------------------------------------------------------------*
* Write data in ZAIS_FACTORY_INV table
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM write_zais_factory_inv_data.

/dcsea/zais_finv-mandt = sy-mandt.
/dcsea/zais_finv-vhcle = tb_vlc_vehicle-vhcle.
* /DCSEA/ZAIS_FINV-DOCNUM =
/dcsea/zais_finv-xblnr = st_vlcinvoice-xblnr.
/dcsea/zais_finv-docdate = st_vlcinvoice-budat.
/dcsea/zais_finv-wrbtr = st_vlcinvoice-rmwwr.
/dcsea/zais_finv-waers = st_vlcinvoice-waers.
/dcsea/zais_finv-vgabe = ekbe-vgabe.
* MOVE-CORRESPONDING TB_VLC_VEHICLE TO /DCSEA/ZAIS_FINV.
* INSERT /DCSEA/ZAIS_FINV FROM TABLE TB_VLC_VEHICLE.
* Begin of vforge fix by MSREENA on 27/11/2019
* INSERT INTO /dcsea/zais_finv CLIENT SPECIFIED VALUES /dcsea/zais_finv.
INSERT INTO /dcsea/zais_finv VALUES /dcsea/zais_finv.
* end of Vforge fix by MSREENA on 27/11/2019
ENDFORM. " WRITE_ZAIS_FACTORY_INV_DATA
*&---------------------------------------------------------------------*
*& Form GET_ERROR_DATA
*&---------------------------------------------------------------------*
* Check if error occured
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM get_error_data.

DESCRIBE TABLE tb_errtab LINES error_records.

ENDFORM. " GET_ERROR_DATA

*&---------------------------------------------------------------------*
*& Form CHECK_IN_VLCVEHICLE
*&---------------------------------------------------------------------*
* Check if vehicle exists in VLCVEHICLE
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM check_in_vlcvehicle.

* Check if ZZ_COMMNOS from IDoc is not initial


IF NOT ( tb_vlc_vehicle-zz_commnos IS INITIAL ).

* Selection from VLCVEHICLE will be based on ZZ_COMMNOS


"HANA Code Remediation:Select Single not unique
" select single * into vlcvehicle
" from vlcvehicle
"*Begin of comment by anandd for Performance Tuning on 15/07/2004
"* where ( zz_commnos eq tb_vlc_vehicle-zz_commnos ).
"*End of comment by anandd for Performance Tuning on 15/07/2004
"*Begin of insert by anandd for Performance Tuning on 15/07/2004
" where ( vhcex eq tb_vlc_vehicle-zz_commnos ).
SELECT * INTO vlcvehicle
UP TO 1 ROWS FROM vlcvehicle
*Begin of comment by anandd for Performance Tuning on 15/07/2004
* where ( zz_commnos eq tb_vlc_vehicle-zz_commnos ).
*End of comment by anandd for Performance Tuning on 15/07/2004
*Begin of insert by anandd for Performance Tuning on 15/07/2004
WHERE ( vhcex EQ tb_vlc_vehicle-zz_commnos ) ORDER BY PRIMARY KEY.
ENDSELECT.
*End of insert by anandd for Performance Tuning on 15/07/2004
* WHERE ( VHCLE EQ TB_VLC_VEHICLE-VHCLE ).

IF sy-subrc NE 0.
PERFORM write_zais_factory_inv_data.

* Write error in errtab, vehicle was not found in VLCVehicle table


PERFORM write_error USING co_msg_089
co_velo.
ELSE.
* Copy VLCVEHICLE to internal table
MOVE-CORRESPONDING vlcvehicle TO tb_vlc_vehicle.
* Santosg 6/4/02
* Pass the Production Timestamp to production date field PDDATU
PERFORM populate_proddate USING vlcvehicle-pdtsp.
MODIFY tb_vlc_vehicle INDEX 1.
ENDIF.
ELSE.
* Write error in errtab, ZZ_COMMNOS is initial
PERFORM write_error USING co_msg_027
co_zais_msg.
ENDIF.

ENDFORM. " CHECK_IN_VLCVEHICLE


*&---------------------------------------------------------------------*
*& Form CHECK_IF_INVOICE_EXISTS
*&---------------------------------------------------------------------*
* Check if invoice exists, check VLCPORDER and EKBE tables
*----------------------------------------------------------------------*
* -->P_FLAG_PO_EXIST Indicator if PO already exists
*----------------------------------------------------------------------*
FORM check_if_invoice_exists USING p_flag_po_exist.

* Check if PO already exists for the vehicle


* begin of delete for VMSUPGD
* select single *
* from vlcporder
** where ( vguid eq vlcvehicle-vguid ). "VMSUPGD
* where vguid eq vlcvehicle-vguid"VMSUPGD
* and actdoctype eq co_act_ord1. "VMSUPGD

* begin of insert for VMSUPGD


*Begin of insertion by MALAKAS FOR CM-0050529638 ON 10/30/2019
CONSTANTS : co_0050529638 TYPE /dcsea/z_cm_number VALUE '0050529638 ',
co_u TYPE char1 VALUE 'U' ,
co_zenp TYPE kscha VALUE 'ZENP' ,
co_ztxs TYPE kscha VALUE 'ZTXS' ,
co_ztxo TYPE kscha VALUE 'ZTXO' ,
co_zvfi TYPE kscha VALUE 'ZVFI' ,
co_zvin TYPE kscha VALUE 'ZVIN' .
DATA:wf_cmpoprice TYPE /dcsea/z_active_flag,
wa_return TYPE bapiret2,
wf_ponum TYPE bapimepoheader-po_number,
wa_pocond TYPE bapimepocond,
wa_pocondx TYPE bapimepocondx,
tb_pocondx TYPE STANDARD TABLE OF bapimepocondx,
tb_pocond TYPE STANDARD TABLE OF bapimepocond.
*End of insertion by MALAKAS FOR CM-0050529638 ON 10/30/2019
* Begin of change by KHAGRAW for CM:0057190950 on 27/05/2021
DATA lv_0041034978 TYPE char1.
CONSTANTS: co_0041034978 TYPE /dcsea/z_cm_number VALUE '0041034978'.
* End of change by KHAGRAW for CM:0057190950 on 27/05/2021
REFRESH : tb_vguid,tb_order.
CLEAR : tb_vguid,tb_order.
tb_vguid-vguid = vlcvehicle-vguid.
APPEND tb_vguid.
CALL FUNCTION 'VELO14_READ_PORDERS_WITH_VGUID'
EXPORTING
* NO_XGORE =
* NO_XINIV =
actdoctype_iv = co_act_ord1
latest_iv = 'X'
TABLES
vlcguid_it = tb_vguid
* VLCACTDOCTYPE_IT =
vlcporder_et = tb_order
EXCEPTIONS
no_data_received = 1
nothing_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* end of insert for VMSUPGD
READ TABLE tb_order INDEX 1. "vmsupgd
IF sy-subrc EQ 0.

p_flag_po_exist = 'X'.
* Begin of change by KHAGRAW for CM:0057190950 on 27/05/2021
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_0041034978
werks = vlcvehicle-werks
IMPORTING
active_flag = lv_0041034978.

IF NOT lv_0041034978 IS INITIAL AND idoc_contrl-mestyp = 'ZINV'.


"do nothing
* End of change by KHAGRAW for CM:0057190950 on 27/05/2021
* Begin of insert by KJITHEN for CM:0050026313 on 12.09.2019

ELSEif /dcsea/in_cl_global=>check_cm_active( im_cm_no =


/dcsea/in_cl_global=>co_cm_0050026313
im_werks = vlcvehicle-werks )
is not initial AND
idoc_contrl-mestyp = 'ZINV'.
"ZPDY action existence check
SELECT COUNT(*) FROM vlchistory
INTO @DATA(wf_count)
WHERE vguid = @vlcvehicle-vguid
AND action = @/dcsea/in_cl_global=>gc_zpdy.

IF sy-subrc eq 0 AND wf_count GT 0.


"entry exists, ZPDY already executed
* no price update should be called
ELSE.

call method /dcsea/in_cl_global=>check_build_type


exporting
i_matnr = vlcvehicle-matnr
importing
e_is_cbu = /dcsea/in_cl_global=>gc_cbu_flag
e_is_ckd = /dcsea/in_cl_global=>gc_ckd_flag
exceptions
no_classification = 1
invalid_class_type = 2.
if /dcsea/in_cl_global=>gc_cbu_flag is not initial.

call function '/DCSEA/IN_POPRICEUPDATE'


exporting
ip_ponum = tb_order-ebeln
ip_werks = vlcvehicle-werks
ip_zenp = st_vlcinvoice-zenp_amount
ip_zmxs = st_vlcinvoice-zmxs_amount
ip_zmxo = st_vlcinvoice-zmxo_amount
ip_zvfi = st_vlcinvoice-zvfi_amount
ip_zvin = st_vlcinvoice-zvin_amount
importing
op_return = wa_return.
endif.
ENDIF.
ELSE.
* END of insert by KJITHEN for CM:0050026313 on 12.09.2019
*Begin of insertion by MALAKAS FOR CM-0050529638 ON 10/30/2019
wf_ponum = tb_order-ebeln.

CALL FUNCTION 'BAPI_PO_GETDETAIL1'


EXPORTING
purchaseorder = wf_ponum
TABLES
pocond = tb_pocond.

SORT tb_pocond[] BY cond_type.


IF tb_pocond[] IS NOT INITIAL.
*----Get Condition values based on condition types from IDOC
READ TABLE tb_pocond INTO wa_pocond WITH KEY cond_type = co_zenp
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_pocond-cond_value = st_vlcinvoice-zenp_amount.
wa_pocond-change_id = co_u.
MODIFY tb_pocond FROM wa_pocond INDEX sy-tabix
TRANSPORTING cond_value change_id.

wa_pocondx-condition_no = wa_pocond-condition_no.
wa_pocondx-cond_st_no = wa_pocond-cond_st_no.
wa_pocondx-cond_value = co_x.
APPEND wa_pocondx TO tb_pocondx.
CLEAR : wa_pocond ,
wa_pocondx.
ENDIF.

READ TABLE tb_pocond INTO wa_pocond WITH KEY cond_type = co_ztxs


BINARY SEARCH.
IF sy-subrc EQ 0.
wa_pocond-cond_value = st_vlcinvoice-zmxs_amount.
wa_pocond-change_id = co_u.
MODIFY tb_pocond FROM wa_pocond INDEX sy-tabix
TRANSPORTING cond_value change_id.

wa_pocondx-condition_no = wa_pocond-condition_no.
wa_pocondx-cond_st_no = wa_pocond-cond_st_no.
wa_pocondx-cond_value = co_x.
APPEND wa_pocondx TO tb_pocondx.
CLEAR : wa_pocond ,
wa_pocondx.
ENDIF.

READ TABLE tb_pocond INTO wa_pocond WITH KEY cond_type = co_ztxo


BINARY SEARCH.
IF sy-subrc EQ 0.
wa_pocond-cond_value = st_vlcinvoice-zmxo_amount.
wa_pocond-change_id = co_u.
MODIFY tb_pocond FROM wa_pocond INDEX sy-tabix
TRANSPORTING cond_value change_id.

wa_pocondx-condition_no = wa_pocond-condition_no.
wa_pocondx-cond_st_no = wa_pocond-cond_st_no.
wa_pocondx-cond_value = co_x.
APPEND wa_pocondx TO tb_pocondx.
CLEAR : wa_pocond ,
wa_pocondx.
ENDIF.

READ TABLE tb_pocond INTO wa_pocond WITH KEY cond_type = co_zvfi


BINARY SEARCH.
IF sy-subrc EQ 0.
wa_pocond-cond_value = st_vlcinvoice-zvfi_amount.
wa_pocond-change_id = co_u.
MODIFY tb_pocond FROM wa_pocond INDEX sy-tabix
TRANSPORTING cond_value change_id.

wa_pocondx-condition_no = wa_pocond-condition_no.
wa_pocondx-cond_st_no = wa_pocond-cond_st_no.
wa_pocondx-cond_value = co_x.
APPEND wa_pocondx TO tb_pocondx.
CLEAR : wa_pocond ,
wa_pocondx.
ENDIF.
*-----Updae the condition values in PO
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = wf_ponum
TABLES
return = tb_return
pocond = tb_pocond
pocondx = tb_pocondx.

SORT tb_return[] BY type.


READ TABLE tb_return INTO wa_return WITH KEY type = 'E'
BINARY SEARCH.
IF sy-subrc NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = co_x.
ENDIF.
ENDIF.
CLEAR : wf_cmpoprice.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_0050529638
werks = vlcvehicle-werks
IMPORTING
active_flag = wf_cmpoprice.

IF wf_cmpoprice IS NOT INITIAL.

CALL FUNCTION '/DCSEA/Z_AIS_CA_POPRICEUPDATE'


EXPORTING
IP_PONUM = tb_order-ebeln
IP_WERKS = vlcvehicle-werks
IP_ZENP = st_vlcinvoice-zenp_amount
IP_ZTXS = st_vlcinvoice-zmxs_amount
IP_ZTXO = st_vlcinvoice-zmxo_amount
IP_ZVFI = st_vlcinvoice-zvfi_amount
IP_ZVIN = st_vlcinvoice-zvin_amount
IMPORTING
OP_RETURN = wa_return .
ENDIF.
*End of Insertion by MALAKAS FOR CM-0050529638 ON 10/30/2019
endif."Added by PPRAGYA for MBIL CM
ELSE.
p_flag_po_exist = ' '.
ENDIF.

* Check if PO exists in EKBE


IF p_flag_po_exist EQ 'X'.
SELECT * INTO TABLE ekbe_temp
FROM ekbe
* where ( ebeln eq vlcporder-ebeln ) and "VMSUPGD
* ( ebelp eq vlcporder-ebelp ) and "VMSUPGD
WHERE ( ebeln EQ tb_order-ebeln ) AND "VMSUPGD
( ebelp EQ tb_order-ebelp ) AND "VMSUPGD
( ( vgabe EQ '2' ) OR "inv rcpt
( vgabe EQ '3' ) ). "subsequent debit

* If PO exists in EKBE, write error in errtab.


* Santosg 5/16/02
* Check if invoice has been reversed or not
IF sy-subrc EQ 0.

* If invoice has been reversed (field STBLG is not initial), do not post
* the error that invoice already exists, otherwise, post the error.
CLEAR rbkp.
SELECT SINGLE * FROM rbkp
WHERE belnr EQ ekbe-belnr
AND gjahr EQ ekbe-gjahr.
IF sy-subrc EQ 0 AND
rbkp-stblg IS INITIAL.

PERFORM write_zais_factory_inv_data.
* Write error in errtab, invoice already exists
PERFORM write_error USING co_msg_041
co_zais_msg.

ENDIF. "IF SY-SUBRC EQ 0 (RBKP)


ENDIF.
ENDIF. "IF P_FLAG_PO_EXIST EQ 'X'.
ENDFORM. " CHECK_IF_INVOICE_EXISTS
*&---------------------------------------------------------------------*
*& Form EXECUTE_ACTION
*&---------------------------------------------------------------------*
* Execute specific action
*----------------------------------------------------------------------*
* -->P_CO_POIN Action
* -->P_FLAG_POIN_ACTION_PERFORMED Action performed indicator
*----------------------------------------------------------------------*
FORM execute_action USING p_action
p_flag_action_performed.

*Begin of insert KAMIRES for CM-0056948324 on 15/04/2021


IF NOT /dcsea/zais_kbv_cl_integration=>check_active_cm(
cm_number = '0056948324'
werks = tb_vlc_vehicle-werks ) IS INITIAL
AND idoc_contrl-rcvprn CP 'GSAFAB_*'
AND idoc_contrl-mestyp EQ co_mestyp_zfactord_conf. "ZFACTORD_CONF

IF st_vlcvehicle-zz_go_ord_ver IS INITIAL OR
st_vlcvehicle-zz_go_ord_ver < tb_vlc_vehicle-zz_go_ord_ver.
idoc_status_no = co_archive. "Status of Idoc made '73'
idoc_status-msgno = '835'.
p_flag_action_performed = ' '.
** Write error in errtab since it is an error message records
PERFORM write_error USING '835'
co_zais_msg..
RETURN.
ENDIF.
ENDIF.
*End of insert KAMIRES for CM-0056948324 on 15/04/2021

*--- Begin of changes by AJABOSE for CM 39989827 on 21/11/2017


DATA lo_xclass TYPE REF TO /dcsea/zais_xclass.

CREATE OBJECT lo_xclass


EXPORTING
iv_werks = tb_vlc_vehicle-werks.
*--- End of changes by AJABOSE for CM 39989827 on 21/11/2017

* Added by PERIASAS on 21/07/2003 for CM-1929


PERFORM move_add_data USING p_action
tb_vlc_vehicle-werks.
***Begin of insertion by VREDDAM for CM-0034670898 on 02.06.2017
"The below logic is to transfer the stock from old storage location to new
storage location
DATA: lv_flag_34670898 TYPE /dcsea/z_active_flag,
lt_actdata_item TYPE vlcactdata_item_t,
ls_actdata_item TYPE vlcactdata_item_s.
CONSTANTS: co_34670898(8) TYPE c VALUE '34670898'.
CLEAR: lv_flag_34670898.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_34670898
werks = tb_vlc_vehicle-werks
IMPORTING
active_flag = lv_flag_34670898.

*--- Begin of changes by AJABOSE for CM 39989827 on 21/11/2017


* IF lv_flag_34670898 IS NOT INITIAL AND
IF ( lv_flag_34670898 IS NOT INITIAL OR
" pgl bug fix (additional check on material group)
lo_xclass->check_xclass_mgrp( iv_matnr = tb_vlc_vehicle-matnr )
IS NOT INITIAL ) AND
*--- End of changes by AJABOSE for CM 39989827 on 21/11/2017
vlcactdata_cs-lgort NE tb_vlc_vehicle-lgort AND
( p_action EQ co_zvas OR
p_action EQ co_zvib OR
p_action EQ co_zidi OR
p_action EQ co_zvhc ).
vlcactdata_cs-zz_online = 'X'.
vlcactdata_cs-umwerks = tb_vlc_vehicle-werks.
vlcactdata_cs-werks = tb_vlc_vehicle-werks.
vlcactdata_cs-bwart = '311'.
vlcactdata_cs-bldat = sy-datum.
vlcactdata_cs-budat = sy-datum.
vlcactdata_cs-umlgo = vlcactdata_cs-lgort.
ls_actdata_item-vguid = tb_vlc_vehicle-vguid.
ls_actdata_item-vhcle = tb_vlc_vehicle-vhcle.
ls_actdata_item-lgort_prev = tb_vlc_vehicle-lgort.
APPEND ls_actdata_item TO lt_actdata_item.
vlcactdata_cs-actdata_item = lt_actdata_item.
ENDIF.
***End of insertion by VREDDAM for CM-0034670898 on 02.06.2017
*Commented by SJAGADE due to IDOC error in IA1
* Bein of Insert by MAAMARN for CM-0042697099 on 21.06.2018
* CLEAR: gv_0042697099.
* CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
* EXPORTING
* cm_number = '0042697099'
* werks = st_vlcvehiclem-werks
* IMPORTING
* active_flag = gv_0042697099.
* IF NOT gv_0042697099 IS INITIAL.
* READ TABLE tb_exten INTO wa_exten WITH KEY tabname = 'VLCVEHICLE' fieldname =
'ZZ_FLTY'.
* IF sy-subrc IS INITIAL.
* tb_vlc_vehicle-zz_flty = wa_exten-fieldval.
* ENDIF.
*
* READ TABLE tb_exten INTO wa_exten WITH KEY tabname = 'VLCVEHICLE' fieldname =
'ZZ_SUBFLTY'.
* IF sy-subrc IS INITIAL.
* tb_vlc_vehicle-zz_subflty = wa_exten-fieldval.
* ENDIF.
*
* IF tb_vlc_vehicle-zz_flty IS NOT INITIAL or
* tb_vlc_vehicle-zz_subflty IS NOT INITIAL.
* MODIFY tb_vlc_vehicle INDEX 1.
* ENDIF.
* ENDIF.
* End of Insert by MAAMARN for CM-0042697099 on 21.06.2018
* Commented by SJAGADE due to IDOC error in IA1
* Step 1: Lock the VLCHistory Table
* PERFORM LOCK_VLCHISTORY.

* IF ERROR_RECORDS EQ 0.

* Step 2: Execute the action


* begin of delete . VMSUPGD
* call function 'VELO09_SET_ACTION'
* exporting
* action_iv = p_action
** COMMIT_IV = 'A'
* tables
* vlcdiavehi_ct = tb_vlc_vehicle
* vlch_actdata_ct = tb_vlch_actdata_lt
** ADDITIONAL_DATA_IT =
** VLCH_MSSG_CT =
* vlcbapicu_it = tb_vlcbapicu_lt
* exceptions
* action_not_defined = 1
* action_not_performed = 2
* action_not_compl_performed = 3
* others = 4.
* end of delete. VMSUPGD
* start of insert. VMSUPGD
* Begin of insert by KJITHEN for MBIL CM:0050026313
if /dcsea/in_cl_global=>check_cm_active( im_cm_no =
/dcsea/in_cl_global=>co_cm_0050026313
im_werks = tb_vlc_vehicle-werks ) is
not initial
AND idoc_contrl-mestyp = 'ZINV'.

call method /dcsea/in_cl_global=>check_build_type


exporting
i_matnr = tb_vlc_vehicle-matnr
importing
e_is_cbu = /dcsea/in_cl_global=>gc_cbu_flag
e_is_ckd = /dcsea/in_cl_global=>gc_ckd_flag
exceptions
no_classification = 1
invalid_class_type = 2.
if /dcsea/in_cl_global=>gc_cbu_flag is not initial.
select mmsta from vlcvehicle into @data(lv_mmsta)
up to 1 rows
where vguid = @tb_vlc_vehicle-vguid.
endselect.
**Below line added by AAADHAR for MBIL
vlcactdata_cs-zheader_txt = '*' && tb_vlc_vehicle-zz_commnos.
endif.
endif.

if /dcsea/in_cl_global=>check_cm_active( im_cm_no =
/dcsea/in_cl_global=>co_cm_0050026313
im_werks = tb_vlc_vehicle-werks )
is not initial and lv_mmsta ne
'LS51'
and /dcsea/in_cl_global=>gc_cbu_flag is
not initial
and idoc_contrl-mestyp = 'ZINV'.
* For MBIL if primary status is not LF07 skip the action
* and idoc should be in error state
perform write_error using /dcsea/in_cl_global=>gc_009
/dcsea/in_cl_global=>gc_msgid.
else.
* perform action for all other markets along with MBIL
* END of insert by KJITHEN for MBIL CM: 0050026313
CALL FUNCTION 'VELO09_SET_ACTION'
EXPORTING
incoming_action_iv = p_action
commit_iv = 'S' "Ticket 1537132 AGARWALN
* DIALOGUE_ALLOWED_IV =
TABLES
vlcdiavehi_ct = tb_vlc_vehicle
vlch_mssg_et = tb_vehimsg
vlcbapicu_it = tb_vlcbapicu_lt
CHANGING
vlcactdata_cs = vlcactdata_cs
EXCEPTIONS
action_not_defined = 1
no_authority = 2
interlinked_action_error = 3
crea_prepare_failed = 4
action_not_performed = 5
action_not_compl_performed = 6
OTHERS = 7.
* end of insert. VMSUPGD
*Step 3: Error Handling after action execution
IF sy-subrc NE 0.
* Begin of insert. VMSUPGD
READ TABLE tb_vehimsg WITH KEY msgty = 'E'.
MOVE: tb_vehimsg-msgid TO sy-msgid,
tb_vehimsg-msgty TO sy-msgty,
tb_vehimsg-msgno TO sy-msgno,
tb_vehimsg-msgv1 TO sy-msgv1,
tb_vehimsg-msgv2 TO sy-msgv2,
tb_vehimsg-msgv3 TO sy-msgv3,
tb_vehimsg-msgv4 TO sy-msgv4.
* End of insert. VMSUPGD
PERFORM write_error USING sy-msgno
sy-msgid.
p_flag_action_performed = ' '.
* Step 3.1: Unlock the vlchistory manually in case of rollback
* PERFORM UNLOCK_VLCHISTORY.
ELSE.
p_flag_action_performed = 'X'.
* Begin of insert by HALDERT for CM-3726 on 18.10.2006
IF NOT tb_acnf[] IS INITIAL.
LOOP AT tb_acnf.
tb_acnf-werks = tb_vlc_vehicle-werks.
tb_acnf-mtart = hd_mara-mtart.
tb_acnf-matnr = tb_vlc_vehicle-matnr.
tb_acnf-vhcle = tb_vlc_vehicle-vhcle.
tb_acnf-docnum = idoc_contrl-docnum.
tb_acnf-credat = sy-datlo.
tb_acnf-cretim = sy-timlo.
MODIFY tb_acnf.
ENDLOOP.
MODIFY /dcsea/zais_acnf FROM TABLE tb_acnf.
CLEAR tb_acnf.
REFRESH tb_acnf.
ENDIF.
* End of insert by HALDERT for CM-3726 on 18.10.2006

ENDIF.
endif. " Added by KJITHEN for MBIL CM:0050026313
* ENDIF.

ENDFORM. " EXECUTE_ACTION


*&---------------------------------------------------------------------*
*& Form DELETE_ZAIS_FACTORY_INV
*&---------------------------------------------------------------------*
* Delete vehicle from ZAIS_FACTORY_INV table
*----------------------------------------------------------------------*
* -->P_TB_VLC_VEHICLE_VHCLE Vehicle number
*----------------------------------------------------------------------*
FORM delete_zais_factory_inv USING p_tb_vlc_vehicle_vhcle.
DELETE FROM /dcsea/zais_finv
WHERE ( vhcle EQ p_tb_vlc_vehicle_vhcle ).
ENDFORM. " DELETE_ZAIS_FACTORY_INV
*&---------------------------------------------------------------------*
*& Form GET_GLOBAL_TEMPLATE_DATA_FDOK
*&---------------------------------------------------------------------*
* This subroutine is specific to the FDOK interface. It checks
* if the global template data for vehicle exists. If global
* data exists, move data to ST_VLCSMOD structure. Else write
* error in errtab.
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM get_global_template_data_fdok.

READ TABLE tb_vlc_vehicle INDEX 1.


IF sy-subrc EQ 0.

* Get Vehicle
*Begin of comment by anandd for Performance Tuning on 15/07/2004
* select single * from vlcvehicle
* where zz_commnos eq tb_vlc_vehicle-zz_commnos.
*End of comment by anandd for Performance Tuning on 15/07/2004
*Begin of insertion by TRIPATHIL for CM-10003589 v5.6T on 28/10/2009
*for BBDC
CLEAR wf_flag_cnb1.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_10003589
werks = tb_vlc_vehicle-werks
IMPORTING
active_flag = wf_flag_cnb1.

IF NOT wf_flag_cnb1 IS INITIAL AND


idoc_contrl-rcvprn+0(8) = co_lsipt_cb.
*Message type is not being checked here because for BBDC ZZ_PROD_NUMBER
*will be present in all the structures for all message types present in
*LSIPT_CB interface.
"HANA Code Remediation:Select Single not unique
" select single * from vlcvehicle
" where zz_prod_number eq
" tb_vlc_vehicle-zz_prod_number.
SELECT * UP TO 1 ROWS FROM vlcvehicle
WHERE zz_prod_number EQ
tb_vlc_vehicle-zz_prod_number ORDER BY PRIMARY KEY.
ENDSELECT.
ELSE.
*End of insertion by TRIPATHIL for CM-10003589 v5.6T on 28/10/2009
*Begin of insert by anandd for Performance Tuning on 15/07/2004
"HANA Code Remediation:Select Single not unique
" select single * from vlcvehicle
" where vhcex eq tb_vlc_vehicle-zz_commnos.
SELECT * UP TO 1 ROWS FROM vlcvehicle
WHERE vhcex EQ tb_vlc_vehicle-zz_commnos ORDER BY PRIMARY
KEY. ENDSELECT.
*End of insert by anandd for Performance Tuning on 15/07/2004
*Following line is inserted by TRIPATHIL for CM-10003589 on 28/10/2009
ENDIF.

IF sy-subrc EQ 0.

* Get Material Type from MARA


SELECT SINGLE * FROM mara
WHERE matnr EQ vlcvehicle-matnr
AND lvorm NE 'X'.
IF sy-subrc EQ 0.
wf_mtart = mara-mtart.
ENDIF.
ENDIF.

* Check if all fields are initial


IF wf_mtart NE co_mitsubishi AND
wf_mtart NE co_chrysler.
IF (
( tb_vlc_vehicle-vhvin IS INITIAL ) AND
* ( TB_VLC_VEHICLE-ZZ_CHASSIS IS INITIAL ) AND
( tb_vlc_vehicle-zz_engine_number IS INITIAL ) AND
( tb_vlc_vehicle-zz_transm_number IS INITIAL ) AND
( tb_vlc_vehicle-zz_tyre IS INITIAL ) AND
( tb_vlc_vehicle-zz_lights_produc IS INITIAL ) AND
( tb_vlc_vehicle-zz_windscr_wiper IS INITIAL ) AND
( tb_vlc_vehicle-zz_front_axle IS INITIAL ) AND
( tb_vlc_vehicle-zz_radio_code IS INITIAL ) AND
( tb_vlc_vehicle-zz_rear_axle IS INITIAL ) AND
* Following zz_rear_axle_3 added by BONDEP CM-1731 15/11/2002
( tb_vlc_vehicle-zz_rear_axle_3 IS INITIAL ) AND
( tb_vlc_vehicle-zz_steer_whl_typ IS INITIAL ) AND
( tb_vlc_vehicle-zz_fuel_tank IS INITIAL ) AND
( tb_vlc_vehicle-zz_airbag_driver IS INITIAL ) AND
( tb_vlc_vehicle-zz_sidebag IS INITIAL ) AND
( tb_vlc_vehicle-zz_fin_miss_stam IS INITIAL ) AND
( tb_vlc_vehicle-zz_airbag_beifah IS INITIAL ) AND
( tb_vlc_vehicle-zz_lock_number IS INITIAL ) AND
( tb_vlc_vehicle-zz_sidebag_doors IS INITIAL ) AND
( tb_vlc_vehicle-zz_elect_lock_no IS INITIAL ) AND
( tb_vlc_vehicle-zz_tran_case_4wd IS INITIAL ) AND
( tb_vlc_vehicle-zz_eng_ctrl_unit IS INITIAL ) AND
( tb_vlc_vehicle-zz_coc_number IS INITIAL ) AND
( tb_vlc_vehicle-zz_type_key IS INITIAL ) AND
( tb_vlc_vehicle-zz_airbag_sensor IS INITIAL ) AND
( tb_vlc_vehicle-zz_egs_serie IS INITIAL ) AND
( tb_vlc_vehicle-zz_egs_kennung IS INITIAL ) AND
( tb_vlc_vehicle-zz_egs_codierung IS INITIAL ) AND
* pascuar 9/24/2001
( tb_vlc_vehicle-zz_cd_change_num IS INITIAL ) AND
( tb_vlc_vehicle-zz_typ_plt_data IS INITIAL ) AND
( tb_vlc_vehicle-zz_typ_plt_wt IS INITIAL ) AND
( tb_vlc_vehicle-pcount IS INITIAL ) AND
( tb_vlc_vehicle-zz_amplifier_no IS INITIAL ) ).

****Begin of Insert***KACHAND****MBID****CM:0041379963****CKD Kit CHassis restrict


for ZVDU****
IF ( lv_mbid IS NOT INITIAL AND gv_ckd IS NOT INITIAL ) AND
( tb_vlc_vehicle-zz_engine_number IS INITIAL
OR tb_vlc_vehicle-vhvin IS INITIAL ).
ELSE.
****End of Insert***KACHAND****MBID****CM:0041379963****CKD Kit CHassis restrict
for ZVDU****

* If all fields are initial, write error in errtab, no global data


PERFORM write_error USING co_msg_022
co_zais_msg.
ENDIF."**Added by KACHAND**MBID**CM:0041379963**CKD Kit CHassis
restrict for ZVDU*** If not all fields are initial, move global data
* to ST_VLCSMOD structure
ELSE.
* move-corresponding tb_vlc_vehicle to st_vlcsmod."VMSUPGD
MOVE-CORRESPONDING tb_vlc_vehicle TO vlcactdata_item_lt."VMSUPGD
MOVE-CORRESPONDING tb_vlc_vehicle TO vlcactdata_cs."VMSUPGD
ENDIF. "TB_VLC_VEHICLE-VHVIN IS INITIAL
ELSE.
* move-corresponding tb_vlc_vehicle to st_vlcsmod. "VMSUPGD
MOVE-CORRESPONDING tb_vlc_vehicle TO vlcactdata_item_lt."VMSUPGD
MOVE-CORRESPONDING tb_vlc_vehicle TO vlcactdata_cs."VMSUPGD
ENDIF. "WF_MTART
ELSE.
* Write error in errtab, no data transmitted
PERFORM write_error USING co_msg_052
co_velo.
ENDIF. "SY-SUBRC EQ 0
ENDFORM. " CHECK_GLOBAL_TEMPLATE_DATA

*--Start of insertion By agarwaln(Mrunalini) for CM-1869 on 07-04-2003--


* Local requirement for DC Japan
* To trigger VMS actions based on the interface from the VPC
* Idoc ZVEHMAS02

*&---------------------------------------------------------------------*
*& Form get_idoc_data
*&---------------------------------------------------------------------*
* Update the corresponding fields that are required to be updated from
* ZVEHMAS02 Idoc during the execution of action being triggered.
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM get_idoc_data.
*** Begin of insert by UALAKUN CM-44882665 ON 09.01.2019
RANGES:lr_vehusg FOR vlcvehicle-zz_vehusg.
DATA:lt_para TYPE STANDARD TABLE OF /dcsea/zais_para,
ls_para TYPE /dcsea/zais_para,
ls_vehusg LIKE LINE OF lr_vehusg.
CONSTANTS:lc_mfus TYPE /dcsea/domval2 VALUE 'MFUS',
lc_zvrb TYPE /dcsea/parameter VALUE 'ZVRB',
lc_vhusg TYPE /dcsea/fieldname VALUE 'VHUSG'.
***End of insert by UALAKUN CM-44882665 ON 09.01.2019
*** Begin of Insert by REDDAMV for CM-0044882665 on 02.01.2019
DATA: lv_flag_44882665(1) TYPE c,
ls_vlcvehicle TYPE vlcvehicle,
lv_kvgr TYPE kvgr5. "Customer group
*** End of Insert by REDDAMV for CM-0044882665 on 02.01.2019
READ TABLE tb_vlc_vehicle INDEX 1.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING tb_vlc_vehicle TO vlcactdata_item_lt.
MOVE-CORRESPONDING tb_vlc_vehicle TO vlcactdata_cs.
***Start of insertion for CM-2034 by AGARWALN on 07/07/2003***
IF wf_aktion EQ co_znak.
MOVE wf_zz_cert_num1 TO vlcactdata_cs-zz_cert_num.
ENDIF.
***End of insertion for CM-2034 by AGARWALN on 07/07/2003***
* Begin of Insert by NBHAWSA for CM-0044882665 on 24.09.2018
CLEAR: lv_flag_44882665, ls_vlcvehicle, lv_kvgr.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = /dcsea/zfuso_if_constants=>gc_44882665
werks = tb_vlc_vehicle-werks
IMPORTING
active_flag = lv_flag_44882665.
IF lv_flag_44882665 IS NOT INITIAL AND
( wf_aktion EQ /dcsea/zfuso_if_constants=>gc_zvrb OR
wf_aktion EQ co_zdld ).
SELECT * FROM vlcvehicle INTO ls_vlcvehicle UP TO 1 ROWS
WHERE zz_commnos = tb_vlc_vehicle-zz_commnos
ORDER BY PRIMARY KEY.
ENDSELECT.
SELECT kvgr5 UP TO 1 ROWS FROM knvv
INTO lv_kvgr
WHERE kunnr EQ ls_vlcvehicle-kunnr
ORDER BY PRIMARY KEY.
ENDSELECT.
*** Begin of insert by UALAKUN CM-44882665 ON 09.01.2019
REFRESH lt_para.
SELECT * FROM /dcsea/zais_para
INTO TABLE lt_para
WHERE domval1 = ls_vlcvehicle-werks
AND domval2 = lc_mfus
AND param = lc_zvrb
AND fieldname = lc_vhusg ORDER BY PRIMARY KEY .
IF sy-subrc IS INITIAL.
LOOP AT lt_para INTO ls_para.
ls_vehusg-sign = 'I'.
ls_vehusg-option = 'EQ'.
ls_vehusg-low = ls_para-fieldval.
APPEND ls_vehusg TO lr_vehusg.
CLEAR ls_vehusg.
ENDLOOP.
ENDIF.
* IF lv_kvgr EQ '05' OR ls_vlcvehicle-zz_vehusg EQ 'FD'. " Begin of insert by
UALAKUN
"CM-0044882665 on 28.12.2018
*Following line replaced by NBHAWSA for CM-44882665 on 27.02.2019
* IF lv_kvgr EQ '05' OR ls_vlcvehicle-zz_vehusg IN lr_vehusg.
IF lv_kvgr EQ '05' OR ( ls_vlcvehicle-zz_vehusg IN lr_vehusg
AND lr_vehusg[] IS NOT INITIAL ).
* *** End of insert by UALAKUN CM-44882665 ON 09.01.2019
wf_aktion = /dcsea/zfuso_if_constants=>gc_zvrb.
MOVE lv_kvgr TO vlcactdata_cs-zz_cust_flag.
ELSE.
wf_aktion = co_zdld.
MOVE lv_kvgr TO vlcactdata_cs-zz_cust_flag.
ENDIF.
ENDIF.
* End of Insert by NBHAWSA for CM-0044882665 on 24.09.2018

ENDIF. "SY-SUBRC EQ 0
ENDFORM. " GET_IDOC_DATA

*--End of insertion By agarwaln(Mrunalini) for CM-1869 on 07-04-2003--

*&---------------------------------------------------------------------*
*& Form GET_VLCVEHICLE_DATA
*&---------------------------------------------------------------------*
* Get data from VLCVEHICLE table
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM get_vlcvehicle_data.

READ TABLE tb_vlc_vehicle INDEX 1.

* Check if ZZ_COMMNOS from IDoc is not initial


* For Vista Interface, either commission number or vin number will
* passed (CM-1410)

* ortegav 1/10/02 - commented out and replace statement below


* IF NOT TB_VLC_VEHICLE-ZZ_COMMNOS IS INITIAL OR
* NOT TB_VLC_VEHICLE-VHVIN IS INITIAL.
*
*
* IF TB_VLC_VEHICLE-ZZ_COMMNOS IS INITIAL.
** Get data from VLCVEHICLE based on VIN Number
* SELECT SINGLE * INTO HD_VLCVEHICLE
* FROM VLCVEHICLE
* WHERE VHVIN EQ TB_VLC_VEHICLE-VHVIN.
* ELSE.
** Get data from VLCVEHICLE based on Commission Number
* SELECT SINGLE * INTO HD_VLCVEHICLE
* FROM VLCVEHICLE
* WHERE ZZ_COMMNOS EQ TB_VLC_VEHICLE-ZZ_COMMNOS.
*
* ENDIF. "IF TB_VLC_VEHICLE-ZZ_COMMNOS IS INITIAL

*start of uncomment by ALAPATK for CM-2261 ver 2.0 on 12/04/2004


*Begin of insertion by TRIPATHIL for CM-10003589 v5.6T on 28/10/2009
*for BBDC
CLEAR wf_flag_cnb1.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_10003589
werks = tb_vlc_vehicle-werks
IMPORTING
active_flag = wf_flag_cnb1.
*End of insertion by TRIPATHIL for CM-10003589 v5.6T on 28/10/2009
IF NOT tb_vlc_vehicle-zz_commnos IS INITIAL OR "commented by ramakumm
"cm-2261 12/07/2003
NOT tb_vlc_vehicle-vhvin IS INITIAL OR
NOT tb_vlc_vehicle-vhcle IS INITIAL OR
NOT tb_vlc_vehicle-zz_endcu IS INITIAL OR
tb_vlc_vehicle-zz_quote NE 0
*end of uncomment by ALAPATK for CM-2261 ver 2.0 on 12/04/2004
*Begin of insertion by TRIPATHIL for CM-10003589 v5.6T on 28/10/2009
*for BBDC
OR ( NOT tb_vlc_vehicle-zz_prod_number IS INITIAL AND
NOT wf_flag_cnb1 IS INITIAL ).

IF NOT wf_flag_cnb1 IS INITIAL AND


idoc_contrl-rcvprn+0(8) = co_lsipt_cb.
*Message type is not being checked here because for BBDC ZZ_PROD_NUMBER
*will be present in all the structures for all message types present in
*LSIPT_CB interface.
SELECT SINGLE * INTO hd_vlcvehicle
FROM vlcvehicle
WHERE zz_prod_number EQ
tb_vlc_vehicle-zz_prod_number.
ELSE.
*End of insertion by TRIPATHIL for CM-10003589 v5.6T on 28/10/2009

*start of comment by ALAPATK for CM-2261 ver 2.0 on 12/04/2004


* if not tb_vlc_vehicle-zz_commnos is initial or
* not tb_vlc_vehicle-vhcle is initial or
* not tb_vlc_vehicle-zz_endcu is initial or
* tb_vlc_vehicle-zz_quote ne 0.
*end of comment by ALAPATK for CM-2261 ver 2.0 on 12/04/2004

IF NOT tb_vlc_vehicle-zz_commnos IS INITIAL.


* Get data from VLCVEHICLE based on Commission Number
*Begin of comment by anandd for Performance Tuning on 15/07/2004
* select single * into hd_vlcvehicle
* from vlcvehicle
* where zz_commnos eq tb_vlc_vehicle-zz_commnos.
*End of comment by anandd for Performance Tuning on 15/07/2004

*Begin of insert by anandd for Performance Tuning on 15/07/2004


SELECT SINGLE * INTO hd_vlcvehicle
FROM vlcvehicle
WHERE vhcex EQ tb_vlc_vehicle-zz_commnos.
*End of insert by anandd for Performance Tuning on 15/07/2004

* start of uncomment by ALAPATK for CM-2261 ver 2.0 on12/04/2004


ELSEIF NOT tb_vlc_vehicle-vhvin IS INITIAL."commented by ramakumm
"cm-2261 12/07/2003
* Get data from VLCVEHICLE based on VIN Number
SELECT SINGLE * INTO hd_vlcvehicle
FROM vlcvehicle
WHERE vhvin EQ tb_vlc_vehicle-vhvin.
* end of uncomment by ALAPATK for CM-2261 ver 2.0 on 12/04/2004

ELSEIF NOT tb_vlc_vehicle-vhcle IS INITIAL.

* Get data from VLCVEHICLE based on Vehicle Number


"HANA Code Remediation:Select Single not unique
" select single * into hd_vlcvehicle
" from vlcvehicle
" where vhcle eq tb_vlc_vehicle-vhcle.
SELECT * INTO hd_vlcvehicle
UP TO 1 ROWS FROM vlcvehicle
WHERE vhcle EQ tb_vlc_vehicle-vhcle ORDER BY PRIMARY KEY.
ENDSELECT.

ELSEIF tb_vlc_vehicle-zz_quote NE 0.

* Get data from VLCVEHICLE based on Quote Number (Kerridge DMS


* Interface)
SELECT SINGLE * INTO hd_vlcvehicle
FROM vlcvehicle
WHERE zz_quote EQ tb_vlc_vehicle-zz_quote.

ELSEIF NOT tb_vlc_vehicle-zz_endcu IS INITIAL.

* Get data from VLCVEHICLE based on Kerridge Stock Number


* (Kerridge DMS Interface)
"HANA Code Remediation:Select Single not unique
" select single * into hd_vlcvehicle
" from vlcvehicle
" where zz_endcu eq tb_vlc_vehicle-zz_endcu.
SELECT * INTO hd_vlcvehicle
UP TO 1 ROWS FROM vlcvehicle
WHERE zz_endcu EQ tb_vlc_vehicle-zz_endcu ORDER BY
PRIMARY KEY. ENDSELECT.

ENDIF. "IF NOT TB_VLC_VEHICLE-ZZ_COMMNOS IS INITIAL.

*Following line is inserted by TRIPATHIL for CM-10003589 v5.6T on


* 28/10/2009
ENDIF.

IF sy-subrc EQ 0.
* Get MTART and MATKL using VLCVEHICLE lmp
SELECT SINGLE * INTO hd_mara "lmp
FROM mara "lmp
WHERE matnr EQ hd_vlcvehicle-matnr. "lmp

IF sy-subrc EQ 0. "lmp
* Get Production Code from /DCSEA/ZAIS_PCOD using MARA lmp
"HANA Code Remediation:Select Single not unique
" select single prod_code
"lmp
" into wf_prod_code
"lmp
" from /dcsea/zais_pcod
"lmp
" where mtart eq hd_mara-mtart and
"lmp
" matkl eq hd_mara-matkl.
"lmp
SELECT prod_code "lmp
INTO wf_prod_code "lmp
UP TO 1 ROWS FROM /dcsea/zais_pcod
"lmp
WHERE mtart EQ hd_mara-mtart AND "lmp
matkl EQ hd_mara-matkl ORDER BY PRIMARY KEY. ENDSELECT.
"lmp

* IF SY-SUBRC EQ 0. "lmp
* Copy VLCVEHICLE to internal table

* IF WF_PROD_CODE NE 'P'. "lmp


* IF WF_VEHI NE 'PA'.
* MOVE-CORRESPONDING HD_VLCVEHICLE TO TB_VLC_VEHICLE. "lmp
* MODIFY TB_VLC_VEHICLE INDEX 1. "lmp
* ELSE. "lmp
* MOVE-CORRESPONDING HD_VLCVEHICLE TO TB_VLC_VEHICLE. "lmp
* MODIFY TB_VLC_VEHICLE INDEX 1. "lmp
** Filter for MITS-PAJERO "lmp
** IF NOT ( HD_VLCVEHICLE-VHVIN IS INITIAL ) AND "lmp
** NOT ( HD_VLCVEHICLE-ZZ_ENGINE_NUMBER IS INITIAL ). "lmp
** MOVE-CORRESPONDING HD_VLCVEHICLE TO TB_VLC_VEHICLE. "lmp
** MODIFY TB_VLC_VEHICLE INDEX 1. "lmp
** ELSE. "lmp
** Write error in errtab, vehicle was not found in VLCVehicle table "lmp
** PERFORM WRITE_ERROR USING CO_MSG_115 "lmp
** CO_ZAIS_MSG. "lmp
** ENDIF. "filter for mits-pajero "lmp
* ENDIF. "copy vlcvehicle to internal table lmp
* ELSE.
* Santosg 6/4/02
MOVE-CORRESPONDING hd_vlcvehicle TO tb_vlc_vehicle. "lmp
* Pass the Production Timestamp to production date field PDDATU
PERFORM populate_proddate USING hd_vlcvehicle-pdtsp.

MODIFY tb_vlc_vehicle INDEX 1.


* ENDIF. "sy-subrc eq 0 for prod_code "lmp
ENDIF. "sy-subrc eq 0 for mara "lmp
ELSE.
* Write error in errtab, vehicle was not found in VLCVehicle table
PERFORM write_error USING co_msg_089
co_velo.
ENDIF. "sy-subrc eq 0 for vlcvehicle
ELSE.
*Begin of insertion by TRIPATHIL for CM-10003589 v5.6T on 28/10/2009
*for BBDC
IF NOT wf_flag_cnb1 IS INITIAL AND
idoc_contrl-rcvprn+0(8) = co_lsipt_cb AND
tb_vlc_vehicle-zz_prod_number IS INITIAL.
*Message type is not being checked here because for BBDC ZZ_PROD_NUMBER
*will be present in all the structures for all message types present in
*LSIPT_CB interface.
* Write error in errtab, ZZ_PROD_NUMBER is initial
PERFORM write_error USING co_msg_018
co_zais_msg1.
ELSE.
*End of insertion by TRIPATHIL for CM-10003589 v5.6T on 28/10/2009
* Write error in errtab, ZZ_COMMNOS is initial
PERFORM write_error USING co_msg_027
co_zais_msg.
*Following line is inserted by TRIPATHIL for CM-10003589 v5.6T on *
* 28/10/2009
ENDIF.
ENDIF. "zz_commnos is initial

* Start of insertion - santosg - 16/06/2004 - fix on CM-2261


* Check if errors were encountered
PERFORM get_error_data.
* If no errors were encountered, check further for PARA table
IF ( error_records EQ 0 ).
PERFORM check_iface_ovp.
ENDIF.
* End of insertion - santosg - 16/06/2004 - fix on CM-2261

ENDFORM. " GET_VLCVEHICLE_DATA

*&---------------------------------------------------------------------*
*& Form FILL_SMOD_DATA
*&---------------------------------------------------------------------*
* Fill SMOD data
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM fill_smod_data.

* Fill in other fields in ST_VLCSMOD structure


PERFORM fill_vlcsmod_data.
* begin of delete . VMSUPGD
* call function '/DCSEA/ZAIS_VELO_SMOD_PREPARE'
* exporting
* vhcle = tb_vlc_vehicle-vhcle
* vlcsmod_st = st_vlcsmod
* tables
* vlch_actdata_lt = tb_vlch_actdata_lt.
* end of delete. VMSUPGD
ENDFORM. " FILL_SMOD_DATA

*&---------------------------------------------------------------------*
*& Form convert_into_timestamp
*&---------------------------------------------------------------------*
* Convert data into timestamp
*----------------------------------------------------------------------*
* -->P_DATE Date to be converted
* <--P_TIMESTAMP Converted timestamp
*----------------------------------------------------------------------*
FORM convert_into_timestamp USING p_date
p_time
CHANGING p_timestamp.

DATA wf_time_loc LIKE sy-uzeit.


IF p_date NE ''.
IF p_time EQ ''.
* wf_time_loc = sy-uzeit.
wf_time_loc = sy-timlo.
ELSE.
wf_time_loc = p_time.
ENDIF. " IF P_TIME EQ ''.

CALL FUNCTION 'VELO03_CONVERT_INTO_TIMESTAMP'


EXPORTING
datlo_iv = p_date
timlo_iv = wf_time_loc
tzone_iv = sy-zonlo
IMPORTING
timestamp_ev = p_timestamp.
ENDIF. " IF P_DATE NE ''.
ENDFORM. " convert_into_timestamp

*&---------------------------------------------------------------------*
*& Form FILL_VLCSMOD_DATA
*&---------------------------------------------------------------------*
* Fill in other fields in VLCSMOD structure
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM fill_vlcsmod_data.
* begin of delete for VMS Upgrade . "VMSUPGD
* st_vlcsmod-vguid = tb_vlc_vehicle-vguid.
* st_vlcsmod-vhcle = tb_vlc_vehicle-vhcle.
* st_vlcsmod-pddatu = tb_vlc_vehicle-pddatu.
* st_vlcsmod-pcount_u = tb_vlc_vehicle-pcount_u.
* st_vlcsmod-immatdate = tb_vlc_vehicle-immatdate.
*
** CM-1650; pascuar 07/15/2002
** If ZFOC/ZFSC and MBCV or ZRSQ and Colt or ZFVP and Pajero/Lancer
* if not st_vlcvehiclem-pddatu is initial.
* if wf_aktion eq co_zfoc OR
* wf_aktion eq co_zfsc OR
* wf_aktion eq co_zrsq OR
* wf_aktion eq co_zfvp OR
** CM-1646; pascuar 08/26/2002
* wf_aktion eq co_zvdu.
*
* move st_vlcvehiclem-pddatu to st_vlcsmod-pddatu.
* move st_vlcvehiclem-pdtime to wf_time.
*
* endif.
* endif.
*
** ortegav 1/29/02 - passED address number
* if wf_aktion eq co_zecu.
*
* st_vlcsmod-zz_dfendcu = wf_address_number.
*
* endif.
*
** For FDOK Interfacem, do not pass original value of PCOUNT, instead
** take value from the IDoc
* if wf_aktion ne co_zvdu.
*
* st_vlcsmod-pcount = tb_vlc_vehicle-pcount.
*
** Following line is commented by Anbu 20.11.2002
** st_vlcsmod-cstryear = tb_vlc_vehicle-cstryear.
*
** Following line is added by Anbu 20.11.2002
* st_vlcsmod-zcstryear = tb_vlc_vehicle-cstryear.
*
** Following line is commented by Anbu 20.11.2002
** st_vlcsmod-cstrmonth = tb_vlc_vehicle-cstrmonth.
*
** Following line is added by Anbu 20.11.2002
* st_vlcsmod-zcstrmonth = tb_vlc_vehicle-cstrmonth.
*
*
* endif.
*
** For AFAB Factory Confirmation Interface. If Factory Order not
*confirm
** action is triggered, update the ZZ_AMMEND_FLAG
* if wf_aktion eq co_zfon.
* st_vlcsmod-zz_ammend_flag = co_true.
* endif. " IF WF_AKTION EQ CO_ZFON
*
** For Colt Factory Confirmation Interface. If Factory Freeze action is
** triggered, copy the planned finishing date to promised date
* if wf_aktion eq co_zfsc.
* st_vlcsmod-zz_fpromdt = tb_vlc_vehicle-zz_plan_fin_date.
* endif. " IF WF_AKTION EQ
*CO_ZFON
*
** Santosg 4/17/02
** CM-1573 Local Date and Time for Interfaces
* if idoc_contrl-rcvlad eq co_zacarriel2 or
* idoc_contrl-rcvlad eq co_zacarriel3 or
* idoc_contrl-rcvlad eq co_zacarriel4.
*
** Use IMS TimeStamp date to pass the Local Date and Time from the
** Control Record Field Serial
* clear: wf_date,
* wf_time.
*
** comment-out and replaced by pascuar 04/28/2002
** WF_DATE = IDOC_CONTRL-SERIAL+0(8).
** WF_TIME = IDOC_CONTRL-SERIAL+8(6).
*
** Note that Serial Field format is YYMMDDHHMMSS, where the millenium
** and century digits of the date are missing
* wf_date = idoc_contrl-serial+0(6).
* wf_time = idoc_contrl-serial+6(6).
*
** Step 1 : Add current millenium and century digits to Serial Date
* concatenate sy-datum+0(2) wf_date into wf_date.
** Step 2 : Get the timezone assigned to the plant
** Step 2.1: Get the address number of the plant
* select single * from t001w
* where werks eq hd_vlcvehicle-werks.
*
* if sy-subrc eq 0.
** Step 2.2: Get the timezone based on the address number of the plant
* select single * from adrc
* where addrnumber eq t001w-adrnr.
* endif. " IF SY-SUBRC EQ 0. (T001W)
*
* call function 'VELO03_CONVERT_INTO_TIMESTAMP'
* exporting
* datlo_iv = wf_date
* timlo_iv = wf_time
** TZONE_IV = SY-ZONLO
* tzone_iv = adrc-time_zone
* importing
* timestamp_ev = st_vlcsmod-zz_ims_trans.
*
* st_vlcsmod-zz_online = co_true.
*
* endif. " IF IDOC_CONTRL-RCVLAD EQ CO_ZACARRIEL1 OR

*Begin of insert KAMIRES for CM-0057094535 on 27/04/2021


IF wf_mtart IS INITIAL.
wf_mtart = /dcsea/zais_kbv_cl_integration=>get_material_type( tb_vlc_vehicle-
matnr ).
ENDIF.
DATA(wf_0057094535_flag) = abap_false.
wf_0057094535_flag = /dcsea/zais_kbv_cl_integration=>check_active_cm(
cm_number = '0057094535'
werks = tb_vlc_vehicle-werks
filter = CONV #( wf_mtart ) ).
*End of insert KAMIRES for CM-0057094535 on 27/04/2021

*Following line inserted by NHYNIAPK for CM-14443875 on 08.09.2011


IF NOT ( wf_aktion EQ co_zvpn OR wf_aktion EQ co_zfsn ).
* begin of insert for VMSUPGD
READ TABLE tb_vlc_vehicle INDEX 1.
vlcactdata_item_lt-vguid = tb_vlc_vehicle-vguid.
vlcactdata_item_lt-vhcle = tb_vlc_vehicle-vhcle.
vlcactdata_cs-pddatu = tb_vlc_vehicle-pddatu.
vlcactdata_cs-pcount_u = tb_vlc_vehicle-pcount_u.
*Begin of change KUMRABI CM-0041447471 on 30.01.2018
IF tb_vlc_vehicle-immatdate IS NOT INITIAL.
vlcactdata_cs-immatdate = tb_vlc_vehicle-immatdate.
ENDIF.
*End of change KUMRABI CM-0041447471 on 30.01.2018
* CM-1650; pascuar 07/15/2002
* If ZFOC/ZFSC and MBCV or ZRSQ and Colt or ZFVP and Pajero/Lancer
IF NOT st_vlcvehiclem-pddatu IS INITIAL.
IF wf_aktion EQ co_zfoc OR
wf_aktion EQ co_zfsc OR
wf_aktion EQ co_zrsq OR
wf_aktion EQ co_zfvp OR
* CM-1646; pascuar 08/26/2002
wf_aktion EQ co_zvdu OR
* CM-2225; ramakumm 12/11/2003
wf_aktion EQ co_zfdc.

MOVE st_vlcvehiclem-pddatu TO vlcactdata_cs-pddatu.


MOVE st_vlcvehiclem-pddatu TO vlcactdata_item_lt-pddatu.
MOVE st_vlcvehiclem-pdtime TO wf_time.
* Begin of insert by KAURN for CM2891 (2225 V1.4) 16/03/2005
MOVE st_vlcvehiclem-pddatu(4) TO vlcactdata_cs-zcstryear.
MOVE st_vlcvehiclem-pddatu+4(2) TO vlcactdata_cs-zcstrmonth.
MOVE st_vlcvehiclem-pddatu+6(2) TO vlcactdata_cs-zcstrday.
* End of insert by KAURN for CM2891 (2225 V1.4) 16/03/2005
ENDIF.
ENDIF.

* ortegav 1/29/02 - passED address number


IF wf_aktion EQ co_zecu.
* changed for VMS Upgrade to accomodate new functionality of
* business partners
* st_vlcsmod-zz_dfendcu = wf_address_number."VMSUPGD
vlcactdata_cs-endcu = gv_bupa."VMSUPGD
* Begin of insert by PERIASAS ON 10/03/2004 FOR CPMS # 1588364
CALL FUNCTION 'VELO03_CONVERT_FROM_TIMESTAMP'
EXPORTING
timestamp_iv = vlcactdata_cs-zz_retadt
tzone_iv = sy-zonlo
IMPORTING
datlo_ev = vlcactdata_cs-vdatu.
* End of insert by PERIASAS ON 10/03/2004 FOR CPMS # 1588364
ENDIF.
* Begin of insertion by KAUKUMA for CM-26388908 on 20.10.2014
DATA : lv_flag_cm TYPE c,
lv_identifier TYPE c,
wf_year(4) TYPE c.
CONSTANTS : co_26388908(8) TYPE c VALUE '26388908',
co_gsfdok_kr(9) TYPE c VALUE 'GSFDOK_KR'.
CLEAR lv_flag_cm.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_26388908
werks = st_vlcvehiclem-werks
IMPORTING
active_flag = lv_flag_cm.
IF NOT lv_flag_cm IS INITIAL.
IF idoc_contrl-rcvprn+0(9) EQ co_gsfdok_kr AND
idoc_contrl-mestyp EQ co_mestyp_ztech.
IF st_vlcvehiclem-mmctr EQ 'KRL5'.
lv_identifier = st_vlcvehiclea-vhvin+9(1).
CLEAR wf_year.
SELECT SINGLE chrysler_year FROM /dcsea/zais_mdyr INTO wf_year
WHERE identifier EQ lv_identifier.
IF sy-subrc EQ 0.
vlcactdata_cs-zz_chrysler_year = wf_year.
vlcactdata_item_lt-zz_chrysler_year = wf_year.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
* End of insertion by KAUKUMA for CM-26388908 on 20.10.2014
* For FDOK Interfacem, do not pass original value of PCOUNT, instead
* take value from the IDoc
IF wf_aktion NE co_zvdu.

vlcactdata_cs-pcount = tb_vlc_vehicle-pcount.

* Following line is commented by Anbu 20.11.2002


* st_vlcsmod-cstryear = tb_vlc_vehicle-cstryear.

*Following line added by KAURN for CM2891 (2225 V1.4) 16/03/2005


IF wf_aktion NE co_zfdc AND
wf_aktion NE co_zfsc AND
wf_aktion NE co_zfvp.
* Following line is added by Anbu 20.11.2002
vlcactdata_cs-zcstryear = tb_vlc_vehicle-zcstryear.

* Following line is commented by Anbu 20.11.2002


* st_vlcsmod-cstrmonth = tb_vlc_vehicle-cstrmonth.

* Following line is added by Anbu 20.11.2002


vlcactdata_cs-zcstrmonth = tb_vlc_vehicle-zcstrmonth.
*Following line added by KAURN for CM2891 (2225 V1.4) 16/03/2005
ENDIF.
ENDIF.

* For AFAB Factory Confirmation Interface. If Factory Order not confirm


* action is triggered, update the ZZ_AMMEND_FLAG
IF wf_aktion EQ co_zfon.
vlcactdata_cs-zz_ammend_flag = co_true.
ENDIF. " IF WF_AKTION EQ CO_ZFON

* For Colt Factory Confirmation Interface. If Factory Freeze action is


* triggered, copy the planned finishing date to promised date
IF wf_aktion EQ co_zfsc.
vlcactdata_item_lt-zz_fpromdt = tb_vlc_vehicle-zz_plan_fin_date.
ENDIF. " IF WF_AKTION EQ CO_ZFON

* Santosg 4/17/02
* CM-1573 Local Date and Time for Interfaces
* Begin of Modification MARAMS CM-1755 09/12/02
* if idoc_contrl-rcvlad eq co_zacarriel2 or
* idoc_contrl-rcvlad eq co_zacarriel3 or
* idoc_contrl-rcvlad eq co_zacarriel4.
IF wf_carrier_iface_ind = co_true. "Added
* End of Modification MARAMS CM-1755 09/12/02

* Use IMS TimeStamp date to pass the Local Date and Time from the
* Control Record Field Serial
CLEAR: wf_date,
wf_time.

* comment-out and replaced by pascuar 04/28/2002


* WF_DATE = IDOC_CONTRL-SERIAL+0(8).
* WF_TIME = IDOC_CONTRL-SERIAL+8(6).

* Note that Serial Field format is YYMMDDHHMMSS, where the millenium


* and century digits of the date are missing
wf_date = idoc_contrl-serial+0(6).
wf_time = idoc_contrl-serial+6(6).
* Step 1 : Add current millenium and century digits to Serial Date
CONCATENATE sy-datum+0(2) wf_date INTO wf_date.
* Step 2 : Get the timezone assigned to the plant
* Step 2.1: Get the address number of the plant
SELECT SINGLE * FROM t001w
WHERE werks EQ hd_vlcvehicle-werks.

IF sy-subrc EQ 0.
* Step 2.2: Get the timezone based on the address number of the plant
"HANA Code Remediation:Select Single not unique
" select single * from adrc
" where addrnumber eq t001w-adrnr.
SELECT * UP TO 1 ROWS FROM adrc
WHERE addrnumber EQ t001w-adrnr ORDER BY PRIMARY KEY.
ENDSELECT.
ENDIF. " IF SY-SUBRC EQ 0. (T001W)

CALL FUNCTION 'VELO03_CONVERT_INTO_TIMESTAMP'


EXPORTING
datlo_iv = wf_date
timlo_iv = wf_time
* TZONE_IV = SY-ZONLO
tzone_iv = adrc-time_zone
IMPORTING
timestamp_ev = vlcactdata_cs-zz_ims_trans.

vlcactdata_item_lt-zz_online = co_true.
vlcactdata_cs-zz_online = co_true.
ENDIF. " IF IDOC_CONTRL-RCVLAD EQ CO_ZACARRIEL1 OR

*Begin of insert KAMIRES for CM-0057094535 on 27/04/2021


IF NOT wf_0057094535_flag IS INITIAL.
READ TABLE vlcactdata_item_lt
TRANSPORTING NO FIELDS WITH KEY vguid = tb_vlc_vehicle-vguid.
IF sy-subrc EQ 0.
MODIFY vlcactdata_item_lt INDEX sy-tabix.
ELSE.
APPEND vlcactdata_item_lt.
ENDIF.
ELSE.
*End of insert KAMIRES for CM-0057094535 on 27/04/2021
APPEND vlcactdata_item_lt.
ENDIF. "KAMIRES CM-0057094535 27/04/2021
MOVE vlcactdata_item_lt[] TO vlcactdata_cs-actdata_item[].
* end of insert. "VMSUPGD
*Begin of insertion by TRIPATHIL for CM-10003589 v5.6T on 28/10/2009
*for BBDC
CLEAR wf_flag_cnb1.
* CM Activation Logic.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_10003589
werks = st_vlcvehiclem-werks
* filter = co_LSIPT_CB
IMPORTING
active_flag = wf_flag_cnb1.
*End of insertion by TRIPATHIL for CM-10003589 v5.6T on 28/10/2009
* Begin of insertion by JACOBDI for CM-7844583 V5.3T on 14.10.2008
* For FJDA
* Partner Profile: CFIPT_L1 & Message Type: ZTECH_DATA
*Following line is change by TRIPATHIL for CM-10003589 on 28/10/2009
* IF idoc_contrl-rcvprn+0(8) = co_cfiptl1
IF ( idoc_contrl-rcvprn+0(8) = co_cfiptl1
AND idoc_contrl-mestyp = co_mestyp_ztech
*Begin of insertion by TRIPATHIL for CM-10003589 v5.6T on 28/10/2009
*for BBDC
) OR ( idoc_contrl-rcvprn+0(8) = co_lsipt_cb
AND idoc_contrl-mestyp = co_mestyp_ztech
AND NOT wf_flag_cnb1 IS INITIAL ).
*End of insertion by TRIPATHIL for CM-10003589 v5.6T on 28/10/2009
* Action: ZVDU
IF wf_aktion = co_zvdu.
vlcactdata_cs-vhvin = st_vlcvehiclea-vhvin.
ENDIF.
ENDIF.
* End of insertion by JACOBDI for CM-7844583 V5.3T on 14.10.2008

* Begin of insertion by KHETERT for T# 1924179 / CM-2531 on 15/07/2004


.
IF idoc_contrl-rcvprn+0(10) = co_zamlninsl1
*Begin of Insert by BHORCHIS for CM-6854552 on 24.03.2008.
* Another check for the new partner system and message type
* corresponding to 'ZAMLNINSL1' is required.
* This check is needed as a result of migration to XI
OR ( idoc_contrl-rcvprn+0(10) = co_lsmerln_za "LSMERLN_ZA
AND idoc_contrl-mestyp = co_mestyp_zmer ) "ZMER
*End of Insert by BHORCHIS for CM-6854552 on 24.03.2008.
AND ( wf_aktion = co_zvha OR
wf_aktion = co_zvna OR
wf_aktion = co_zins OR
wf_aktion = co_zinu OR
*Following line inserted by KUMARSU for CM-2531 on 10/12/2004
wf_aktion = co_zchs ) .

* Use IMS TimeStamp date to pass the Local Date and Time from the
* Control Record Field Serial
CLEAR: wf_date,
wf_time.

wf_date = idoc_contrl-serial+0(8).
wf_time = idoc_contrl-serial+8(4).

* Step 1 : Get the timezone assigned to the plant

* Step 1.1 : Get the address number of the plant


SELECT SINGLE * FROM t001w
WHERE werks EQ hd_vlcvehicle-werks.

IF sy-subrc EQ 0.

* Step 1.2: Get the timezone based on the address number of the plant
"HANA Code Remediation:Select Single not unique
" select single * from adrc
" where addrnumber eq t001w-adrnr.
SELECT * UP TO 1 ROWS FROM adrc
WHERE addrnumber EQ t001w-adrnr ORDER BY PRIMARY KEY.
ENDSELECT.
IF sy-subrc EQ 0.
* Step 2: Change to Timestamp
CALL FUNCTION 'VELO03_CONVERT_INTO_TIMESTAMP'
EXPORTING
datlo_iv = wf_date
timlo_iv = wf_time
* TZONE_IV = SY-ZONLO
tzone_iv = adrc-time_zone
IMPORTING
timestamp_ev = vlcactdata_cs-zz_ims_trans.
ENDIF. " IF SY-SUBRC EQ 0. (adrc)

ENDIF. " IF SY-SUBRC EQ 0. (T001W)

ENDIF. " IF IDOC_CONTRL-RCVLAD EQ CO_ZAMLNINSL1


" OR (IDOC_CONTRL-RCVLAD EQ CO_LSMERLN_ZA
" AND IDOC_CONTRL-MESTYP EQ CO_MESTYP_ZMER)

* append vlcactdata_item_lt.
* move vlcactdata_item_lt[] to vlcactdata_cs-actdata_item[].

* End of insertion by KHETERT for T# 1924179 / CM-2531 on 15/07/2004

* begin of insert by KALLIANM for CM-2564 on 21.06.2004

IF wf_aktion EQ co_zaec.
vlcactdata_cs-endcu = gv_partner.
vlcactdata_cs-kunnr = st_vlcvehiclem-kunnr.
vlcactdata_cs-zz_vehusg = st_vlcvehiclec-/dcsea/zz_vehusg.
vlcactdata_cs-bstnk = st_vlcvehiclec-/dcsea/zz_bstnk.
* ship-to-party and sold-to-party should be the same as kunnr
* only in the case of this partner type

IF idoc_contrl-rcvprn+0(10) = co_zaltnaecl1
*Begin of Insert by BHORCHIS for CM-6854552 on 24.03.2008
* Another check for the new partner system and message type
* corresponding to 'ZALTNAECL1 ' is required as a result of
* migration to XI.
OR ( idoc_contrl-rcvprn+0(10) = co_lsccars_za "LSCCARS_ZA
AND idoc_contrl-mestyp = co_mestyp_znaec ). "ZNAEC
*End of Insert by BHORCHIS for CM-6854552 on 24.03.2008.
vlcactdata_cs-kunwe = st_vlcvehiclem-kunnr.
vlcactdata_cs-zz_kuwev = st_vlcvehiclem-kunnr.
ENDIF.
ENDIF.

* end of insert by KALLIANM for CM-2564 on 21.06.2004

* Begin of insert by TALESRAH for CM-7860218 on 25/09/2008.


* For PP LSTRACO_MX and Message Type ZLCTN_UPD.
IF ( idoc_contrl-rcvprn+0(10) = 'LSTRACO_MX'
AND idoc_contrl-mestyp = co_mestyp_zlctn ).
* For actions ZVIT/ZVHC/ZDLD.
IF wf_aktion EQ co_zvit
OR wf_aktion EQ co_zvhc
OR wf_aktion EQ co_zdld.
* Pushing the location to vlcactdata_cs.
vlcactdata_cs-loctn = wf_loctn.
ENDIF.
ENDIF.
* End of insert by TALESRAH for CM-7860218 on 25/09/2008.

* Begin of insert by MITTALP for CM-8139459 on 29/12/2008.


* For PP CFCARR_L1 and Message Type ZVEH_TRANSP.
* Begin of Change by SUSIE for CM-10020774 on 18.11.2009
* For PP-LSCARYR_CB and Message Type ZVEH_TRANSP (BBDC)
* IF ( idoc_contrl-rcvprn+0(9) = co_cfcarr_l1
* AND idoc_contrl-mestyp = co_mestyp_zveh ).
IF ( ( ( idoc_contrl-rcvprn+0(9) = co_cfcarr_l1 ) OR (
idoc_contrl-rcvprn+0(9) = co_lscaryr_cb ) )
AND ( idoc_contrl-mestyp = co_mestyp_zveh ) ).
* End of Change by SUSIE for CM-10020774 on 18.11.2009
* For actions ZVIT/ZVHC/ZDLD.
IF wf_aktion EQ co_zvit
OR wf_aktion EQ co_zvhc
OR wf_aktion EQ co_zdld.
* Pushing the location to vlcactdata_cs.
vlcactdata_cs-vhvin = st_vlcvehiclea-vhvin.
ENDIF.
ENDIF.
* End of insert by MITTALP for CM-8139459 on 29/12/2008.
*Begin of insertion by NHYNIAPK for CM-14443875 on 08.09.2011
ENDIF.
CLEAR wf_flag.
* CM Activation Logic.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_14443875
werks = tb_vlc_vehicle-werks
IMPORTING
active_flag = wf_flag.

*Begin of insert KAMIRES for CM-0057183202 on 05/05/2021


IF NOT wf_0057094535_flag IS INITIAL.
SELECT fieldval
INTO @DATA(lv_rcvprn)
FROM /dcsea/zais_para
UP TO 1 ROWS
WHERE domval1 = @tb_vlc_vehicle-werks
AND domval2 = @wf_mtart
AND param = 'UPDATE_GO_ORD_VER'
AND fieldname = @idoc_contrl-rcvprn
AND fieldop = @/dcsea/zppm_if_constants=>gc_eq
ORDER BY PRIMARY KEY.
ENDSELECT.
IF sy-subrc <> 0.
CLEAR: lv_rcvprn.
ENDIF.
ENDIF.
*End of insert KAMIRES for CM-0057183202 on 05/05/2021

IF NOT wf_flag IS INITIAL.


* If SPARTE is 5 OR 6 OR 7 OR 8
IF wf_prod_code EQ co_5 OR
* Following line is inserted by JAGANNAP for CM-17656486 on 14.12.2012
wf_prod_code EQ co_1 OR
wf_prod_code EQ co_6 OR
wf_prod_code EQ co_7 OR
wf_prod_code EQ co_8.
*Following line modifyed by Simon for CM-17656486 on 23.08.2012 16:16:44
* IF idoc_contrl-rcvprn EQ co_gsafab_ca.
IF idoc_contrl-rcvprn EQ co_gsafab_ca OR idoc_contrl-rcvprn EQ
co_gsafab_mx OR
* Begin of change by AJAYARA for CM-20904800 on 12.06.2013
* idoc_contrl-rcvprn EQ co_gsafab_au or idoc_contrl-rcvprn EQ
co_gsafab_my or
* idoc_contrl-rcvprn EQ co_gsafab_cn or idoc_contrl-rcvprn EQ
co_gsafab_sg or
idoc_contrl-rcvprn EQ co_gsafab_au OR idoc_contrl-rcvprn EQ
co_gsafab_cn OR
* End of change by AJAYARA for CM-20904800 on 12.06.2013
idoc_contrl-rcvprn EQ co_gsafab_hk OR idoc_contrl-rcvprn EQ
co_gsafab_th OR
idoc_contrl-rcvprn EQ co_gsafab_jp OR idoc_contrl-rcvprn EQ
co_gsafab_tw OR
idoc_contrl-rcvprn EQ co_gsafab_kr OR idoc_contrl-rcvprn EQ
co_gsafab_za OR
idoc_contrl-rcvprn EQ co_gsafab_nz" KNAGADI: 29.09.2015:30243767:MBNZ
Roll out
OR NOT lv_rcvprn IS INITIAL. "Ins KAMIRES CM-0057183202 05/05/2021
IF wf_aktion EQ co_focn OR
wf_aktion EQ co_zfvp OR
wf_aktion EQ co_zfsc OR
wf_aktion EQ co_zfsn OR
wf_aktion EQ co_zvpn.
IF NOT st_vlcvehicleb-/dcsea/zz_ammend_flag IS INITIAL.
MOVE st_vlcvehicleb-/dcsea/zz_ammend_flag TO
vlcactdata_cs-zz_ammend_flag.
MOVE st_vlcvehicleb-/dcsea/zz_ammend_flag TO
vlcactdata_item_lt-zz_ammend_flag.
ENDIF.
IF NOT st_vlcvehicled-/dcsea/zz_go_ord_version IS INITIAL.
MOVE st_vlcvehicled-/dcsea/zz_go_ord_version TO
vlcactdata_cs-zz_go_ord_ver.
MOVE st_vlcvehicled-/dcsea/zz_go_ord_version TO
vlcactdata_item_lt-zz_go_ord_ver.
ENDIF.
*Begin of insert KAMIRES for CM-0057094535 on 27/04/2021
IF NOT wf_0057094535_flag IS INITIAL.
READ TABLE vlcactdata_item_lt
TRANSPORTING NO FIELDS WITH KEY vguid = tb_vlc_vehicle-vguid.
IF sy-subrc EQ 0.
MODIFY vlcactdata_item_lt INDEX sy-tabix.
ELSE.
APPEND vlcactdata_item_lt.
ENDIF.
ELSE.
*End of insert KAMIRES for CM-0057094535 on 27/04/2021
APPEND vlcactdata_item_lt.
ENDIF. "KAMIRES for CM-0057094535 on 27/04/2021
MOVE vlcactdata_item_lt[] TO vlcactdata_cs-actdata_item[].
ENDIF.
*Begin of insert KAMIRES for CM-0057094535 on 27/04/2021
IF wf_aktion EQ co_zfon AND NOT wf_0057094535_flag IS INITIAL.
*Begin of insert KAMIRES for CM-0057463708 01/06/2021
IF NOT st_vlcvehicleb-/dcsea/zz_ammend_flag IS INITIAL.
MOVE st_vlcvehicleb-/dcsea/zz_ammend_flag TO
vlcactdata_cs-zz_ammend_flag.
MOVE st_vlcvehicleb-/dcsea/zz_ammend_flag TO
vlcactdata_item_lt-zz_ammend_flag.
ENDIF.
*End of insert KAMIRES for CM-0057463708 01/06/2021
IF NOT st_vlcvehicled-/dcsea/zz_go_ord_version IS INITIAL.
MOVE st_vlcvehicled-/dcsea/zz_go_ord_version TO
vlcactdata_cs-zz_go_ord_ver.
MOVE st_vlcvehicled-/dcsea/zz_go_ord_version TO
vlcactdata_item_lt-zz_go_ord_ver.
ENDIF.
READ TABLE vlcactdata_item_lt
TRANSPORTING NO FIELDS WITH KEY vguid = tb_vlc_vehicle-vguid.
IF sy-subrc EQ 0.
MODIFY vlcactdata_item_lt INDEX sy-tabix.
ELSE.
APPEND vlcactdata_item_lt.
ENDIF.
MOVE vlcactdata_item_lt[] TO vlcactdata_cs-actdata_item[].
ENDIF.
*End of insert KAMIRES for CM-0057094535 on 27/04/2021
ENDIF.
ENDIF.
ENDIF.

*End of insertion by NHYNIAPK for CM-14443875 on 08.09.2011


* Begin of insertion by QIANHOU for CM-17080876 on 11.06.2012
CLEAR wf_flag.
* CM Activation Logic.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_17080876
werks = tb_vlc_vehicle-werks
IMPORTING
active_flag = wf_flag.

IF NOT wf_flag IS INITIAL.


IF idoc_contrl-rcvprn+0(7) EQ co_gsafab AND idoc_contrl-mestyp EQ
co_zfactord_trns.
IF wf_aktion EQ co_focn OR
wf_aktion EQ co_zfon OR
wf_aktion EQ co_fscn OR
wf_aktion EQ co_fsnn OR
wf_aktion EQ co_zfvp OR
wf_aktion EQ co_zvpn.
vlcactdata_cs-zz_ammend_flag = co_x.
vlcactdata_item_lt-zz_ammend_flag = co_x.
ENDIF.
ENDIF.
*Begin of insert KAMIRES for CM-0057094535 on 27/04/2021
IF NOT wf_0057094535_flag IS INITIAL.
READ TABLE vlcactdata_item_lt
TRANSPORTING NO FIELDS WITH KEY vguid = tb_vlc_vehicle-vguid.
IF sy-subrc EQ 0.
MODIFY vlcactdata_item_lt INDEX sy-tabix.
ELSE.
APPEND vlcactdata_item_lt.
ENDIF.
ELSE.
*End of insert KAMIRES for CM-0057094535 on 27/04/2021
APPEND vlcactdata_item_lt.
ENDIF. "Ins KAMIRES CM-0057094535 27/04/2021
MOVE vlcactdata_item_lt[] TO vlcactdata_cs-actdata_item[].
ENDIF.
* End of insertion by QIANHOU for CM-17080876 on 11.06.2012
* Begin of insertion by Ranilla for CM-26480805 on 06.04.2015
CLEAR wf_flag.
* CM Activation Logic.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = '26480805'
werks = tb_vlc_vehicle-werks
IMPORTING
active_flag = wf_flag.

IF NOT wf_flag IS INITIAL.


IF idoc_contrl-rcvprn EQ co_gskedms_th AND idoc_contrl-mestyp EQ co_zgen.
IF wf_aktion EQ co_zcda.
DATA : lv_tzone1 TYPE ttzz-tzone.

CONVERT DATE st_vlcvehicled-/dcsea/zz_incorder_date


TIME co_tim INTO TIME STAMP vlcactdata_cs-zz_incordt
TIME ZONE lv_tzone1.
CONVERT DATE st_vlcvehicled-/dcsea/zz_incorder_date
TIME co_tim INTO TIME STAMP vlcactdata_item_lt-zz_incordt
TIME ZONE lv_tzone1.
vlcactdata_cs-endcu = gv_bupa.
vlcactdata_item_lt-endcu = gv_bupa.
ENDIF.
ENDIF.
APPEND vlcactdata_item_lt.
MOVE vlcactdata_item_lt[] TO vlcactdata_cs-actdata_item[].
ENDIF.
* End of insertion by Ranilla for CM-26480805 on 06.04.2015
ENDFORM. " FILL_VLCSMOD_DATA

*&---------------------------------------------------------------------*
*& Form GET_GLOBAL_TEMPLATE_DATA_SHIP
*&---------------------------------------------------------------------*
* This subroutine is specific to the shipping interface.
* It checks if the global template data for vehicle exists.
* If global data exists, move data to ST_VLCSMOD structure.
* Else write error in errtab.
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM get_global_template_data_ship.

READ TABLE tb_vlc_vehicle INDEX 1.


IF sy-subrc EQ 0.
* Check if at least one of the fields is initial
IF
( tb_vlc_vehicle-zz_vessel_name IS INITIAL ) OR
( tb_vlc_vehicle-zz_voyage_number IS INITIAL ) OR
( tb_vlc_vehicle-zz_bill_of_lad IS INITIAL ) OR
( tb_vlc_vehicle-zz_etd IS INITIAL ) OR
( tb_vlc_vehicle-zz_eta IS INITIAL ) .

* Write error in errtab, data not complete


PERFORM write_error USING co_msg_028
co_zais_msg.

* Move global data to ST_VLCSMOD structure


ELSE.
* move-corresponding tb_vlc_vehicle to st_vlcsmod." VMSUPGD
MOVE-CORRESPONDING tb_vlc_vehicle TO vlcactdata_cs."VMSUPGD
ENDIF.
ELSE.
* Write error in errtab, no data transmitted
PERFORM write_error USING co_msg_052
co_velo.
ENDIF.

ENDFORM. " GET_GLOBAL_TEMPLATE_DATA_SHIP


*&---------------------------------------------------------------------*
*& Form CHECK_ZZ_FIELDS_IN_VLCVEHICLE
*&---------------------------------------------------------------------*
* Check if the following fields in TB_VLC_VEHICLE have data:
* ZZ_VESSEL_NAME, ZZ_VOYAGE_NUMBER, ZZ_BILL_OF_LAD,
* ZZ_ETD, and ZZ_ETA
*----------------------------------------------------------------------*
* --> p1 None
* <-- p2 None
*----------------------------------------------------------------------*
FORM check_zz_fields_in_vlcvehicle.
IF (
( tb_vlc_vehicle-zz_vessel_name IS INITIAL ) AND
( tb_vlc_vehicle-zz_voyage_number IS INITIAL ) AND
( tb_vlc_vehicle-zz_bill_of_lad IS INITIAL ) AND
( tb_vlc_vehicle-zz_etd IS INITIAL ) AND
( tb_vlc_vehicle-zz_eta IS INITIAL ) ).
flag_zshm_action = 'X'.
ENDIF.
ENDFORM. " CHECK_ZZ_FIELDS_IN_VLCVEHICLE
*&---------------------------------------------------------------------*
*& Form APPEND_DATA_ZVLCVEHICLEC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM append_data_zvlcvehiclec.
* CD Changer Serial Number
MOVE st_vlcvehiclec-/dcsea/zz_cd_changer_num
TO st_vlcvehicle-zz_cd_change_num.

* Burglar Alarm
MOVE st_vlcvehiclec-/dcsea/zz_burglar_alm
TO st_vlcvehicle-zz_burglar_alm.

* Battery
MOVE st_vlcvehiclec-/dcsea/zz_battery
TO st_vlcvehicle-zz_battery.
* Type Plate Data
MOVE st_vlcvehiclec-/dcsea/zz_typ_plt_data
TO st_vlcvehicle-zz_typ_plt_data.

* Type Plate Weight Details


MOVE st_vlcvehiclec-/dcsea/zz_typ_plt_wt
TO st_vlcvehicle-zz_typ_plt_wt.

* BBA Text Counter 1 Line 1


MOVE st_vlcvehiclec-/dcsea/zz_bbatx11
TO st_vlcvehicle-zz_bbatx11.

* BBA Text Counter 1 Line 2


MOVE st_vlcvehiclec-/dcsea/zz_bbatx12
TO st_vlcvehicle-zz_bbatx12.

* BBA Text Counter 1 Line 3


MOVE st_vlcvehiclec-/dcsea/zz_bbatx13
TO st_vlcvehicle-zz_bbatx13.

* BBA Text Counter 2 Line 1


MOVE st_vlcvehiclec-/dcsea/zz_bbatx21
TO st_vlcvehicle-zz_bbatx21.

* BBA Text Counter 2 Line 2


MOVE st_vlcvehiclec-/dcsea/zz_bbatx22
TO st_vlcvehicle-zz_bbatx22.

* BBA Text Counter 2 Line 3


MOVE st_vlcvehiclec-/dcsea/zz_bbatx23
TO st_vlcvehicle-zz_bbatx23.

* Salesperson
MOVE st_vlcvehiclec-/dcsea/zz_sales
TO st_vlcvehicle-zz_sales.

* Vehicle Usage
MOVE st_vlcvehiclec-/dcsea/zz_vehusg
TO st_vlcvehicle-zz_vehusg.

* Ship-to-party
MOVE st_vlcvehiclec-/dcsea/zz_kuwev
TO st_vlcvehicle-zz_kuwev.

* Customer Purchase Order Number


MOVE st_vlcvehiclec-/dcsea/zz_bstnk
TO st_vlcvehicle-zz_bstnk.

* Quote Number
MOVE st_vlcvehiclec-/dcsea/zz_quote
TO st_vlcvehicle-zz_quote.

* End Customer Number


MOVE st_vlcvehiclec-/dcsea/zz_endcu
TO st_vlcvehicle-zz_endcu.

* End Customer Name


MOVE st_vlcvehiclec-/dcsea/zz_endcname
TO st_vlcvehicle-zz_endcnam.
* CRM Reference
MOVE st_vlcvehiclec-/dcsea/zz_crmref
TO st_vlcvehicle-zz_crmref.

* License District
MOVE st_vlcvehiclec-/dcsea/zz_lcndist
TO st_vlcvehicle-zz_lcndist.

* Model Type
MOVE st_vlcvehiclec-/dcsea/zz_cv_model_type
TO st_vlcvehicle-zz_cv_model_type.

* Nett Engine Output


MOVE st_vlcvehiclec-/dcsea/zz_cv_net_eg_out
TO st_vlcvehicle-zz_cv_net_eg_out.

* Gross Vehicle Mass


MOVE st_vlcvehiclec-/dcsea/zz_cv_grs_v_mass
TO st_vlcvehicle-zz_cv_grs_v_mass.

* Axle Weight 1
MOVE st_vlcvehiclec-/dcsea/zz_cv_axle_wt_1
TO st_vlcvehicle-zz_cv_axle_wt_1.

* Axle Weight 2
MOVE st_vlcvehiclec-/dcsea/zz_cv_axle_wt_2
TO st_vlcvehicle-zz_cv_axle_wt_2.

* Axle Weight 3
MOVE st_vlcvehiclec-/dcsea/zz_cv_axle_wt_3
TO st_vlcvehicle-zz_cv_axle_wt_3.

* Axle Weight 4 "CM-1869v2.1 MARAMS 29/7/03


MOVE st_vlcvehiclec-/dcsea/zz_cv_axle_wt_4
TO st_vlcvehicle-zz_cv_axle_wt_4.

* Gross Combined Mass


MOVE st_vlcvehiclec-/dcsea/zz_cv_grs_cmass
TO st_vlcvehicle-zz_cv_grs_cmass.

* Actual Arrival Date at Local Port


MOVE st_vlcvehiclec-/dcsea/zz_ata
TO st_vlcvehicle-zz_ata.

* Convert requested delivery date & time to timestamp format


MOVE st_vlcvehiclec-/dcsea/zz_vlc_vdatu TO wf_date.
MOVE st_vlcvehiclec-/dcsea/zz_vlc_vtime TO wf_time.
PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_vdatu.

* Convert planned finishing date & time to timestamp format


MOVE st_vlcvehiclec-/dcsea/zz_planfindate TO wf_date.
MOVE st_vlcvehiclec-/dcsea/zz_planfintime TO wf_time.
PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_plan_fin_date.

* Convert promised date & time to timestamp format


MOVE st_vlcvehiclec-/dcsea/zz_promdate TO wf_date.
MOVE st_vlcvehiclec-/dcsea/zz_promtime TO wf_time.
PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_promdt.

* Convert retail sale date & time to timestamp format


MOVE st_vlcvehiclec-/dcsea/zz_retaildate TO wf_date.
MOVE st_vlcvehiclec-/dcsea/zz_retailtime TO wf_time.
PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_retadt.
* Append structure to table
APPEND st_vlcvehicle TO tb_vlc_vehicle.
ENDFORM. " APPEND_DATA_ZVLCVEHICLEC

*--Start of insertion By agarwaln(Mrunalini) for CM-1869 on 07-04-2003--


* Local requirement for DC Japan
* To trigger VMS actions based on the interface from the VPC
* Idoc ZVEHMAS02

*&---------------------------------------------------------------------*
*& Form append_data_zvlcvehicled
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM append_data_zvlcvehicled.

* Convert Document Print Date & time to timestamp format


MOVE st_vlcvehicled-/dcsea/zz_print_date TO wf_date.
MOVE st_vlcvehicled-/dcsea/zz_print_time TO wf_time.
PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_printtsp.
* Convert Pick-Up Date & time to timestamp format
MOVE st_vlcvehicled-/dcsea/zz_pickup_date TO wf_date.
MOVE st_vlcvehicled-/dcsea/zz_pickup_time TO wf_time.
PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_picktsp.
* Begin of Modification MARAMS CM-1869 v1.5 29/05/2003
* Class
MOVE st_vlcvehicled-/dcsea/zz_class TO st_vlcvehicle-zz_class.

* Convert Document Delivery Date & time to timestamp format


MOVE st_vlcvehicled-/dcsea/zz_doc_del_date TO wf_date.
* move st_vlcvehicled-/dcsea/zz_doc_del_date to wf_time.
MOVE st_vlcvehicled-/dcsea/zz_doc_del_time TO wf_time. "Anil-30/08/04
PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_doc_del.

* Port of departure
MOVE st_vlcvehicled-/dcsea/zz_portdep TO st_vlcvehicle-zz_portdep.

* Go Ord Version "CM-1948 v1.3 MARAMS 24/7/2003


MOVE st_vlcvehicled-/dcsea/zz_go_ord_version
TO st_vlcvehicle-zz_go_ord_ver.

* Convert Gate Out Date & Time to timestamp format "CM-1869v1.7


MOVE st_vlcvehicled-/dcsea/zz_gateout_date TO wf_date.
MOVE st_vlcvehicled-/dcsea/zz_gateout_time TO wf_time.
PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_gatout.

* Convert VPC Completion Date & Time to timestamp format "CM-1869v1.9


MOVE st_vlcvehicled-/dcsea/zz_vpccomp_date TO wf_date.
MOVE st_vlcvehicled-/dcsea/zz_vpccomp_time TO wf_time.
PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_vpccomp.

* End of Modification MARAMS CM-1869 v1.5 29/05/2003


* Carrier "CM-1869 v2.1 MARAMS 29/7/2003
IF NOT st_vlcvehicled-/dcsea/zz_carrier IS INITIAL.
MOVE st_vlcvehicled-/dcsea/zz_carrier
TO st_vlcvehicle-zz_carrier.
ENDIF.

*Start of insertion By AGARWALN for CM-2034 on 07-Jul-2003***


* Government Vehicle Registration Certificate Number

* Start of insert by ALAPATK for CM-2222 v1.1 on 17/11/2003


MOVE st_vlcvehicled-/dcsea/zz_status_code
TO st_vlcvehicle-zz_chry_stncode.

*End of insert by ALAPATK for CM-2222 v1.1 on 17/11/2003

MOVE st_vlcvehicled-/dcsea/zz_cert_num1
TO wf_zz_cert_num1.
**End of insertion By AGARWALN for CM-2034 on 07-Jul-2003***
* Begin of Insertion by SRIVATSS for CM1948-ver 1.5 on 04/09/2003
MOVE st_vlcvehicled-/dcsea/zz_factory_num TO
st_vlcvehicle-zz_factory_num.
MOVE st_vlcvehicled-/dcsea/zz_req_del_dt_to TO
st_vlcvehicle-zz_req_del_dt_to.
MOVE st_vlcvehicled-/dcsea/zz_req_del_dt_fr TO
st_vlcvehicle-zz_req_del_dt_fr.
MOVE st_vlcvehicled-/dcsea/zz_req_prd_dt_to TO
st_vlcvehicle-zz_req_prd_dt_to.
MOVE st_vlcvehicled-/dcsea/zz_req_prd_dt_fr TO
st_vlcvehicle-zz_req_prd_dt_fr.
* CLEAR:wf_date,wf_time.
MOVE st_vlcvehicled-/dcsea/zz_prod_no_date TO wf_date.
PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_prod_no_dat.
MOVE st_vlcvehicled-/dcsea/zz_ord_clsfcn TO
st_vlcvehicle-zz_ord_clsfcn.
* End of Insertion by SRIVATSS for CM1948-ver 1.5 on 04/09/2003

* Begin of Insertion by ramakumm for CM2261 on 12/07/2003

MOVE st_vlcvehicled-/dcsea/zz_int_ref_no TO
st_vlcvehicle-zz_int_ref_no.

* End of Insertion by ramakumm for CM2261 on 12/07/2003

* Begin of Insertion by ramakumm for CM2297 on 29/12/2003

MOVE st_vlcvehicled-/dcsea/zz_bond_ref_no TO
st_vlcvehicle-zz_bond_ref_no.

MOVE st_vlcvehicled-/dcsea/zz_bond_ref_date TO wf_date.

MOVE st_vlcvehicled-/dcsea/zz_bond_ref_time TO wf_time.

PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_bond_ref_dt.

MOVE st_vlcvehicled-/dcsea/zz_cust_line_no TO
st_vlcvehicle-zz_cust_line_no.

* End of Insertion by ramakumm for CM2297 on 29/12/2003


* Begin of insertion by Manish(KNHYNIA) for CM-24912603 on 12.06.2014
CLEAR: wf_flag.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = '24912603'
werks = st_vlcvehicle-werks
IMPORTING
active_flag = wf_flag.
IF wf_flag IS NOT INITIAL.
CLEAR: wf_date, wf_time.
MOVE st_vlcvehicled-/dcsea/zz_incorder_date TO wf_date.
PERFORM convert_into_timestamp
USING wf_date
wf_time
CHANGING st_vlcvehicle-zz_incordt.
ENDIF.
* Begin of insertion by Manish(KNHYNIA) for CM-24912603 on 12.06.2014
* Begin of Insertion by ramakumm for CM2261 on 14/01/2004
CLEAR wf_aktion1.

IF wf_aktion = co_zvas AND ( st_vlcvehicle-zz_cust_decl_no IS INITIAL )


AND ( idoc_contrl-rcvprn = co_auovpinbl1 OR
*Begin of Insert by BHORCHIS for CM-6854552 on 24.03.2008
* Another check for the new partner system and message type
* corresponding to 'AUOVPINBL1 ' is required as a result of
* migration to XI.
( idoc_contrl-rcvprn EQ co_lsovp_au "LSOVP_AU
AND idoc_contrl-mestyp EQ co_mestyp_zovp ) "ZOVP
*End of Insert by BHORCHIS for CM-6854552 on 24.03.2008
*Begin of insert for CM-39989827 by AJABOSE on 15.10.2017
OR ( idoc_contrl-rcvprn = /dcsea/zais_xclass=>co_lsauc_au "LSAUC_AU
AND idoc_contrl-mestyp = /dcsea/zais_xclass=>co_mestyp_zovp ) )."ZOVP
*End of insert for CM-39989827 by AJABOSE on 15.10.2017
wf_aktion1 = co_zvib.
ELSE.
wf_aktion1 = wf_aktion.
ENDIF.

*Begin of Insert by BHORCHIS for CM-6854552 on 24.03.2008


* Concatenate the partner profile and message type before querying
* table /dcsea/zais_para for domval1. This is needed as a part
* of ABAP changes for XI migration . Currently , partner profile
* is unique for very interface but after XI migration , combination
* of partner profile and message type would be unique and domval1
* of this table would contain this concatenated value.
* The select query below needs to be changed accordingly.
CONCATENATE idoc_contrl-rcvprn idoc_contrl-mestyp
INTO wf_partner_mestyp .
*End of Insert by BHORCHIS for CM-6854552 on 24.03.2008

"HANA Code Remediation:Select Single not unique


" select single *
" from /dcsea/zais_para
" into /dcsea/zais_para
" where ( domval1 = idoc_contrl-rcvprn
"*Begin of Insert by BHORCHIS for CM-6854552 on 24.03.2008
"* As part of migration to XI , partner number and message type
"* will be concatenated into domval1 and hence the same need to be
"* included in the select query as well
" or domval1 = wf_partner_mestyp )
"*End of Insert by BHORCHIS for CM-6854552 on 24.03.2008
" and domval2 = wf_aktion1.
SELECT *
UP TO 1 ROWS FROM /dcsea/zais_para
INTO /dcsea/zais_para
WHERE ( domval1 = idoc_contrl-rcvprn
*Begin of Insert by BHORCHIS for CM-6854552 on 24.03.2008
* As part of migration to XI , partner number and message type
* will be concatenated into domval1 and hence the same need to be
* included in the select query as well
OR domval1 = wf_partner_mestyp )
*End of Insert by BHORCHIS for CM-6854552 on 24.03.2008
AND domval2 = wf_aktion1 ORDER BY PRIMARY KEY. ENDSELECT.
IF sy-subrc = 0.
MOVE /dcsea/zais_para-fieldval TO vlcadddata_gt-fieldname.
CONCATENATE st_vlcvehicled-/dcsea/zz_int_ref_no '-'
idoc_data-docnum INTO vlcadddata_gt-fieldvalue.
APPEND vlcadddata_gt.
ENDIF.
CLEAR wf_aktion1.
* End of Insertion by ramakumm for CM2261 on 14/01/2004

READ TABLE tb_vlc_vehicle INDEX 1.


IF sy-subrc EQ 0.
* Append structure to table
MODIFY tb_vlc_vehicle FROM st_vlcvehicle INDEX sy-tabix.
ELSE.
* Append structure to table
APPEND st_vlcvehicle TO tb_vlc_vehicle.
ENDIF.

ENDFORM.

*--End of insertion By agarwaln(Mrunalini) for CM-1869 on 07-04-2003--

*&---------------------------------------------------------------------*
*& Form APPEND_DATA_ZLOCALOPTIONS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM append_data_zlocaloptions.

* CLEAR TB_VHCL_LOPT.

* Step number
* TB_VHCL_LOPT-STUNR = ST_LOCALOPTIONS-STUNR.

* Condition counter
* TB_VHCL_LOPT-ZAEHK = ST_LOCALOPTIONS-ZAEHK.

* Condition amount
* TB_VHCL_LOPT-COND_AMOUNT = ST_LOCALOPTIONS-COND_AMOUNT.

* Condition currency
* TB_VHCL_LOPT-COND_CURR = ST_LOCALOPTIONS-COND_CURR.

* APPEND TB_VHCL_LOPT.

ENDFORM. " APPEND_DATA_ZLOCALOPTIONS


*&---------------------------------------------------------------------*
*& Form GET_CONFIG
*&---------------------------------------------------------------------*
* Get and store configuration for the vehicle
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM get_config.

* get configuration header


PERFORM get_config_header.

* get instance
PERFORM get_instance.

* get current characteristics for the material to get the characteristic


PERFORM get_curr_char.

* populate characteristics table to be pass to Set Action function


PERFORM store_configuration.

ENDFORM. " GET_CONFIG

*&---------------------------------------------------------------------*
*& Form get_config_header
*&---------------------------------------------------------------------*
* Get Configuration Header for the vehicle
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM get_config_header.
TABLES: scekb.

DATA: tb_scekb LIKE scekb OCCURS 0 WITH HEADER LINE.


DATA: wf_ctr_date LIKE sy-datum.

*shift TB_VLC_VEHICLE-cstrmonth right deleting trailing space.


*overlay TB_VLC_VEHICLE-cstrmonth with '00' only ' '.

*shift TB_VLC_VEHICLE-zcstrday right deleting trailing space.


*overlay TB_VLC_VEHICLE-zcstrday with '00' only ' '.

CLEAR wf_ctr_date.
* begin of delete for VMSUPGD
* concatenate tb_vlc_vehicle-cstryear
* tb_vlc_vehicle-cstrmonth
* tb_vlc_vehicle-zcstrday
* into wf_ctr_date.
* end of delete for VMSUPGD

* begin of insert for VMSUPGD


CONCATENATE tb_vlc_vehicle-zcstryear
tb_vlc_vehicle-zcstrmonth
tb_vlc_vehicle-zcstrday
INTO wf_ctr_date.
* end of insert for VMSUPGD
* Step 1: Initialize Variables
CLEAR: bapicucfg_temp-kbversion,
tb_scekb.
REFRESH tb_scekb.

* Step 2: Get all versions from SCEKB table that are less than or equal
* to the construction date
SELECT * FROM scekb
INTO TABLE tb_scekb
WHERE kbobjname EQ tb_vlc_vehicle-matnr
AND fromdate LE wf_ctr_date.

* Step 3: Get the version with the latest from date


IF sy-subrc EQ 0.
SORT tb_scekb BY fromdate DESCENDING.
LOOP AT tb_scekb.
bapicucfg_temp-kbversion = tb_scekb-version.
EXIT.
ENDLOOP.
ELSE.
bapicucfg_temp-kbversion = '1'.
ENDIF.

* Move fields to the configuration header


MOVE '1' TO bapicucfg_temp-config_id.
MOVE '1' TO bapicucfg_temp-root_id.
MOVE '1' TO bapicucfg_temp-sce.
MOVE tb_vlc_vehicle-matnr TO bapicucfg_temp-kbname.
* MOVE '1' TO BAPICUCFG_TEMP-KBVERSION.
MOVE 'T' TO bapicucfg_temp-complete.
MOVE 'T' TO bapicucfg_temp-consistent.
* MOVE 'VCOND=SG_CONDITIONS' TO BAPICUCFG_TEMP-CFGINFO.

ENDFORM. " get_config_header


*&---------------------------------------------------------------------*
*& Form get_instance
*&---------------------------------------------------------------------*
* Gets instance for the vehicle
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM get_instance.

* Move fields to the instance table


"HANA Code Remediation:Select Single not unique
" select single * from inob where objek eq tb_vlc_vehicle-matnr.
SELECT * UP TO 1 ROWS FROM inob WHERE objek EQ tb_vlc_vehicle-matnr ORDER BY
PRIMARY KEY. ENDSELECT.

IF sy-subrc EQ 0.

MOVE '1' TO bapicuins_temp-config_id.


MOVE '1' TO bapicuins_temp-inst_id.
MOVE 'T' TO bapicuins_temp-complete.
MOVE 'T' TO bapicuins_temp-consistent.
MOVE inob-obtab TO bapicuins_temp-obj_type.
MOVE inob-klart TO bapicuins_temp-class_type.
MOVE inob-objek TO bapicuins_temp-obj_key.
APPEND bapicuins_temp.

ENDIF.

ENDFORM. " get_instance


*&---------------------------------------------------------------------*
*& Form get_curr_char
*&---------------------------------------------------------------------*
* Get current vehicle configuration
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_curr_char.

CALL FUNCTION 'VC_I_GET_CONFIGURATION'


EXPORTING
instance = tb_vlc_vehicle-cuobj
* BUSINESS_OBJECT =
* LANGUAGE = SY-LANGU
* PRINT_SALES = ' '
* PRINT_PURCHASE = ' '
* PRINT_ENGINEERING = ' '
* IDOC_MODE = ' '
* ANW_SICHT = ' '
iv_no_value_check = 'X'
TABLES
* CONFIGURATION =
configuration_idoc = tb_curr_cuval
EXCEPTIONS
instance_not_found = 1
internal_error = 2
OTHERS = 3.

IF sy-subrc EQ 0.

LOOP AT tb_curr_cuval.

* Store characterstic to be later stored in the table to be passed to


* the set action function
READ TABLE bapicuval_temp WITH KEY value = tb_curr_cuval-atwrt
charc = tb_curr_cuval-atnam.
IF sy-subrc NE 0.

MOVE '1' TO bapicuval_temp-config_id.


MOVE '1' TO bapicuval_temp-inst_id.
MOVE tb_curr_cuval-atnam TO bapicuval_temp-charc.
MOVE tb_curr_cuval-atwrt TO bapicuval_temp-value.
APPEND bapicuval_temp.

ENDIF.

ENDLOOP.

ELSE.
RAISE error_message_received.
ENDIF.

ENDFORM. " get_curr_char


*&---------------------------------------------------------------------*
*& Form store_configuration
*&---------------------------------------------------------------------*
* Store all configuration data to a table to be passed to the
* Set Action Function
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM store_configuration.

* Move fields to the Configuration of a Vehicle by GUI structure


MOVE tb_vlc_vehicle-vguid TO vlcbapicu_ls-vguid.

* Move Configuration Header, Instance and Values


vlcbapicu_ls-vcucfg = bapicucfg_temp.
vlcbapicu_ls-vcuins[] = bapicuins_temp[].
vlcbapicu_ls-vcuval[] = bapicuval_temp[].

* Append structure to table to be passed to execute action function


INSERT vlcbapicu_ls INTO TABLE tb_vlcbapicu_lt.

ENDFORM. " store_configuration

*&---------------------------------------------------------------------*
*& Form GET_VEHICLE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_vehicle_data.
READ TABLE tb_vlc_vehicle INDEX 1.
IF sy-subrc EQ 0.
* move tb_vlc_vehicle-vhvin to st_vlcsmod-vhvin."VMSUPGD
* move tb_vlc_vehicle-zz_engine_number to"VMSUPGD
* st_vlcsmod-zz_engine_number."VMSUPGD
MOVE tb_vlc_vehicle-vhvin TO vlcactdata_cs-vhvin."VMSUPGD
MOVE tb_vlc_vehicle-zz_engine_number TO "VMSUPGD
vlcactdata_cs-zz_engine_number."VMSUPGD
ENDIF.
ENDFORM. " GET_VEHICLE_DATA
*&---------------------------------------------------------------------*
*& Form FILL_SMOD_DATA_VEHI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_smod_data_vehi.
* begin of delete for VMS UPgrade. VMSUPGD
* clear vlch_smod_ls.
*
** Fill VCLSMOD structure
* vlch_smod_ls-aktion = co_smod.
*
** Fill VLCSMOD_VHCL_S structure
* move-corresponding st_vlcsmod to vlcsmod_vhcl_s_temp.
* vlcsmod_vhcl_s_temp-vhcle = tb_vlc_vehicle-vhcle.
* append vlcsmod_vhcl_s_temp.
*
** Move VLCSMOD_VHCL_S structure to VLCSMOD
* move vlcsmod_vhcl_s_temp[] to vlch_smod_ls-vlcsmod_vhcl[].
*
** Move VLCSMOD to VLCH_ACTDATA_LS-VLCH_SMOD
* move vlch_smod_ls to vlch_actdata_ls-vlch_smod.
* end of delete for VMS Upgrade. VMSUPGD
* begin of insert for VMS Upgrade. VMSUPGD
* clear vlch_smod_ls.

* Fill VCLSMOD structure


* vlch_smod_ls-aktion = co_smod.

* Fill VLCSMOD_VHCL_S structure


* filling VLCACTDATA_ITEM_LT internal table .VMSUPGD
* move-corresponding st_vlcsmod to vlcactdata_item_lt.
vlcactdata_item_lt-vhcle = tb_vlc_vehicle-vhcle.
vlcactdata_item_lt-vguid = tb_vlc_vehicle-vguid.
APPEND vlcactdata_item_lt.
MOVE vlcactdata_item_lt[] TO vlcactdata_cs-actdata_item[].
* Move VLCSMOD_VHCL_S structure to VLCSMOD
* move vlcsmod_vhcl_s_temp[] to vlch_smod_ls-vlcsmod_vhcl[].

* Move VLCSMOD to VLCH_ACTDATA_LS-VLCH_SMOD


* move vlch_smod_ls to vlch_actdata_ls-vlch_smod.
* end of insert. VMSUPGD
ENDFORM. " FILL_SMOD_DATA_VEHI

*&---------------------------------------------------------------------*
*& Form append_data_errormsg
*&---------------------------------------------------------------------*
* Adds Error Message data to the internal table
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM append_data_errormsg.

MOVE-CORRESPONDING st_errormsg TO tb_err_msg.


APPEND tb_err_msg.

ENDFORM. " append_data_errormsg

*&---------------------------------------------------------------------*
*& Form add_diffchar
*&---------------------------------------------------------------------*
* Adds data to the characteristics difference table
*----------------------------------------------------------------------*
* -->PF_FLAG Type of record to be stored in the IDR table
*----------------------------------------------------------------------*
FORM add_diffchar USING pf_flag.

* Clear structure
CLEAR st_zais_diffconfig.

*Begin of insert KAMIRES for CM-0057183202 on 04/05/2021


IF NOT /dcsea/zais_kbv_cl_integration=>check_active_cm(
cm_number = '0056948324'
werks = tb_vlc_vehicle-werks ) IS INITIAL
AND idoc_contrl-rcvprn CP 'GSAFAB_*'
AND idoc_contrl-mestyp EQ co_mestyp_zfactord_conf. "ZFACTORD_CONF

IF st_vlcvehicle-zz_go_ord_ver IS INITIAL OR
st_vlcvehicle-zz_go_ord_ver < tb_vlc_vehicle-zz_go_ord_ver.
RETURN.
ENDIF.
ENDIF.
*End of insert KAMIRES for CM-0057183202 on 04/05/2021

* Begin of insertion for CM-3286 by KUMARA on 29/09/2005


*If the IDOC's parner profile is in the given set of parner profiles,
*(checked earlier at subroutine -check_partner_profile),fill-in the new
*fields in /dcsea/zais_dcon.
IF NOT wf_flag_rcvprn IS INITIAL.
MOVE : hd_mara-mtart TO st_zais_diffconfig-mtart,
hd_mara-matkl TO st_zais_diffconfig-matkl,
tb_vlc_vehicle-werks TO st_zais_diffconfig-werks,
tb_vlc_vehicle-matnr TO st_zais_diffconfig-matnr,
tb_vlc_vehicle-vhcex TO st_zais_diffconfig-vhcex.
ENDIF.
* End of insertion for CM-3286 by KUMARA on 29/09/2005
* Add to Difference table
st_zais_diffconfig-vhcle = tb_vlc_vehicle-vhcle.
st_zais_diffconfig-docnum = idoc_contrl-docnum.
st_zais_diffconfig-confirmdat = sy-datum.
st_zais_diffconfig-flag = pf_flag.
INSERT INTO /dcsea/zais_dcon VALUES st_zais_diffconfig.

ENDFORM. " add_diffchar

*&---------------------------------------------------------------------*
*& Form GET_GLOBAL_TEMPLATE_DATA_ZFOC
*&---------------------------------------------------------------------*
* This form is specific for factory order confirmation of the AFAB
* interface. It moves all customer specific fields from the IDoc
* to the SMOD structure which will be later passed to the function
* VELO09_SET_ACTION
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM get_global_template_data_foc.

READ TABLE tb_vlc_vehicle INDEX 1.

IF sy-subrc EQ 0.

CASE wf_aktion.

WHEN co_zrsq.
* For ZRSQ action, check if planned finishing date is not empty
IF ( tb_vlc_vehicle-zz_plan_fin_date EQ 0 ).
* If fields is initial, write error in errtab
PERFORM write_error USING co_msg_142
co_zais_msg.
ENDIF. " IF ( TB_VLC_VEHICLE-ZZ_PLAN_FIN_DATE EQ 0 ).

WHEN co_zpl5 OR
co_zpl6.
* For ZPL5 and ZPL6 actions, check if actual arrival date is not empty

* Begin of insertion by JACOBDI for CM-7844583 V5.3T on 07.01.2009


* For FJDA, ZPL6 action does not need to check for Actual Arrival Date
* Begin of changes by LEENAC for CM-7844583 on 01.07.2009
* Following logic commented
* IF ( wf_aktion NE co_zpl6
* AND idoc_contrl-rcvprn NE co_cfiptl1
* AND idoc_contrl-mestyp NE co_zprod_chk_point ) .
* Except for interface CFIPT_L1, the actual arrival date logic should
* work for all others for action ZPL6
IF ( wf_aktion NE co_zpl6
OR idoc_contrl-rcvprn NE co_cfiptl1
OR idoc_contrl-mestyp NE co_zprod_chk_point ) .
* End of changes by LEENAC for CM-7844583 on 01.07.2009
* End of insertion by JACOBDI for CM-7844583 V5.3T on 07.01.2009
IF ( tb_vlc_vehicle-zz_ata EQ '' ).
* If field is initial, write error in errtab
PERFORM write_error USING co_msg_143
co_zais_msg.
ENDIF. " IF ( TB_VLC_VEHICLE-ZZ_ATA EQ '' ).
* Following line inserted by JACOBDI for CM-7844583 V5.3T on 07.01.2009
ENDIF.
ENDCASE. " WF_AKTION

* move-corresponding tb_vlc_vehicle to st_vlcsmod."VMSUPGD


MOVE-CORRESPONDING tb_vlc_vehicle TO vlcactdata_item_lt."VMSUPGD
MOVE-CORRESPONDING tb_vlc_vehicle TO vlcactdata_cs."VMSUPGD

* Move Production Date to Promised Date (CM-1546)


IF wf_aktion EQ co_zfvp.
* move tb_vlc_vehicle-pdtsp to
* vlcsmod_vhcl_s_temp-zz_promdt. "VMSUPGD
vlcactdata_cs-zz_promdt = tb_vlc_vehicle-pdtsp. "VMSUPGD
ENDIF.

ELSE.
* Write error in errtab, no data transmitted
PERFORM write_error USING co_msg_052
co_velo.
ENDIF.

ENDFORM. " GET_GLOBAL_TEMPLATE_DATA_ZFOC

*&---------------------------------------------------------------------*
*& Form CHECK_GOODS_MVMT_DATA
*&---------------------------------------------------------------------*
* Check if mandatory fields for goods movement have values
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM check_goods_mvmt_data.

IF (
( st_vlcgoodsmvmt-mm_budat IS INITIAL ) OR
( st_vlcgoodsmvmt-mm_bldat IS INITIAL ) OR
( st_vlcgoodsmvmt-lgort IS INITIAL ) ).

* Write error in errtab, mandatory fields not complete


PERFORM write_error USING co_msg_139
co_zais_msg.

ENDIF.

ENDFORM. " CHECK_GOODS_MVMT_DATA

*&---------------------------------------------------------------------*
*& Form FILL_GORE_DATA
*&---------------------------------------------------------------------*
* Prepares a table containing goods movement data to be
* passed to the VELO09_SET_ACTION function module
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM fill_gore_data.
* begin of delete for VMS Upgrade. "VMSUPGD
* clear vlch_gore_ls.
* clear vlch_actdata_ls.
* refresh tb_vlch_actdata_lt.
*
** Fill structure
* vlch_gore_ls-aktion = co_gore.
* vlch_gore_ls-bwart = co_mvmt_101.
* vlch_gore_ls-lgort = st_vlcgoodsmvmt-lgort.
* vlch_gore_ls-budat = st_vlcgoodsmvmt-mm_budat.
* vlch_gore_ls-bldat = st_vlcgoodsmvmt-mm_bldat.
* vlch_gore_ls-lfsnr = st_vlcgoodsmvmt-lfsnr.
** IF Bill of Lading is not passed, get it from VLCVehicle
* if not ( st_vlcgoodsmvmt-frbnr is initial ).
* vlch_gore_ls-frbnr = st_vlcgoodsmvmt-frbnr.
* else.
* vlch_gore_ls-frbnr = hd_vlcvehicle-zz_bill_of_lad.
* endif.
*
** Santosg 4/17/02
** CM-1573 Local Date and Time for Interfaces
** Use IMS TimeStamp date to pass the Local Date and Time from the
** Control Record Field Serial
* if idoc_contrl-rcvlad eq co_zacarriel1.
* clear: wf_date,
* wf_time.
*
**-lmp 4/26/2002 Plant-based timezone-----\
** Note that Serial Field format is YYMMDDHHMMSS, where the millenium
** and century digits of the date are missing
* wf_date = idoc_contrl-serial+0(6).
* wf_time = idoc_contrl-serial+6(6).
*
** Step 1 : Add current millenium and century digits to Serial Date
* concatenate sy-datum+0(2) wf_date into wf_date.
** Step 2 : Get the timezone assigned to the plant
** Step 2.1: Get the address number of the plant
* select single * from t001w
* where werks eq hd_vlcvehicle-werks.
* if sy-subrc eq 0.
** Step 2.2: Get the timezone based on the address number of the plant
* select single * from adrc
* where addrnumber eq t001w-adrnr.
* endif. " IF SY-SUBRC EQ 0. (T001W)
**-lmp 4/26/2002 Plant-based timezone-----/
*
* call function 'VELO03_CONVERT_INTO_TIMESTAMP'
* exporting
* datlo_iv = wf_date
* timlo_iv = wf_time
** TZONE_IV = SY-ZONLO "lmp 4/26/2002
* tzone_iv = adrc-time_zone "lmp 4/26/2002
* importing
* timestamp_ev = vlch_gore_ls-zz_local_tstmp.
*
* endif. "IF IDOC_CONTRL-RCVLAD EQ CO_ZACARRIEL1
** End of CM-1573 Santosg 4/17/02
*
** Fill structure of structures
* move vlch_gore_ls to vlch_actdata_ls-vlch_gore.
*
** Fill table of structures
* append vlch_actdata_ls to tb_vlch_actdata_lt.
* end of delete ."VMSUPGD
* begin of insert ."VMSUPGD
REFRESH vlcactdata_item_lt.
CLEAR vlcactdata_item_lt.
CLEAR vlcactdata_cs.
* Fill structure
* vlch_gore_ls-aktion = co_gore.

*--Start of comment By agarwaln(Mrunalini) for CM-1869 on 07-04-2003


* vlcactdata_cs-bwart = co_mvmt_101.
*--End of comment By agarwaln(Mrunalini) for CM-1869 on 07-04-2003

*--Start of insertion By agarwaln(Mrunalini) for CM-1869 on 07-04-2003--


* Local requirement for DC Japan
* To trigger VMS actions based on the interface from the VPC
* Idoc ZVEHMAS02
* Pass the movement type for ZTBU and ZTUB
CLEAR wf_mvmt_type.
CASE wf_aktion.
WHEN co_zgor.
wf_mvmt_type = co_mvmt_101.
WHEN co_ztbu.
wf_mvmt_type = co_mvmt_343.
WHEN co_ztub.
wf_mvmt_type = co_mvmt_344.
*Start of insertion By JoshiM for CM-1869 Ver 1.4 on 23-04-2003
WHEN co_ztps.
wf_mvmt_type = co_mvmt_311.
* Derive Receiving Storage Location for DC Japan only
CLEAR tb_t001l.
REFRESH tb_t001l.
"HANA Code Remediation: ORDER BY PRIMARY KEY Added to Select Statement below
SELECT * INTO CORRESPONDING FIELDS OF TABLE tb_t001l
FROM t001l
WHERE werks = tb_vlc_vehicle-werks ORDER BY PRIMARY KEY.

DESCRIBE TABLE tb_t001l LINES wf_ctr.


IF wf_ctr = 2.
LOOP AT tb_t001l
WHERE werks = tb_vlc_vehicle-werks AND
lgort NE tb_vlc_vehicle-lgort.
vlcactdata_cs-umlgo = tb_t001l-lgort.
EXIT.
ENDLOOP.
ENDIF.

*End of insertion By JoshiM for CM-1869 Ver 1.4 on 23-04-2003


ENDCASE. " CASE wf_aktion.
vlcactdata_cs-bwart = wf_mvmt_type.
*--End of insertion By agarwaln(Mrunalini) for CM-1869 on 07-04-2003--

vlcactdata_cs-lgort = st_vlcgoodsmvmt-lgort.
vlcactdata_cs-budat = st_vlcgoodsmvmt-mm_budat.
vlcactdata_cs-bldat = st_vlcgoodsmvmt-mm_bldat.
vlcactdata_cs-lfsnr = st_vlcgoodsmvmt-lfsnr.
* IF Bill of Lading is not passed, get it from VLCVehicle
IF NOT ( st_vlcgoodsmvmt-frbnr IS INITIAL ).
vlcactdata_cs-frbnr = st_vlcgoodsmvmt-frbnr.
ELSE.
vlcactdata_cs-frbnr = hd_vlcvehicle-zz_bill_of_lad.
ENDIF.

* Santosg 4/17/02
* CM-1573 Local Date and Time for Interfaces
* Use IMS TimeStamp date to pass the Local Date and Time from the
* Control Record Field Serial

IF idoc_contrl-rcvlad EQ co_zacarriel1
*Begin of Insertion by BHORCHIS for CM-6854552 on 24.03.2008
*Another check for the new partner system and message type
*corresponding to 'ZACARRIEL1' is required.
*This check is needed as a result of migration to XI.
OR ( idoc_contrl-rcvlad EQ co_lscaryr_za
AND idoc_contrl-mestyp EQ co_mestyp_zgr ).
*End of Insertion by BHORCHIS for CM-6854552 on 24.03.2008
CLEAR: wf_date,
wf_time.

*-lmp 4/26/2002 Plant-based timezone-----\


* Note that Serial Field format is YYMMDDHHMMSS, where the millenium
* and century digits of the date are missing
wf_date = idoc_contrl-serial+0(6).
wf_time = idoc_contrl-serial+6(6).

* Step 1 : Add current millenium and century digits to Serial Date


CONCATENATE sy-datum+0(2) wf_date INTO wf_date.
* Step 2 : Get the timezone assigned to the plant
* Step 2.1: Get the address number of the plant
SELECT SINGLE * FROM t001w
WHERE werks EQ hd_vlcvehicle-werks.
IF sy-subrc EQ 0.
* Step 2.2: Get the timezone based on the address number of the plant
"HANA Code Remediation:Select Single not unique
" select single * from adrc
" where addrnumber eq t001w-adrnr.
SELECT * UP TO 1 ROWS FROM adrc
WHERE addrnumber EQ t001w-adrnr ORDER BY PRIMARY KEY.
ENDSELECT.
ENDIF. " IF SY-SUBRC EQ 0. (T001W)
*-lmp 4/26/2002 Plant-based timezone-----/

CALL FUNCTION 'VELO03_CONVERT_INTO_TIMESTAMP'


EXPORTING
datlo_iv = wf_date
timlo_iv = wf_time
* TZONE_IV = SY-ZONLO "lmp 4/26/2002
tzone_iv = adrc-time_zone "lmp 4/26/2002
IMPORTING
* timestamp_ev = vlch_gore_ls-zz_local_tstmp."VMSUPGD
timestamp_ev = vlcactdata_cs-zz_local_tstmp. "VMSUPGD

ENDIF. "IF IDOC_CONTRL-RCVLAD EQ CO_ZACARRIEL1


"OR (IDOC_CONTRL-RCVLAD EQ CO_LSCARYR_ZA
"AND( IDOC_CONTRL-MESTYP EQ CO_MESTYP_ZGR)
* End of CM-1573 Santosg 4/17/02

* Fill structure of structures


* move vlch_gore_ls to vlch_actdata_ls-vlch_gore.

* Fill table of structures


* append vlch_actdata_ls to tb_vlch_actdata_lt.

*** Begin of Insertion by Ashish(PUTHILLP) on 18/05/2004 for CM-2475.


IF wf_aktion EQ co_ztbu OR
wf_aktion EQ co_ztub.
* Passing value to structure vlcactdata_cs for update in vlcvehicle.
vlcactdata_cs-zz_vpcstatus = lv_vpcstatus.
ENDIF.
*** End of Insertion by Ashish(PUTHILLP) on 18/05/2004 for CM-2475.

ENDFORM. " FILL_GORE_DATA


*&---------------------------------------------------------------------*
*& Form GET_IDOC_DATA_ZCHA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_idoc_data_zcha.

READ TABLE tb_vlc_vehicle INDEX 1.


* Begin of deletion by MARAMS for ticket 1192194 on 9/7/2003
* if sy-subrc eq 0.
** Get Vehicle
* select single * from vlcvehicle
* where vhcle eq tb_vlc_vehicle-vhcle.
* End of deletion by MARAMS for ticket 1192194 on 9/7/2003

IF sy-subrc EQ 0.

* move-corresponding tb_vlc_vehicle to st_vlcsmod."VMSUPGD


MOVE-CORRESPONDING tb_vlc_vehicle TO vlcactdata_item_lt."VMSUPGD
MOVE-CORRESPONDING tb_vlc_vehicle TO vlcactdata_cs."VMSUPGD

ELSE.
* Write error in errtab, no data transmitted
PERFORM write_error USING co_msg_052
co_velo.
ENDIF. "SY-SUBRC EQ 0

* endif. "Commented for 1192194 on 9/7/2002


ENDFORM. " GET_IDOC_DATA_ZCHA
*&---------------------------------------------------------------------*
*& Form CUSTOMER_ADDRESS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM customer_address.
** begin of delete for VMSUPGD
* has been done because we no longer require ADRC structure at all
** Clear and Refresh structures, internal tables
* clear: tb_addr1_data,
* tb_addr1_line,
* tb_adtel_data,
* tb_adtel_line,
* tb_adfax_data,
* tb_adfax_line,
* tb_adsmtp_data,
* tb_adsmtp_line,
* tb_addr1_complete.
*
* refresh: tb_addr1_data,
* tb_addr1_line,
* tb_adtel_data,
* tb_adtel_line,
* tb_adfax_data,
* tb_adfax_line,
* tb_adsmtp_data,
* tb_adsmtp_line,
* tb_addr1_complete,
* tb_error. "VMSUPGD
*
** Copy general address data to TB_ADDR1_DATA
* perform add_general_info.
*
** Copy telephone data to TB_ADTEL_DATA
* perform add_telephone_info.
*
** Copy fax data to TB_ADFAX_DATA
* perform add_fax_info.
*
** Copy fax data to TB_ADSMTP_DATA
* perform add_smtp_info.
*
*
** and then to TB_ADDR1_COMPLETE
* move: '1' to tb_addr1_complete-addrhandle,
* tb_addr1_line[] to tb_addr1_complete-addr1_tab[],
* tb_adtel_line[] to tb_addr1_complete-adtel_tab[],
* tb_adfax_line[] to tb_addr1_complete-adfax_tab[],
* tb_adsmtp_line[] to tb_addr1_complete-adsmtp_tab[].
*
** IF NOT TB_VLC_VEHICLE-ENDCU IS INITIAL.
** TB_ADDR1_COMPLETE-ADDRNUMBER = TB_VLC_VEHICLE-ENDCU.
** ENDIF.
**
** APPEND TB_ADDR1_COMPLETE.
**
** IF TB_VLC_VEHICLE-ENDCU IS INITIAL.
** CLEAR TB_ADDR1_COMPLETE-ADDRNUMBER.
** ENDIF.
*
* append tb_addr1_complete.
*
* clear tb_addr1_complete-addrnumber.
* clear tb_addr1_comp_out.
*
** For testing starting at this point
* call function 'ADDR_MAINTAIN_COMPLETE'
* EXPORTING
* updateflag = 'I'
* addr1_complete = tb_addr1_complete
* address_group = 'VEHI' "HD_MARA-MTART
* substitute_all_comm_data = 'X'
* check_address = 'X'
* IMPORTING
* returncode = wf_returncode
* addr1_complete_out = tb_addr1_comp_out
* TABLES
* error_table = tb_error
* EXCEPTIONS
* parameter_error = 1
* address_not_exist = 2
* handle_exist = 3
* internal_error = 4
* others = 5.
*
* if sy-subrc eq 0.
* perform get_address_number using tb_vlc_vehicle-vguid.
** end of delete for VMSUPGD
* begin of insert to create business partners
* we are now mapping from the IDOC directly to BUPA
PERFORM create_business_partner.
* end of insert.
* begin of delete for VMSUPGD
* else. "Error in ADDR_MAINTAIN_COMPLETE
*
* perform write_error using co_msg_193
* co_zais_msg.
*
* endif.
* end of delete for VMSUPGD
ENDFORM. " CUSTOMER_ADDRESS
*&---------------------------------------------------------------------*
*& Form ADD_GENERAL_INFO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM add_general_info.

MOVE: st_adrmasendcu-name1 TO tb_addr1_data-name1,


st_adrmasendcu-name2 TO tb_addr1_data-name2,
st_adrmasendcu-street TO tb_addr1_data-street,
st_adrmasendcu-str_suppl1 TO tb_addr1_data-str_suppl1,
st_adrmasendcu-str_suppl2 TO tb_addr1_data-str_suppl2,
st_adrmasendcu-str_suppl3 TO tb_addr1_data-str_suppl3,
st_adrmasendcu-post_code1 TO tb_addr1_data-post_code1,
st_adrmasendcu-tel_number_3 TO tb_addr1_data-remark,
st_adrmasendcu-country TO tb_addr1_data-country,
sy-langu TO tb_addr1_data-langu.

APPEND tb_addr1_data.

* Store to TB_ADDR1_LINE
MOVE tb_addr1_data TO tb_addr1_line-data.
APPEND tb_addr1_line.

ENDFORM. " ADD_GENERAL_INFO


*&---------------------------------------------------------------------*
*& Form ADD_TELEPHONE_INFO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM add_telephone_info.

DATA: wf_counter TYPE i.

wf_counter = 1.

DO 2 TIMES.

CLEAR tb_adtel_data.

MOVE wf_counter TO tb_adtel_data-consnumber.

CASE wf_counter.

WHEN 1.
MOVE st_adrmasendcu-tel_number TO tb_adtel_data-tel_number.

* ortegav 3/11/2002 - mark tel_number field as default number


MOVE 'X' TO tb_adtel_data-flgdefault.

WHEN 2.
MOVE st_adrmasendcu-tel_number_2 TO tb_adtel_data-tel_number.

ENDCASE.

APPEND tb_adtel_data.

* Store to TB_ADTEL_LINE
MOVE tb_adtel_data TO tb_adtel_line-adtel.

APPEND tb_adtel_line.

wf_counter = wf_counter + 1.

ENDDO.

ENDFORM. " ADD_TELEPHONE_INFO


*&---------------------------------------------------------------------*
*& Form ADD_FAX_INFO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM add_fax_info.

CLEAR tb_adfax_data.
MOVE: '001' TO tb_adfax_data-consnumber,
st_adrmasendcu-fax_number TO tb_adfax_data-fax_number.

APPEND tb_adfax_data.

* Store to TB_ADFAX_LINE
MOVE tb_adfax_data TO tb_adfax_line-adfax.

APPEND tb_adfax_line.

ENDFORM. " ADD_FAX_INFO


*&---------------------------------------------------------------------*
*& Form ADD_SMTP_INFO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM add_smtp_info.

CLEAR tb_adsmtp_data.
MOVE: '001' TO tb_adsmtp_data-consnumber,
st_adrmasendcu-email TO tb_adsmtp_data-smtp_addr.

APPEND tb_adsmtp_data.

* Store to TB_ADSMTP_LINE
MOVE tb_adsmtp_data TO tb_adsmtp_line-adsmtp.

APPEND tb_adsmtp_line.

ENDFORM. " ADD_SMTP_INFO


*&---------------------------------------------------------------------*
*& Form GET_ADDRESS_NUMBER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_address_number USING p_vguid.

* IF TB_VLC_VEHICLE-ENDCU IS INITIAL.

st_addrref-appl_table = 'VLCVEHICLE'.
st_addrref-appl_field = 'ENDCU'.
st_addrref-addr_group = co_addr_group_vehi_gc.
st_addrref-owner = co_true.
CONCATENATE sy-mandt p_vguid INTO st_addrref-appl_key.

CALL FUNCTION 'ADDR_NUMBER_GET'


EXPORTING
address_handle = '1'
address_reference = st_addrref
IMPORTING
address_number = wf_address_number
EXCEPTIONS
address_handle_not_exist = 1
internal_error = 2
parameter_error = 3
OTHERS = 4.

IF sy-subrc NE 0.
PERFORM write_error USING co_msg_193
co_zais_msg.
EXIT.
ENDIF.

* ELSE.

* WF_ADDRESS_NUMBER = TB_VLC_VEHICLE-ENDCU.

* ENDIF. "IF TB_VLC_VEHICLE-ENDCU IS INITIAL.

CALL FUNCTION 'ADDR_SINGLE_SAVE'


EXPORTING
address_number = wf_address_number
execute_in_update_task = 'X'
EXCEPTIONS
address_not_exist = 1
person_not_exist = 2
address_number_missing = 3
reference_missing = 4
internal_error = 5
database_error = 6
parameter_error = 7
OTHERS = 8.

IF sy-subrc NE 0.

PERFORM write_error USING co_msg_193


co_zais_msg.

ENDIF.

ENDFORM. " GET_ADDRESS_NUMBER

*&---------------------------------------------------------------------*
*& Form GET_NEW_CONFIG
*&---------------------------------------------------------------------*
* Get and save new configuration for the vehicle
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM get_new_config.
* get configuration header
PERFORM get_config_header.

* get instance
PERFORM get_instance.

* save new characteristics for the vehicle


PERFORM get_new_char.

* populate characteristics table to be pass to Set Action function


PERFORM store_configuration.

ENDFORM. " GET_NEW_CONFIG

*&---------------------------------------------------------------------*
*& Form get_new_char
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_new_char.

LOOP AT tb_vhcl_cuval.

* Store characteristic values to be later stored in the table to be


* passed to the velo set action function
READ TABLE bapicuval_temp WITH KEY value = tb_vhcl_cuval-value
charc = tb_vhcl_cuval-charc.
IF sy-subrc NE 0.

MOVE '1' TO bapicuval_temp-config_id.


MOVE '1' TO bapicuval_temp-inst_id.
MOVE tb_vhcl_cuval-charc TO bapicuval_temp-charc.
MOVE tb_vhcl_cuval-value TO bapicuval_temp-value.
APPEND bapicuval_temp.

ENDIF. " sy-subrc ne 0 (BAPICUVAL_TEMP)

ENDLOOP. " at tb_vhcl_cuval

ENDFORM. " get_new_char


*&---------------------------------------------------------------------*
*& Form UPDATE_SERIALIZATION_TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_SERIALIZATION_INFO text
*----------------------------------------------------------------------*
FORM update_serialization_table.

CLEAR serialization_info.
REFRESH serialization_info.

MOVE-CORRESPONDING idoc_contrl TO serialization_info.


MOVE: st_vlcvehicle-zz_commnos TO serialization_info-objvalue,
'VEHICLE' TO serialization_info-sertyp.
APPEND serialization_info.

CALL FUNCTION 'IDOC_SERIAL_POST'


TABLES
idoc_serial = serialization_info.

ENDFORM. " UPDATE_SERIALIZATION_TABLE


*&---------------------------------------------------------------------*
*& Form CHECK_SERIALIZATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_serialization.

* Step 1: Clear tables


CLEAR serialization_info.
REFRESH serialization_info.

* Step 2: Call Function to check Idoc serialization


CALL FUNCTION 'IDOC_SERIALIZATION_CHECK'
TABLES
idoc_serial = serialization_info
idoc_data = idoc_data
idoc_control = idoc_contrl.

* Step 3: After checking on Idoc Serialization, set an error for the


* Idoc status
LOOP AT serialization_info WHERE docnum = idoc_contrl-docnum.
IF serialization_info-serflag = co_true.

CLEAR tb_errtab.
tb_errtab-msgid = co_idoc_msg.
tb_errtab-msgty = co_msgtyp_e.
tb_errtab-msgnr = co_msg_028.
tb_errtab-msgv1 = sy-msgv1.
tb_errtab-msgv2 = sy-msgv2.
tb_errtab-msgv3 = sy-msgv3.
tb_errtab-msgv4 = sy-msgv4.
APPEND tb_errtab.

ENDIF.
ENDLOOP.

ENDFORM. " CHECK_SERIALIZATION


*&---------------------------------------------------------------------*
*& Form LOCK_VLCHISTORY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM lock_vlchistory.
* Begin of deletion, VMSUPGD
* Locking of vlchistory is not supported in VMS 3.0
* CALL FUNCTION 'ENQUEUE_E_VLCHISTORY'
* EXPORTING
* mode_vlchistory = 'E'
* mandt = sy-mandt
* vguid = tb_vlc_vehicle-vguid
* x_vguid = ' '
* _scope = '2'
* _wait = ' '
* _collect = ' '
* EXCEPTIONS
* foreign_lock = 1
* system_failure = 2
* OTHERS = 3.
*
* IF sy-subrc NE 0.
* PERFORM write_error USING sy-msgno
* sy-msgid.
* ENDIF.
*
** Check if errors were encountered
* PERFORM get_error_data.
* End of deletion, VMSUPGD

ENDFORM. " LOCK_VLCHISTORY


*&---------------------------------------------------------------------*
*& Form POPULATE_PRODDATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM populate_proddate USING p_pdtsp.

CALL FUNCTION 'VELO03_CONVERT_FROM_TIMESTAMP'


EXPORTING
timestamp_iv = p_pdtsp
tzone_iv = sy-zonlo
IMPORTING
datlo_ev = tb_vlc_vehicle-pddatu
timlo_ev = tb_vlc_vehicle-pdtime.

ENDFORM. " POPULATE_PRODDATE


*&---------------------------------------------------------------------*
*& Form check_logicaliface_table
*&---------------------------------------------------------------------*
* Ckeck control table for logical interface name
* This subroutine is added by MARAMS CM-1755 09/12/02
*----------------------------------------------------------------------*
FORM check_logicaliface_table.
CLEAR wf_carrier_iface_ind.
*Begin of insertion by TRIPATHIL for CM-10003589 v5.6T on 28/10/2009
*for BBDC
CLEAR wf_flag_cnb1.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_10003589
werks = st_vlcvehicle-werks
* filter = co_LSIPT_CB
IMPORTING
active_flag = wf_flag_cnb1.
IF NOT wf_flag_cnb1 IS INITIAL AND
idoc_contrl-rcvprn+0(8) = co_lsipt_cb.
*Message type is not being checked here because for BBDC ZZ_PROD_NUMBER
*will be present in all the structures for all message types present in
*LSIPT_CB interface.
vlcvehicle-werks = st_vlcvehicle-werks.
ELSE.
*End of insertion by TRIPATHIL for CM-10003589 v5.6T on 28/10/2009
* Get Plant data from VLCVEHICLE
PERFORM get_vehicle_plant.
*Following line is inserted by TRIPATHIL for CM-10003589 v5.6T on
*28/10/2009
*for BBDC
ENDIF.
IF sy-subrc = 0
*Following line is inserted by TRIPATHIL for CM-10003589 v5.6T on
*28/10/2009
*for BBDC
OR NOT wf_flag_cnb1 IS INITIAL.
* Check if an entry exists for Plant/Logical Interface Name/Action in
* table /DCSEA/ZAIS_LDAT

SELECT SINGLE werks


FROM /dcsea/zais_ldat
INTO /dcsea/zais_ldat-werks
WHERE werks = vlcvehicle-werks
*Begin of changes by BHORCHIS for CM-6854552 on 24.03.2008s
* XI is passing partner number in rcvprn and not rcvlad
* and logical_iface = idoc_contrl-rcvlad
AND logical_iface = idoc_contrl-rcvprn
* The query on table /dcsea/zais_ldat should now include another
* field for message type so as to uniquely identify the new
* partner system against the old. These are part of ABAP changes
* for XI migration
AND message_type = idoc_contrl-mestyp
*End of changes by BHORCHIS for CM-6854552 on 24.03.2008.
AND action = wf_aktion
AND direct = co_inbound. "MARAMS CM-1573v1.5 24/12/02

IF sy-subrc = 0. "Entry exists


* Set an indicator
wf_carrier_iface_ind = co_true.
ENDIF.

* begin of deletion - santosg - 16/06/2004 - fix on cm-2261 - move the


* code after the existing select from VLCVehicle table
* begin of insert by harishr for cm-2261 on 25/02/2004
* Check for OVP interface from zais_para table. Reset iface_ind.
* perform check_iface_ovp. " delete by Santosg 16/06/2004
* end of insert by harishr for cm-2261 on 25/02/2004
* end of deletion - santosg - 16/06/2004 - fix on cm-2261
ENDIF.
ENDFORM. " check_logicaliface_table
*&---------------------------------------------------------------------*
*& Form get_vehicle_plant
*&---------------------------------------------------------------------*
* Get vehicle plant
*----------------------------------------------------------------------*
FORM get_vehicle_plant.

READ TABLE tb_vlc_vehicle INDEX 1.

IF NOT tb_vlc_vehicle-zz_commnos IS INITIAL.


* Get data from VLCVEHICLE based on Commission Number
SELECT SINGLE werks
INTO vlcvehicle-werks
FROM vlcvehicle
*Begin of comment by anandd for Performance Tuning on 15/07/2004
* where zz_commnos eq tb_vlc_vehicle-zz_commnos.
*End of comment by anandd for Performance Tuning on 15/07/2004
*Begin of insert by anandd for Performance Tuning on 15/07/2004
WHERE vhcex EQ tb_vlc_vehicle-zz_commnos.
*End of insert by anandd for Performance Tuning on 15/07/2004

ELSEIF NOT tb_vlc_vehicle-vhvin IS INITIAL.

* Get data from VLCVEHICLE based on VIN Number


"HANA Code Remediation:Select Single not unique
" select single werks
" into vlcvehicle-werks
" from vlcvehicle
" where vhvin eq tb_vlc_vehicle-vhvin.
SELECT werks
INTO vlcvehicle-werks
UP TO 1 ROWS FROM vlcvehicle
WHERE vhvin EQ tb_vlc_vehicle-vhvin ORDER BY PRIMARY KEY. ENDSELECT.

ELSEIF NOT tb_vlc_vehicle-vhcle IS INITIAL.

* Get data from VLCVEHICLE based on Vehicle Number


SELECT SINGLE werks
INTO vlcvehicle-werks
FROM vlcvehicle
WHERE vhcle EQ tb_vlc_vehicle-vhcle.

ELSEIF tb_vlc_vehicle-zz_quote NE 0.

* Get data from VLCVEHICLE based on Quote Number (Kerridge DMS


* Interface)
SELECT SINGLE werks
INTO vlcvehicle-werks
FROM vlcvehicle
WHERE zz_quote EQ tb_vlc_vehicle-zz_quote.

ELSEIF NOT tb_vlc_vehicle-zz_endcu IS INITIAL.

* Get data from VLCVEHICLE based on Kerridge Stock Number


* (Kerridge DMS Interface)
"HANA Code Remediation:Select Single not unique
" select single werks
" into vlcvehicle-werks
" from vlcvehicle
" where zz_endcu eq tb_vlc_vehicle-zz_endcu.
SELECT werks
INTO vlcvehicle-werks
UP TO 1 ROWS FROM vlcvehicle
WHERE zz_endcu EQ tb_vlc_vehicle-zz_endcu ORDER BY PRIMARY KEY.
ENDSELECT.

ENDIF. "IF NOT TB_VLC_VEHICLE-ZZ_COMMNOS IS INITIAL.

ENDFORM. " get_vehicle_plant


*&---------------------------------------------------------------------*
*& Form create_business_partner
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> we are creating business partners after the address has been
* <-- saved to the SAP tables in the previous form earlier.
* Done for VMS Upgrade project
*----------------------------------------------------------------------*
FORM create_business_partner.

DATA: ls_vlcvehicle LIKE vlcactdata_cs,


lv_index TYPE sy-tabix.
DATA: ls_addr1_complete TYPE szadr_addr1_complete,
ls_address_info LIKE addr1_val,
ls_partner LIKE /dcsea/zais_plro-rltyp,
lv_cust_id LIKE but000-zcust_id.
DATA : lt_vlcdeaend LIKE vlcdeaend OCCURS 0 WITH HEADER LINE.
*Begin of insert by GADARSH for CM-0037575771 (DMS KR) on 13/08/2017
DATA : lv_mbkr TYPE c.
*End of insert by GADARSH for CM-0037575771 (DMS KR) on 13/08/2017
*Begin of Insertion by VIDYASD for CM-0042474461 (DFE SG) on 06.07.2018
DATA : lv_mbsg TYPE c.
*End of Insertion by VIDYASD for CM-0042474461 (DFE SG) on 06.07.2018
* Begin of insertion by MALAKAS for CM-0045722136 on 02.202.2019
DATA: wf_id_45722136 TYPE c,
lv_title TYPE tsad3t-title.
CONSTANTS:co_45722136(10) TYPE c VALUE '0045722136'.
* End of insertion by MALAKAS for CM-0045722136 on 02.20.2019
* --> Structures and tables for ADDR_GET_COMPLETE
DATA: lt_addr1 TYPE szadr_addr1_line OCCURS 0,
ls_addr1 TYPE szadr_addr1_line,
lt_adtel TYPE szadr_adtel_line OCCURS 0,
ls_adtel TYPE szadr_adtel_line,
lt_adfax TYPE szadr_adfax_line OCCURS 0,
ls_adfax TYPE szadr_adfax_line,
lt_adsmtp TYPE szadr_adsmtp_line OCCURS 0,
ls_adsmtp TYPE szadr_adsmtp_line.

* --> Structures and tables for BAPI_BUPA


DATA: ls_centraldata LIKE bapibus1006_central,
ls_centraldataperson LIKE bapibus1006_central_person,
ls_addressdata LIKE bapibus1006_address,

lt_addressnotes TYPE TABLE OF bapiad_rem,


ls_addressnotes LIKE bapiad_rem,
lt_telefondata TYPE TABLE OF bapiadtel,
ls_telefondata LIKE bapiadtel,
lt_faxdata TYPE TABLE OF bapiadfax,
ls_faxdata LIKE bapiadfax,
lt_e_maildata TYPE TABLE OF bapiadsmtp,
ls_e_maildata LIKE bapiadsmtp,
lt_return TYPE TABLE OF bapiret2,
ls_return TYPE bapiret2.
* --> read the complete endcustomer data from the central
* address management

CLEAR: gv_bupa,
ls_centraldata,
ls_centraldataperson,
ls_addressdata,
lt_addressnotes[],
ls_addressnotes,
lt_telefondata[],
ls_telefondata,
lt_e_maildata[],
ls_e_maildata,
lt_return[],
ls_partner,
lt_vlcdeaend[].

CLEAR: lt_addr1[],
ls_addr1,
lt_adtel[],
ls_adtel,
lt_adfax[],
ls_adfax,
lt_adsmtp[],
ls_adsmtp.
MOVE: st_adrmasendcu-title TO ls_centraldata-title_key,
st_adrmasendcu-name1 TO ls_centraldataperson-lastname,
st_adrmasendcu-name2 TO ls_centraldataperson-firstname,
st_adrmasendcu-street TO ls_addressdata-street,
st_adrmasendcu-str_suppl1 TO ls_addressdata-str_suppl1,
st_adrmasendcu-str_suppl2 TO ls_addressdata-str_suppl2,
st_adrmasendcu-str_suppl3 TO ls_addressdata-str_suppl3,
st_adrmasendcu-post_code1 TO ls_addressdata-postl_cod1.
ls_addressdata-pobox_ctry = st_adrmasendcu-country(3).
ls_addressdata-country = st_adrmasendcu-country(3).
ls_addressdata-city = st_adrmasendcu-city1.
ls_addressdata-po_box = st_adrmasendcu-po_box.

*Begin of insertion by MALAKAS for CM-0045722136 on 02.20.2019


*Convert title data based on atble tsad3t to create end customer
CLEAR:wf_id_45722136.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_45722136
werks = st_vlcvehicle-werks
IMPORTING
active_flag = wf_id_45722136.
IF wf_id_45722136 = abap_true.
TRANSLATE ls_centraldata-title_key TO LOWER CASE.
TRANSLATE ls_centraldata-title_key+0(1) TO UPPER CASE.
SELECT SINGLE title FROM tsad3t
INTO lv_title
WHERE langu = sy-langu
AND title_medi = ls_centraldata-title_key.
IF sy-subrc = 0.
ls_centraldata-title_key = lv_title.
ELSE.
CLEAR ls_centraldata-title_key.
ENDIF.
ENDIF.
*End of insertion by MALAKAS for CM-0045722136 on 02.20.2019
*Begin of insert by GADARSH for CM-0037575771 (DMS KR) on 13/08/2017
*ZECU (ZSCC) FROM DMS.
CLEAR lv_mbkr.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = '37575771'
werks = st_vlcvehicle-werks
IMPORTING
active_flag = lv_mbkr.
IF NOT lv_mbkr IS INITIAL.
ls_addressdata-c_o_name = st_adrmasendcu-name_co. "company name
ENDIF.
*End of insert by GADARSH for CM-0037575771 (DMS KR) on 13/08/2017
* Cellphone Number
IF NOT st_adrmasendcu-tel_number_3 IS INITIAL.
ls_addressnotes-langu = sy-langu.
ls_addressnotes-adr_notes = st_adrmasendcu-tel_number_3.
APPEND ls_addressnotes TO lt_addressnotes.
ENDIF.

ls_addressdata-comm_type = 'TEL'.
ls_telefondata-std_no = 'X'.
ls_telefondata-telephone = st_adrmasendcu-tel_number.
APPEND ls_telefondata TO lt_telefondata.
ls_addressdata-comm_type = 'TEL'.
ls_telefondata-std_no = 'X'.
ls_telefondata-telephone = st_adrmasendcu-tel_number_2.
APPEND ls_telefondata TO lt_telefondata.
* For Fax Number
IF NOT st_adrmasendcu-fax_number IS INITIAL.
ls_faxdata-fax = st_adrmasendcu-fax_number.
APPEND ls_faxdata TO lt_faxdata.
ENDIF.
* email ID
ls_e_maildata-std_no = 'X'.
ls_e_maildata-e_mail = st_adrmasendcu-email.
APPEND ls_e_maildata TO lt_e_maildata.
* Begin of insert to verify that certain fields are at least filled in
* before we create the business partner. Only for South Africa
CLEAR ls_return.
CALL FUNCTION '/DCSEA/ZAIS_BP_MANDATORY_CHECK'
EXPORTING
partnercategory = '1'
centraldata = ls_centraldata
centraldataperson = ls_centraldataperson
addressdata = ls_addressdata
zcust_id = lv_cust_id
werks = tb_vlc_vehicle-werks
IMPORTING
return = ls_return.
IF ls_return-type = 'E'.
PERFORM write_error USING ls_return-id ls_return-number.
EXIT.
ENDIF.
* end of insert for mandatory checks for South Africa

* --> create business partner using address data of endcustomer


CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'
EXPORTING
* BUSINESSPARTNEREXTERN =
partnercategory = '1'
partnergroup = '0001'
centraldata = ls_centraldata
centraldataperson = ls_centraldataperson
* CENTRALDATAORGANIZATION =
* CENTRALDATAGROUP =
addressdata = ls_addressdata
IMPORTING
businesspartner = gv_bupa
TABLES
telefondata = lt_telefondata
faxdata = lt_faxdata
* TELETEXDATA =
* TELEXDATA =
e_maildata = lt_e_maildata
* RMLADDRESSDATA =
* X400ADDRESSDATA =
* RFCADDRESSDATA =
* PRTADDRESSDATA =
* SSFADDRESSDATA =
* URIADDRESSDATA =
* PAGADDRESSDATA =
addressnotes = lt_addressnotes
* COMMUNICATIONNOTES =
return = lt_return.
* Begin of modification by GUPTAGA for CM-19199616 on 3.1.2012
* if lt_return[] is initial.
CLEAR : ls_return.
READ TABLE lt_return INTO ls_return WITH KEY type = 'E' .
IF sy-subrc <> 0.
* END of modification by GUPTAGA for CM-19199616 on 3.1.2012
READ TABLE tb_vlc_vehicle INDEX 1."VMSUPGD
SELECT SINGLE rltyp FROM /dcsea/zais_plro INTO ls_partner
WHERE werks = tb_vlc_vehicle-werks.
IF sy-subrc NE 0.
MESSAGE e275(/dcsea/zais).
ELSE.
CALL FUNCTION 'BAPI_BUPA_ROLE_ADD'
EXPORTING
businesspartner = gv_bupa
businesspartnerrole = ls_partner
TABLES
return = lt_return.
IF lt_return[] IS INITIAL.
*Begin of Insertion by VIDYASD for CM-0042474461 (DFE SG) on 06.07.2018
*ZECU FROM DMS.
CLEAR lv_mbsg.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = '0042474461'
werks = st_vlcvehicle-werks
IMPORTING
active_flag = lv_mbsg.
IF NOT lv_mbsg IS INITIAL.
CLEAR gv_fm_err.
CALL FUNCTION 'BUP_MEMORY_BUT000_GET'
EXPORTING
iv_partner = gv_bupa
IMPORTING
es_but000 = wa_partner_data
es_but000_old = wa_partner_data_old
EXCEPTIONS
not_found = 1
parameter_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
gv_fm_err = 1.
* Move message data to errtab fields
PERFORM fill_error_table.
ELSE.
wa_partner_data-zcust_id = st_but000a3-zcust_id.

CALL FUNCTION 'BUP_MEMORY_BUT000_FILL'


EXPORTING
is_but000 = wa_partner_data
EXCEPTIONS
parameter_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
gv_fm_err = 1.
* Move message data to errtab fields
PERFORM fill_error_table.
ENDIF.
ENDIF.

ENDIF.
*End of Insertion by VIDYASD for CM-0042474461 (DFE SG) on 06.07.2018

* to update the relationship between role and endcustomer


lt_vlcdeaend-mandt = sy-mandt .
lt_vlcdeaend-parvw = 'AG'.
lt_vlcdeaend-endcu = gv_bupa.
lt_vlcdeaend-roltyp = ls_partner.
APPEND lt_vlcdeaend.
CALL FUNCTION 'VELO14_UPDATE_VLCDEAEND' IN UPDATE TASK
TABLES
vlcdeaend_it = lt_vlcdeaend
EXCEPTIONS
update_not_performed = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
CALL FUNCTION 'ADDR_MEMORY_CLEAR_COMMIT_WORK'.
ENDIF.
ENDIF.
ENDIF.

ENDFORM. " create_business_partner

*&---------------------------------------------------------------------*
*& Form check_pod
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*Start of insertion By JoshiM for CM-1869 Ver 1.4 on 23-04-2003

FORM check_pod.
* If there is a difference between vehicle port of destination
* and VPC? location
* trigger ZTPS action
IF ( tb_vlc_vehicle-zz_port_of_dest EQ co_dest_port1 AND
st_vlcvehiclem-loctn EQ co_loctn1 ) OR
( tb_vlc_vehicle-zz_port_of_dest EQ co_dest_port2 AND
st_vlcvehiclem-loctn EQ co_loctn2 ) .
wf_aktion = co_ztps.
* Prepare data for ZTPS action
PERFORM fill_gore_data.
ENDIF.

ENDFORM. " check_pod

*End of insertion By JoshiM for CM-1869 Ver 1.4 on 23-04-2003

*&---------------------------------------------------------------------*
*& Form move_add_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM move_add_data USING p_action
p_werks. " by Kuchibv 04.02.04

DATA : lt_vguid LIKE /dcsea/zais_vguid OCCURS 0 WITH HEADER LINE.


* begin of insert by harishr for release on 05/04/2004
DATA : lt_zais_para LIKE /dcsea/zais_para OCCURS 0 WITH HEADER LINE .
DATA : lv_tabix LIKE sy-tabix.
* end of insert by harishr for release on 05/04/2004

REFRESH lt_vguid.

*Begin of insert for CM-2261 ver 2.1 by ramakumm 19-Apr-2004


DATA: lt_vlcadddata LIKE vlcadddata_item_s .
*End of insert for CM-2261 ver 2.1 by ramakumm 19-Apr-2004
*Begin of insertion by TRIPATHIL for CM-10003589 v5.7T on 11/12/2009
*for BBDC
CLEAR wf_flag_cnb1.
* CM Activation Logic.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_10003589
werks = p_werks
IMPORTING
active_flag = wf_flag_cnb1.
IF NOT wf_flag_cnb1 IS INITIAL AND
idoc_contrl-rcvprn+0(8) = co_lsipt_cb
AND idoc_contrl-mestyp = co_mestyp_ztech
AND p_action = co_zvdu.

READ TABLE tb_extn INTO wa_extn WITH KEY tabname = co_vlcadddata


fieldname = co_vhfin.
*Modifying VLCADDDATA table
IF sy-subrc EQ 0.
wa_vlcadddata-vguid = wf_vguid2.
wa_vlcadddata-aqual = co_zfin.
wa_vlcadddata-qausp = wa_extn-fieldval.
MODIFY vlcadddata FROM wa_vlcadddata.
CLEAR wa_vlcadddata.
ENDIF.
ENDIF.

******** BEGIN OF MODIFICATION GUPTRIS | 54479486 | 08.12.2020 ********


DATA: lv_flag_54479486(1) TYPE c.

CLEAR: lv_flag_54479486.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = /dcsea/zais_vega_implementatio=>gc_54479486
werks = p_werks
IMPORTING
active_flag = lv_flag_54479486.

IF lv_flag_54479486 IS NOT INITIAL AND


idoc_contrl-rcvprn = /dcsea/zais_vega_implementatio=>gc_fdok_sg AND
idoc_contrl-mestyp = co_mestyp_ztech AND
p_action = co_zvdu.

READ TABLE tb_extn INTO wa_extn WITH KEY tabname = co_vlcadddata


fieldname = co_vhfin.
IF sy-subrc EQ 0.
"Updating VLCADDDATA table
REFRESH: tb_imeiserl.
CLEAR: wa_imeiserl.
wa_imeiserl-vguid = wf_vguid2.
wa_imeiserl-aqual = co_zfin.
wa_imeiserl-qausp = wa_extn-fieldval.
APPEND wa_imeiserl TO tb_imeiserl.
CLEAR: wa_imeiserl.

CALL FUNCTION 'VELO14_UPDATE_VLCADDDATA' IN UPDATE TASK


TABLES
vlcadddata_it = tb_imeiserl
EXCEPTIONS
update_not_performed = 1
OTHERS = 2.

IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
REFRESH: tb_imeiserl.

"Modifying VLCVEHICLE Table.


vlcactdata_cs-zz_bbatx23 = wa_extn-fieldval.
ENDIF.
ENDIF.
********* END OF MODIFICATION GUPTRIS | 54479486 | 08.12.2020 *********

*End of insertion by TRIPATHIL for CM-10003589 v5.7T on 11/12/2009


* CHECK NOT vlcadddata_cs IS INITIAL. "commented by Kuchibv 04.02.2004
CHECK NOT vlcadddata_gt IS INITIAL. "inserted by Kuchibv 04.02.2004

LOOP AT tb_vlc_vehicle.
lt_vguid-vguid = tb_vlc_vehicle-vguid.
APPEND lt_vguid.
ENDLOOP.
*Begin of insertion for T-3497001 by KUMARA on 22/08/05.
*Since CM-2898 is for Partner profile -TWVPCINBL1,checking for this
*partner profile for the below logic

IF ( idoc_contrl-rcvprn = co_twvpcinbl1
*Begin of Insert by BHORCHIS for CM-6854552 on 20.03.2008
* Another check for the new partner system and message type
* corresponding to 'TWVPCINBL1' is required.
* This check is as a result of migration to XI.
OR idoc_contrl-rcvprn = co_lsvpc_tw "LSVPC_TW
AND idoc_contrl-mestyp = co_mestyp_zvpc ). "ZVPC
*End of Insert by BHORCHIS for CM-6854552 on 20.03.2008

*End of insertion for T-3497001 by KUMARA on 22/08/05.


*Begin of Insertion by Vijay Sai(SANTHOSR) for CM-2898 on 18.03.2005
LOOP AT vlcadddata_gt.
CONCATENATE vlcadddata_gt-fieldvalue
co_hyp
vlcactdata_cs-zz_vpcstatus
co_hyp
idoc_contrl-docnum
co_hyp
sy-datlo
sy-timlo
INTO vlcadddata_gt-fieldvalue.

MODIFY vlcadddata_gt.
ENDLOOP.
*End of Insertion by Vijay Sai(SANTHOSR) for CM-2898 on 18.03.2005
*Following line inserted for T-3497001 by KUMARA on 22/08/05.
ENDIF. " if idoc_contrl-rcvprn = CO_TWVPCINBL1.
* Begin of change by STEEVEA for CM-6943780 on 24/4/2008
IF idoc_contrl-rcvprn = co_thvpcinbl1
*Begin of insertion by RAYCHOUDS for CM-6854552 on 09.09.2008
*New Partner profile & msg type for interface thvpcinbl1
OR ( idoc_contrl-rcvprn = co_lsvpc_th "LSVPC_TH
AND idoc_contrl-mestyp = co_mestyp_zvpc ) . "ZVPC
* to add/update record in table VLCADDDATA
LOOP AT vlcadddata_gt.
CONCATENATE vlcadddata_gt-fieldvalue
co_hyp
vlcactdata_cs-zz_vpcstatus
co_hyp
idoc_contrl-docnum
co_hyp
sy-datlo
sy-timlo
INTO vlcadddata_gt-fieldvalue.

MODIFY vlcadddata_gt.
ENDLOOP.
ENDIF.
* End of change by STEEVEA for CM-6943780 on 24/4/2008
CALL FUNCTION '/DCSEA/Z_AIS_PREPARE_ADDDATA'
EXPORTING
action = p_action
plant = p_werks
* vlcadddata = vlcadddata_cs "by Kuchibv 04.02.04
TABLES
vguid = lt_vguid
adddata = vlcadddata_gt
CHANGING
vlcactdata_cs = vlcactdata_cs
EXCEPTIONS
invalid_field = 1
no_data_found = 2
OTHERS = 3.

*Begin of insert for CM-2261 ver 2.1 by ramakumm 19-Apr-2004

IF idoc_contrl-rcvprn+0(8) = 'AUOVPINB'
*Begin of Insert by BHORCHIS for CM-6854552 on 20.03.2008
* Another check for the new partner system and message type
* corresponding to 'AUOVPINB' is required.This check is needed as a
* result of migration to XI.
OR ( idoc_contrl-rcvprn+0(6) = co_lsovp "LSOVP_
AND idoc_contrl-mestyp = co_mestyp_zovp ) "ZOVP
*End of Insert by BHORCHIS for CM-6854552 on 20.03.2008.
*Begin of insert for CM-39989827 by AJABOSE on 15.10.2017
OR ( idoc_contrl-rcvprn = /dcsea/zais_xclass=>co_lsauc_au "LSAUC_AU
AND idoc_contrl-mestyp = /dcsea/zais_xclass=>co_mestyp_zovp )."ZOVP
*End of insert for CM-39989827 by AJABOSE on 15.10.2017
SELECT * FROM /dcsea/zais_para
INTO TABLE lt_zais_para
WHERE ( domval1 = idoc_contrl-rcvprn
*Begin of Insert by BHORCHIS for CM-6854552 on 20.03.2008.
* As part of migration to XI , partner number and message type
* will be concatenated into domval1 and hence the same need to be
* included in the select query as well
OR domval1 = wf_partner_mestyp )
*End of Insert by BHORCHIS for CM-6854552 on 20.03.2008
AND domval2 = p_action
AND param = 'INTERFACEQUALIFIER'.

SORT lt_zais_para BY fieldval.

LOOP AT vlcactdata_cs-adddata_item INTO lt_vlcadddata.


lv_tabix = sy-tabix.
READ TABLE lt_zais_para WITH
KEY fieldval = lt_vlcadddata-aqual BINARY SEARCH .
IF sy-subrc = 0.
CONCATENATE lt_vlcadddata-qausp '-' sy-datlo
sy-timlo INTO lt_vlcadddata-qausp.
MODIFY vlcactdata_cs-adddata_item FROM lt_vlcadddata INDEX lv_tabix
.
ENDIF.
ENDLOOP.
ENDIF.
*End of insert for CM-2261 ver 2.1 by ramakumm 19-Apr-2004

ENDFORM. " move_add_data


*&---------------------------------------------------------------------*
*& Form append_fill_adddata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM append_fill_adddata.

* Begin of change by PERIASAS on 05/112/2003 for CM 2261


* DATA : lv_field(50).
* FIELD-SYMBOLS : <field> TYPE ANY.
* CONCATENATE 'VLCADDDATA_CS-' st_vlcadddata-fieldname INTO lv_field.
* ASSIGN (lv_field) TO <field>.
* IF sy-subrc EQ 0.
* <field> = st_vlcadddata-fieldvalue.
* ENDIF.
CLEAR vlcadddata_gt.
MOVE-CORRESPONDING st_vlcadddata TO vlcadddata_gt.
APPEND vlcadddata_gt.

ENDFORM. " append_fill_adddata


* Begin of insert by SRIVATSS for CM1486 on 22/09/03
*&---------------------------------------------------------------------*
*& Form save_conp
*&---------------------------------------------------------------------*
* Subroutine to save the vehicle details on the CONp table
*----------------------------------------------------------------------*
* --> None
* <-- None
*----------------------------------------------------------------------*
FORM save_conp USING p_aktion.
DATA : lv_cuobj LIKE vlcvehicle-cuobj,
lv_werks LIKE t001w-werks,
lv_matnr LIKE mara-matnr,
lv_commnos LIKE vlcvehicle-vhcex,
lv_vguid LIKE vlcvehicle-vguid,
lv_go_enabled LIKE /dcsea/zais_lcod-z_go_api_enabled,
st_conp LIKE /dcsea/zais_conp OCCURS 1 WITH HEADER LINE,
lv_tstmp LIKE tzonref-tstamps,
tb_bapicuval LIKE bapicuval OCCURS 0 WITH HEADER LINE.

CONSTANTS: co_mm(2) VALUE 'MM',


co_sd(2) VALUE 'SD',
co_x(1) VALUE 'X'. " Ticket 1512438

* Clear variables and refresh internal tables


CLEAR : lv_cuobj,lv_werks,lv_matnr,lv_vguid, lv_go_enabled.
* st_vlcdiavehi = vlcdiavehi_ct.
lv_werks = tb_vlc_vehicle-werks.
lv_cuobj = tb_vlc_vehicle-cuobj.
lv_matnr = tb_vlc_vehicle-matnr.
lv_vguid = tb_vlc_vehicle-vguid.
* Check if GO-API is enabled,if so further check if vehicle is MBPC/SMRT
* and CBU
CALL FUNCTION '/DCSEA/ZAIS_CHECK_GO_CBU'
EXPORTING
werks = tb_vlc_vehicle-werks
matnr = tb_vlc_vehicle-matnr
IMPORTING
go_enabled_iv = lv_go_enabled.
* if vehicle is enabled for GO
IF lv_go_enabled EQ co_true.
* Begin of change for Ticket 1486105 by SRIVATSS on 26/11/2003
REFRESH tb_bapicuval.
CLEAR tb_bapicuval.
* Get configuration of the vehicle
CALL FUNCTION 'VELO03_GET_CONFIGURATION'
EXPORTING
cuobj_iv = lv_cuobj
TABLES
bapicuval_et = tb_bapicuval
EXCEPTIONS
conf_not_found = 1
conversion_not_performed = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

* End of change for Ticket 1486105 by SRIVATSS on 26/11/2003


MOVE tb_vlc_vehicle-zz_ord_clsfcn TO
vlcactdata_cs-zz_ord_clsfcn .
* FM to build the string to be stored on CONP table
CALL FUNCTION '/DCSEA/Z_AIS_BUILD_GOAPI_STR'
EXPORTING
action_is = p_aktion
kerridge_indicator = co_x " Ticket 1512438
IMPORTING
listener = vlc_listener
tcpip_stub = vlc_tcpip_stub
basic_vehi_data = basic_vehi_data
dispatch_head = dispatch_head
export_markets = export_markets
message_control = message_control
TABLES
vlcdiavehi_ct = tb_vlc_vehicle
* vlcbapicu_it = tb_bapicuval " Ticket 1486105
bapicuval_ct = tb_bapicuval " Ticket 1486105
vlch_mssg_ct = vlch_mssg_ct
CHANGING
vlcactdata_cs = vlcactdata_cs
EXCEPTIONS
insufficient_data = 1
OTHERS = 2.
IF sy-subrc <> 0.
IF sy-subrc EQ 1.
RAISE insufficient_data_for_go_api.
ENDIF.
ENDIF.
* Concatenate the structure contents into a single string
* before storing on CONP table
CLEAR: wf_string,
wf_string1,
wf_func_data_length,
wf_msg_length.
wf_string1+162(130) = dispatch_head.
* BUAP0 string
wf_string1+292(33) = message_control.
* BUAP1 string
* Below line changed by shiwali(VTHIRUV) for CM 18325656 on 3.10.2012
*line modified to accomodate BUAP1 with new BUAP20
* wf_string1+325(825) = basic_vehi_data.
wf_string1+325(1325) = basic_vehi_data.
* BUAP3 string
* Below line changed by VTHIRUV for CM 18325656 on 3.11.2012
* wf_string1+1150(32) = export_markets.
wf_string1+1650(32) = export_markets.

* calculate for functional data length excluding message


wf_func_data_length = strlen( wf_string1 ).

* calculate for message length


wf_msg_length = co_totfunclength - wf_func_data_length.

* calculate for func data length and message length


vlc_tcpip_stub-var_data_length = wf_func_data_length +
wf_msg_length.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'


EXPORTING
input = vlc_tcpip_stub-var_data_length
IMPORTING
output = vlc_tcpip_stub-var_data_length.

* Listener Data
wf_string(50) = vlc_listener.
* VLC TCPIP Date
wf_string+50(112) = vlc_tcpip_stub.
* Dispatcher header data
wf_string+162(130) = dispatch_head.
* BUAP0 string
wf_string+292(33) = message_control.
* BUAP1 string
* Below line changed by shiwali(VTHIRUV) for CM 18325656 on 3.10.2012
*line modified to accomodate BUAP1 with new BUAP20
* wf_string1+325(825) = basic_vehi_data.
wf_string+325(1325) = basic_vehi_data.
* BUAP3 string
* Below line changed by VTHIRUV for CM 18325656 on 3.11.2012
* wf_string+1150(32) = export_markets.
wf_string+1650(32) = export_markets.
* Store the contents on the CONP table
CLEAR st_conp.
st_conp-werks = tb_vlc_vehicle-werks.
CALL FUNCTION 'VELO03_CONVERT_INTO_TIMESTAMP'
EXPORTING
datlo_iv = sy-datlo
timlo_iv = sy-timlo
tzone_iv = sy-zonlo
IMPORTING
timestamp_ev = lv_tstmp.
st_conp-tstmp = lv_tstmp + '0.9999999'.
st_conp-z_origin = 'I'.
st_conp-z_commnos = tb_vlc_vehicle-zz_commnos.
st_conp-direct = '2'.
st_conp-dtint2 = strlen( wf_string ).
st_conp-z_go_data = wf_string.
APPEND st_conp.
* the data to be stored on table /dcsea/zais_conp is updated
* using a FM

CALL FUNCTION '/DCSEA/ZAIS_UPDATE_CONP_TABLE'


TABLES
tb_conp = st_conp
EXCEPTIONS
update_not_performed = 1
no_data_received = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE tb_vlc_vehicle INDEX 1.
tb_vlc_vehicle-mmsta = 'LF25'.
MODIFY tb_vlc_vehicle INDEX 1.
* Lock the table before update
CALL FUNCTION 'ENQUEUE_E_VLCVEHICLE'
EXPORTING
mode_vlcvehicle = 'E'
mandt = sy-mandt
vguid = tb_vlc_vehicle-vguid
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.

UPDATE vlcvehicle
SET mmsta = tb_vlc_vehicle-mmsta
WHERE vguid = tb_vlc_vehicle-vguid.
* Release the Lock
CALL FUNCTION 'DEQUEUE_E_VLCVEHICLE'
EXPORTING
mode_vlcvehicle = 'E'
mandt = sy-mandt
vguid = tb_vlc_vehicle-vguid.

ENDIF."Endif for sy-subrc of ENQUEUE_E_VLCVEHICLE

ENDIF.
ENDFORM. " save_conp
* End of insert by SRIVATSS for CM1486 on 22/09/03
* begin of insert by harishr for cm-2261 on 25/02/2004
*&---------------------------------------------------------------------*
*& Form check_iface_ovp
*&---------------------------------------------------------------------*
* INBSTSFORVEHUSAGE parameter specifies the logistics status for
* inbound* actions. The requirement is there are many paths in action
* matrix based on vehicle usage. Trigger inbound actions looking into
* the combination of logistics status and vehicle usage for this
* interface in table /DCSEA?ZAIS_PARA.
* e.g. .
* For DOMVAL1 = AUOVPINBL1 and DOMVAL2 = ZIDI for FIELDNAME = LS11 and
* FIELDVAL will contain Vehicle Usage.
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_iface_ovp.
DATA : wa_vlcvehicle LIKE vlcvehicle,
tb_para_ovp LIKE /dcsea/zais_para
OCCURS 0 WITH HEADER LINE. "CM-2261 fix

CLEAR : /dcsea/zais_para.

READ TABLE tb_vlc_vehicle


INDEX 1
TRANSPORTING vhcle.

CHECK sy-subrc EQ 0.

* Start of deletion - santosg 16/06/2004 - fix on CM-2261


* Read vehicle details into separate work area wa_vlcvehicle to
* avoid overwriting vlcvehicle wa which others may be using
* select single *
* from vlcvehicle
* into wa_vlcvehicle
* where vhcle = tb_vlc_vehicle-vhcle.
* check sy-subrc eq 0.
* End of deletion - santosg - 16/06/2004 - fix on CM-2261

* For OVP interface and parameter = inbstsforvehusage, if vhusg and


* primary status in zais_para do not match with vehicle's, then do not
* allow the idoc to go.

* Start of deletion - santosg 16/06/2004 - fix on CM-2261


* select single *
* from /dcsea/zais_para
* where domval1 = co_auovpinbl1
* and domval2 = wf_aktion
* and param = co_inbstsforvehusage.
* and fieldname = tb_vlc_vehicle-mmsta
* and fieldval = tb_vlc_vehicle-vhusg .
* if sy-subrc ne 0.
* clear wf_carrier_iface_ind.
* endif.
* End of deletion - santosg - 16/06/2004 - fix on CM-2261

* Start of insertion - santosg 16/06/2004 - fix on CM-2261


CLEAR tb_para_ovp.
REFRESH tb_para_ovp.

SELECT *
FROM /dcsea/zais_para
INTO CORRESPONDING FIELDS OF TABLE tb_para_ovp
WHERE ( domval1 = idoc_contrl-rcvprn
*Begin of Insert by BHORCHIS for CM-6854552 on 20.03.2008
* As part of migration to XI , partner number and message type
* will be concatenated into domval1 and hence the same need to be
* included in the select query as well
OR domval1 = wf_partner_mestyp )
*End of Insert by BHORCHIS for CM-6854552 on 20.03.2008.
AND domval2 = wf_aktion
AND param = co_inbstsforvehusage.

IF sy-subrc EQ 0.
* Write error in errtab, combination of mmsta and vhusg not found
READ TABLE tb_para_ovp
WITH KEY fieldname = tb_vlc_vehicle-mmsta
fieldval = tb_vlc_vehicle-vhusg.
IF sy-subrc NE 0.
PERFORM write_error USING co_msg_553
co_zais_msg.
ENDIF.
ENDIF.
* End of insertion - santosg 16/06/2004 - fix on CM-2261

ENDFORM. " check_iface_ovp


* end of insert by harishr for cm-2261 on 25/02/2004

*** Start of insertion by Ashish(PUTHILLP) on 18/05/2004 for CM-2475.

*&---------------------------------------------------------------------*
*& Form check_lgort_pod
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_lgort_pod.

* Check whether lgort and port of destination match as per table


* /DCSEA/ZAIS_LGPD.
SELECT SINGLE *
FROM /dcsea/zais_lgpd
WHERE lgort = tb_vlc_vehicle-lgort
AND port_of_dest = tb_vlc_vehicle-zz_port_of_dest.

* If no match found
IF sy-subrc <> 0.

wf_aktion = co_ztps.
* Fill VLCGORE data
PERFORM fill_gore_data.

ELSE.
* Check if werks = 'TOYO' and first four chars of port of dest
* description is 'TOYO'.
IF st_vlcvehiclem-loctn = co_toyo.

* Get port of destination description from table /DCSEA/ZAIS_PDTT


SELECT SINGLE *
FROM /dcsea/zais_pdtt
WHERE spras = co_e
AND port_of_dest = tb_vlc_vehicle-zz_port_of_dest.

TRANSLATE /dcsea/zais_pdtt-port_of_dest_txt TO UPPER CASE.

* If first four chars of port of dest description is 'TOYO'


IF /dcsea/zais_pdtt-port_of_dest_txt(4) <> co_toyo.

wf_aktion = co_ztps.
* Fill VLCGORE data
PERFORM fill_gore_data.

ENDIF.
ENDIF.
ENDIF.

ENDFORM. " check_lgort_pod

*&---------------------------------------------------------------------*
*& Form append_data_extn
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM append_data_extn.

READ TABLE tb_vlc_vehicle INDEX 1.


TABLES : /dcsea/zais_par2 .
DATA : lv_date LIKE sy-datlo.
DATA : lv_time LIKE sy-timlo. " Anil on 11/09/2004

IF st_extn-tabname EQ co_vlcvehicle.
ASSIGN st_extn-fieldname TO <fs_fieldname>.
* Begin of Changes by AGORAMS(Sriram) 20Sep2005 TKT-3588327
* assign component <fs_fieldname> of structure tb_vlc_vehicle to
* <fs_fieldval>.
ASSIGN COMPONENT <fs_fieldname> OF STRUCTURE st_vlcvehicle TO
<fs_fieldval>.
* End of Changes by AGORAMS(Sriram) 20Sep2005 TKT-3588327
SELECT SINGLE *
FROM /dcsea/zais_par2
WHERE fieldname EQ <fs_fieldname>.

IF sy-subrc EQ 0 AND /dcsea/zais_par2-timestamp EQ 'X'.


lv_date = st_extn-fieldval(8). " Anil on 11/09/2004
lv_time = st_extn-fieldval+8(6). " Anil on 11/09/2004
IF lv_time IS INITIAL. " Anil on 11/09/2004
lv_time = sy-timlo. " Anil on 11/09/2004
ENDIF. " Anil on 11/09/2004
CALL FUNCTION 'VELO03_CONVERT_INTO_TIMESTAMP'
EXPORTING
datlo_iv = lv_date
timlo_iv = lv_time "'120000'
tzone_iv = sy-zonlo
IMPORTING
timestamp_ev = <fs_fieldval>.
ELSE.
<fs_fieldval> = st_extn-fieldval.
ENDIF.
* Begin of Changes by AGORAMS(Sriram) 20Sep2005 TKT-3588327
* modify tb_vlc_vehicle index 1.
MODIFY tb_vlc_vehicle FROM st_vlcvehicle INDEX 1 .
* End of Changes by AGORAMS(Sriram) 20Sep2005 TKT-3588327
ENDIF.
* Begin of insert by MAAMARN for CM-0039003675 on 19.10.2017
IF st_extn-tabname EQ co_vlcactdata.
IF st_extn-fieldname EQ co_zlut_amount.
gv_lux_tax = st_extn-fieldval.
ELSEIF st_extn-fieldname EQ co_zz_article22.
gv_article22 = st_extn-fieldval.
ELSEIF st_extn-fieldname EQ co_tax_amount.
gv_tax_amount = st_extn-fieldval.
ENDIF.
ENDIF.
* End of insert by MAAMARN for CM-0039003675 on 19.10.2017
*Begin of insert by RNEELAM for CM 0041034978 on date 29.10.2020
IF st_extn-fieldname EQ 'ZTCE'.
wf_amount_ztce = st_extn-fieldval.

ENDIF.

IF st_extn-fieldname EQ 'ZEFR'.
wf_amount_zefr = st_extn-fieldval.

ENDIF.
*End of insert by RNEELAM for CM 0041034978 on date 29.10.2020
ENDFORM. " append_data_extn

*** End of insertion by Ashish(PUTHILLP) on 18/05/2004 for CM-2475.

* begin of insert by KALLIANM for CM-2564 on 21.06.2004


*&---------------------------------------------------------------------
*& Form get_customer_data
*&---------------------------------------------------------------------
* this form is used to get the customer data from table BUT000. if the
* record is not present then a new one is created.
*----------------------------------------------------------------------

FORM get_customer_data.

PERFORM fill_central_data.
"HANA Code Remediation:Select Single not unique
" select single partner from but000 into gv_partner
" where bu_sort1 = st_adrmasendcub-bu_sort1.
SELECT partner UP TO 1 ROWS FROM but000 INTO gv_partner
WHERE bu_sort1 = st_adrmasendcub-bu_sort1 ORDER BY PRIMARY KEY.
ENDSELECT.
IF sy-subrc EQ 0.
CALL FUNCTION 'BUPA_CENTRAL_CHANGE'
EXPORTING
iv_partner = gv_partner
is_data = wa_central_data
is_data_person = wa_central_data_person
is_data_person_x = wa_central_data_person_x
is_data_x = wa_central_data_x
TABLES
et_return = tb_return.

* Delete Messages which are not error or abend messages


DELETE tb_return WHERE type NE co_error_messagetype
AND type NE co_abend_messagetype.

IF tb_return[] IS INITIAL.
PERFORM update_customer_data.
ELSE.
PERFORM fill_error_table.
ENDIF.
ELSE.
PERFORM create_customer_data.
ENDIF.

ENDFORM. " get_customer_data

*&---------------------------------------------------------------------
*& Form update_customer_data
*&---------------------------------------------------------------------
* this form is used to update the address of the customer.
*----------------------------------------------------------------------

FORM update_customer_data.

PERFORM get_address_data.

CLEAR tb_return.
REFRESH tb_return.

* Call BAPI to update Address data


CALL FUNCTION 'BAPI_BUPA_ADDRESS_CHANGE'
EXPORTING
businesspartner = gv_partner
addressdata = wa_addressdata
addressdata_x = wa_addressdata_x
TABLES
bapiadtel = tb_bapiadtel
bapiad_rem = tb_bapiad_rem
bapiadtel_x = tb_bapiadtel_x
bapiad_re_x = tb_bapiad_rem_x
return = tb_return.

* Delete Messages which are not error or abend messages


DELETE tb_return WHERE type NE co_error_messagetype
AND type NE co_abend_messagetype.

IF NOT tb_return[] IS INITIAL.


PERFORM fill_error_table.
ELSE.
PERFORM update_custid.
ENDIF.

ENDFORM. " update_customer_data

*&---------------------------------------------------------------------
*& Form create_customer_data
*&---------------------------------------------------------------------
* this form is used to create a new customer if the employee no is
* not found in table BUT000
*----------------------------------------------------------------------

FORM create_customer_data.

PERFORM get_address_data.

DATA : lt_vlcdeaend LIKE vlcdeaend OCCURS 0 WITH HEADER LINE,


ls_partner LIKE /dcsea/zais_plro-rltyp.

CLEAR tb_return.
REFRESH tb_return.

CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'


EXPORTING
partnercategory = co_category " '1'
partnergroup = co_partner_grp " '0001'
centraldata = wa_central_data
centraldataperson = wa_central_data_person
addressdata = wa_addressdata
IMPORTING
businesspartner = gv_partner
TABLES
telefondata = tb_bapiadtel
addressnotes = tb_bapiad_rem
return = tb_return.

* Delete Messages which are not error or abend messages


DELETE tb_return WHERE type NE co_error_messagetype
AND type NE co_abend_messagetype.

IF NOT tb_return[] IS INITIAL.


PERFORM fill_error_table.
ELSE.
PERFORM update_custid.
ENDIF.

* get the role type

SELECT SINGLE rltyp FROM /dcsea/zais_plro INTO ls_partner


WHERE werks = vlcvehicle-werks.
IF sy-subrc NE 0.
tb_return-type = co_error_messagetype.
tb_return-id = co_message_id.
tb_return-number = co_message_no.
APPEND tb_return.
PERFORM fill_error_table.
ELSE.
CALL FUNCTION 'BAPI_BUPA_ROLE_ADD'
EXPORTING
businesspartner = gv_partner
businesspartnerrole = ls_partner
TABLES
return = tb_return.
IF tb_return[] IS INITIAL.

* to update the relationship between role and endcustomer


lt_vlcdeaend-mandt = sy-mandt.
lt_vlcdeaend-parvw = co_parvw.
lt_vlcdeaend-kunnr = st_vlcvehiclem-kunnr.
lt_vlcdeaend-endcu = gv_partner.
lt_vlcdeaend-roltyp = ls_partner.
APPEND lt_vlcdeaend.
CALL FUNCTION 'VELO14_UPDATE_VLCDEAEND' IN UPDATE TASK
TABLES
vlcdeaend_it = lt_vlcdeaend
EXCEPTIONS
update_not_performed = 1
OTHERS = 2.
IF sy-subrc <> 0.
tb_return-type = co_error_messagetype.
tb_return-id = sy-msgid.
tb_return-number = sy-msgno.
tb_return-message_v1 = sy-msgv1.
tb_return-message_v2 = sy-msgv2.
tb_return-message_v3 = sy-msgv3.
tb_return-message_v4 = sy-msgv4.

APPEND tb_return.
PERFORM fill_error_table.

ENDIF.
ENDIF.
ENDIF.

ENDFORM. " create_customer_data

*&---------------------------------------------------------------------
*& Form get_address_data
*&---------------------------------------------------------------------
* this form is used to fill the address data into the structure
*----------------------------------------------------------------------

FORM get_address_data.
DATA : lv_partner LIKE but020-partner.
REFRESH: tb_bapiadtel,
tb_bapiad_rem,
tb_bapiadtel_x,
tb_bapiad_rem_x.

wa_addressdata-street = st_adrmasendcu-street.
wa_addressdata-str_suppl1 = st_adrmasendcu-str_suppl1.
wa_addressdata-str_suppl2 = st_adrmasendcu-str_suppl2.
wa_addressdata-city = st_adrmasendcu-city1.
wa_addressdata-postl_cod1 = st_adrmasendcu-post_code1.
wa_addressdata-country = st_adrmasendcu-country.
wa_addressdata_x-street = 'X'.
wa_addressdata_x-str_suppl1 = 'X'.
wa_addressdata_x-str_suppl2 = 'X'.
wa_addressdata_x-city = 'X'.
wa_addressdata_x-postl_cod1 = 'X'.
wa_addressdata_x-country = 'X'.

IF NOT st_adrmasendcu-tel_number IS INITIAL.


tb_bapiadtel-telephone = st_adrmasendcu-tel_number.
APPEND tb_bapiadtel.
tb_bapiadtel_x-telephone = 'X'.
IF gv_partner IS INITIAL.
tb_bapiadtel_x-updateflag = 'I'.
ELSE.
SELECT SINGLE but020~partner
INTO lv_partner
FROM but020 INNER JOIN adr2
ON but020~addrnumber = adr2~addrnumber
WHERE but020~partner = gv_partner.
IF sy-subrc EQ 0.
tb_bapiadtel_x-updateflag = 'U'.
ELSE.
tb_bapiadtel_x-updateflag = 'I'.
ENDIF.
ENDIF.
APPEND tb_bapiadtel_x.
ENDIF.

IF NOT st_adrmasendcu-tel_number_2 IS INITIAL.


tb_bapiad_rem-adr_notes = st_adrmasendcu-tel_number_2.
tb_bapiad_rem-langu = sy-langu.
APPEND tb_bapiad_rem.
IF gv_partner IS INITIAL.
tb_bapiadtel_x-updateflag = 'I'.
ELSE.
SELECT SINGLE but020~partner
INTO lv_partner
FROM but020 INNER JOIN adrct
ON but020~addrnumber = adrct~addrnumber
WHERE but020~partner = gv_partner
AND adrct~langu = sy-langu.
IF sy-subrc EQ 0.
tb_bapiad_rem_x-updateflag = 'U'.
ELSE.
tb_bapiad_rem_x-updateflag = 'I'.
ENDIF.
ENDIF.
tb_bapiad_rem_x-adr_notes = 'X'.
tb_bapiad_rem_x-langu = 'X'.
APPEND tb_bapiad_rem_x.
ENDIF.
ENDFORM. " get_address_data

*&---------------------------------------------------------------------*
*& Form fill_central_data
*&---------------------------------------------------------------------*
* this form fills the central data needed to be passed to the BAPI.
* the central data contains the sort1 and sort2 fields from the IDOC.
*----------------------------------------------------------------------*

FORM fill_central_data.

wa_central_data-searchterm1 = st_adrmasendcub-bu_sort1.
wa_central_data-searchterm2 = st_adrmasendcub-bu_sort2.
wa_central_data_x-searchterm1 = 'X'.
wa_central_data_x-searchterm2 = 'X'.

wa_central_data_person-firstname = st_but000a3-name_first.
wa_central_data_person-lastname = st_but000a3-name_last.
wa_central_data_person_x-firstname = 'X'.
wa_central_data_person_x-lastname = 'X'.

ENDFORM. " fill_central_data

*&---------------------------------------------------------------------*
*& Form fill_error_table
*&---------------------------------------------------------------------*
* this form is used to fill the error table with the errors obtained
* from the BAPI return table
*----------------------------------------------------------------------*

FORM fill_error_table.

CLEAR tb_errtab.

* Begin of insertion by KHETERT for T# 1924179 / CM-2531 on 15/07/2004

IF ( idoc_contrl-rcvprn+0(10) = co_zamlninsl1
* Begin of Insert by BHORCHIS for CM-6854552 on 24.03.2008
* Another check for the new partner system and message type
* corresponding to 'ZAMLNINSL1' is required.This check is needed
* as a result of migration to XI.
OR ( idoc_contrl-rcvprn+0(10) = co_lsmerln_za "LSMERLN_ZA
AND idoc_contrl-mestyp = co_mestyp_zmer ) ) "ZMER
* End of Insert by BHORCHIS for CM-6854552 on 24.03.2008
AND ( wf_aktion = co_zvha OR
wf_aktion = co_zvna OR
wf_aktion = co_zins OR
wf_aktion = co_zinu ).

tb_errtab-msgty = co_error_messagetype.
tb_errtab-msgid = co_message_id.
tb_errtab-msgnr = co_mesg_no.
tb_errtab-msgv1 = wf_aktion.

APPEND tb_errtab.

ELSE.
* End of insertion by KHETERT for T# 1924179 / CM-2531 on 15/07/2004

* if there has been error in the function modules


IF gv_fm_err = 1.
tb_errtab-msgty = sy-msgno.
tb_errtab-msgid = sy-msgid.
tb_errtab-msgnr = sy-msgno.
tb_errtab-msgv1 = sy-msgv1.
tb_errtab-msgv2 = sy-msgv2.
tb_errtab-msgv3 = sy-msgv3.
tb_errtab-msgv4 = sy-msgv4.
APPEND tb_errtab.
ENDIF.

* Get message text data


SELECT SINGLE * FROM t100
WHERE sprsl = sy-langu
AND arbgb = tb_return-id
AND msgnr = tb_return-number.

IF sy-subrc EQ 0.
* if there has been error in the BAPIs
* Move message data to errtab fields
tb_errtab-msgty = tb_return-type.
tb_errtab-msgid = t100-arbgb.
tb_errtab-msgnr = t100-msgnr.
tb_errtab-msgv1 = tb_return-message_v1.
tb_errtab-msgv2 = tb_return-message_v2.
tb_errtab-msgv3 = tb_return-message_v3.
tb_errtab-msgv4 = tb_return-message_v4.
APPEND tb_errtab.
ENDIF. "sy-subrc eq 0

* Foll. line inserted by KHETERT for T# 1924179 / CM-2531 on 15/07/2004


ENDIF.

ENDFORM. " fill_error_table

*&---------------------------------------------------------------------*
*& Form update_custid
*&---------------------------------------------------------------------*
* this form is used to update the table BUT000 with the cust ID.
*----------------------------------------------------------------------*

FORM update_custid.

CLEAR gv_fm_err.

CALL FUNCTION 'BUP_MEMORY_BUT000_GET'


EXPORTING
iv_partner = gv_partner
IMPORTING
es_but000 = wa_partner_data
es_but000_old = wa_partner_data_old
EXCEPTIONS
not_found = 1
parameter_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
gv_fm_err = 1.
* Move message data to errtab fields
PERFORM fill_error_table.
ELSE.
wa_partner_data-zcust_id = st_but000a3-zcust_id.
*Begin of insert by DEA for CM-2779 v1.1 on 08-Dec-2004
wa_partner_data-title = st_but000a1-title.
*End of insert by DEA for CM-2779 v1.1 on 08-Dec-2004
CALL FUNCTION 'BUP_MEMORY_BUT000_FILL'
EXPORTING
is_but000 = wa_partner_data
EXCEPTIONS
parameter_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
gv_fm_err = 1.
* Move message data to errtab fields
PERFORM fill_error_table.
ENDIF.
ENDIF.

ENDFORM. " update_custid

* end of insert by KALLIANM for CM-2564 on 21.06.2004


* Begin of insertion by THELAKAK for CM-3130 on 14/07/2005.

*&---------------------------------------------------------------------*
*& Form check_aktion_lctn
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_aktion_lctn.

IF st_vlcvehiclem-loctn IS INITIAL.
* Write error in errtab, The field LOCTN is mandatory
PERFORM write_error USING co_msg_828
co_zais_msg.
* Begin of inserion by THELAKAK for T#3586698 on 20.09.2005.
ELSE.
* Else populate vlcactdata_cs.
MOVE st_vlcvehiclem-loctn TO vlcactdata_cs-loctn.
* End of inserion by THELAKAK for T#3586698 on 20.09.2005.

ENDIF.

ENDFORM. " check_aktion_lctn

*&---------------------------------------------------------------------*
*& Form check_aktion_zscc
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_aktion_zscc.

IF ( st_vlcvehiclem-werks IS INITIAL ) OR
( st_vlcgoodsmvmt-lgort IS INITIAL ) OR
( st_vlcgoodsmvmt-mm_bldat IS INITIAL ) OR
( st_vlcgoodsmvmt-mm_budat IS INITIAL ) .
*Write error in errtab, The fields WERKS.LGORT,MM_BUDAT and MM_BLDAT are
*mandatory for action ZSCC
PERFORM write_error USING co_msg_830
co_zais_msg.
* Begin of inserion by THELAKAK for T#3586698 on 20.09.2005.
ELSE.
* Else populate vlcactdata_cs.
MOVE st_vlcvehiclem-werks TO vlcactdata_cs-werks.
MOVE st_vlcgoodsmvmt-lgort TO vlcactdata_cs-lgort.
MOVE st_vlcgoodsmvmt-mm_bldat TO vlcactdata_cs-bldat.
MOVE st_vlcgoodsmvmt-mm_budat TO vlcactdata_cs-budat.

* End of inserion by THELAKAK for T#3586698 on 20.09.2005.

ENDIF.
ENDFORM. " check_aktion_zscc
* End of insertion by THELAKAK for CM-3130 on 14/07/2005

* Begin of insertion by Lavanya(CHATARAL) for CM-3170 on 18/07/2005.


*&---------------------------------------------------------------------*
*& Form get_subcon_po_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_subcon_po_data.
* Check the mandatory fields.If they are initial display an error
* message.
CLEAR vlcactdata_cs.
IF ( st_ekko-ekorg IS INITIAL ) OR
( st_ekko-ekgrp IS INITIAL ) OR
( st_vlcvehiclem-lifnr IS INITIAL ).

PERFORM write_error USING co_msg_831


co_zais_msg.
ELSE.
*Begin of insert by TALESRAH for CM-6516912 on 07/01/2008.
* Clear the variables
CLEAR: wf_deldays,
wf_calcdate,
wf_infnr,
*Begin of change by TALESRAH for CM-6516912 on 10/01/2008.
wf_prddt,
wf_ddays.
"HANA Code Remediation:Select Single not unique
" select single pdtsp from vlcvehicle into vlcvehicle-pdtsp
" where vhcle = tb_vlc_vehicle-vhcle.
SELECT pdtsp UP TO 1 ROWS FROM vlcvehicle INTO vlcvehicle-pdtsp
WHERE vhcle = tb_vlc_vehicle-vhcle ORDER BY PRIMARY KEY.
ENDSELECT.
*End of change by TALESRAH for CM-6516912 on 10/01/2008.
*Function Call to convert timestamp into date.
CALL FUNCTION 'VELO03_CONVERT_FROM_TIMESTAMP'
EXPORTING
timestamp_iv = vlcvehicle-pdtsp
tzone_iv = sy-zonlo
IMPORTING
datlo_ev = wf_prddt.

IF sy-subrc = 0.
* Get Purchasing Organization.
"HANA Code Remediation:Select Single not unique
" select single infnr into wf_infnr from eina
" where matnr eq tb_vlc_vehicle-matnr and
"*Begin of change by TALESRAH for CM-6516912 on 14/01/2008.
"* lifnr eq tb_vlc_vehicle-lifnr.
" lifnr eq st_vlcvehiclem-lifnr.
SELECT infnr INTO wf_infnr UP TO 1 ROWS FROM eina
WHERE matnr EQ tb_vlc_vehicle-matnr AND
*Begin of change by TALESRAH for CM-6516912 on 14/01/2008.
* lifnr eq tb_vlc_vehicle-lifnr.
lifnr EQ st_vlcvehiclem-lifnr ORDER BY PRIMARY KEY. ENDSELECT.
*End of change by TALESRAH for CM-6516912 on 14/01/2008.
IF sy-subrc = 0.
*Fetch the no: of days to deliver and put it into a variable
SELECT SINGLE aplfz INTO wf_deldays FROM eine
WHERE infnr EQ wf_infnr AND
werks EQ tb_vlc_vehicle-werks AND
*Purchasing info record category as subcontracting.
esokz EQ co_three AND
ekorg EQ st_ekko-ekorg.
ENDIF.

*Begin of insertion by SHARMAA for CM-8065150 on 05.11.2008


ENDIF.
*Changes activated for MFTT
*Applying CM Activation check for MBTH Plant
CLEAR wf_active_flag.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_8065150
werks = tb_vlc_vehicle-werks
IMPORTING
active_flag = wf_active_flag.

IF NOT wf_active_flag IS INITIAL.


*End of insertion by SHARMAA for CM-8065150 on 05.11.2008
*Following line inserted by TALESRAH for CM-6516912 on 10/01/2008.
wf_ddays = wf_deldays.
*Function call for addition of days to the specified date and get the
*resultant date.
CALL FUNCTION '/DCSEA/Z_AIS_CALCULATE_DATE'
EXPORTING
date = wf_prddt
days = wf_ddays
months = '00'
sign = '+'
years = '00'
IMPORTING
calc_date = wf_calcdate.
* Following line commented by SHARMAA for CM-8065150 on 05.11.2008
* endif.
*End of insert by TALESRAH for CM-6516912 on 07/01/2008.

*Begin of change by TALESRAH for CM-6516912 on 07/01/2008.


* move sy-datum to vlcactdata_cs-eindt.
MOVE wf_calcdate TO vlcactdata_cs-eindt.
*End of change by TALESRAH for CM-6516912 on 07/01/2008.

*Following 3 lines inserted by SHARMAA for CM-8065150 on 05.11.2008


*Changes activated for MFTT
ELSE.
MOVE sy-datum TO vlcactdata_cs-eindt.
ENDIF.
* Else populate vlcactdata_cs.
MOVE co_nb TO vlcactdata_cs-bsart.
MOVE st_vlcvehiclem-lifnr TO vlcactdata_cs-lifnr.
MOVE st_vlcvehiclem-lifnr TO vlcactdata_cs-reworker.
MOVE st_ekko-ekorg TO vlcactdata_cs-ekorg.
MOVE st_ekko-ekgrp TO vlcactdata_cs-ekgrp.
ENDIF.
ENDFORM. " get_subcon_po_data
*&---------------------------------------------------------------------*
*& Form check_aktion_zsci
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_aktion_zsci.

* Check the mandatory fields.If they are initial display an error


* message.
CLEAR vlcactdata_cs.
IF ( st_vlcgoodsmvmt-mm_bldat IS INITIAL ) OR
( st_vlcgoodsmvmt-mm_budat IS INITIAL ) OR
( st_vlcgoodsmvmt-lgort IS INITIAL ) OR
( st_vlcvehiclem-lifnr IS INITIAL ).

PERFORM write_error USING co_msg_832


co_zais_msg.
ELSE.

* Else populate vlcactdata_cs.


MOVE st_vlcgoodsmvmt-mm_bldat TO vlcactdata_cs-bldat.
MOVE st_vlcgoodsmvmt-mm_budat TO vlcactdata_cs-budat.
MOVE st_vlcgoodsmvmt-lgort TO vlcactdata_cs-lgort.
MOVE st_vlcvehiclem-lifnr TO vlcactdata_cs-lifnr.
MOVE co_x TO vlcactdata_cs-zz_gi_comp.

ENDIF.

ENDFORM. " check_aktion_zsci

*&---------------------------------------------------------------------*
*& Form append_ekko_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM append_ekko_data.
* Populate the values from extension segment to the internal table as
* the IDOC has two segments with an individual field at a time i,e,
* purchasing organisation or purchasing group.
IF st_extn-tabname EQ co_ekko.

IF st_extn-fieldname EQ co_ekorg.
MOVE st_extn-fieldval TO st_ekko-ekorg.
ELSEIF st_extn-fieldname EQ co_ekgrp.
MOVE st_extn-fieldval TO st_ekko-ekgrp.
ENDIF.

ENDIF.

ENDFORM. " append_ekko_data

* End of insertion by Lavanya(CHATARAL) for CM-3170 on 18/07/2005.

* Begin of insertion for CM-3286 by KUMARA on 29/09/2005


*&---------------------------------------------------------------------*
*& Form check_partner_profile
*&---------------------------------------------------------------------*
*To check whether the IDOCs partner profile is amongst the listed ones
*here.If so,set wf_rcvprn which is used later-on for processing logic
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_partner_profile.
* Below line added by LATHISK on 28/3/2021 for MBEG CM 0056760478
CONSTANTS: co_gsafab_eg TYPE edi_rcvprn VALUE 'GSAFAB_EG'.
CLEAR : ra_rcvprn,
*Begin of Insert by BHORCHIS for CM-6854552 on 20.03.2008
ra_rcvprn_new[],
*End of Insert by BHORCHIS for CM-6854552 on 20.03.2008
wf_flag_rcvprn.
REFRESH ra_rcvprn.
*Populate range ra_rcvprn.
PERFORM append_val TABLES ra_rcvprn USING co_gtafabocau.
PERFORM append_val TABLES ra_rcvprn USING co_gtafaboccn.
PERFORM append_val TABLES ra_rcvprn USING co_gtafabochk.
PERFORM append_val TABLES ra_rcvprn USING co_gtafabocmy.
PERFORM append_val TABLES ra_rcvprn USING co_gtafabocsg.
PERFORM append_val TABLES ra_rcvprn USING co_gtafabocth.
PERFORM append_val TABLES ra_rcvprn USING co_gtafabocza.
PERFORM append_val TABLES ra_rcvprn USING co_gtafabonau.
PERFORM append_val TABLES ra_rcvprn USING co_gtafaboncn.
PERFORM append_val TABLES ra_rcvprn USING co_gtafabonhk.
PERFORM append_val TABLES ra_rcvprn USING co_gtafabonkr.
PERFORM append_val TABLES ra_rcvprn USING co_gtafabonmy.
PERFORM append_val TABLES ra_rcvprn USING co_gtafabonsg.
PERFORM append_val TABLES ra_rcvprn USING co_gtafabonth.
PERFORM append_val TABLES ra_rcvprn USING co_gtafabonza.
* Begin of comment for CM-3286 by KUMARA on 06/10/2005
* No need for the logic at CM for GTCHRFON* partner profile.
* perform append_val tables ra_rcvprn using CO_GTCHRFONAU.
* perform append_val tables ra_rcvprn using CO_GTCHRFONCN.
* perform append_val tables ra_rcvprn using CO_GTCHRFONHK.
* perform append_val tables ra_rcvprn using CO_GTCHRFONJP.
* perform append_val tables ra_rcvprn using CO_GTCHRFONKR.
* perform append_val tables ra_rcvprn using CO_GTCHRFONMY.
* perform append_val tables ra_rcvprn using CO_GTCHRFONSG.
* perform append_val tables ra_rcvprn using CO_GTCHRFONTH.
* perform append_val tables ra_rcvprn using CO_GTCHRFONZA.
* End of comment for CM-3286 by KUMARA on 06/10/2005
PERFORM append_val TABLES ra_rcvprn USING co_gtfrtconau.
PERFORM append_val TABLES ra_rcvprn USING co_gtfrtconza.
PERFORM append_val TABLES ra_rcvprn USING co_gtxpufonau.
PERFORM append_val TABLES ra_rcvprn USING co_gtxpufoncn.
PERFORM append_val TABLES ra_rcvprn USING co_gtxpufonhk.
PERFORM append_val TABLES ra_rcvprn USING co_gtxpufonkr.
PERFORM append_val TABLES ra_rcvprn USING co_gtxpufonmy.
PERFORM append_val TABLES ra_rcvprn USING co_gtxpufonsg.
PERFORM append_val TABLES ra_rcvprn USING co_gtxpufonth.
PERFORM append_val TABLES ra_rcvprn USING co_gtxpufonza.
* Begin of insert by SUNDARSA for CM-6498733 on 22/01/2008
PERFORM append_val TABLES ra_rcvprn USING co_gtafabontw.
PERFORM append_val TABLES ra_rcvprn USING co_gtafaboctw.
* End of insert by SUNDARSA for CM-6498733 on 22/01/2008

*Following line inserted by JACOBDI for CM-7844583 V5.3T on 14.10.2008


PERFORM append_val TABLES ra_rcvprn USING co_cfiptl1.
*Following line inserted by APP for CM-12847692 V6.0 on 10.01.2011
PERFORM append_val TABLES ra_rcvprn "for GSKEDMS_KR
USING co_gskedms_kr.
*Following line inserted by APP for CM-12841991 V1.1 on 20.01.2011
PERFORM append_val TABLES ra_rcvprn "for LSVPC_KR
USING co_lsvpc_kr.
*Following line is inserted by LTRIPAT for CM-18896264 on 27/11/2012
PERFORM append_val TABLES ra_rcvprn "for GSKEDMS_JP
USING co_gskedms_jp.
*Following line is inserted by GUPTAGA for CM-21295548 on 29/07/2013
*Following line is inserted by GUPTAGA for CM-21295548 on 29/07/2013
PERFORM append_val TABLES ra_rcvprn "for GSKEDMS_ZA
USING co_gskedms_za.
*Begin of Insert by BHORCHIS for CM-6854552 on 20.03.2008
* All the old partner profiles now have their corresponding new
* Partner profiles due to XI migration.Hence range will have to
* be built for all those new systems and message types as well
PERFORM append_values TABLES ra_rcvprn_new "for 'GTAFABONAU'
USING co_gsafab_au.
PERFORM append_values TABLES ra_rcvprn_new "for 'GTFRTCONAU'
USING co_gsfrtln_au.
***Begin of insert:RSATYAN on 18.06.2018 for CM:0043456562.
PERFORM append_values TABLES ra_rcvprn_new "for 'GTFRTCONNZ'
USING co_gsfrtln_nz.
***End of insert:RSATYAN on 18.06.2018 for CM:0043456562.
* BEGIN of INSERT: KNAGADI: MBNZ Roll out: 29.09.2015:30243767
PERFORM append_values TABLES ra_rcvprn_new
USING co_gsafab_nz.
*END of INSERT: KNAGADI: MBNZ Roll out: 29.09.2015:30243767
*End of insert by BHORCHIS for CM-6854552 on 20.03.2008

*Begin of Insert by BHORCHIS for I-7905936 on 06.10.2008


* Few more partner profiles needs to be added*in ra_rcvprn_new
PERFORM append_values TABLES ra_rcvprn_new "for 'GTAFABONCN'
USING co_gsafab_cn.
PERFORM append_values TABLES ra_rcvprn_new "for 'GTAFABONHK'
USING co_gsafab_hk.
PERFORM append_values TABLES ra_rcvprn_new "for 'GTAFABONKR'
USING co_gsafab_kr.
PERFORM append_values TABLES ra_rcvprn_new "for 'GTAFABONMY'
USING co_gsafab_my.
PERFORM append_values TABLES ra_rcvprn_new "for 'GTAFABONSG'
USING co_gsafab_sg.
PERFORM append_values TABLES ra_rcvprn_new "for 'GTAFABONTH'
USING co_gsafab_th.
PERFORM append_values TABLES ra_rcvprn_new "for 'GTAFABONTW'
USING co_gsafab_tw.
PERFORM append_values TABLES ra_rcvprn_new "for 'GTAFABONZA'
USING co_gsafab_za.
PERFORM append_values TABLES ra_rcvprn_new "for 'GTFRTCONZA'
USING co_gsfrtln_za.
*End of insert by BHORCHIS for I-7905936 on 06.10.2008
*Begin of Insert by VSS for CM-8808645 on 12.03.2009
PERFORM append_values TABLES ra_rcvprn_new "for 'GTAFABONJP'
USING co_gsafab_jp.
*End of Insert by VSS for CM-8808645 on 12.03.2009

*Start of code by Sravan Guduru on 4th March 2020 for MBIL rollout:CM_0050289212
PERFORM append_values TABLES ra_rcvprn_new "for 'GSAFAB_IN'
USING /dcsea/in_cl_global=>gc_afab_in.
*End of code by Sravan Guduru on 4th March 2020 for MBIL rollout:CM_0050289212

*Begin of Insert by AGRAWALS for CM-10908374 on 19.05.2010


PERFORM append_values TABLES ra_rcvprn_new "for 'GTAFABONMX'
USING co_gsafab_mx.
*End of Insert by AGRAWALS for CM-10908374 on 19.05.2010
*Begin of Insert by BATRAH for CM-10591174 on 03.10.2010
PERFORM append_values TABLES ra_rcvprn_new "for 'GTAFABONCA'
USING co_gsafab_ca.
*End of Insert by BATRAH for CM-10591174 on 03.10.2010
*Begin of Insertion by AROCKIAD for CM-15337915 on 28/11/2011
PERFORM append_values TABLES ra_rcvprn_new "for 'LSWFS_ZA'
USING co_lswfs_za.
*End of Insertion by AROCKIAD for CM-15337915 on 28/11/2011
*Begin of insertion by Ranilla for CM-26480805 on 28.10.2014
PERFORM append_val TABLES ra_rcvprn_new "for GSKEDMS_TH
USING co_gskedms_th.
*End of insertion by Ranilla for CM-26480805 on 28.10.2014
*Check the IDOC's partner profile against those at the range.
* Begin of changes by LATHISK on 28/3/2021 for MBEG CM 0056760478
PERFORM append_values TABLES ra_rcvprn_new
USING co_gsafab_eg.
* End of changes by LATHISK on 28/3/2021 for MBEG CM 0056760478
IF ( idoc_contrl-rcvprn IN ra_rcvprn
*Begin of Insert by BHORCHIS for CM-6854552 on 20.03.2008
* Another check for the new partner system and message type
* corresponding to the old partner profiles is required.
* This check is needed as a result of migration to XI
OR ( idoc_contrl-rcvprn IN ra_rcvprn_new
AND idoc_contrl-mestyp EQ co_mestyp_zfactord_conf ) ).
"ZFACTORD_CONF
*End of Insert by BHORCHIS for CM-6854552 on 20.03.2008
MOVE co_x TO wf_flag_rcvprn . "Flag Used later-on.
ENDIF.
ENDFORM. " check_partner_profile
* End of insertion for CM-3286 by KUMARA on 29/09/2005

* Begin of insertion for CM-3286 by KUMARA on 30/09/2005


*&---------------------------------------------------------------------*
*& Form append_val
*&---------------------------------------------------------------------*
*Subroutine to populate the range for the given Partner profiles
*----------------------------------------------------------------------*
* -->P_RA_RCVPRN text
* -->P_CO_GTAFABOCAU text
*----------------------------------------------------------------------*
FORM append_val TABLES p_range STRUCTURE ra_rcvprn
USING p_value.

MOVE : co_i TO p_range-sign,


co_eq_char TO p_range-option,
p_value TO p_range-low.
APPEND p_range.
CLEAR p_range.

ENDFORM. " append_val


* End of insertion for CM-3286 by KUMARA on 30/09/2005
* Begin of insertion by RUSTAGIN for CM-3490 on 01/02/2006
*&---------------------------------------------------------------------*
*& Form Check_duplicate_info
*&---------------------------------------------------------------------*
* This subroutine is to ensure that multiple replications having same
* GO version no. don't get processed. This is done to prevent the
* multiple execution of the same action and also to prevent information
* overload to the user's with respect to VLCHISTORY entries.
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_duplicate_info CHANGING lv_docnum.
DATA: lv_gover(4),
lv_sdata LIKE edid4-sdata,
lv_qausp LIKE vlcadddata-qausp,
lv_segd TYPE /dcsea/z1vlcvehicled,
lv_sndprn TYPE edi_sndprn,
*Begin of Insert by BHORCHIS for CM-6854552 on 20.03.2008
* Variable to store the message type
lv_mestyp TYPE edi_mestyp.
*End of Insert by BHORCHIS for CM-6854552 on 20.03.2008

CLEAR wf_compare_idoc.

SELECT SINGLE qausp


FROM vlcadddata
INTO lv_qausp
WHERE vguid = wf_vguid2
AND aqual = 'IDOC'.
IF sy-subrc NE 0
OR lv_qausp IS INITIAL
OR lv_qausp EQ space.
EXIT. "Continue normal processing
ELSE.
lv_docnum = lv_qausp.
ENDIF.

*Begin of changes by BHORCHIS for CM-6854552 on 20.03.2008


* As part of migration to XI , message type also needs to be
* selected
*select single sndprn
* from edidc
* into lv_sndprn
* where docnum = lv_docnum.

SELECT SINGLE sndprn mestyp


FROM edidc
INTO (lv_sndprn,lv_mestyp)
WHERE docnum = lv_docnum.
*End of changes by BHORCHIS for CM-6854552 on 20.03.2008

IF sy-subrc NE 0
AND ( lv_sndprn NS 'GTCHRFO'
*Begin of Insert by BHORCHIS for CM-6854552 on 20.03.2008
* Another check for the new partner system and message type
* corresponding to 'GTCHRFO*' is required.This check is needed as a
* result of migration to XI.
OR ( lv_sndprn(8) NE co_gshpims "GSHPIMS_
OR ( lv_mestyp NE co_mestyp_zfactory_con "ZFACTORY_CON
AND lv_mestyp NE co_mestyp_zfactver_up ) ) ).
"ZFACTORY_VER_UPD
*End of Insert by BHORCHIS for CM-6854552 on 20.03.2008
EXIT. "Continue normal processing
ENDIF.

* In case of GTCHRFO the 'VLCADDDATA Idoc' will always be compared


* with the idoc that is being processed now. So 'wf_compare_idoc is set'
IF ( idoc_contrl-rcvprn CS 'GTCHRFO'
*Begin of Insert by BHORCHIS for CM-6854552 on 20.03.2008
* Another check for the new partner system and message type
* corresponding to 'GTCHRFO*' is required.This check is needed as a
* result of migration to XI.
OR ( idoc_contrl-rcvprn(8) EQ co_gshpims "GSHPIMS_
AND ( idoc_contrl-mestyp EQ co_mestyp_zfactory_con
"ZFACTORY_CON
OR idoc_contrl-mestyp EQ co_mestyp_zfactver_up ) ) ).
"ZFACTORY_VER_UPD
*End of Insert by BHORCHIS for CM-6854552 on 20.03.2008
wf_compare_idoc = 'X'.
ENDIF.
ENDFORM. " Check_duplicate_info
*&---------------------------------------------------------------------*
*& Form COMPARE_IDOCS
*&---------------------------------------------------------------------*
* This subroutine is for comparing the contents of two Idoc's
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM compare_idocs USING adddata_idoc.
DATA: lt_idocdata TYPE STANDARD TABLE OF edid4 WITH HEADER LINE,
lt_temp TYPE STANDARD TABLE OF edid4 WITH HEADER LINE,
lv_tabix TYPE sytabix,
lv_exit_processing,
lv_idocdata TYPE /dcsea/z1vlcvehicled,
lv_temp TYPE /dcsea/z1vlcvehicled.

RANGES ra_idoc FOR edid4-docnum.

*Begin of Insert DEA CM-3490 23-Feb-2006


CLEAR: flag_exit_vehi,
wf_idoc_status_no.
*End of Insert DEA CM-3490 23-Feb-2006

ra_idoc-sign = 'I'.
ra_idoc-option = 'EQ'.
ra_idoc-low = adddata_idoc.
APPEND ra_idoc.

ra_idoc-sign = 'I'.
ra_idoc-option = 'EQ'.
ra_idoc-low = idoc_contrl-docnum.
APPEND ra_idoc.

"HANA Code Remediation: ORDER BY PRIMARY KEY Added to Select Statement below
SELECT *
FROM edid4
INTO TABLE lt_idocdata
WHERE docnum IN ra_idoc ORDER BY PRIMARY KEY.

SORT lt_idocdata ASCENDING BY docnum segnam sdata.


LOOP AT lt_idocdata WHERE docnum = idoc_contrl-docnum.
MOVE lt_idocdata TO lt_temp.
APPEND lt_temp .
DELETE lt_idocdata .
ENDLOOP.

LOOP AT lt_idocdata.
READ TABLE lt_temp INDEX sy-tabix.
* If there is no Idoc data in the other table
* or the segments don't match in both Idoc's
IF sy-subrc NE 0
OR lt_idocdata-segnam NE lt_temp-segnam.
lv_exit_processing = 'X'.
EXIT. "Exit this loop & Continue normal processing
ELSE. "sy-subrc eq 0 and segnam are same.
IF lt_idocdata-sdata NE lt_temp-sdata.
lv_exit_processing = 'X'.
EXIT. "Exit this loop & Continue normal processing
ENDIF.
ENDIF.
ENDLOOP.

* Flag to denote that the current subroutine is to exit.


IF NOT lv_exit_processing IS INITIAL.
EXIT.
ELSE.
* If the code execution comes till this stage then it implies that the
* content of both the Idoc's is same. In this case Archive latest Idoc
wf_idoc_status_no = co_archive. "Status of Idoc made '73'

IF ( idoc_contrl-rcvprn CS 'GTCHRFO'
*Begin of Insert by BHORCHIS for CM-6854552 on 20.03.2008.
* Another check for the new message type corresponding to 'GTCHRFO*' is
* required as a result of migration to XI.
OR ( idoc_contrl-rcvprn(8) EQ co_gshpims "GSHPIMS_
AND ( idoc_contrl-mestyp EQ co_mestyp_zfactory_con
"FACTORY_CON
OR idoc_contrl-mestyp EQ co_mestyp_zfactver_up ) ) ).
"ZFACTORY_VER_UPD
*End of Insert by BHORCHIS for CM-6854552 on 20.03.2008.
idoc_status-msgno = '867'.
ENDIF.
flag_exit_vehi = 'X'.
ENDIF.

ENDFORM. " COMPARE_IDOCS


* End of insertion by RUSTAGIN for CM-3490 on 01/02/2006
*Begin of insert by HALDERT for CM-3726 on 17.10.2006
*&---------------------------------------------------------------------*
*& Form check_autoupdate
*&---------------------------------------------------------------------*
* Check if Autoupdate is required
*----------------------------------------------------------------------*
FORM check_autoupdate USING p_wf_auto_flag
lt_vehicle STRUCTURE tb_vlc_vehicle
st_vehicle STRUCTURE st_vlcvehicle
lt_mara STRUCTURE hd_mara.

DATA : lt_nidr LIKE /dcsea/zais_nidr OCCURS 0 WITH HEADER LINE.

* Select entries from NIDR Table.


SELECT * FROM /dcsea/zais_nidr
INTO TABLE lt_nidr
WHERE werks = lt_vehicle-werks
AND sparte = wf_prod_code.

IF sy-subrc NE 0.
p_wf_auto_flag = 'X'.
EXIT.
ENDIF.
CLEAR p_wf_auto_flag.
* step 1
READ TABLE lt_nidr WITH KEY werks = lt_vehicle-werks
sparte = wf_prod_code
matkl = lt_mara-matkl
matnr = lt_vehicle-matnr
charc = 'PDDATU'.

IF sy-subrc EQ 0.
IF lt_nidr-idr_autoupdate = 'Y'.
* The flag p_wf_flag is not set indicating nothing doing with now
* update the value in the autoconfig internal table
PERFORM prepare_autoupdate_char TABLES lt_nidr
USING lt_nidr
lt_vehicle-pddatu
st_vehicle-pddatu
CHANGING p_wf_auto_flag.
IF NOT p_wf_auto_flag IS INITIAL
AND lt_nidr-idr_compare EQ 'N'.
CLEAR p_wf_auto_flag.
ENDIF.
EXIT.
ELSE.
IF lt_nidr-idr_compare = 'Y'.
p_wf_auto_flag = 'X'.
ENDIF.
EXIT.
ENDIF. "For check on autopdate
ELSE.
CLEAR p_wf_auto_flag.
* step 2 : Without material type
READ TABLE lt_nidr WITH KEY werks = lt_vehicle-werks
sparte = wf_prod_code
matkl = lt_mara-matkl
matnr = space
charc = 'PDDATU'.

IF sy-subrc EQ 0.
IF lt_nidr-idr_autoupdate = 'Y'.
* The flag p_wf_flag is not set indicating nothing doing with now
* update the value in the autoconfig internal table
PERFORM prepare_autoupdate_char TABLES lt_nidr
USING lt_nidr
lt_vehicle-pddatu
st_vehicle-pddatu
CHANGING p_wf_auto_flag.
IF NOT p_wf_auto_flag IS INITIAL
AND lt_nidr-idr_compare EQ 'N'.
CLEAR p_wf_auto_flag.
ENDIF.
EXIT.
ELSE. "Now check IDR_COMPARE flag
IF lt_nidr-idr_compare = 'Y'.
p_wf_auto_flag = 'X'.
ENDIF.
EXIT.
ENDIF.
ELSE.
CLEAR p_wf_auto_flag.
* step 3 : without material type and group
READ TABLE lt_nidr WITH KEY werks = lt_vehicle-werks
sparte = wf_prod_code
matkl = space
matnr = space
charc = 'PDDATU'.
IF sy-subrc EQ 0.
IF lt_nidr-idr_autoupdate = 'Y'.
* The flag p_wf_flag is not set indicating nothing doing with now
* update the value in the autoconfig internal table
PERFORM prepare_autoupdate_char TABLES lt_nidr
USING lt_nidr
lt_vehicle-pddatu
st_vehicle-pddatu
CHANGING p_wf_auto_flag.
IF NOT p_wf_auto_flag IS INITIAL
AND lt_nidr-idr_compare EQ 'N'.
CLEAR p_wf_auto_flag.
ENDIF.
EXIT.
ELSE. "Now check IDR_COMPARE flag
IF lt_nidr-idr_compare = 'Y'.
p_wf_auto_flag = 'X'.
ENDIF.
EXIT.
ENDIF.
ELSE.
p_wf_auto_flag = 'X'.
ENDIF. "End third
ENDIF. "End second
ENDIF.
ENDFORM. " check_autoupdate
*&---------------------------------------------------------------------*
*& Form prepare_autoupdate_char
*&---------------------------------------------------------------------*
* Check for Autoupdation
*----------------------------------------------------------------------*
FORM prepare_autoupdate_char TABLES lt_nidr STRUCTURE /dcsea/zais_nidr
USING wf_nidr STRUCTURE /dcsea/zais_nidr
wf_factory
wf_current
CHANGING p_wf_auto_flag.
DATA : lv_diff TYPE i,
lv_acceptable TYPE i,
lv_currdat TYPE d,
lv_factdat TYPE d.

CLEAR : lv_diff ,
lv_acceptable ,
lv_currdat ,
lv_factdat .
* If PDDATU Lies in the same month then exit
IF wf_factory+0(6) = wf_current+0(6).
CLEAR p_wf_auto_flag.
EXIT.
ENDIF.
* Check for no of days mentioned in NIDR table
IF NOT wf_nidr-date_diff IS INITIAL.
MOVE : wf_current TO lv_currdat,
wf_factory TO lv_factdat,
wf_nidr-date_diff TO lv_acceptable.
lv_diff = lv_currdat - lv_factdat.
lv_diff = abs( lv_diff ).
IF lv_diff LE lv_acceptable.
CLEAR p_wf_auto_flag.
CLEAR tb_acnf.
tb_acnf-difference = 'PDDATU'.
tb_acnf-value = wf_current.
APPEND tb_acnf.
ELSE.
p_wf_auto_flag = 'X'.
ENDIF.
ELSE.
p_wf_auto_flag = 'X'.
ENDIF.

ENDFORM. " prepare_autoupdate_char


*End of insert by HALDERT for CM-3726 on 17.10.2006
*&---------------------------------------------------------------------*
*& Form append_values
*&---------------------------------------------------------------------*
* Subroutine to populate the range for the new Partner profiles as
* a result of migration to XI
*----------------------------------------------------------------------*
* -->P_RCVPRN_RANGE New Partner Profile range
* -->P_NEW_PARTNER New partner profile 'GSAFAB_AU'
*----------------------------------------------------------------------*
FORM append_values TABLES p_rcvprn_range STRUCTURE ra_rcvprn_new
USING p_new_partner.

MOVE : co_i TO p_rcvprn_range-sign,


co_eq_char TO p_rcvprn_range-option,
p_new_partner TO p_rcvprn_range-low.

APPEND p_rcvprn_range.
CLEAR p_rcvprn_range.

ENDFORM. " append_values


*Begin of insertion by TRIPATHIL for CM-10003589 v5.7T on 11/12/2009

*&---------------------------------------------------------------------*
*& Form append_vlcadddata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM append_vlcadddata.
* Populate the values from extension segment to the internal table as
* the IDOC may contain two segments with an individual field
IF st_extn-tabname EQ co_vlcadddata AND st_extn-fieldname EQ co_vhfin.
APPEND st_extn TO tb_extn.
ENDIF.
ENDFORM. " append_vlcadddata
*END of insertion by TRIPATHIL for CM-10003589 v5.7T on 11/12/2009
*Start of insertion by AGRAWALS for CM-10256503 V1.0 on 10.12.2009
*&---------------------------------------------------------------------*
*& Form get_vlcvehicle_data_zvsp
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_vlcvehicle_data_zvsp.

CLEAR tb_vlc_vehicle.
READ TABLE tb_vlc_vehicle INDEX 1.
IF sy-subrc = 0.
* If Commission number is not blank in IDOC, fetch data from VLCVEHICLE
IF NOT tb_vlc_vehicle-zz_commnos IS INITIAL.
"HANA Code Remediation:Select Single not unique
" select single *
" into hd_vlcvehicle
" from vlcvehicle
" where vhcex eq tb_vlc_vehicle-zz_commnos.
SELECT *
INTO hd_vlcvehicle
UP TO 1 ROWS FROM vlcvehicle
WHERE vhcex EQ tb_vlc_vehicle-zz_commnos ORDER BY PRIMARY KEY.
ENDSELECT.
* If no data found, throw error message
IF sy-subrc <> 0.
PERFORM write_error USING co_msg_089 " no vehicles selected
co_velo.
ELSE.
* Move VLCVEHICLE data into structure tb_vlc_vehicle
MOVE-CORRESPONDING hd_vlcvehicle TO tb_vlc_vehicle.
MODIFY tb_vlc_vehicle INDEX 1.
ENDIF.
ELSE.
* If Commission number is blank in IDOC, throw error message
PERFORM write_error USING co_msg_027 " No Commission no.
co_zais_msg.
ENDIF.
ELSE.
* If no data found in IDOC, throw error message
PERFORM write_error USING co_msg_249 " No IDOC data found
co_zais_msg.
ENDIF.
ENDFORM. " get_vlcvehicle_data_zvsp
*End of insertion by AGRAWALS for CM-10256503 V1.0 on 10.12.2009

* Start of insertion by AGRAWALS for CM-11772603 V2.5 on 16.08.2010


*&---------------------------------------------------------------------*
*& Form get_material_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_material_data.

CLEAR : ra_matnr.
REFRESH : ra_matnr.
* Fill range with Part of Material no. which was received in IDoc. This
* will be used to get the actual Material No.
ra_matnr-sign = co_i.
ra_matnr-option = co_cp.
CONCATENATE st_vlcvehicle-matnr '*' INTO ra_matnr-low.
APPEND ra_matnr.

* Fetch Material No, Material Type and Material Group from table MARA
* based on part of Material No. received in IDoc
"HANA Code Remediation:Select Single not unique
" select single matnr mtart matkl
" from mara
" into (wf_matnr , wf_mtart , wf_matkl )
" where matnr in ra_matnr
" and lvorm = ' '.
SELECT matnr mtart matkl
UP TO 1 ROWS FROM mara
INTO (wf_matnr , wf_mtart , wf_matkl )
WHERE matnr IN ra_matnr
AND lvorm = ' ' ORDER BY PRIMARY KEY. ENDSELECT.
IF sy-subrc <> 0.
* Write error : Material doesn't exist
PERFORM write_error USING co_msg_021 co_zais_msg1.
ENDIF.

ENDFORM. " get_material_data


*&---------------------------------------------------------------------*
*& Form validate_zcre_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM validate_zcre_data.

* Call FM to validate if POD is valid or not


CALL FUNCTION '/DCSEA/ZAIS_POD'
EXPORTING
p_werks = st_vlcvehicle-werks
p_mtart = wf_mtart
p_matkl = wf_matkl
p_matnr = wf_matnr
p_date = st_vlcvehicle-pddatu
TABLES
tb_pod = tb_pdt
EXCEPTIONS
no_data_found = 1
OTHERS = 2.
IF sy-subrc = 0.
READ TABLE tb_pdt WITH KEY port_of_dest =
st_vlcvehicleb-/dcsea/zz_port_of_dest.
ENDIF.
IF sy-subrc <> 0.
* Write Error : Invalid POD
PERFORM write_error USING co_msg_189
co_zais_msg.
ENDIF.
ENDFORM. " validate_zcre_data

*&---------------------------------------------------------------------*
*& Form fill_zcre_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_zcre_data.

DATA : lv_pstsp TYPE vlc_ptstamp.


CLEAR lv_pstsp.
* Fill required data in structure
* Plant
wa_vehicle-werks = st_vlcvehicle-werks.
* Material No.
wa_vehicle-matnr = wf_matnr.
* POD
wa_vehicle-zz_port_of_dest = st_vlcvehicleb-/dcsea/zz_port_of_dest.
* Commission No.
wa_vehicle-zz_commnos = st_vlcvehicleb-/dcsea/zz_commnos.
* Production Timestamp
wa_vehicle-pdtsp = st_vlcvehicle-pdtsp.
* Configuration
PERFORM fill_config_zcre.
* Export PSTSP to Memory Id
lv_pstsp = st_vlcvehicle-pstsp.
EXPORT lv_pstsp TO MEMORY ID co_mem_pstsp.

ENDFORM. " fill_zcre_data

*&---------------------------------------------------------------------*
*& Form fill_config_zcre
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_config_zcre.

*Fill Configuration Details


PERFORM fill_config_header.
PERFORM fill_config.
ENDFORM. " fill_config_zcre

*&---------------------------------------------------------------------*
*& Form fill_config_header
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_config_header.

CLEAR : tb_cuins,
wa_cucfg,
wa_cuins.
REFRESH : tb_cuins.
* Get the config version
PERFORM get_version.

* Fill constant values in the structure


MOVE : '000001' TO wa_cucfg-config_id,
'00000001' TO wa_cucfg-root_id,
'1' TO wa_cucfg-sce,
'T' TO wa_cucfg-complete,
'T' TO wa_cucfg-consistent,
wf_matnr TO wa_cucfg-kbname.

* Get relevant data from table INOB


"HANA Code Remediation:Select Single not unique
" select single *
" from inob
" into inob
" where objek eq wf_matnr.
SELECT *
UP TO 1 ROWS FROM inob
INTO inob
WHERE objek EQ wf_matnr ORDER BY PRIMARY KEY. ENDSELECT.

IF sy-subrc EQ 0.
* Fill constant values in the structure
MOVE : '000001' TO wa_cuins-config_id,
'00000001' TO wa_cuins-inst_id,
'T' TO wa_cuins-complete,
'T' TO wa_cuins-consistent,
* Fill Material No., Class Type and table name
wf_matnr TO wa_cuins-obj_key,
inob-klart TO wa_cuins-class_type,
inob-obtab TO wa_cuins-obj_type.
* Append work-area wa_cuins data to internal table
APPEND wa_cuins TO tb_cuins.
ENDIF.
ENDFORM. " fill_config_header

*&---------------------------------------------------------------------*
*& Form fill_config
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_config.

DATA : lv_classname TYPE matnr.


REFRESH:tb_cuval.
CLEAR : tb_vhcl_cuval,
lv_classname.
****************************************************************
* Please do not clear header tb_vhcl_cuval after this in current
* sub-routine
****************************************************************
* Fill constant values in the work area
wa_cuval-config_id = '000001'.
wa_cuval-inst_id = '00000001'.

* Calculate Class Name


lv_classname = wf_matnr.
REPLACE '-' WITH '' INTO lv_classname.
CONDENSE lv_classname NO-GAPS.

* Move Standard Factory options


CONCATENATE co_f_o_std lv_classname INTO wa_cuval-charc.
LOOP AT tb_vhcl_cuval.
IF NOT tb_vhcl_cuval-value IS INITIAL.
wa_cuval-value = tb_vhcl_cuval-value.
APPEND wa_cuval TO tb_cuval.
ENDIF.
ENDLOOP.

ENDFORM. " fill_config

*&---------------------------------------------------------------------*
*& Form get_version
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_version.

* Step 1: Initialize Variables


CLEAR: wa_cucfg-kbversion,
wa_scekb.
REFRESH tb_scekb.
* Step 2: Get all versions from SCEKB table that are less than or equal
* to the construction date
SELECT * FROM scekb
INTO TABLE tb_scekb
WHERE kbobjname EQ wf_matnr
AND fromdate LE st_vlcvehicle-pddatu.

* Step 3: Get the version with the latest from date


IF sy-subrc EQ 0.
SORT tb_scekb BY fromdate DESCENDING.
READ TABLE tb_scekb INTO wa_scekb INDEX 1.
IF sy-subrc = 0.
wa_cucfg-kbversion = wa_scekb-version.
ENDIF.
ELSE.
* If no Version found, then put as '1.0'
wa_cucfg-kbversion = '1.0'.
ENDIF.

ENDFORM. " get_version

*&---------------------------------------------------------------------*
*& Form execute_action_zcre
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM execute_action_zcre.

* Call FM to create Vehicle(Engine)


CALL FUNCTION '/DCSEA/Z_AIS_VEHICLE_CREATE'
EXPORTING
vehicle = wa_vehicle
cucfg = wa_cucfg
commit_iv = 'S'
IMPORTING
vguid = wf_vguid
vhcle = wa_log-vhcle
rcode = tb_return
TABLES
cuins = tb_cuins
cuval = tb_cuval
EXCEPTIONS
vehicle_not_created = 1
internal_error = 2
plant_not_found = 3
material_not_found = 4
supplier_not_found = 5
proddate_invalid = 6
charac_invalid = 7
vguid_not_created = 8
mmcntrl_not_found = 9
OTHERS = 10.

IF sy-subrc <> 0.
* Write Error messages
CASE sy-subrc.
WHEN 1.
PERFORM write_error USING co_msg_067
co_zais_msg.
WHEN 2.
PERFORM write_error USING co_msg_068
co_zais_msg.
WHEN 3.
PERFORM write_error USING co_msg_069
co_zais_msg.
WHEN 4.
PERFORM write_error USING co_msg_070
co_zais_msg.
WHEN 5.
PERFORM write_error USING co_msg_071
co_zais_msg.
WHEN 6.
PERFORM write_error USING co_msg_072
co_zais_msg.
WHEN 7.
PERFORM write_error USING co_msg_066
co_zais_msg.
ENDCASE.
ENDIF.

ENDFORM. " execute_action_zcre


* End of insertion by AGRAWALS for CM-11772603 V2.5 on 16.08.2010
* Begin of insertion by TRIPATHIL for CM-12909941 on 18.02.2011.
*&---------------------------------------------------------------------*
*& Form check_zvpr
*&---------------------------------------------------------------------*
FORM check_zvpr.
* Get Plant and Action control
IF NOT st_vlcvehicle-zz_commnos IS INITIAL.
CLEAR: wf_werks,wf_mmctr.
"HANA Code Remediation:Select Single not unique
" select single werks mmctr
" from vlcvehicle
" into (wf_werks,wf_mmctr)
" where zz_commnos = st_vlcvehicle-zz_commnos.
SELECT werks mmctr
UP TO 1 ROWS FROM vlcvehicle
INTO (wf_werks,wf_mmctr)
WHERE zz_commnos = st_vlcvehicle-zz_commnos ORDER BY PRIMARY KEY. ENDSELECT.
* CM Activation check
CLEAR wf_flag.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_12909941
werks = wf_werks
filter = wf_mmctr
IMPORTING
active_flag = wf_flag.
IF NOT wf_flag IS INITIAL.
* ZVPR should not execute if either zz_vpccomp or zz_vpcstartdate is non
* blank in case of MB Korea.
READ TABLE tb_vlc_vehicle INDEX 1.
IF NOT tb_vlc_vehicle-zz_vpccomp IS INITIAL OR
NOT tb_vlc_vehicle-zz_vpcstartdate IS INITIAL.
PERFORM write_error USING co_msg_039
co_zais_msg.
ENDIF.
ENDIF.
ENDIF.

ENDFORM. " check_zvpr


* END of insertion by TRIPATHIL for CM-12909941 on 18.02.2011.
*Begin of insertion by AJAYARA for CM-22387682 on 11.11.2013
*&---------------------------------------------------------------------*
*& Form GET_VEHICLE_DATA_ZICL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_vehicle_data_zicl .

READ TABLE tb_vlc_vehicle INDEX 1.

IF sy-subrc EQ 0.

IF NOT tb_vlc_vehicle-vhvin IS INITIAL OR


NOT tb_vlc_vehicle-zz_commnos IS INITIAL.

* Get data from VLCVEHICLE based on VIN Number


IF NOT tb_vlc_vehicle-vhvin IS INITIAL.
SELECT SINGLE * INTO hd_vlcvehicle
FROM vlcvehicle
WHERE vhvin EQ tb_vlc_vehicle-vhvin.
* Get data from VLCVEHICLE based on Commission Number
ELSEIF NOT tb_vlc_vehicle-zz_commnos IS INITIAL.
"HANA Code Remediation:Select Single not unique
" SELECT SINGLE * INTO HD_VLCVEHICLE
" FROM VLCVEHICLE
" WHERE ZZ_COMMNOS EQ TB_VLC_VEHICLE-ZZ_COMMNOS.
SELECT * INTO hd_vlcvehicle
UP TO 1 ROWS FROM vlcvehicle
WHERE zz_commnos EQ tb_vlc_vehicle-zz_commnos ORDER BY PRIMARY KEY.
ENDSELECT.

ENDIF.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING hd_vlcvehicle TO tb_vlc_vehicle.
MODIFY tb_vlc_vehicle INDEX 1.
ENDIF.
ELSE.
IF tb_vlc_vehicle-vhvin IS INITIAL AND
tb_vlc_vehicle-zz_commnos IS INITIAL.
* Move message data to errtab fields
tb_errtab-msgty = co_msgtyp_e.
tb_errtab-msgid = co_zais_msg1.
tb_errtab-msgnr = co_msg_999.
tb_errtab-msgv1 = co_err_msg.
APPEND tb_errtab.
ENDIF.
ENDIF.

ENDIF.

ENDFORM. " GET_VEHICLE_DATA_ZICL


*End of insertion by AJAYARA for CM-22387682 on 11.11.2013
*Start of change by NANDANR for CM-0032252956 on 21/04/2016
*&---------------------------------------------------------------------*
*& Form UPADTE_MEMO_PLNDINSDATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM upadte_memo_plndinsdate .
DATA : lv_flag_cm TYPE c,
lt_vlcadddata TYPE STANDARD TABLE OF vlcadddata,
lw_vlcadddata TYPE vlcadddata.
CONSTANTS : co_0032252956(10) TYPE c VALUE '0032252956'.
CLEAR lv_flag_cm.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = co_0032252956
werks = vlcvehicle-werks
IMPORTING
active_flag = lv_flag_cm.
IF lv_flag_cm EQ 'X'.
READ TABLE vlcadddata_gt WITH KEY fieldname = 'ZZ_PLND_INSP_STARTDATE'.
IF sy-subrc = 0.
CLEAR:lw_vlcadddata,lt_vlcadddata[].
READ TABLE tb_vlc_vehicle INDEX 1.
IF sy-subrc = 0.
lw_vlcadddata-vguid = tb_vlc_vehicle-vguid.
ENDIF.
lw_vlcadddata-aqual = 'ZPIS'.
lw_vlcadddata-qausp = vlcadddata_gt-fieldvalue.
APPEND lw_vlcadddata TO lt_vlcadddata.
CLEAR lw_vlcadddata.
CALL FUNCTION 'VELO14_UPDATE_VLCADDDATA'
TABLES
vlcadddata_it = lt_vlcadddata
EXCEPTIONS
update_not_performed = 1
OTHERS = 2.
ENDIF.
READ TABLE vlcadddata_gt WITH KEY fieldname = 'ZZ_MEMO'.
IF sy-subrc = 0.
CLEAR:lw_vlcadddata,lt_vlcadddata[].
READ TABLE tb_vlc_vehicle INDEX 1.
IF sy-subrc = 0.
lw_vlcadddata-vguid = tb_vlc_vehicle-vguid.
ENDIF.
lw_vlcadddata-aqual = 'ZMEN'.
lw_vlcadddata-qausp = vlcadddata_gt-fieldvalue.
APPEND lw_vlcadddata TO lt_vlcadddata.
CLEAR lw_vlcadddata.
CALL FUNCTION 'VELO14_UPDATE_VLCADDDATA'
TABLES
vlcadddata_it = lt_vlcadddata
EXCEPTIONS
update_not_performed = 1
OTHERS = 2.

ENDIF.
ENDIF.
ENDFORM. " UPADTE_MEMO_PLNDINSDATE
*End of change by NANDANR for CM-0032252956 on 21/04/2016
****Begin of Insert***KACHAND****MBID****CM:0041379963****CKD Kit CHassis restrict
for ZVDU****
*&---------------------------------------------------------------------*
*& Form DETERMINE_CKD_CBU
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM determine_ckd_cbu .

DATA : "lv_matnr TYPE bapi1003_key-object,


lv_object TYPE ausp-objek,
lt_class TYPE TABLE OF sclass,
lt_objdata TYPE TABLE OF clobjdat,
wa_data TYPE edidd,
wa_vlcvehicleb TYPE /dcsea/z1vlcvehicleb.

FIELD-SYMBOLS <lfs_objdata> TYPE clobjdat.


CLEAR: lv_object,gv_werks,gv_matnr.
REFRESH: lt_class, lt_objdata.
LOOP AT idoc_data WHERE segnam EQ 'Z1VLCVEHICLEB'
OR segnam EQ '/DCSEA/Z1VLCVEHICLEB'.
MOVE idoc_data-sdata TO wa_vlcvehicleb.
EXIT.
ENDLOOP.

"HANA Code Remediation:Select Single not unique


" SELECT SINGLE werks matnr INTO (gv_werks,gv_matnr) FROM vlcvehicle
" WHERE zz_commnos EQ
wa_vlcvehicleb-/dcsea/zz_commnos.
SELECT werks matnr INTO (gv_werks,gv_matnr) UP TO 1 ROWS FROM vlcvehicle
WHERE zz_commnos EQ wa_vlcvehicleb-/dcsea/zz_commnos
ORDER BY PRIMARY KEY. ENDSELECT.
CLEAR lv_mbid.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = /dcsea/mbid_constants=>gc_0041379963
werks = gv_werks
IMPORTING
active_flag = lv_mbid.

lv_object = gv_matnr.
CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
class = 'BASIC_MODEL_PARMS'
classtext = 'X'
classtype = '001'
object = lv_object
TABLES
t_class = lt_class
t_objectdata = lt_objdata
EXCEPTIONS
no_classification = 1
no_classtypes = 2
invalid_class_type = 3
OTHERS = 4.
IF sy-subrc IS INITIAL.
READ TABLE lt_objdata ASSIGNING <lfs_objdata>
WITH KEY atnam = 'BMP_BUILD_TYPE'.
IF <lfs_objdata> IS ASSIGNED.
IF <lfs_objdata>-ausp1 = /dcsea/mbid_constants=>gc_ckd.
gv_ckd = 'X'.
ENDIF.
ENDIF.
ENDIF.

ENDFORM. " DETERMINE_CKD_CBU


****End of Insert***KACHAND****MBID****CM:0041379963****CKD Kit CHassis restrict
for ZVDU****
**Begin of insertion by DIROHAN for CM-0042697099 on 31.05.2018
*&---------------------------------------------------------------------*
*& Form GET_DIP_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_dip_data.

* Retrieve Dealer incentive points for DIP Korea


SELECT *
FROM /dcsea/zais_poin
INTO TABLE tb_incentivepts.

* Retrieve Material Class


SELECT SINGLE matkl
FROM mara
INTO gv_matkl
WHERE matnr = tb_vlc_vehicle-matnr.

* Retrieve Action execution timestamp


SELECT vguid
tstmp
UP TO 1 ROWS
FROM vlchistory
INTO (gv_vguid , gv_tstmp)
WHERE vguid = tb_vlc_vehicle-vguid
AND action IN ('ZECU','ZREG','ZRSC').
ENDSELECT.

* Retrieve Sales type - Program type mapping


SELECT *
FROM /dcsea/zais_pgty
INTO TABLE tb_pgty
WHERE plant = tb_vlc_vehicle-werks.

* Retrieve Internal Vehicle Number


SELECT vhcle
FROM vlcvehicle
UP TO 1 ROWS
INTO gv_vehicle
WHERE zz_commnos = tb_vlc_vehicle-zz_commnos.
ENDSELECT.
IF sy-subrc = 0.
SELECT * FROM /dcsea/zais_scc
INTO TABLE tb_scc1
WHERE plant = tb_vlc_vehicle-werks
AND vhcle = gv_vehicle.
IF sy-subrc = 0.
SORT tb_scc1 BY plant vhcle sales_ind.
ENDIF.
ENDIF.
ENDFORM. " GET_DIP_DATA
**End of insertion by DIROHAN for CM-0042697099 on 31.05.2018
* Begin of insert by MAAMARN for CM-0043084167(MBTH DIP Phase II) on 26.10.2018
*&---------------------------------------------------------------------*
*& Form GET_DIP_DATA_TH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_dip_data_th .

* Retrieve Internal Vehicle Number


CLEAR: wa_vlcvehicle.
SELECT * UP TO 1 ROWS FROM vlcvehicle
INTO wa_vlcvehicle
WHERE zz_commnos = tb_vlc_vehicle-zz_commnos.
ENDSELECT.

* Retrieve Action execution timestamp


SELECT vguid
tstmp
UP TO 1 ROWS
FROM vlchistory
INTO (gv_vguid , gv_tstmp)
WHERE vguid = wa_vlcvehicle-vguid
AND action = 'ZECU'.
ENDSELECT.
ENDFORM.
* End of insert by MAAMARN for CM-0043084167(MBTH DIP Phase II) on 26.10.2018
* Begin of changes by PPRAGYA for MBIL CM 0051514725
*&---------------------------------------------------------------------*
*& Form ACCOUNT_POST_MBIL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM account_post_mbil .

DATA: tb_header TYPE bapi_incinv_create_header,


tb_item TYPE TABLE OF bapi_incinv_create_item,
gw_item TYPE bapi_incinv_create_item,
tb_gl_acc TYPE TABLE OF bapi_incinv_create_gl_account,
gw_gl_acc TYPE bapi_incinv_create_gl_account,
tb_tax TYPE TABLE OF bapi_incinv_create_tax,
gw_tax TYPE bapi_incinv_create_tax,
tb_material TYPE TABLE OF bapi_incinv_create_material,
gw_material TYPE bapi_incinv_create_material,
tb_return TYPE TABLE OF bapiret2,
lv_inv_num TYPE bapi_incinv_fld-inv_doc_no,
tb_vguid TYPE TABLE OF vlcguid,
wa_vguid TYPE vlcguid,
tb_orders TYPE TABLE OF vlcporder,
wf_amount TYPE bapiwrbtr.

CLEAR: tb_item[], tb_tax[], tb_gl_acc[],


tb_material[], tb_return[].

CLEAR: tb_item, tb_tax, tb_gl_acc,


tb_material, tb_return.

CLEAR wf_amount.

SELECT SINGLE
vguid,vhcle, matnr,werks
FROM vlcvehicle
INTO @DATA(gw_vhcle)
WHERE vhcex = @st_vlcvehicleb-/dcsea/zz_commnos.

IF sy-subrc EQ 0.

** Begin of changes by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on 12/10/2021


** Commented code for getting GR from VLCGRRECEIPT
* SELECT vguid, tstmp, mblnr
* FROM vlcgreceipt
* INTO TABLE @DATA(tb_receipts)
* WHERE vguid = @gw_vhcle-vguid
* AND ( actdoctype = @/dcsea/in_cl_global=>gc_actdoctype_gore
* OR actdoctype = @/dcsea/in_cl_global=>gc_actdoctype_grer )
* ORDER BY tstmp DESCENDING.
** End of changes by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on 12/10/2021
SELECT SINGLE ebeln ,ebelp,menge,meins
FROM ekpo
INTO @DATA(gw_ekpo)
WHERE bwtar = @gw_vhcle-vhcle AND
pstyp = 0. " ++ by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on
01/11/2021
** Begin of changes by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on 12/10/2021
SELECT mblnr , cpudt_mkpf , cputm_mkpf FROM mseg INTO TABLE @DATA(lt_mseg)
WHERE ebeln eq @gw_ekpo-ebeln.
IF sy-subrc IS INITIAL.
SORT lt_mseg[] by cpudt_mkpf cputm_mkpf DESCENDING.
ENDIF.
** End of changes by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on 12/10/2021
ENDIF.

SELECT *
FROM /dcsea/zais_para
INTO TABLE @DATA(tb_para)
WHERE domval1 = @/dcsea/in_cl_global=>gc_bukrs_1414
AND domval2 = @/dcsea/in_cl_global=>co_ckd
** Begin of changes by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on 07/10/2021
* AND param = @/dcsea/in_cl_global=>gc_zinv
AND param = 'VARIANCE'
** End of changes by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on 07/10/2021
AND paradesc = @/dcsea/in_cl_global=>gc_hkont.

* Header Data
* Get company code from T001W/T001K
SELECT SINGLE * INTO t001w
FROM t001w
WHERE ( werks EQ gw_vhcle-werks ).

IF sy-subrc EQ 0.
SELECT SINGLE * INTO t001k
FROM t001k
WHERE ( bwkey EQ t001w-bwkey ).
IF sy-subrc EQ 0.
tb_header-comp_code = t001k-bukrs.
ENDIF.
ENDIF.

tb_header-invoice_ind = abap_true.
tb_header-doc_type = 'YE'.
tb_header-doc_date = st_vlcbilling-audat .
tb_header-pstng_date = st_vlcbilling-budat_bill.
tb_header-currency = st_vlcbilling-waers.
tb_header-currency_iso = st_vlcbilling-waers.
tb_header-exch_rate = 1.
tb_header-pmnttrms = 'AP00'.
tb_header-bline_date = st_vlcbilling-audat.
tb_header-business_place = '1000'.
** Begin of changes by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on 29/04/2021
DATA: lv_cmflag TYPE /dcsea/z_active_flag,
lv_werks TYPE werks_d,
lv_bupla TYPE j_1bbranc_,
lv_cm_werks TYPE werks_d.
CONSTANTS :lc_0056870814 TYPE /dcsea/z_cm_number VALUE '0056870814'.
CLEAR: lv_cmflag,lv_werks,lv_bupla,lv_cm_werks.
lv_cm_werks = t001k-bukrs.
CALL FUNCTION '/DCSEA/Z_AIS_CHECK_ACTIVE_CM'
EXPORTING
cm_number = lc_0056870814
werks = lv_cm_werks
IMPORTING
active_flag = lv_cmflag.
IF lv_cmflag IS NOT INITIAL.
SELECT SINGLE bwkey FROM mbew INTO lv_werks WHERE matnr EQ gw_vhcle-matnr AND
bwtar EQ gw_vhcle-vhcle AND
lbkum GT 0.
IF sy-subrc IS INITIAL.
SELECT SINGLE j_1bbranch FROM t001w INTO lv_bupla WHERE werks EQ lv_werks.
IF sy-subrc IS NOT INITIAL.
CLEAR lv_bupla.
ENDIF.
ELSE.
SELECT SINGLE j_1bbranch FROM t001w INTO lv_bupla WHERE werks EQ gw_vhcle-werks.
IF sy-subrc IS NOT INITIAL.
CLEAR lv_bupla.
ENDIF.
ENDIF.
tb_header-business_place = lv_bupla.
ELSE.
** End of changes by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on 29/04/2021
tb_header-business_place = '1000'.
** Following line inserted by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on
29/04/2021
ENDIF.
tb_header-header_txt = st_vlcvehicleb-/dcsea/zz_commnos.

* Item Data
gw_item-invoice_doc_item = gw_item-invoice_doc_item + 1.
gw_item-po_number = gw_ekpo-ebeln.
** Begin of changes by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on 12/10/2021
* READ TABLE tb_receipts INTO DATA(gv_receipts) INDEX 1.
* IF gv_receipts IS NOT INITIAL.
* gw_item-ref_doc = gv_receipts-mblnr.
* ENDIF.
READ TABLE lt_mseg INTO DATA(ls_mseg) INDEX 1.
IF ls_mseg IS NOT INITIAL.
gw_item-ref_doc = ls_mseg-mblnr.
ENDIF.
** End of changes by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on 12/10/2021

gw_item-po_item = '00010'.
gw_item-ref_doc_year = st_vlcbilling-audat+0(4).
gw_item-ref_doc_it = 1.
gw_item-tax_code = 'V0'.
gw_item-quantity = 1.
gw_item-po_unit = gw_ekpo-meins.
gw_item-po_unit_iso = gw_ekpo-meins.
gw_item-po_pr_uom = gw_ekpo-meins.
gw_item-po_pr_uom_iso = gw_ekpo-meins.
APPEND gw_item TO tb_item.

* gl account data
gw_gl_acc-invoice_doc_item = gw_item-invoice_doc_item.

CONDENSE st_vlcbilling-total_amount NO-GAPS.


MOVE st_vlcbilling-total_amount to gw_gl_acc-item_amount.
MOVE st_vlcbilling-total_amount to wf_amount.

* gw_gl_acc-item_amount = st_vlcbilling-total_amount.
READ TABLE tb_para INTO DATA(ls_para) WITH KEY domval1 =
/dcsea/in_cl_global=>gc_bukrs_1414
domval2 =
/dcsea/in_cl_global=>co_ckd
** Begin of changes by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on 07/10/2021
* param =
/dcsea/in_cl_global=>gc_zinv
param = 'VARIANCE'
** Begin of changes by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on 07/10/2021
paradesc =
/dcsea/in_cl_global=>gc_hkont.
IF sy-subrc EQ 0.
CONCATENATE '0000' ls_para-fieldname INTO ls_para-fieldname .
gw_gl_acc-gl_account = ls_para-fieldname.
ENDIF.

gw_gl_acc-comp_code = t001k-bukrs.
gw_gl_acc-tax_code = 'V0'.

IF wf_amount > '0.00'.


gw_gl_acc-item_amount = wf_amount.
gw_gl_acc-db_cr_ind = 'H'.
ELSEIF wf_amount < '0.00' .
gw_gl_acc-item_amount = -1 * wf_amount.
gw_gl_acc-db_cr_ind = 'S'.
ENDIF.

APPEND gw_gl_acc TO tb_gl_acc.


CLEAR gw_gl_acc.

* tax data
gw_tax-tax_code = 'V0'.
APPEND gw_tax TO tb_tax.

* material data
gw_material-invoice_doc_item = gw_item-invoice_doc_item .
gw_material-material = gw_vhcle-matnr.
** Begin of changes by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on 29/04/2021
IF lv_cmflag IS NOT INITIAL AND lv_werks IS NOT INITIAL.
gw_material-val_area = lv_werks.
ELSE.
** End of changes by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on 29/04/2021
gw_material-val_area = gw_vhcle-werks.
** Following line inserted by Vishnuvardhan Reddy(VCHITTI) for CM 0056870814 on
29/04/2021
ENDIF.
gw_material-valuation_type = gw_vhcle-vhcle.
gw_material-quantity = 1.
gw_material-item_amount = wf_amount.
gw_material-tax_code = 'V0'.
gw_material-base_uom = gw_ekpo-meins.

IF wf_amount < '0.00'.


gw_material-db_cr_ind = 'H'.
gw_material-item_amount = -1 * wf_amount.
ELSEIF wf_amount > '0.00'.
gw_material-item_amount = wf_amount.
gw_material-db_cr_ind = 'S'.
ENDIF.

APPEND gw_material TO tb_material.


CLEAR:gw_material.

* Posting the invoice


CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
EXPORTING
headerdata = tb_header
IMPORTING
invoicedocnumber = lv_inv_num
TABLES
itemdata = tb_item
taxdata = tb_tax
glaccountdata = tb_gl_acc
materialdata = tb_material
return = tb_return.

IF tb_return[] IS NOT INITIAL.


LOOP AT tb_return INTO DATA(wa_return) WHERE type = 'E'.

idoc_status-docnum = idoc_contrl-docnum.
idoc_status-status = co_error.

idoc_status-msgty = wa_return-type.
idoc_status-msgid = wa_return-id.
idoc_status-msgno = wa_return-number.

idoc_status-msgv1 = wa_return-message_v1.
idoc_status-msgv2 = wa_return-message_v2.
idoc_status-msgv3 = wa_return-message_v3.
idoc_status-msgv4 = wa_return-message_v4.

APPEND idoc_status TO idoc_status[].


CLEAR idoc_status.
ENDLOOP.

CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

ELSEIF lv_inv_num IS NOT INITIAL.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'


EXPORTING
wait = abap_true.

idoc_status-docnum = idoc_contrl-docnum.
idoc_status-status = co_posted.

idoc_status-msgty = 'S'.
idoc_status-msgid = 'M8'.
idoc_status-msgno = '392'.
idoc_status-msgv1 = lv_inv_num.
idoc_status-uname = sy-uname.
idoc_status-repid = sy-repid.

APPEND idoc_status TO idoc_status[].


CLEAR idoc_status.

ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form APPEND_BILLING_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form append_billing_data .
move idoc_data-sdata to st_vlcbilling.
endform.
* End of changes by PPRAGYA for MBIL CM 0051514725
*** Begin of Insert by CBHARIS for CM:0059136446 on 20-oct-2021 ***
FORM execute_action_zddp USING p_action.

CALL FUNCTION 'VELO09_SET_ACTION'


EXPORTING
incoming_action_iv = p_action
commit_iv = 'S'
TABLES
vlcdiavehi_ct = tb_vlc_vehicle
vlch_mssg_et = tb_vehimsg
vlcbapicu_it = tb_vlcbapicu_lt
CHANGING
vlcactdata_cs = vlcactdata_cs
EXCEPTIONS
action_not_defined = 1
no_authority = 2
interlinked_action_error = 3
crea_prepare_failed = 4
action_not_performed = 5
action_not_compl_performed = 6
OTHERS = 7.
IF sy-subrc NE 0.
READ TABLE tb_vehimsg WITH KEY msgty = 'E'.
MOVE: tb_vehimsg-msgid TO sy-msgid,
tb_vehimsg-msgty TO sy-msgty,
tb_vehimsg-msgno TO sy-msgno,
tb_vehimsg-msgv1 TO sy-msgv1,
tb_vehimsg-msgv2 TO sy-msgv2,
tb_vehimsg-msgv3 TO sy-msgv3,
tb_vehimsg-msgv4 TO sy-msgv4.
PERFORM write_error USING sy-msgno
sy-msgid.
ENDIF.
ENDFORM.
FORM check_zddp_action USING p_vguid
CHANGING p_flag.
SELECT b~option_price UP TO 1 ROWS
FROM vlcvehicle AS a INNER JOIN /dcsea/us_accval AS b ON a~zz_commnos = b~vhcex
INTO @DATA(wf_price)
WHERE a~vguid = @p_vguid.
ENDSELECT.
IF sy-subrc EQ 0.
p_flag = 'X'.
ELSE.
CLEAR p_flag.
ENDIF.
ENDFORM.
*** End of Insert by CBHARIS for CM:0059136446 on 20-oct-2021 ***

You might also like