You are on page 1of 24

*&---------------------------------------------------------------------

* Program Name: ZIDOC_COUNTRY_MASTER *


*----------------------------------------------------------------------
* Date Written: 03/03/2012 *
*---------------------------------------------------------------------*
* Author : *
*----------------------------------------------------------------------
* Description : This program is used to send updated inventory count *
* to Ivend *
*----------------------------------------------------------------------
*----------------------------------------------------------------------

REPORT zivend_inventory NO STANDARD PAGE HEADING.

TABLES: mkpf,mseg.

*& Types Declaration


TYPES : BEGIN OF ty_mkpf,
mblnr TYPE mkpf-mblnr,
mjahr TYPE mkpf-mjahr,
budat TYPE mkpf-budat,
END OF ty_mkpf,

BEGIN OF ty_indi,
bwart TYPE bwart,
shkzg TYPE shkzg,
END OF ty_indi,
BEGIN OF ty_mseg,
mblnr TYPE mseg-mblnr,
mjahr TYPE mseg-mjahr,
zeile TYPE mseg-zeile,
matnr TYPE mseg-matnr,
werks TYPE mseg-werks,
lgort TYPE mseg-lgort, " Added by Anshul on 13.02.2017
charg TYPE mseg-charg,
bwart TYPE bwart,
sobkz TYPE sobkz, " line added by Anshul on
12.08.2016
shkzg TYPE shkzg, " line added by Anshul on
15.02.2017
erfmg TYPE mseg-erfmg,
ebeln TYPE mseg-ebeln, " Added by Anshul on 18.05.2016
ebelp TYPE mseg-ebelp,
END OF ty_mseg,
BEGIN OF ty_mseg1,
matnr TYPE mseg-matnr,
mjahr TYPE mseg-mjahr,
zeile TYPE mseg-zeile,
werks TYPE mseg-werks,
lgort TYPE mseg-lgort, " Added by Anshul on 13.02.2017
mblnr TYPE mseg-mblnr,
charg TYPE mseg-charg,
bwart TYPE bwart,
sobkz TYPE sobkz, " line added by Anshul on
12.08.2016
shkzg TYPE shkzg, " line added by Anshul on
15.02.2017
erfmg TYPE mseg-erfmg,
END OF ty_mseg1,
BEGIN OF ty_mchb,
matnr TYPE matnr,
werks TYPE werks_d,
charg TYPE charg_d,
clabs TYPE labst,
sgt_scat TYPE sgt_scat,
END OF ty_mchb,
BEGIN OF ty_eqbs,
equnr TYPE equnr,
b_werk TYPE werks_d,
END OF ty_eqbs,
BEGIN OF ty_equi,
equnr TYPE equnr,
matnr TYPE matnr,
sernr TYPE gernr,
werk TYPE werks_d,
charge TYPE charg_d,
END OF ty_equi,

BEGIN OF ty_mseg_n,
mblnr TYPE mblnr,
matnr TYPE matnr,
werks TYPE werks_d,
lgort TYPE lgort_d,
charg TYPE charg_d,
sobkz TYPE sobkz, " line added by Anshul on
12.08.2016
shkzg TYPE shkzg, " line added by Anshul on
15.02.2017
menge TYPE menge_d,
END OF ty_mseg_n,

BEGIN OF ty_mchb_final,
mblnr TYPE mblnr,
matnr TYPE matnr, " Article number
werks TYPE werks_d, " Site
charg TYPE charg_d, " Batch
clabs TYPE labst, "Valuated Unrestricted-Use Stock
END OF ty_mchb_final,

"Begin of Code added by Mohit Tomar 25 NOV 2019


BEGIN OF ty_mch1,
matnr TYPE matnr,
charg TYPE charg_d,
vfdat TYPE vfdat,
END OF ty_mch1.
"End of Code added by Mohit Tomar 25 NOV 2019

*& Data Declaration


DATA : wa_mkpf TYPE ty_mkpf,
wa_mseg TYPE ty_mseg1,
wa_final TYPE ty_mseg1,
wa_mseg1 TYPE ty_mseg,
wa_mseg2 TYPE ty_mseg, " Added by Anshul on
18.05.2016
wa_t001w TYPE t001w, " Added by Anshul on
18.05.2016
wa_mchb TYPE ty_mchb,
wa_equi TYPE ty_equi,
wa_eqbs TYPE ty_eqbs,
wa_edidc TYPE edidc,
wa_edidd TYPE edidd,
wa_globl TYPE zivend_gbl_param,
wa_key_data TYPE rserob,
it_key_data TYPE STANDARD TABLE OF rserob,
it_globl TYPE STANDARD TABLE OF zivend_gbl_param,
it_globl_copy TYPE STANDARD TABLE OF zivend_gbl_param,
it_indicator TYPE STANDARD TABLE OF ty_indi,
wa_indicator TYPE ty_indi,
it_mchb TYPE STANDARD TABLE OF ty_mchb,
it_eqbs TYPE STANDARD TABLE OF ty_eqbs,
it_mkpf TYPE STANDARD TABLE OF ty_mkpf,
it_mseg TYPE STANDARD TABLE OF ty_mseg1,
it_final TYPE STANDARD TABLE OF ty_mseg1,
it_mseg1 TYPE STANDARD TABLE OF ty_mseg,
it_mseg2 TYPE STANDARD TABLE OF ty_mseg, " Added by Anshul on
18.05.2016
it_mseg3 TYPE STANDARD TABLE OF ty_mseg, " Added by Mohit on
07.07.2020
it_equi TYPE STANDARD TABLE OF ty_equi,
it_edidc TYPE STANDARD TABLE OF edidc,
it_edidd TYPE STANDARD TABLE OF edidd,
wa_sernos TYPE rserob,
wa_serxx TYPE rserxx,
it_sernos TYPE STANDARD TABLE OF rserob,
it_sernos1 TYPE STANDARD TABLE OF rserob,
it_serxx TYPE STANDARD TABLE OF rserxx,
it_serxx1 TYPE STANDARD TABLE OF rserxx,
v_logsys TYPE tbdlst-logsys,
v_indate TYPE sy-datum,
v_intime TYPE sy-uzeit,
v_count TYPE i,
v_legcy_sernr TYPE z99e_gernr,
lv_werks TYPE werks_d,
lv_bukrs TYPE bukrs,
it_mseg_n TYPE STANDARD TABLE OF ty_mseg_n,
it_mseg_m TYPE STANDARD TABLE OF ty_mseg_n,
wa_mseg_n TYPE ty_mseg_n,
* i_mkol TYPE STANDARD TABLE OF ty_mkol,
i_mchb_final TYPE STANDARD TABLE OF ty_mchb_final,
* wa_mkol TYPE ty_mkol,
wa_mchb_final TYPE ty_mchb_final,
wa_mch1 TYPE ty_mch1, "Added by Mohit Tomar on
25 NOV 2019
it_mch1 TYPE TABLE OF ty_mch1, "Added by Mohit Tomar on
25 NOV 2019
wa_zart_stock TYPE zart_stock, "Added by Mohit Tomar to
Resolve MATNR on HANA
wa_zbatch_stk TYPE zbatch_stk, "Added by Mohit Tomar to
Resolve MATNR on HANA
wa_zsernr TYPE zsernr, "Added by Mohit Tomar to
Resolve MATNR on HANA
lw_objek TYPE objnum, "Line added by Mohit to Push
Receiver system info in Extended system
lw_atinn TYPE atinn, "Line added by Mohit to Push
Receiver system info in Extended system
ls_ausp TYPE ausp, "Line added by Mohit to Push
Receiver system info in Extended system
lw_target TYPE char20. "Line added by Mohit to Push
Receiver system info in Extended system

*& Constants Declaration


CONSTANTS: c_mes_inv(10) TYPE c VALUE 'ZINVENTORY',
c_seg_sernr(10) TYPE c VALUE 'ZSERNR',
c_seg_astk(10) TYPE c VALUE 'ZART_STOCK',
c_bat_stk(10) TYPE c VALUE 'ZBATCH_STK',
c_logsys(11) TYPE c VALUE 'LOGICAL_SYS',
c_rcvprt(4) TYPE c VALUE 'LS',
c_rcvport(10) TYPE c VALUE 'A000000001',
c_indate(10) TYPE c VALUE 'INDATE',
c_intime(10) TYPE c VALUE 'INTIME'.

*& Selection Screen


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.

PARAMETERS: p_budat TYPE mkpf-budat. " OBLIGATORY. " Posting date


SELECT-OPTIONS : s_bwart FOR mseg-bwart NO INTERVALS OBLIGATORY, " Movement
type
s_werks FOR mseg-werks NO INTERVALS OBLIGATORY, " Site
s_sloc FOR mseg-lgort NO INTERVALS OBLIGATORY. "Storage
Location
SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

*& Perform to fetch the data of inventory based on posting date and movement type
PERFORM get_data.
**********************SOC added by hema*******************************
types: BEGIN OF ty_final1,
matnr TYPE mseg-matnr,
mjahr TYPE mseg-mjahr,
zeile TYPE mseg-zeile,
werks TYPE mseg-werks,
lgort TYPE mseg-lgort, " Added by Anshul on 13.02.2017
mblnr TYPE mseg-mblnr,
charg TYPE mseg-charg,
bwart TYPE bwart,
sobkz TYPE sobkz, " line added by Anshul on
12.08.2016
shkzg TYPE shkzg, " line added by Anshul on
15.02.2017
erfmg TYPE mseg-erfmg,
sgt_scat TYPE sgt_scat,
END OF ty_final1.

data: it_final1 TYPE STANDARD TABLE OF ty_final1,


wa_final1 TYPE ty_final1.

LOOP AT it_final INTO DATA(waa_final).


READ TABLE IT_MCHB INTO DATA(waa_MCHB) WITH KEY MATNR = waa_final-matnr WERKS =
waa_final-werks CHARG = waa_final-charg.
wa_final1-sgt_scat = waa_MCHB-sgt_scat.
MOVE-CORRESPONDING waa_final TO wa_final1.
APPEND wa_final1 TO it_final1.
ENDLOOP.
**********************EOC added by hema*******************************
*& Perfor to fill the data in the IDoc.
PERFORM fill_data_idoc.

*&Perform to create inventory IDoc to update inventory at Ivend.


PERFORM create_inventory_idoc.

