0% found this document useful (0 votes)
83 views24 pages

ZINVETORY

This program is used to send updated inventory counts to Ivend. It retrieves inventory data from SAP tables like MKPF and MSEG based on the selected posting date and movement type. The retrieved data is then used to fill IDoc segments to create an inventory IDoc that is sent to Ivend to update the inventory.

Uploaded by

Hemalatha Reddy
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)
83 views24 pages

ZINVETORY

This program is used to send updated inventory counts to Ivend. It retrieves inventory data from SAP tables like MKPF and MSEG based on the selected posting date and movement type. The retrieved data is then used to fill IDoc segments to create an inventory IDoc that is sent to Ivend to update the inventory.

Uploaded by

Hemalatha Reddy
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/ 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

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy