Professional Documents
Culture Documents
TABLES: mkpf,mseg.
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,
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.
***&---------------------------------------------------------------------*
***& 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 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.
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.
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.
it_final[] = it_mseg[].
* 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.
*& 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.
***
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'.
* CLEAR wa_edidc.
REFRESH: it_edidd,it_edidc.
ENDFORM. " CREATE_INVENTORY_IDOC
AT LINE-SELECTION.