***&---------------------------------------------------------------------*
***& Form GET_DATA
***&---------------------------------------------------------------------*
*** text
***----------------------------------------------------------------------*
*** --> p1 text
*** <-- p2 text
***----------------------------------------------------------------------*
**FORM get_data.
**
** IF p_budat IS INITIAL.
** p_budat = sy-datum.
** ENDIF.
***& Get the values of logical system, date and time from global table
** REFRESH it_globl.
** SELECT mandt bukrs field value
** FROM zivend_gbl_param
** INTO TABLE it_globl
** WHERE field EQ c_logsys
** OR field EQ c_indate
** OR field EQ c_intime.
**
** CLEAR wa_globl.
** REFRESH it_globl_copy.
** LOOP AT it_globl INTO wa_globl WHERE field EQ c_indate
** OR field EQ c_intime.
** IF c_indate EQ wa_globl-field.
** v_indate = wa_globl-value.
** ELSE.
** v_intime = wa_globl-value.
** ENDIF.
** APPEND wa_globl TO it_globl_copy.
** ENDLOOP.
**
**
** REFRESH it_indicator.
** SELECT bwart shkzg INTO TABLE it_indicator FROM t156 WHERE bwart IN s_bwart.
**
**
***& if posting date and date in global table is not same initialize the time.
** IF v_indate NE p_budat.
** CLEAR v_intime.
** ENDIF.
***& Get data from MKPF based on posting date in selection screen.
** IF NOT it_globl_copy[] IS INITIAL.
** REFRESH it_mkpf.
** SELECT mblnr
** mjahr
** budat
** FROM mkpf
** INTO TABLE it_mkpf
*** WHERE budat EQ p_budat " code commeny by anshul
on 12.08.2016
** WHERE cpudt EQ p_budat " code added by anshul on
12.08.2016
*** AND cpudt eq v_indate
** AND cputm GT v_intime.
** IF sy-subrc NE 0.
** MESSAGE i000(su) WITH 'No data for current selection'.
** EXIT.
** ENDIF.
** ELSE.
** REFRESH it_mkpf.
** SELECT mblnr
** mjahr
** budat
** FROM mkpf
** INTO TABLE it_mkpf
*** WHERE budat EQ p_budat. " code commeny by anshul on
12.08.2016
** WHERE cpudt EQ p_budat. " code added by anshul on
12.08.2016
** ENDIF.
** IF sy-subrc EQ 0.
***& Get the data from MSEG based on data fectched from MKPF and movement type,
site given on selection screen
**
** REFRESH it_mseg1.
** SELECT mblnr
** mjahr
** zeile
** matnr
** werks
** lgort " Added by Anshul on 13.02.2017
** charg
** bwart
** sobkz " Added by Anshul on 12.08.2016
** shkzg " Added by Anshul on 15.02.2017
** erfmg
** ebeln " Added by Anshul on 18.05.2016
** FROM mseg
** INTO TABLE it_mseg1
** FOR ALL ENTRIES IN it_mkpf
** WHERE mblnr EQ it_mkpf-mblnr
** AND bwart IN s_bwart
** AND werks IN s_werks
** AND lgort IN s_sloc.
**
*** Begin of code changes by Anshul on 12.08.2016
** SELECT mblnr
** matnr
** werks
** lgort
** charg
** sobkz " Added by Anshul on 12.08.2016
** shkzg " Added by Anshul on 15.02.2017
** menge
** FROM mseg
** INTO TABLE it_mseg_n
** FOR ALL ENTRIES IN it_mkpf
** WHERE mblnr EQ it_mkpf-mblnr
** AND bwart IN s_bwart
** AND werks IN s_werks
** AND lgort IN s_sloc.
*** End of code changes by Anshul on 12.08.2016
**
** IF sy-subrc EQ 0.
*** Begin of code changes by Anshul on 18.05.2016
** LOOP AT it_mseg1 INTO wa_mseg1
** WHERE bwart = '101'.
**
*** Checking whether site is DC or not
** SELECT SINGLE * FROM t001w
** INTO wa_t001w
** WHERE werks = wa_mseg1-werks.
** IF sy-subrc IS INITIAL AND wa_t001w-vlfkz = 'B'.
**
*** Fetching movement type 641 record
** SELECT SINGLE mblnr mjahr zeile matnr werks lgort
** charg bwart sobkz shkzg erfmg ebeln
** FROM mseg
** INTO wa_mseg2
** WHERE bwart = '641'
** AND werks EQ wa_mseg1-werks
** AND ebeln EQ wa_mseg1-ebeln.
** IF sy-subrc IS INITIAL.
** APPEND wa_mseg2 TO it_mseg2.
** ENDIF.
** ENDIF.
** ENDLOOP.
**
** IF it_mseg2 IS NOT INITIAL.
** APPEND LINES OF it_mseg2 TO it_mseg1.
** ENDIF.
*** End of code changes by Anshul on 18.05.2016
**
***& Get data of batch from MCHB
** DELETE it_mseg WHERE matnr IS INITIAL.
** REFRESH it_mchb.
** SELECT matnr
** werks
** charg
** clabs
** FROM mchb
** INTO TABLE it_mchb
** FOR ALL ENTRIES IN it_mseg1
** WHERE matnr EQ it_mseg1-matnr
** AND werks EQ it_mseg1-werks
** AND charg EQ it_mseg1-charg. " line added by anshul on
12.08.2016
**
*** Begin of code changes by Anshul on 12.08.2016
** LOOP AT it_mseg_n INTO wa_mseg_n.
** wa_mchb_final-mblnr = wa_mseg_n-mblnr.
** wa_mchb_final-charg = wa_mseg_n-charg.
** wa_mchb_final-clabs = wa_mseg_n-menge.
**
** COLLECT wa_mchb_final INTO i_mchb_final.
** CLEAR : wa_mchb_final, wa_mseg_n.
** ENDLOOP.
*** End of code changes by Anshul on 12.08.2016
**
** REFRESH: it_sernos,it_sernos1.
** SORT it_mseg1 BY mblnr.
** LOOP AT it_mseg1 INTO wa_mseg1.
**
** AT NEW mblnr.
** wa_key_data-taser = 'SER03'.
** wa_key_data-mblnr = wa_mseg1-mblnr.
** READ TABLE it_mkpf INTO wa_mkpf WITH KEY mblnr = wa_mseg1-mblnr.
** IF sy-subrc EQ 0.
** wa_key_data-mjahr = wa_mkpf-mjahr.
** ENDIF.
**
***& Function module to get serial numbers of Article Document
** REFRESH: it_sernos,it_serxx.
** CALL FUNCTION 'GET_SERNOS_OF_DOCUMENT'
** EXPORTING
** key_data = wa_key_data
*** STATUS_PRE_READ = ' '
** equnr_corr = 'X'
*** NO_DELETED = ' '
** TABLES
** sernos = it_sernos
** serxx = it_serxx
** EXCEPTIONS
** key_parameter_error = 1
** no_supported_access = 2
** no_data_found = 3
** OTHERS = 4.
** IF sy-subrc <> 0.
*** MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*** WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
**
** ELSE.
*** delete adjacent duplicates from it_sernos comparing sernr matnr.
** LOOP AT it_serxx INTO wa_serxx.
** READ TABLE s_sloc WITH KEY low = wa_serxx-lagerort.
** IF sy-subrc <> 0.
** DELETE it_sernos WHERE zeile = wa_serxx-zeile.
** ENDIF.
** ENDLOOP.
** APPEND LINES OF it_sernos TO it_sernos1.
** APPEND LINES OF it_serxx TO it_serxx1.
** ENDIF.
** CLEAR wa_key_data.
** ENDAT.
** ENDLOOP.
**
**
*** ENDLOOP.
****& Get the data fron EQBS based on site and storage location
*** REFRESH it_eqbs.
*** SELECT equnr
*** b_werk
*** INTO TABLE it_eqbs
*** FROM eqbs
*** WHERE b_werk IN s_werks
*** AND b_lager IN s_sloc.
***
****& Get serial number from table EQUI based on article number, site and batch.
***
*** REFRESH it_equi.
*** SELECT equnr
*** matnr
*** sernr
*** werk
*** charge
*** FROM equi
*** INTO TABLE it_equi
*** FOR ALL ENTRIES IN it_mseg1
*** WHERE matnr EQ it_mseg1-matnr.
***
** ENDIF.
** ENDIF.
***& Loop internal table it_mseg2 and remove mblnr field.
** LOOP AT it_mseg1 INTO wa_mseg1.
*** CLEAR wa_mseg1-mblnr.
*** MODIFY it_mseg1 FROM wa_mseg1 INDEX sy-tabix TRANSPORTING mblnr.
** MOVE-CORRESPONDING wa_mseg1 TO wa_mseg.
** APPEND wa_mseg TO it_mseg.
** ENDLOOP.
**
***& Loop internal table it_mseg2 to consloidate quantity.
** CLEAR:wa_mseg,v_count.
** REFRESH it_final.
*** SORT it_mseg.
*** LOOP AT it_mseg INTO wa_mseg.
*** v_count = v_count + wa_mseg-erfmg.
*** wa_final = wa_mseg.
*** AT END OF werks.
*** wa_final-erfmg = v_count.
*** APPEND wa_final TO it_final.
*** CLEAR: v_count.
*** ENDAT.
**
*** CLEAR: wa_mseg,wa_final.
*** ENDLOOP.
** it_final[] = it_mseg[].
**
** READ TABLE it_mseg INTO wa_mseg INDEX 1.
** IF sy-subrc = 0.
** lv_werks = wa_mseg-werks.
** ENDIF.
**ENDFORM. " GET_DATA
***&---------------------------------------------------------------------*
***&
***& Form FILL_DATA_IDOC
***&---------------------------------------------------------------------*
*** text
***----------------------------------------------------------------------*
*** --> p1 text
*** <-- p2 text
***----------------------------------------------------------------------*
**FORM fill_data_idoc.
**
*** data declaration
** DATA : ls_ekko TYPE ekko. " line added by anshul on 28.11.2016
**
** SELECT SINGLE bukrs FROM t001k INTO lv_bukrs WHERE bwkey = lv_werks.
** CLEAR wa_globl.
** READ TABLE it_globl INTO wa_globl WITH KEY field = c_logsys bukrs = lv_bukrs .
** CLEAR wa_edidc.
** IF sy-subrc EQ 0.
** wa_edidc-rcvprn = wa_globl-value.
** ENDIF.
***& fill the control record for IDoc
** wa_edidc-mestyp = c_mes_inv. "'ZINVENTORY'.
** wa_edidc-idoctp = c_mes_inv. "'ZINVENTORY'.
*** wa_edidc-rcvprn = wa_zivend_gbl_param-value.
** wa_edidc-rcvprt = c_rcvprt.
** wa_edidc-rcvpor = c_rcvport. "'A000000001'.
** wa_edidc-credat = sy-datum.
**
*** it_final_tmp = it_final. " line
added by Anshul on 28.11.2016
**
***& Fill the data records.
** CLEAR wa_final.
** LOOP AT it_final INTO wa_final.
**
** wa_edidd-segnam = c_seg_astk. "'ZART_STOCK'.
** wa_edidd-hlevel = '2'.
** wa_edidd-sdata+0(18) = wa_final-matnr.
** wa_edidd-sdata+18(4) = wa_final-werks.
** SELECT SINGLE bukrs FROM t001k INTO wa_edidd-sdata+87(4) WHERE bwkey =
wa_final-werks.
** wa_edidd-sdata+22(15) = wa_final-erfmg.
** CLEAR wa_indicator.
** READ TABLE it_indicator INTO wa_indicator WITH KEY wa_final-bwart.
*** Begin of code change by Anshul on 18.05.2016
** IF sy-subrc IS NOT INITIAL AND wa_final-bwart EQ '641'.
** wa_indicator-shkzg = 'S'.
** ENDIF.
*** End of code change by Anshul on 18.05.2016
** IF wa_final-bwart = '317' OR wa_final-bwart = '318'.
** wa_edidd-sdata+37(1) = wa_final-shkzg.
** ELSE.
** wa_edidd-sdata+37(1) = wa_indicator-shkzg.
** ENDIF.
** wa_edidd-sdata+38(10) = wa_final-mblnr.
** wa_edidd-sdata+48(4) = wa_final-zeile.
** wa_edidd-sdata+52(3) = wa_final-bwart.
** wa_edidd-sdata+55(12) = sy-uname.
** wa_edidd-sdata+67(20) = 'Automatic'. "sy-tcode.
** wa_edidd-sdata+91(1) = wa_final-sobkz. " line added by
anshul on 12.08.2016
**
*** Begin of code changes by Anshul on 28.11.2016
*** This change is to add supplying site field in segment ZART_STOCK
**
** READ TABLE it_mseg1 INTO wa_mseg1
** WITH KEY mblnr = wa_final-mblnr
** matnr = wa_final-matnr.
** IF sy-subrc IS INITIAL.
** SELECT SINGLE * FROM ekko INTO ls_ekko
** WHERE ebeln = wa_mseg1-ebeln.
** IF sy-subrc IS INITIAL.
** wa_edidd-sdata+92(4) = ls_ekko-reswk.
** ELSE.
** wa_edidd-sdata+92(4) = '9999'.
** ENDIF.
** ENDIF.
*** End of code changes by Anshul on 28.11.2016
**
** wa_edidd-sdata+96(4) = wa_final-lgort. " added by Anshul on
13.02.2017
**
** APPEND wa_edidd TO it_edidd.
** CLEAR wa_edidd.
** CLEAR wa_mchb.
**
*** Begin of code comment by Anshul on 12.08.2016
*****& Loop table it_mchb to get the values of batch and quantity.
**** LOOP AT it_mchb INTO wa_mchb WHERE matnr EQ wa_final-matnr
**** AND werks EQ wa_final-werks.
****
**** wa_edidd-segnam = c_bat_stk."'ZBATCH_STK'.
**** wa_edidd-hlevel = '3'.
**** wa_edidd-sdata+0(10) = wa_mchb-charg.
**** wa_edidd-sdata+10(15) = wa_mchb-clabs.
**** APPEND wa_edidd TO it_edidd.
**** CLEAR wa_edidd.
**** ENDLOOP.
*** End of code comment by Anshul on 12.08.2016
**
*** Begin of code changes by Anshul on 12.08.2016
** READ TABLE i_mchb_final INTO wa_mchb_final WITH KEY mblnr = wa_final-mblnr
charg = wa_final-charg.
** IF sy-subrc = 0 AND wa_mchb_final-charg NE ''.
** wa_edidd-segnam = c_bat_stk."'ZBATCH_STK'.
** wa_edidd-hlevel = '3'.
** wa_edidd-sdata+0(10) = wa_mchb_final-charg.
** wa_edidd-sdata+10(15) = wa_mchb_final-clabs.
** APPEND wa_edidd TO it_edidd.
** CLEAR : wa_edidd , wa_mchb_final.
** ENDIF.
*** End of code changes by Anshul on 12.08.2016
**
*** CLEAR: wa_equi.
****& loop at it_equi for Serial Numbers only for the given article and site
*** CLEAR: wa_equi,v_count.
*** LOOP AT it_equi INTO wa_equi WHERE matnr EQ wa_mseg-matnr.
****& Read Serial Numbers only for the given site
*** CLEAR wa_eqbs.
*** READ TABLE it_eqbs INTO wa_eqbs WITH KEY equnr = wa_equi-equnr
*** b_werk = wa_mseg-werks.
**
***& LOOP it_sernos to get the serial numbers based on document and article
** LOOP AT it_sernos1 INTO wa_sernos WHERE matnr EQ wa_final-matnr AND mblnr =
wa_final-mblnr
** AND zeile =
wa_final-zeile. " Line added by anshul on 12.08.2016
** READ TABLE it_serxx1 INTO wa_serxx WITH KEY mblnr = wa_sernos-mblnr
** zeile = wa_sernos-zeile
** werk = wa_final-werks.
** IF sy-subrc EQ 0.
** wa_edidd-segnam = c_seg_sernr. "'ZSERNR'.
** wa_edidd-hlevel = '3'.
***& Function module to get legacy serial number maintained against article number
and SAP serial number
*** CALL FUNCTION 'ZLEGCY_SRNO_OUTBOUND_UPDATE'
*** EXPORTING
*** matnr = wa_sernos-matnr
*** sap_sernr = wa_sernos-sernr
*** IMPORTING
*** lgcy_sernr = v_legcy_sernr.
**
**
** wa_edidd-sdata+0(25) = wa_sernos-sernr.
** APPEND wa_edidd TO it_edidd.
** CLEAR wa_edidd.
** ENDIF.
** ENDLOOP.
** ENDLOOP.
*** CLEAR: wa_mseg,v_count.
*** IF sy-subrc EQ 0 AND v_count LE wa_mseg-erfmg. "Check if stock and serial
numbers are equal.
*** wa_edidd-segnam = c_seg_sernr. "'ZSERNR'.
*** wa_edidd-hlevel = '3'.
****& Function module to get legacy serial number maintained against article number
and SAP serial number
*** CALL FUNCTION 'ZLEGCY_SRNO_OUTBOUND_UPDATE'
*** EXPORTING
*** matnr = wa_mseg-matnr
*** sap_sernr = wa_equi-sernr
*** IMPORTING
*** lgcy_sernr = v_legcy_sernr.
***
*** wa_edidd-sdata+0(25) = v_legcy_sernr.
*** APPEND wa_edidd TO it_edidd.
*** CLEAR wa_edidd.
*** v_count = v_count + 1.
*** ENDIF.
*** CLEAR: wa_edidd,wa_equi.
*** ENDLOOP.
*** CLEAR: wa_mseg,v_count.
*** ENDLOOP.
**
**ENDFORM. " FILL_DATA_IDOC

*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data.

* Data Declaration
DATA : lw_objek TYPE objnum,
lw_atinn TYPE atinn,
ls_ausp TYPE ausp,
ls_ekko TYPE ekko.
RANGES : s_n_bwart FOR mseg-bwart.

IF p_budat IS INITIAL.
p_budat = sy-datum.
ENDIF.
*& Get the values of logical system, date and time from global table
REFRESH it_globl.
SELECT mandt bukrs field value
FROM zivend_gbl_param
INTO TABLE it_globl
WHERE field EQ c_logsys
OR field EQ c_indate
OR field EQ c_intime.

CLEAR wa_globl.
REFRESH it_globl_copy.
LOOP AT it_globl INTO wa_globl WHERE field EQ c_indate
OR field EQ c_intime.
IF c_indate EQ wa_globl-field.
v_indate = wa_globl-value.
ELSE.
v_intime = wa_globl-value.
ENDIF.
APPEND wa_globl TO it_globl_copy.
ENDLOOP.

REFRESH it_indicator.
SELECT bwart shkzg INTO TABLE it_indicator FROM t156 WHERE bwart IN s_bwart.
IF sy-subrc IS INITIAL.
LOOP AT it_indicator INTO wa_indicator.
IF wa_indicator-bwart = '101' OR wa_indicator-bwart = '162' OR wa_indicator-
bwart = '301' OR
wa_indicator-bwart = '501' OR wa_indicator-bwart = '602' OR wa_indicator-
bwart = '343'.
wa_indicator-shkzg = 'S'.
ENDIF.

IF wa_indicator-bwart = '102' OR wa_indicator-bwart = '161' OR wa_indicator-


bwart = '302' OR
wa_indicator-bwart = '502' OR wa_indicator-bwart = '601' OR wa_indicator-
bwart = '344'.
wa_indicator-shkzg = 'H'.
ENDIF.
MODIFY it_indicator FROM wa_indicator TRANSPORTING shkzg.
ENDLOOP.
ENDIF.

LOOP AT s_bwart INTO DATA(w_s_bwart) WHERE low EQ '343' OR low EQ '344'.


DATA(lv_index) = sy-tabix.
APPEND w_s_bwart TO s_n_bwart.
DELETE s_bwart INDEX lv_index.
CLEAR : w_s_bwart, lv_index.
ENDLOOP.

*& if posting date and date in global table is not same initialize the time.
IF v_indate NE p_budat.
CLEAR v_intime.
ENDIF.
*& Get data from MKPF based on posting date in selection screen.
IF NOT it_globl_copy[] IS INITIAL.
REFRESH it_mkpf.
SELECT mblnr
mjahr
budat
FROM mkpf
INTO TABLE it_mkpf
* WHERE budat EQ p_budat " code comment by anshul on
12.08.2016
WHERE cpudt EQ p_budat " code added by anshul on
12.08.2016
* AND cpudt eq v_indate
AND cputm GT v_intime.
IF sy-subrc NE 0.
MESSAGE i000(su) WITH 'No data for current selection'.
EXIT.
ENDIF.
ELSE.
REFRESH it_mkpf.
SELECT mblnr
mjahr
budat
FROM mkpf
INTO TABLE it_mkpf
* WHERE budat EQ p_budat. " code commeny by anshul on
12.08.2016
WHERE cpudt EQ p_budat. " code added by anshul on
12.08.2016
ENDIF.
IF sy-subrc EQ 0.
*& Get the data from MSEG based on data fectched from MKPF and movement type, site
given on selection screen

REFRESH it_mseg1.
SELECT mblnr
mjahr
zeile
matnr
werks
lgort " Added by Anshul on 13.02.2017
charg
bwart
sobkz " Added by Anshul on 12.08.2016
shkzg " Added by Anshul on 15.02.2017
erfmg
ebeln
ebelp
FROM mseg
INTO TABLE it_mseg1
FOR ALL ENTRIES IN it_mkpf
WHERE mblnr EQ it_mkpf-mblnr
AND bwart IN s_bwart
AND werks IN s_werks
AND lgort IN s_sloc.
* IF sy-subrc EQ 0.
SELECT mblnr
mjahr
zeile
matnr
werks
lgort
charg
bwart
sobkz
shkzg
erfmg
ebeln
ebelp
FROM mseg
INTO TABLE it_mseg3
FOR ALL ENTRIES IN it_mkpf
WHERE mblnr EQ it_mkpf-mblnr
AND bwart IN s_n_bwart
AND werks IN s_werks
AND lgort IN s_sloc
AND xauto EQ 'X'.
IF sy-subrc EQ 0.
LOOP AT it_mseg3 INTO DATA(w_it_mseg3).
APPEND w_it_mseg3 TO it_mseg1.
CLEAR : w_it_mseg3.
ENDLOOP.
ENDIF.
* ENDIF.

* Begin of code changes by Anshul on 12.08.2016


SELECT mblnr
matnr
werks
lgort
charg
sobkz " Added by Anshul on 12.08.2016
shkzg " Added by Anshul on 15.02.2017
menge
FROM mseg
INTO TABLE it_mseg_n
FOR ALL ENTRIES IN it_mkpf
WHERE mblnr EQ it_mkpf-mblnr
AND bwart IN s_bwart
AND werks IN s_werks
AND lgort IN s_sloc.
* End of code changes by Anshul on 12.08.2016
SELECT mblnr
matnr
werks
lgort
charg
sobkz " Added by Anshul on 12.08.2016
shkzg " Added by Anshul on 15.02.2017
menge
FROM mseg
INTO TABLE it_mseg_m
FOR ALL ENTRIES IN it_mkpf
WHERE mblnr EQ it_mkpf-mblnr
AND bwart IN s_n_bwart
AND werks IN s_werks
AND lgort IN s_sloc
AND xauto EQ 'X'.
IF sy-subrc EQ 0.
LOOP AT it_mseg_m INTO DATA(w_it_mseg_m).
APPEND w_it_mseg_m TO it_mseg_n.
CLEAR : w_it_mseg_m.
ENDLOOP.
ENDIF.

* IF sy-subrc EQ 0. " Commented by hema

* Convert characteristic name into internal number format


CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'
EXPORTING
input = 'RCVR_SYS'
IMPORTING
output = lw_atinn.

* Begin of code changes by Anshul on 18.05.2016


LOOP AT it_mseg1 INTO wa_mseg1
WHERE bwart = '101'.

* Checking whether site is DC or not


SELECT SINGLE * FROM t001w
INTO wa_t001w
WHERE werks = wa_mseg1-werks.
IF sy-subrc IS INITIAL AND wa_t001w-vlfkz = 'B'.

SELECT SINGLE * FROM ekko INTO ls_ekko


WHERE ebeln = wa_mseg1-ebeln.
IF sy-subrc IS INITIAL.
lw_objek = ls_ekko-reswk.
ENDIF.

SELECT SINGLE * FROM ausp


INTO ls_ausp
WHERE objek = lw_objek
AND atinn = lw_atinn
AND klart = '030'.
IF ls_ausp-atwrt = 'IVEND'.

* Fetching movement type 641 record


SELECT SINGLE mblnr mjahr zeile matnr werks lgort
charg bwart sobkz shkzg erfmg ebeln
FROM mseg
INTO wa_mseg2
WHERE bwart = '641'
AND matnr EQ wa_mseg1-matnr
AND werks EQ wa_mseg1-werks
AND ebeln EQ wa_mseg1-ebeln
AND ebelp EQ wa_mseg1-ebelp.
IF sy-subrc IS INITIAL.
APPEND wa_mseg2 TO it_mseg2.
ENDIF.
ENDIF.
ENDIF.
CLEAR : lw_objek, ls_ausp, ls_ekko.
ENDLOOP.

IF it_mseg2 IS NOT INITIAL.


APPEND LINES OF it_mseg2 TO it_mseg1.
ENDIF.
* End of code changes by Anshul on 18.05.2016

*& Get data of batch from MCHB


DELETE it_mseg WHERE matnr IS INITIAL.
REFRESH it_mchb.
SELECT matnr
werks
charg
clabs
sgt_scat
FROM mchb
INTO TABLE it_mchb
FOR ALL ENTRIES IN it_mseg1
WHERE matnr EQ it_mseg1-matnr
AND werks EQ it_mseg1-werks
AND charg EQ it_mseg1-charg. " line added by anshul on
12.08.2016

* Begin of code added by Mohit Tomar


*& Get VFDAT from mch1 table
REFRESH it_mch1.
SELECT matnr charg vfdat
FROM mch1
INTO TABLE it_mch1
FOR ALL ENTRIES IN it_mchb
WHERE matnr EQ it_mchb-matnr
AND charg EQ it_mchb-charg.
* End of code added by Mohit Tomar

* Begin of code changes by Anshul on 12.08.2016


LOOP AT it_mseg_n INTO wa_mseg_n.
wa_mchb_final-mblnr = wa_mseg_n-mblnr.
wa_mchb_final-matnr = wa_mseg_n-matnr. "Line added by Mohit Tomar on
25 Nov 2019
wa_mchb_final-charg = wa_mseg_n-charg.
wa_mchb_final-clabs = wa_mseg_n-menge.

COLLECT wa_mchb_final INTO i_mchb_final.


CLEAR : wa_mchb_final, wa_mseg_n.
ENDLOOP.
* End of code changes by Anshul on 12.08.2016

REFRESH: it_sernos,it_sernos1.
SORT it_mseg1 BY mblnr.
LOOP AT it_mseg1 INTO wa_mseg1.

AT NEW mblnr.
wa_key_data-taser = 'SER03'.
wa_key_data-mblnr = wa_mseg1-mblnr.
READ TABLE it_mkpf INTO wa_mkpf WITH KEY mblnr = wa_mseg1-mblnr.
IF sy-subrc EQ 0.
wa_key_data-mjahr = wa_mkpf-mjahr.
ENDIF.

*& Function module to get serial numbers of Article Document


REFRESH: it_sernos,it_serxx.
CALL FUNCTION 'GET_SERNOS_OF_DOCUMENT'
EXPORTING
key_data = wa_key_data
* STATUS_PRE_READ = ' '
equnr_corr = 'X'
* NO_DELETED = ' '
TABLES
sernos = it_sernos
serxx = it_serxx
EXCEPTIONS
key_parameter_error = 1
no_supported_access = 2
no_data_found = 3
OTHERS = 4.
IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.
* delete adjacent duplicates from it_sernos comparing sernr matnr.
LOOP AT it_serxx INTO wa_serxx.
READ TABLE s_sloc WITH KEY low = wa_serxx-lagerort.
IF sy-subrc <> 0.
DELETE it_sernos WHERE zeile = wa_serxx-zeile.
ENDIF.
ENDLOOP.
APPEND LINES OF it_sernos TO it_sernos1.
APPEND LINES OF it_serxx TO it_serxx1.
ENDIF.
CLEAR wa_key_data.
ENDAT.
ENDLOOP.

* ENDIF. "commented by hema


ENDIF.
*& Loop internal table it_mseg2 and remove mblnr field.
LOOP AT it_mseg1 INTO wa_mseg1.
MOVE-CORRESPONDING wa_mseg1 TO wa_mseg.
APPEND wa_mseg TO it_mseg.
ENDLOOP.

*& Loop internal table it_mseg2 to consloidate quantity.


CLEAR:wa_mseg,v_count.
REFRESH it_final.

it_final[] = it_mseg[].

READ TABLE it_mseg INTO wa_mseg INDEX 1.


IF sy-subrc = 0.
lv_werks = wa_mseg-werks.
ENDIF.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*&
*& Form FILL_DATA_IDOC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_data_idoc.

* data declaration
DATA : ls_ekko TYPE ekko. " line added by anshul on 28.11.2016

SELECT SINGLE bukrs FROM t001k INTO lv_bukrs WHERE bwkey = lv_werks.
CLEAR wa_globl.
READ TABLE it_globl INTO wa_globl WITH KEY field = c_logsys bukrs = lv_bukrs .
CLEAR wa_edidc.
IF sy-subrc EQ 0.
wa_edidc-rcvprn = wa_globl-value.
ENDIF.
*& fill the control record for IDoc
wa_edidc-mestyp = c_mes_inv. "'ZINVENTORY'.
wa_edidc-idoctp = c_mes_inv. "'ZINVENTORY'.
* wa_edidc-rcvprn = wa_zivend_gbl_param-value.
wa_edidc-rcvprt = c_rcvprt.
wa_edidc-rcvpor = c_rcvport. "'A000000001'.
wa_edidc-credat = sy-datum.

* it_final_tmp = it_final. " line added


by Anshul on 28.11.2016

*& Fill the data records.


CLEAR wa_final.

**********************SOC added by hema***********


types: BEGIN OF ty_mchb1,
matnr TYPE matnr,
werks TYPE werks_d,
clabs TYPE labst,
sgt_scat TYPE sgt_scat,
END OF ty_mchb1.
DATA: it_mchb_f TYPE STANDARD TABLE OF ty_mchb1,
it_mchb_f1 TYPE STANDARD TABLE OF ty_mchb1.
MOVE-CORRESPONDING it_mchb TO it_mchb_f.
LOOP AT it_mchb_f INTO DATA(wa_mchb_f).
COLLECT wa_mchb_f INTO it_mchb_f1.
ENDLOOP.
**********************EOC added by hema***********

* LOOP AT it_final INTO wa_final. "commented by hema


SORT it_final1 by MATNR WERKS LGORT sgt_scat.
LOOP AT it_final1 INTO wa_final.

wa_edidd-segnam = c_seg_astk. "'ZART_STOCK'.


wa_edidd-hlevel = '2'.
* wa_edidd-sdata+0(18) = wa_final-matnr.
wa_zart_stock-matnr = wa_final-matnr. "Added By Mohit
Tomar
* wa_edidd-sdata+18(4) = wa_final-werks.
wa_zart_stock-werks = wa_final-werks. "Added By Mohit
Tomar
SELECT SINGLE bukrs FROM t001k INTO wa_edidd-sdata+87(4) WHERE bwkey =
wa_final-werks.
* wa_edidd-sdata+22(15) = wa_final-erfmg.
wa_zart_stock-stock = wa_final-erfmg. "Added By Mohit
Tomar
CLEAR wa_indicator.
READ TABLE it_indicator INTO wa_indicator WITH KEY wa_final-bwart.
* Begin of code change by Anshul on 18.05.2016
IF sy-subrc IS NOT INITIAL AND wa_final-bwart EQ '641'.
wa_indicator-shkzg = 'S'.
ENDIF.
* End of code change by Anshul on 18.05.2016
IF wa_final-bwart = '317' OR wa_final-bwart = '318' OR wa_final-bwart = '319'
OR wa_final-bwart = '311' OR wa_final-bwart = '312' OR wa_final-bwart = '309'
OR wa_final-bwart = '310'.
* wa_edidd-sdata+37(1) = wa_final-shkzg.
wa_zart_stock-indicator = wa_final-shkzg. "Added By Mohit
Tomar
ELSE.
* wa_edidd-sdata+37(1) = wa_indicator-shkzg.
wa_zart_stock-indicator = wa_indicator-shkzg. "Added By Mohit
Tomar
ENDIF.
* wa_edidd-sdata+38(10) = wa_final-mblnr.
* wa_edidd-sdata+48(4) = wa_final-zeile.
* wa_edidd-sdata+52(3) = wa_final-bwart.
* wa_edidd-sdata+55(12) = sy-uname.
* wa_edidd-sdata+67(20) = 'Automatic'. "sy-tcode.
* wa_edidd-sdata+91(1) = wa_final-sobkz. " line added by
anshul on 12.08.2016
wa_zart_stock-mblnr = wa_final-mblnr. "Added By Mohit Tomar
wa_zart_stock-zeile = wa_final-zeile. "Added By Mohit Tomar
wa_zart_stock-bwart = wa_final-bwart. "Added By Mohit Tomar
wa_zart_stock-user = sy-uname. "Added By Mohit Tomar
wa_zart_stock-transaction = 'Automatic'. "sy-tcode. "Added By Mohit Tomar
wa_zart_stock-stock_type = wa_final-sobkz. "Added By Mohit Tomar

* Begin of code changes by Anshul on 28.11.2016


* This change is to add supplying site field in segment ZART_STOCK

READ TABLE it_mseg1 INTO wa_mseg1


WITH KEY mblnr = wa_final-mblnr
matnr = wa_final-matnr.
IF sy-subrc IS INITIAL.
SELECT SINGLE * FROM ekko INTO ls_ekko
WHERE ebeln = wa_mseg1-ebeln.
IF sy-subrc IS INITIAL.
* wa_edidd-sdata+92(4) = ls_ekko-reswk.
wa_zart_stock-supplying_site = ls_ekko-reswk. "Added By Mohit Tomar
ELSE.
* wa_edidd-sdata+92(4) = '9999'.
wa_zart_stock-supplying_site = '9999'. "Added By Mohit Tomar
ENDIF.
ENDIF.
* End of code changes by Anshul on 28.11.2016

* wa_edidd-sdata+96(4) = wa_final-lgort. " added by Anshul on


13.02.2017
wa_zart_stock-location = wa_final-lgort. "Added By Mohit
Tomar

****************Start of addition of code to add Target system info*********


lw_objek = wa_final-werks.
CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'
EXPORTING
input = 'RCVR_SYS'
IMPORTING
output = lw_atinn.

SELECT SINGLE * FROM ausp


INTO ls_ausp
WHERE objek = lw_objek
AND atinn = lw_atinn
AND klart = '030'.
IF sy-subrc EQ 0.
lw_target = ls_ausp-atwrt.
wa_zart_stock-target_sys = lw_target.
CLEAR : lw_target.
ENDIF.
****************END of addition of code to add Target system info***********

wa_edidd-sdata = wa_zart_stock. "Added By Mohit


Tomar
* APPEND wa_edidd TO it_edidd. "Commented by hema
* CLEAR : wa_edidd, wa_mchb, wa_zart_stock. "Commented by hema

*************SOC added by hema***********************************************


IF wa_final-charg NE ''.
DATA(wa_edidd_ref) = wa_edidd.
CLEAR : wa_edidd, wa_mchb, wa_zart_stock.
ELSE.
APPEND wa_edidd TO it_edidd.
CLEAR : wa_edidd, wa_mchb, wa_zart_stock.
ENDIF.

SELECT matnr,stk_catgry,ivend_matnr FROM zmean INTO TABLE @DATA(lt_cawn) WHERE


matnr = @wa_final-matnr.

*************EOC added by hema**********************************************


* Begin of code changes by Anshul on 12.08.2016
READ TABLE i_mchb_final INTO wa_mchb_final WITH KEY mblnr = wa_final-mblnr
charg = wa_final-charg. "commented by hema
READ TABLE i_mchb_final INTO wa_mchb_final WITH KEY mblnr = wa_final-mblnr
matnr = wa_final-matnr charg = wa_final-charg.
IF sy-subrc = 0 AND wa_mchb_final-charg NE ''.

**********************SOC added by hema***********


READ TABLE it_mchb INTO DATA(w_it_mchb) WITH KEY matnr = wa_mchb_final-matnr
charg = wa_mchb_final-charg.
IF sy-subrc = 0.
CONCATENATE w_it_mchb-matnr w_it_mchb-sgt_scat INTO DATA(text_1) SEPARATED
BY '_'.
ENDIF.
ON CHANGE OF text_1.
IF wa_edidd_ref IS NOT INITIAL.
DATA wa_edidd_ref1 TYPE zart_stock.
wa_edidd_ref1 = wa_edidd_ref-sdata.
READ TABLE lt_cawn INTO DATA(wa_cawn) WITH KEY matnr = w_it_mchb-matnr
stk_catgry = w_it_mchb-sgt_scat.
IF sy-subrc = 0.
wa_edidd_ref1-matnr = wa_cawn-ivend_matnr.
ELSE.
wa_edidd_ref1-matnr = wa_mchb_final-matnr.
ENDIF.
READ TABLE it_mchb_f1 INTO DATA(wa_mchb_stk) WITH KEY matnr = w_it_mchb-
matnr sgt_scat = w_it_mchb-sgt_scat.
wa_edidd_ref1-stock = wa_mchb_stk-clabs.
CLEAR: wa_mchb_stk.
wa_edidd_ref-segnam = c_seg_astk.
wa_edidd_ref-sdata = wa_edidd_ref1.
wa_edidd = wa_edidd_ref.
APPEND wa_edidd TO it_edidd.
CLEAR : wa_edidd,wa_cawn,wa_edidd_ref1.
ENDIF.
ENDON.
*************EOC added by hema*********************
wa_edidd-segnam = c_bat_stk."'ZBATCH_STK'.
wa_edidd-hlevel = '3'.
* wa_edidd-sdata+0(10) = wa_mchb_final-charg.
wa_zbatch_stk-charg = wa_mchb_final-charg. "Added By Mohit Tomar
* wa_edidd-sdata+10(15) = wa_mchb_final-clabs.
wa_zbatch_stk-clabs = wa_mchb_final-clabs. "Added By Mohit Tomar
READ TABLE it_mch1 INTO wa_mch1 WITH KEY matnr = wa_mchb_final-matnr charg =
wa_mchb_final-charg.
IF sy-subrc IS INITIAL AND wa_mch1-vfdat IS NOT INITIAL.
* wa_edidd-sdata+25(10) = wa_mch1-vfdat.
wa_zbatch_stk-vfdat = wa_mch1-vfdat. "Added By Mohit Tomar
ENDIF.
wa_edidd-sdata = wa_zbatch_stk. "Added By Mohit Tomar
APPEND wa_edidd TO it_edidd.
CLEAR : wa_edidd , wa_mchb_final, wa_zbatch_stk.
ENDIF.
CLEAR: lt_cawn,wa_edidd_ref. " line added by hema
* End of code changes by Anshul on 12.08.2016

*& LOOP it_sernos to get the serial numbers based on document and article
LOOP AT it_sernos1 INTO wa_sernos WHERE matnr EQ wa_final-matnr AND mblnr =
wa_final-mblnr
AND zeile =
wa_final-zeile. " Line added by anshul on 12.08.2016
READ TABLE it_serxx1 INTO wa_serxx WITH KEY mblnr = wa_sernos-mblnr
zeile = wa_sernos-zeile
werk = wa_final-werks.
IF sy-subrc EQ 0.
wa_edidd-segnam = c_seg_sernr. "'ZSERNR'.
wa_edidd-hlevel = '3'.
*& Function module to get legacy serial number maintained against article number
and SAP serial number
* CALL FUNCTION 'ZLEGCY_SRNO_OUTBOUND_UPDATE'
* EXPORTING
* matnr = wa_sernos-matnr
* sap_sernr = wa_sernos-sernr
* IMPORTING
* lgcy_sernr = v_legcy_sernr.

* wa_edidd-sdata+0(25) = wa_sernos-sernr.
wa_zsernr-sernr = wa_sernos-sernr. "Added By Mohit
Tomar
wa_edidd-sdata = wa_zsernr.
APPEND wa_edidd TO it_edidd.
CLEAR : wa_edidd, wa_zsernr.
ENDIF.
ENDLOOP.
ENDLOOP.
CLEAR:it_mchb_f,it_mchb_f1. " line added by hema
*********************SOC by hema for segment article **********************
*** DATA: it_edidd1 TYPE STANDARD TABLE OF edidd.
*** it_edidd1 = it_edidd.
*** DATA: wa_zartstock TYPE zart_stock.
*** LOOP AT it_edidd1 INTO DATA(wa_edidd1).
*** IF wa_edidd1-segnam = 'ZART_STOCK'.
*** wa_zartstock = wa_edidd1-sdata.
***
*** SELECT * FROM mchb INTO TABLE @DATA(waa_mchb) WHERE matnr = @wa_zartstock-
matnr AND
*** werks = @wa_zartstock-werks AND lgort = @wa_zartstock-location.
*** LOOP AT waa_mchb INTO DATA(waa_mchb1).
*** IF waa_mchb1-sgt_scat IS NOT INITIAL.
*** DATA(lv_index) = sy-tabix.
*** lv_index = lv_index + 1.
*** READ TABLE it_edidd1 INTO DATA(waa_edidd1) INDEX lv_index.
*** IF sy-subrc = 0.
*** CLEAR : lv_index.
*** ENDIF.
*** ENDIF.
*** ENDLOOP.
***
*** ENDIF.
***
***
*** ENDLOOP.
***

ENDFORM. " FILL_DATA_IDOC


*&---------------------------------------------------------------------*
*& Form CREATE_INVENTORY_IDOC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_inventory_idoc.

*& Function Module to create IDoc


CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
master_idoc_control = wa_edidc
TABLES
communication_idoc_control = it_edidc
master_idoc_data = it_edidd
EXCEPTIONS
error_in_idoc_control = 1
error_writing_idoc_status = 2
error_in_idoc_data = 3
sending_logical_system_unknown = 4
OTHERS = 5.
IF sy-subrc EQ 0.
*& Delete the indate and intime from global table and update the current time and
date.
DELETE FROM zivend_gbl_param WHERE field EQ c_indate
OR field EQ c_intime.

CLEAR wa_globl.
REFRESH it_globl.
wa_globl-field = c_indate.
wa_globl-value = sy-datum. "v_indate.
MODIFY zivend_gbl_param FROM wa_globl.
CLEAR wa_globl.
wa_globl-field = c_intime.
wa_globl-value = sy-uzeit.
MODIFY zivend_gbl_param FROM wa_globl.
CLEAR wa_globl.
*& Commit to database and unlock all
COMMIT WORK.
CALL FUNCTION 'DEQUEUE_ALL'.

*& Get The IDoc number to be displayed on output screen


READ TABLE it_edidc INTO wa_edidc INDEX 1.
IF sy-subrc = 0.
FORMAT COLOR 5 ON.
WRITE: TEXT-002.
FORMAT COLOR OFF.
WRITE: /30 wa_edidc-docnum HOTSPOT ON.
ELSE.
*& No IDoc generated
WRITE: TEXT-004.
ENDIF.
ENDIF.

* CLEAR wa_edidc.
REFRESH: it_edidd,it_edidc.
ENDFORM. " CREATE_INVENTORY_IDOC

AT LINE-SELECTION.

**********Submit we02 and display the IDOC********************


SUBMIT rseidoc2 WITH docnum EQ wa_edidc-docnum AND RETURN.

You might also like