You are on page 1of 107

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

*& Include ZVNMM_GR_GI_STAND_WB_F01


*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form P_STATUS_9000
*&---------------------------------------------------------------------*
FORM p_status_9000 .
DATA: ls_style TYPE lvc_s_styl.

* Begin of change by lt N for IRIS Project


REFRESH: gt_fcode.
IF gt_item[] IS INITIAL.

APPEND 'CRE_DELIV' TO gt_fcode.


ELSE.
READ TABLE gt_item INTO gs_item WITH KEY delno = space.
IF sy-subrc NE 0.
APPEND 'CRE_DELIV' TO gt_fcode.
ENDIF.
ENDIF.

APPEND 'CHECK' TO gt_fcode. " Hide the check button always- Added on 10.08.2018
by IN_DILLIBABU
SET PF-STATUS '9000_STATUS' EXCLUDING gt_fcode.
* End of change by Ramani N for IRIS Project
* SET PF-STATUS '9000_STATUS'. " Cmt by Ramani N for IRIS Project
SET TITLEBAR '9000_TITLE'.

IF gt_fcat[] IS NOT INITIAL.


PERFORM alv_item_display.
IF gs_head-direction = gc_in AND gs_head-wtype <> 'STO'.
LOOP AT SCREEN.
CASE screen-group2.
WHEN 'GT' OR 'GR'.
screen-active = 1.
MODIFY SCREEN.
WHEN 'GI'.
screen-active = 0.
MODIFY SCREEN.
ENDCASE.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
CASE screen-group2.
WHEN 'GR'.
screen-active = 0.
MODIFY SCREEN.
WHEN 'GT' OR 'GI'.
screen-active = 1.
MODIFY SCREEN.
ENDCASE.
ENDLOOP.
ENDIF.

ELSE.
LOOP AT SCREEN.
CASE screen-group1.
WHEN 'G1'.
screen-active = 0.
MODIFY SCREEN.
ENDCASE.
ENDLOOP.
ENDIF.

*-- Start of commented on 12.09.2018 by IN_DILIIBABU TR : EPDK9A0BJO , 4000004766


*-- Details screen should not hide
**Begin of changes by R.Ranjtih For IRIS EPDK9A07HP
* LOOP AT SCREEN.
* IF screen-group1 = 'G1' OR
* screen-group2 = 'GI' .
* screen-invisible = 1.
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
**End of changes by R.Ranjtih For IRIS EPDK9A07HP
*-- End of commented on 12.09.2018 by IN_DILIIBABU TR : EPDK9A0BJO , 4000004766
ENDFORM.

*&---------------------------------------------------------------------*
*& Form POPULATE_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM populate_fcat USING pv_type TYPE char2
pv_uom TYPE meins.
DATA: lv_text TYPE lvc_txtcol.

IF gt_fcat[] IS INITIAL.
IF gv_cncl = abap_true.
PERFORM fill_fcat USING: 'MBLNR' 'GT_ITEM' 'Doc No' 12 '' '',
'MJAHR' 'GT_ITEM' 'Year' 4 '' ''.
ENDIF.

IF gs_head-direction = gc_in.
CASE gs_head-wtype.
WHEN 'STO' OR 'RETURN'.
PERFORM fill_fcat USING: 'DELNO' 'GT_ITEM' 'Delivery No' 12 '' 'X',
'POSNR' 'GT_ITEM' 'Delivery Item' 7 '' ''.
WHEN OTHERS.
IF pv_type = 'MM'." AND gs_head-ptyp IS INITIAL.
gs_fcat-f4availabl = abap_true.
PERFORM fill_fcat USING: 'EBELN' 'GT_ITEM' 'PO Number' 12 'X' '',
'EBELP' 'GT_ITEM' 'PO Item' 7 'X' ''.
ELSE.
PERFORM fill_fcat USING: 'EBELN' 'GT_ITEM' 'PO Number' 12 '' '',
'EBELP' 'GT_ITEM' 'PO Item' 7 '' ''.
ENDIF.

ENDCASE.

ELSEIF gs_head-direction = gc_out.


PERFORM fill_fcat USING: 'DELNO' 'GT_ITEM' 'Delivery No' 12 '' '',
'POSNR' 'GT_ITEM' 'Delivery Item' 7 '' ''.
ENDIF.
PERFORM fill_fcat USING: 'MATNR' 'GT_ITEM' 'Material' 15 '' 'X',
'MAKTX' 'GT_ITEM' 'Material Description' 33 '' ''.

IF gv_delivery IS INITIAL. "*-- Added on 04.05.2018 by


IN_DILLIBABU

IF gv_ebeln IS INITIAL.
* Start of Changes - IN_RAMESHNS - EPDK9A050F
* PERFORM fill_fcat USING: 'PAKDT' 'GT_ITEM' 'Packing' 15 ''
'X'.
CONCATENATE 'Packing in' pv_uom INTO lv_text SEPARATED BY space.
PERFORM fill_fcat USING: 'PAKDT' 'GT_ITEM' lv_text 15 '' 'X'.
CLEAR: lv_text.
* End of Changes - IN_RAMESHNS - EPDK9A050F
ENDIF.

IF gs_head-protype = '1' OR gs_head-protype = '3'.


CONCATENATE 'WB Qty in' pv_uom INTO lv_text SEPARATED BY space.
PERFORM fill_fcat USING: 'WBQTY' 'GT_ITEM' lv_text 15 '' ''.
ELSEIF gs_head-protype = '2' OR gs_head-protype = '4'.
CONCATENATE 'WS Qty in' pv_uom INTO lv_text SEPARATED BY space.
PERFORM fill_fcat USING: 'WBQTY' 'GT_ITEM' lv_text 15 '' ''.
ENDIF.

IF gs_head-protype = '1' OR gs_head-protype = '2' OR


gs_head-protype = space.
IF gv_ebeln IS NOT INITIAL. " *-- Added on 09.05.2018 by IN_DILLIBABU
PERFORM fill_fcat USING: 'GRQTY' 'GT_ITEM' 'GR Qty' 15 'X' '',
'UOM' 'GT_ITEM' 'GR UoM' 6 'X' ''.
ELSE.
PERFORM fill_fcat USING: 'GRQTY' 'GT_ITEM' 'GR Qty' 15 '' '',
'UOM' 'GT_ITEM' 'GR UoM' 6 '' ''.
ENDIF.
ELSEIF gs_head-protype = '3' OR gs_head-protype = '4'.
PERFORM fill_fcat USING: 'GRQTY' 'GT_ITEM' 'GI Qty' 15 '' '',
'UOM' 'GT_ITEM' 'GI UoM' 6 '' ''.
ENDIF.

IF gv_autob = abap_true OR gv_cncl = abap_true.


PERFORM fill_fcat USING: 'LGORT' 'GT_ITEM' 'S.Loc' 6 '' ''.
* Start of Changes - IN_RAMESHNS - EPDK9A050F
IF gs_head-direction = 'OUT' AND
( gs_head-wtype = 'STO' OR gs_head-wtype = 'SALES' ).
gs_fcat-f4availabl = abap_true.
ENDIF.
* End of Changes - IN_RAMESHNS - EPDK9A050F
PERFORM fill_fcat USING: 'CHARG' 'GT_ITEM' 'Batch' 10 '' ''.
ELSE.
gs_fcat-f4availabl = abap_true.
PERFORM fill_fcat USING: 'LGORT' 'GT_ITEM' 'S.Loc' 6 'X' ''.
* Start of Changes - IN_RAMESHNS - EPDK9A050F
IF gs_head-direction = 'OUT' AND
( gs_head-wtype = 'STO' OR gs_head-wtype = 'SALES' ).
gs_fcat-f4availabl = abap_true.
ENDIF.
* End of Changes - IN_RAMESHNS - EPDK9A050F
PERFORM fill_fcat USING: 'CHARG' 'GT_ITEM' 'Batch' 10 'X' ''.
ENDIF.
IF gs_head-wtype = 'PROCURE' AND gs_config-autopo IS NOT INITIAL AND
gs_head-ptyp IS NOT INITIAL.
gv_price = abap_true.
gv_fld = 'CUKY'.
* IF gs_head-ptyp = 'Z007' .
* * Begin of changes 4000004952 EPDK9A0CVD on 24/09/2018
**Commente based on GT suggestions to hide the price field in the screen.
* PERFORM fill_fcat USING: 'VALUE' 'GT_ITEM' 'Price Per Unit' 14 'X' ''.
* End of changes 4000004952 EPDK9A0CVD on 24/09/2018

* ELSE.
* PERFORM fill_fcat USING: 'VALUE' 'GT_ITEM' 'Price Per Unit' 14 '' ''.
* ENDIF.
CLEAR: gv_price.
PERFORM fill_fcat USING: 'CUKY' 'GT_ITEM' 'Currency' 8 '' '',
'UNIT' 'GT_ITEM' 'Per Unit' 8 '' ''.

*Begin of changes by R.Ranjtih For IRIS EPDK9A07HP


gs_fcat-f4availabl = abap_true.
PERFORM fill_fcat USING: 'EVERS' 'GT_ITEM' 'Procurement Model' 16 'X' ''.
*End of changes by R.Ranjtih For IRIS EPDK9A07HP
ENDIF.

ENDIF.

IF gv_cncl = space.
* IF gs_head-direction = gc_in.
IF gs_config-bchsplt = abap_true OR gv_delivery IS NOT INITIAL. " *-- Added
on 04.05.2018 by IN_DILLIBABU
* IF gs_config-bchsplt = abap_true or gv_delivery IS NOT INITIAL. "
gv_tooltip = 'Batch Split'.
PERFORM fill_fcat USING: 'BATSP' 'GT_ITEM' ' ' 3 '' 'X'.
CLEAR gv_tooltip.
*-Change Quantity Fieldcatlog based on UoM
READ TABLE gt_fcat ASSIGNING FIELD-SYMBOL(<fs_fcat>)
WITH KEY fieldname = 'GRQTY'.
IF sy-subrc = 0.
<fs_fcat>-ref_field = 'MENGE'.
<fs_fcat>-ref_table = 'STPO'.
ENDIF.
ENDIF.

IF gv_delivery IS INITIAL. "*-- Added on 04.05.2018


by IN_DILLIBABU
gv_tooltip = 'Batch Characteristics'.
PERFORM fill_fcat USING: 'BATDT' 'GT_ITEM' ' ' 3 '' 'X'.
CLEAR gv_tooltip.
* ENDIF.
IF gs_head-protype = '1' OR gs_head-protype = '2' OR
gs_head-protype = space.
gv_tooltip = 'Information'.
PERFORM fill_fcat USING: 'ITMDT' 'GT_ITEM' ' ' 3 '' 'X'.
CLEAR gv_tooltip.
ENDIF.
ENDIF.

ENDIF.
READ TABLE gt_fcat ASSIGNING <fs_fcat>
WITH KEY fieldname = 'MATNR'.
IF sy-subrc = 0.
<fs_fcat>-no_zero = abap_true.
ENDIF.

IF go_cont_itm IS BOUND.
go_alv_itm->free( ).
go_cont_itm->free( ).
CLEAR: go_cont_itm, go_alv_itm, g_event.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FILL_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fill_fcat USING p_fieldname TYPE lvc_fname
p_tabname TYPE lvc_tname
p_seltext TYPE lvc_txtcol
p_outlen TYPE lvc_outlen
p_edit TYPE lvc_edit
p_hotspot TYPE lvc_hotspt.

gs_fcat-fieldname = p_fieldname.
gs_fcat-tabname = p_tabname.
gs_fcat-coltext = p_seltext.
gs_fcat-outputlen = p_outlen.
gs_fcat-edit = p_edit.
gs_fcat-hotspot = p_hotspot.
IF gv_tooltip IS NOT INITIAL.
gs_fcat-tooltip = gv_tooltip.
gs_fcat-icon = abap_true.
ENDIF.
IF gv_price IS NOT INITIAL.
gs_fcat-cfieldname = gv_fld.
* gs_fcat-ctabname = p_tabname.
ENDIF.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form ALV_ITEM_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM alv_item_display .
DATA: ls_layout TYPE lvc_s_layo,
lt_f4 TYPE lvc_t_f4.

*Begin of changes by R.Ranjtih For IRIS EPDK9A056F


DATA: lv_index TYPE i,
lv_index1 TYPE i.

*Begin of changes by R.Ranjtih For IRIS EPDK9A07HP


DATA : lt_mara TYPE TABLE OF ty_mara,
ls_mara TYPE ty_mara.
FIELD-SYMBOLS : <lfs_item> TYPE ty_item.
*End of changes by R.Ranjtih For IRIS EPDK9A07HP

IF gs_head-direction = 'OUT'.
DESCRIBE TABLE gt_item_tmp LINES lv_index.

DESCRIBE TABLE gt_item LINES lv_index1.

IF lv_index LE lv_index1 .
gt_item_tmp[] = gt_item.
ENDIF.
* Delete the packaging material from the Dipslay
* DELETE gt_item WHERE ebelp = '00002'. " Commented on 20.08.2018 by
IN_DILLIBABU - To handle multi line

*Begin of changes by R.Ranjtih For IRIS EPDK9A07HP


CLEAR lv_index1.
DESCRIBE TABLE gt_item LINES lv_index1.
* Delete the packgeing material because we dont need to display in
* The screen.
IF lv_index1 = 2.
SELECT matnr
matkl
gewei
meins
mtart
FROM mara
INTO TABLE lt_mara
FOR ALL ENTRIES IN gt_item
WHERE matnr = gt_item-matnr.

IF sy-subrc EQ 0.
SORT lt_mara BY matnr.
ENDIF.

LOOP AT gt_item ASSIGNING <lfs_item>.


CLEAR ls_mara.
READ TABLE lt_mara INTO ls_mara WITH KEY
matnr = <lfs_item>-matnr
BINARY SEARCH.
IF sy-subrc EQ 0 AND
ls_mara-mtart EQ 'VERP'.
CLEAR <lfs_item>-matnr.
ENDIF.
ENDLOOP.
DELETE gt_item WHERE matnr IS INITIAL.
ENDIF.
* End of changes by R.Ranjtih For IRIS EPDK9A07HP
ENDIF.
*End of changes by R.Ranjtih For IRIS EPDK9A056F

IF go_cont_itm IS INITIAL.
*-ALV initialization
CREATE OBJECT go_cont_itm
EXPORTING
container_name = 'ITEM_CONT'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.

IF sy-subrc = 0.
CREATE OBJECT go_alv_itm
EXPORTING
i_parent = go_cont_itm
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5.
IF sy-subrc = 0.
PERFORM assign_f4 USING 'LGORT' CHANGING lt_f4. "F4 for Storage Location
PERFORM assign_f4 USING 'EBELN' CHANGING lt_f4. "F4 for Storage Location
*Begin of changes by R.Ranjtih For IRIS EPDK9A07HP
PERFORM assign_f4 USING 'EVERS' CHANGING lt_f4.
*End of changes by R.Ranjtih For IRIS EPDK9A07HP
* Start of Changes - IN_RAMESHNS - EPDK9A050F
IF gs_head-direction = 'OUT' AND
( gs_head-wtype = 'STO' OR gs_head-wtype = 'SALES' ).
PERFORM assign_f4 USING 'CHARG' CHANGING lt_f4. "F4 for Batch
ENDIF.
* End of Changes - IN_RAMESHNS - EPDK9A050F
IF g_event IS INITIAL.
CREATE OBJECT g_event.
SET HANDLER g_event->hotspot_click FOR go_alv_itm.
SET HANDLER g_event->button_click FOR go_alv_itm.
SET HANDLER g_event->handle_f4 FOR go_alv_itm.
SET HANDLER g_event->data_changed FOR go_alv_itm.
ENDIF.

ls_layout-no_rowmark = 'X'.
ls_layout-stylefname = 'STYLE'.
ls_layout-no_toolbar = abap_true.
ls_layout-info_fname = 'COLOR'.
* ls_layout-box_fname = 'X'." = 'COLOR'.

CALL METHOD go_alv_itm->register_edit_event


EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.

* CALL METHOD go_alv_itm->register_edit_event


* EXPORTING
* i_event_id = cl_gui_alv_grid=>mc_evt_enter.

go_alv_itm_tmp = go_alv_itm.
CALL METHOD go_alv_itm->set_table_for_first_display
EXPORTING
is_layout = ls_layout
CHANGING
it_fieldcatalog = gt_fcat
it_outtab = gt_item.

ENDIF.
ENDIF.
ELSE.
*-Refresh table display
CALL METHOD go_alv_itm->refresh_table_display.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form POPULATE_PLANT_DESC
*&---------------------------------------------------------------------*
FORM populate_plant_desc .
SELECT SINGLE name1 FROM t001w
INTO gs_head-pname
WHERE werks = gs_head-werks.
IF sy-subrc <> 0.
MESSAGE 'Enter a Valid Plant' TYPE 'E'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SET_CURSOR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM set_cursor .
IF gs_head-werks IS INITIAL.
SET CURSOR FIELD 'GS_HEAD-WERKS'.
ELSEIF gs_head-wbid IS INITIAL.
SET CURSOR FIELD 'GS_HEAD-WBID'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F4_WBID
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f4_wbid .
DATA: lv_rfield TYPE dfies-fieldname,
lv_dfield TYPE help_info-dynprofld,
lt_ret TYPE STANDARD TABLE OF ddshretval.

SELECT a~wbid,
a~item,
a~werks,
a~matnr,
b~direction,
b~wtype FROM zgtmmtr_wbitem AS a
INNER JOIN zgtmmtr_wbhead AS b ON a~wbid = b~wbid
INTO TABLE @DATA(lt_wbhead)
WHERE b~werks = @gs_head-werks AND
b~voref = @abap_true AND
b~del = @space AND
a~mblnr = @space.

lv_rfield = 'WBID'.
lv_dfield = 'GS_HEAD-WBID'.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'


EXPORTING
retfield = lv_rfield
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = lv_dfield
value_org = 'S'
TABLES
value_tab = lt_wbhead
return_tab = lt_ret
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form HIDE_SCREEN_9000
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM hide_screen_9000.

IF gs_head-wbid IS NOT INITIAL.


LOOP AT SCREEN.
IF screen-name = 'GS_HEAD-WERKS'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

*-Cancel Screen
IF gv_cncl = abap_true.
LOOP AT SCREEN.
IF screen-group1 = 'CN'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-group1 = 'CN'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

*-Create with reference PO


IF gv_ebeln IS NOT INITIAL.
LOOP AT SCREEN.
IF screen-name = 'GS_HEAD-WBID' OR screen-name = 'GS_HEAD-WERKS'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-name = 'GS_HEAD-WBID' OR screen-name = 'GS_HEAD-WERKS'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

LOOP AT SCREEN.
IF screen-group1 = 'PT'.
IF gs_head-wtype = 'PROCURE' AND gs_head-ptyp IS INITIAL.
READ TABLE gt_config TRANSPORTING NO FIELDS WITH KEY autopo = abap_true.
IF sy-subrc IS INITIAL.
READ TABLE gt_item TRANSPORTING NO FIELDS WITH KEY ebeln = space.
IF sy-subrc IS INITIAL.
screen-input = 1.
ELSE.
screen-input = 0.
ENDIF.
ELSE.
screen-input = 0.
ENDIF.
ELSE.
screen-input = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form POPULATE_SCREEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM populate_screen CHANGING lv_wbuom TYPE meins
lv_type TYPE char2.
DATA: ls_matnr TYPE ty_matnr,
ls_ebeln TYPE ty_ebeln,
ls_vbeln TYPE ty_vbeln,
lv_uom TYPE meins,
lv_cnt TYPE zdt_wbitem,
lv_difqty TYPE menge_d,
lv_tlqty TYPE menge_d,
ls_style TYPE lvc_s_styl,
lv_nobag TYPE p DECIMALS 6,
lt_vbeln TYPE TABLE OF ty_vbeln,
lt_ebeln TYPE TABLE OF ty_ebeln,
lt_matnr TYPE TABLE OF ty_matnr,
lt_wbitem_tmp TYPE TABLE OF zgtmmtr_wbitem.
DATA: lv_menge TYPE menge_d.
*-To get the item details of WB item.
SELECT * FROM zgtmmtr_wbitem
INTO TABLE @DATA(lt_wbitem)
WHERE wbid = @gs_head-wbid.
* AND werks = @gs_head-werks.
* Begin of change by Ramani N for IRIS Project
REFRESH lt_wbitem_tmp.
lt_wbitem_tmp[] = lt_wbitem[].

DELETE lt_wbitem_tmp WHERE parnr IS INITIAL.

IF lt_wbitem_tmp IS NOT INITIAL.


REFRESH gt_lfa1.
SELECT lifnr
name1
FROM lfa1
INTO TABLE gt_lfa1
FOR ALL ENTRIES IN lt_wbitem_tmp
WHERE lifnr = lt_wbitem_tmp-parnr.
IF sy-subrc EQ 0.
SORT gt_lfa1 BY lifnr.
ENDIF.
ENDIF.

IF gs_head-wtype = 'STO' AND gs_head-direction = 'OUT'.


ELSE.
* End of change by Ramani N for IRIS Project
IF sy-subrc = 0.
IF gv_cncl IS INITIAL.
DELETE lt_wbitem WHERE mblnr IS NOT INITIAL.
ELSE.
DELETE lt_wbitem WHERE mblnr IS INITIAL.
ENDIF.

ELSE.
* MESSAGE 'Enter Valid Weighbridge ID' TYPE 'E'. "IRIS
ENDIF.
* Begin of change by Ramani N for IRIS Project
ENDIF.
* End of change by Ramani N for IRIS Project
*Begin of changes by R.Ranjtih For IRIS EPDK9A056F
IF lt_wbitem IS NOT INITIAL.
* select * from zgtmmtr_wbpack
* into table @data(lt_pack)
* FOR ALL ENTRIES IN lt_wbitem
* where werks = @it_wbitem-werks
* and matnr = @it_wbitem-matnr
* and bagowner = @it-wbitem-bagowner.
*REFRESH gt_pack.
* select * from zgtmmtr_wbpack
* into table gt_pack
* FOR ALL ENTRIES IN lt_wbitem
* where werks = it_wbitem-werks
* and matnr = it_wbitem-matnr
* and bagowner = it-wbitem-bagowner.

IF sy-subrc EQ 0.
* SORT gt_pack BY werks matnr bagowner.
ENDIF.

*IF gt_pack IS NOT INITIAL.


REFRESH gt_pack_mara.
* SELECT matnr
* meins
* FROM mara
* INTO TABLE gt_pack_mara
* FOR ALL ENTRIES IN gt_pack
* WHERE matnr = gt_pack-jutebag.

IF sy-subrc EQ 0.
SORT gt_pack_mara BY matnr.
ENDIF.
*ENDIF.
ENDIF.
* End of changes by R.Ranjith for IRIS EPDK9A056F
IF lt_wbitem[] IS NOT INITIAL.
LOOP AT lt_wbitem INTO DATA(ls_wbitem).
*-Populate Material to TEMP internal table
ls_matnr-matnr = ls_wbitem-matnr.
APPEND ls_matnr TO lt_matnr.
CLEAR ls_matnr.

*-Populate PO details
IF ls_wbitem-ebeln IS NOT INITIAL.
ls_ebeln-ebeln = ls_wbitem-ebeln.
ls_ebeln-ebelp = ls_wbitem-ebelp.
APPEND ls_ebeln TO lt_ebeln.
CLEAR ls_ebeln.
ENDIF.

*-Populate Delivery Details


IF ls_wbitem-vbeln IS NOT INITIAL.
ls_vbeln-vbeln = ls_wbitem-vbeln.
ls_vbeln-posnr = ls_wbitem-posnr.
APPEND ls_vbeln TO lt_vbeln.
CLEAR ls_vbeln.
ENDIF.
ENDLOOP.

SORT: lt_matnr BY matnr.


DELETE ADJACENT DUPLICATES FROM lt_matnr COMPARING matnr.
DELETE lt_matnr WHERE matnr IS INITIAL.
ELSE.
IF gv_cncl IS INITIAL.
MESSAGE 'Enter Open Weighbridge ID' TYPE 'E'.
ELSE.
MESSAGE 'Enter GRN posted WB ID' TYPE 'E'.
ENDIF.
ENDIF.

*-Populate Material Description


IF lt_matnr[] IS NOT INITIAL.
SELECT matnr, maktx FROM makt
INTO TABLE @DATA(lt_makt)
FOR ALL ENTRIES IN @lt_matnr
WHERE matnr = @lt_matnr-matnr
AND spras = @sy-langu.

***********************added by mohan*********************

*-Populate Material UOM


* SELECT matnr, gewei FROM mara
* INTO TABLE @DATA(lt_mara)
* FOR ALL ENTRIES IN @lt_matnr
* WHERE matnr = @lt_matnr-matnr.
*
* IF gs_head-direction = gc_in AND gs_head-wtype = gc_po.

*Begin of comment by Ramani N for IRIS Project


* SELECT matnr matkl gewei meins FROM mara INTO TABLE gt_mara
* FOR ALL ENTRIES IN lt_matnr
* WHERE matnr = lt_matnr-matnr.
*End of comment by Ramani N for IRIS Project
*Begin of change by Ramani N for IRIS Project
SELECT matnr matkl gewei meins mtart FROM mara INTO TABLE gt_mara
FOR ALL ENTRIES IN lt_matnr
WHERE matnr = lt_matnr-matnr.
*End of change by Ramani N for IRIS Project
IF sy-subrc IS INITIAL.
SELECT * FROM zgtmmtr_wbconfig INTO TABLE gt_config
FOR ALL ENTRIES IN gt_mara
WHERE werks = gs_head-werks AND
matkl = gt_mara-matkl.
ENDIF.
* ENDIF.
***********************EOA by mohan*********************
ENDIF.

*-Populate PO unit
IF lt_ebeln[] IS NOT INITIAL.
SELECT ebeln, ebelp, meins FROM ekpo
INTO TABLE @DATA(lt_ekpo)
FOR ALL ENTRIES IN @lt_ebeln
WHERE ebeln = @lt_ebeln-ebeln
AND ebelp = @lt_ebeln-ebelp.
ENDIF.

*-Populate Delivery unit


IF lt_vbeln[] IS NOT INITIAL.
* SELECT vbeln, posnr, lgort, charg, lfimg, meins, vgbel, vgpos
SELECT vbeln, posnr, lgort, charg, lfimg, vrkme, vgbel, vgpos, uecha
FROM lips INTO TABLE @DATA(lt_lips)
FOR ALL ENTRIES IN @lt_vbeln
WHERE vbeln = @lt_vbeln-vbeln.

SORT lt_lips BY vbeln posnr.

SELECT vbeln, ntgew, gewei FROM likp


INTO TABLE @DATA(lt_likp)
FOR ALL ENTRIES IN @lt_vbeln
WHERE vbeln = @lt_vbeln-vbeln.
ENDIF.

*-Populate Bag details.


SELECT * FROM zgtmmtr_wbbags
INTO TABLE @DATA(lt_wbbag)
WHERE werks = @gs_head-werks.

*-Populate WB Header details


SELECT SINGLE * FROM zgtmmtr_wbhead
INTO @DATA(ls_wbhead)
WHERE wbid = @gs_head-wbid.
IF sy-subrc = 0.
IF ls_wbhead-direction = gc_in.
gs_head-protype = '1'. "process Type
ELSEIF ls_wbhead-direction = gc_out.
gs_head-protype = '3'. "process Type
ENDIF.
gs_head-budat = sy-datum. "Posting Date
gs_head-bldat = sy-datum. "Document Date
gs_head-wtype = ls_wbhead-wtype. "Weighbridge Ttpe
gs_head-direction = ls_wbhead-direction. "Direction

IF ls_wbhead-direction = gc_in.

CLEAR lv_type.
LOOP AT lt_wbitem INTO ls_wbitem.
gs_item-item = ls_wbitem-item.
gs_item-mblnr = ls_wbitem-mblnr.
gs_item-mjahr = ls_wbitem-mjahr.
gs_item-ebeln = ls_wbitem-ebeln.
gs_item-ebelp = ls_wbitem-ebelp.
gs_item-delno = ls_wbitem-vbeln.
gs_item-posnr = ls_wbitem-posnr.
gs_item-matnr = ls_wbitem-matnr.
gs_item-pakdt = ls_wbitem-pkwgt.
IF ls_wbitem-pkwgt IS INITIAL.
gs_item-pckmt = abap_true.
ENDIF.

* CONCATENATE '@EJQ' 'Batch Characteristics' '@' INTO gs_item-batdt.


* CONCATENATE '@0SQ' 'Information' '@' INTO gs_item-itmdt.
* CONCATENATE '@IAQ' 'Batch Split' '@' INTO gs_item-batsp.
gs_item-batdt = icon_batch. "Batch Icon
gs_item-itmdt = icon_information. "Information Icon
gs_item-batsp = icon_distribute. "Batch Splitup Icon
gs_item-ptyp1 = ls_wbitem-pmat1.
gs_item-ptyp2 = ls_wbitem-pmat2.
gs_item-ptyp3 = ls_wbitem-pmat3.
gs_item-palno1 = ls_wbitem-pmatno1.
gs_item-palno2 = ls_wbitem-pmatno2.
gs_item-palno3 = ls_wbitem-pmatno3.
gs_item-gwt1 = ls_wbitem-pmatqty1.
gs_item-gwt2 = ls_wbitem-pmatqty2.
gs_item-gwt3 = ls_wbitem-pmatqty3.
* Begin of changes by Ranjith for IRIS EPDK9A056E
gs_item-bagowner = ls_wbitem-bagowner.
gs_item-pmatno1 = ls_wbitem-pmatno1.
* IF gs_item-pakdt IS INITIAL.
* IF GS_ITEM-PALNO1 IS NOT INITIAL.
* gs_item-pakdt = gs_item-palno1 + gs_item-palno2 + gs_item-palno3.
* ENDIF.
* ENDIF.
IF gs_item-item = '1' AND ls_wbitem-parnr IS NOT INITIAL.
gs_item-lifnr = ls_wbitem-parnr.
CLEAR gs_lfa1.
READ TABLE gt_lfa1 INTO gs_lfa1 WITH KEY
lifnr = gs_item-lifnr
BINARY SEARCH.

IF sy-subrc EQ 0.
gs_item-name1 = gs_lfa1-name1.
ENDIF.
ENDIF.
* End of changes By Ranjith for IRIS EPDK9A056E

IF ls_wbhead-direction = gc_in AND ls_wbhead-wtype <> 'STO' AND


gs_item-ebeln IS INITIAL.
lv_type = 'MM'.
ENDIF.

READ TABLE lt_wbbag INTO DATA(ls_wbbag)


WITH KEY bagtyp = ls_wbitem-pmat1.
IF sy-subrc = 0.
gs_item-trwgt1 = ls_wbbag-trwgt.
gs_item-uom1 = ls_wbbag-uom.
ENDIF.

CLEAR ls_wbbag.
READ TABLE lt_wbbag INTO ls_wbbag
WITH KEY bagtyp = ls_wbitem-pmat2.
IF sy-subrc = 0.
gs_item-trwgt2 = ls_wbbag-trwgt.
gs_item-uom2 = ls_wbbag-uom.
ENDIF.

CLEAR ls_wbbag.
READ TABLE lt_wbbag INTO ls_wbbag
WITH KEY bagtyp = ls_wbitem-pmat3.
IF sy-subrc = 0.
gs_item-trwgt3 = ls_wbbag-trwgt.
gs_item-uom3 = ls_wbbag-uom.
ENDIF.

gs_item-wbqty = ls_wbitem-ntgew.
gs_item-wbuom = ls_wbitem-uom.
gs_item-grqty = ls_wbitem-ntgew.

CLEAR gv_autob.
IF ls_wbitem-vbeln IS NOT INITIAL AND
ls_wbitem-posnr IS NOT INITIAL.
READ TABLE lt_lips INTO DATA(ls_lips)
WITH KEY vbeln = ls_wbitem-vbeln
posnr = ls_wbitem-posnr.
IF sy-subrc = 0.
* gs_item-uom = ls_lips-meins.
* lv_uom = ls_lips-meins.
gs_item-uom = ls_lips-vrkme.
lv_uom = ls_lips-vrkme.

gs_item-ebeln = ls_lips-vgbel.
gs_item-ebelp = ls_lips-vgpos.
*Begin of changes By R.Ranjith for IRIS
* gs_item-grqty = ls_lips-lfimg.
*End of changes by R.Ranjith for IRIS
* gs_item-charg = ls_lips-charg.
* IF ls_lips-charg IS NOT INITIAL.
* gv_autob = abap_true.
* ENDIF.
ENDIF.
ELSEIF ls_wbitem-ebeln IS NOT INITIAL AND
ls_wbitem-ebelp IS NOT INITIAL.
READ TABLE lt_ekpo INTO DATA(ls_ekpo)
WITH KEY ebeln = ls_wbitem-ebeln
ebelp = ls_wbitem-ebelp.
IF sy-subrc IS INITIAL.
lv_uom = gs_item-uom = ls_ekpo-meins.
ENDIF.
ENDIF.

* IF ls_wbitem-uom IS INITIAL. "Temp Code for testing


* ls_wbitem-uom = 'KG'.
* gs_item-wbuom = 'KG'.
* ENDIF.

IF lv_uom IS INITIAL.
SELECT SINGLE meins FROM mara INTO lv_uom WHERE matnr = ls_wbitem-matnr.
gs_item-uom = lv_uom.
ENDIF.

IF ls_wbitem-uom <> lv_uom AND ls_wbitem-uom IS NOT INITIAL.


PERFORM p_conv_mat_unit USING ls_wbitem-matnr
ls_wbitem-uom
lv_uom
CHANGING gs_item-grqty.
ENDIF.

IF gs_head-wtype = gc_sto AND ls_lips-lfimg GT gs_item-grqty.


gs_item-trlos = ls_lips-lfimg - gs_item-grqty.
ENDIF.

READ TABLE lt_makt INTO DATA(ls_makt)


WITH KEY matnr = ls_wbitem-matnr.
IF sy-subrc = 0.
gs_item-maktx = ls_makt-maktx.
ENDIF.

* READ TABLE lt_ekpo INTO ls_ekpo


* WITH KEY ebeln = ls_wbitem-ebeln
* ebelp = ls_wbitem-ebelp.
* IF sy-subrc = 0.
* gs_item-uom = ls_ekpo-meins.
* lv_uom = ls_ekpo-meins.
* ENDIF.

PERFORM get_batch_id USING ls_wbitem-item CHANGING gs_item.

lv_wbuom = gs_item-wbuom.

*-Data Population for Batch Split Quantity Validation


IF gs_config-bchsplt = abap_true.
READ TABLE gt_grqty ASSIGNING FIELD-SYMBOL(<fs_grqty>)
WITH KEY item = ls_wbitem-item
ebeln = gs_item-ebeln
ebelp = gs_item-ebelp.
IF sy-subrc = 0.
<fs_grqty>-menge = gs_item-grqty + <fs_grqty>-menge.
ELSE.
gs_grqty-item = ls_wbitem-item.
gs_grqty-ebeln = gs_item-ebeln.
gs_grqty-ebelp = gs_item-ebelp.
gs_grqty-matnr = gs_item-matnr.
gs_grqty-menge = gs_item-grqty.
* Begin of changes by Ranjith for IRIS EPDK9A056E
IF gs_item-pmatno1 IS NOT INITIAL AND
gs_item-bagowner IS NOT INITIAL.
gs_grqty-pmatno1 = gs_item-pmatno1.
gs_grqty-bagowner = gs_item-bagowner.
ENDIF.
* End of changes By Ranjith for IRIS EPDK9A056E
APPEND gs_grqty TO gt_grqty.
CLEAR gs_grqty.
ENDIF.
ENDIF.
**************************added by mohan**********************
IF gs_head-wtype = gc_sto OR gs_head-wtype = gc_ret.
gs_item-kunnr = ls_wbitem-parnr.
ELSE.
gs_item-lifnr = ls_wbitem-parnr.
ENDIF.
IF gs_head-direction = gc_in AND gs_head-wtype = gc_po AND
gs_item-ebeln IS INITIAL.
TRY.
gs_item-matkl = gt_mara[ matnr = gs_item-matnr ]-matkl.
CATCH cx_sy_itab_line_not_found.
ENDTRY.

TRY.
DATA(ls_config) = gt_config[ werks = gs_head-werks
matnr = space
matkl = gs_item-matkl ].
gs_item-ekgrp = ls_config-ekgrp.
gs_item-ekorg = ls_config-ekorg.
CLEAR ls_config.
CATCH cx_sy_itab_line_not_found.
ENDTRY.
IF ls_config-autopo IS NOT INITIAL.
IF gs_item-ekorg IS INITIAL.
CONCATENATE 'Purchase org not maintained in ZWB601 for plant:'
gs_head-werks 'material group:' gs_item-matkl
INTO DATA(lv_msg) SEPARATED BY space.
MESSAGE lv_msg TYPE 'E'.
ENDIF.
IF gs_item-ekgrp IS INITIAL.
CONCATENATE 'Purchase group not maintained in ZWB601 for plant:'
gs_head-werks 'material group:' gs_item-matkl
INTO lv_msg SEPARATED BY space.
MESSAGE lv_msg TYPE 'E'.
ENDIF.
CLEAR lv_msg.
ENDIF.
ENDIF.

IF gs_item-ebeln IS NOT INITIAL.


ls_style-fieldname = 'EBELN'.
ls_style-style = cl_gui_alv_grid=>mc_style_disabled.
APPEND ls_style TO gs_item-style.
CLEAR ls_style.

ls_style-fieldname = 'EBELP'.
ls_style-style = cl_gui_alv_grid=>mc_style_disabled.
APPEND ls_style TO gs_item-style.
CLEAR ls_style.

ls_style-fieldname = 'VALUE'.
ls_style-style = cl_gui_alv_grid=>mc_style_disabled.
APPEND ls_style TO gs_item-style.
CLEAR ls_style.
ENDIF.

**************************EOA by mohan**********************

APPEND gs_item TO gt_item.


CLEAR: gs_item, lv_uom.
ENDLOOP.
ELSE.

CLEAR lv_type.
LOOP AT lt_wbitem INTO ls_wbitem.
gs_item-item = ls_wbitem-item.
gs_item-mblnr = ls_wbitem-mblnr.
gs_item-mjahr = ls_wbitem-mjahr.
gs_item-pakdt = ls_wbitem-pkwgt.
gs_item-ptyp1 = ls_wbitem-pmat1.
gs_item-ptyp2 = ls_wbitem-pmat2.
gs_item-ptyp3 = ls_wbitem-pmat3.
gs_item-palno1 = ls_wbitem-pmatno1.
gs_item-palno2 = ls_wbitem-pmatno2.
gs_item-palno3 = ls_wbitem-pmatno3.
gs_item-gwt1 = ls_wbitem-pmatqty1.
gs_item-gwt2 = ls_wbitem-pmatqty2.
gs_item-gwt3 = ls_wbitem-pmatqty3.
gs_item-wbqty = ls_wbitem-ntgew.
gs_item-wbuom = ls_wbitem-uom.

* Begin of changes by Ranjith for IRIS EPDK9A056E


gs_item-bagowner = ls_wbitem-bagowner.
gs_item-delno = ls_wbitem-vbeln.
gs_item-posnr = ls_wbitem-posnr.
* IF gs_item-pakdt IS INITIAL.
* IF GS_ITEM-PALNO1 IS NOT INITIAL.
* gs_item-pakdt = gs_item-palno1 + gs_item-palno2 + gs_item-palno3.
* ENDIF.
* ENDIF.

IF gs_item-item = '1' AND ls_wbitem-parnr IS NOT INITIAL


AND gs_item-lifnr IS INITIAL.
gs_item-lifnr = ls_wbitem-parnr.
CLEAR gs_lfa1.
READ TABLE gt_lfa1 INTO gs_lfa1 WITH KEY
lifnr = gs_lfa1-lifnr
BINARY SEARCH.

IF sy-subrc EQ 0.
gs_item-name1 = gs_item-name1.
ENDIF.
ENDIF.
* End of changes By Ranjith for IRIS EPDK9A056E

IF gs_head-wtype = gc_ret.
gs_item-lifnr = ls_wbitem-parnr.
ELSE.
gs_item-kunnr = ls_wbitem-parnr.
ENDIF.

CLEAR ls_wbbag.
READ TABLE lt_wbbag INTO ls_wbbag
WITH KEY bagtyp = ls_wbitem-pmat1.
IF sy-subrc = 0.
gs_item-trwgt1 = ls_wbbag-trwgt.
gs_item-uom1 = ls_wbbag-uom.
ENDIF.

CLEAR ls_wbbag.
READ TABLE lt_wbbag INTO ls_wbbag
WITH KEY bagtyp = ls_wbitem-pmat2.
IF sy-subrc = 0.
gs_item-trwgt2 = ls_wbbag-trwgt.
gs_item-uom2 = ls_wbbag-uom.
ENDIF.

CLEAR ls_wbbag.
READ TABLE lt_wbbag INTO ls_wbbag
WITH KEY bagtyp = ls_wbitem-pmat3.
IF sy-subrc = 0.
gs_item-trwgt3 = ls_wbbag-trwgt.
gs_item-uom3 = ls_wbbag-uom.
ENDIF.

IF gs_head-wtype = 'STO' AND gs_head-direction = 'OUT' AND ls_wbitem-vbeln


IS INITIAL.

gs_item-item = ls_wbitem-item.
gs_item-delno = ls_wbitem-vbeln.
gs_item-posnr = ls_lips-posnr.
gs_item-matnr = ls_wbitem-matnr.
* CONCATENATE '@EJQ' 'Batch Characteristics' '@' INTO gs_item-batdt.
* CONCATENATE '@0SQ' 'Information' '@' INTO gs_item-itmdt.
* CONCATENATE '@IAQ' 'Batch Split' '@' INTO gs_item-batsp.
gs_item-batdt = icon_batch. "Batch Icon
gs_item-itmdt = icon_information. "Information Icon
IF ls_lips-uecha IS INITIAL.
gs_item-batsp = icon_distribute. "Batch Splitup Icon
ENDIF.
gs_item-ebeln = ls_lips-vgbel.
gs_item-ebelp = ls_lips-vgpos.
gs_item-charg = ls_lips-charg.
gs_item-lgort = ls_lips-lgort.
*Begin of changes By R.Ranjith for IRIS

gs_item-grqty = ls_lips-lfimg.
gs_item-uom = ls_lips-vrkme.
*End of changes by R.Ranjith for IRIS
IF ls_wbitem-pkwgt IS INITIAL AND gs_item-posnr(1) <> 9.
gs_item-pckmt = abap_true.
ENDIF.

IF ls_lips-charg IS NOT INITIAL.


gv_autob = abap_true.
ENDIF.

IF ls_wbitem-uom IS INITIAL. "Temp Code for testing


ls_wbitem-uom = 'KG'.
gs_item-wbuom = 'KG'.
ENDIF.

CLEAR ls_makt.
READ TABLE lt_makt INTO ls_makt
WITH KEY matnr = ls_wbitem-matnr.
IF sy-subrc = 0.
gs_item-maktx = ls_makt-maktx.
ENDIF.
lv_wbuom = gs_item-wbuom.

APPEND gs_item TO gt_item.


CLEAR gs_item.

ELSE.
LOOP AT lt_lips INTO ls_lips
WHERE vbeln = ls_wbitem-vbeln AND
* AND VGPOS = ls_wbitem-posnr. " Added on
03.05.2018 by IN_DILLIBABU
( posnr = ls_wbitem-posnr OR "addd by mohan
uecha = ls_wbitem-posnr ).
gs_item-item = ls_wbitem-item.
gs_item-delno = ls_wbitem-vbeln.
gs_item-posnr = ls_lips-posnr.
gs_item-matnr = ls_wbitem-matnr.
* CONCATENATE '@EJQ' 'Batch Characteristics' '@' INTO gs_item-batdt.
* CONCATENATE '@0SQ' 'Information' '@' INTO gs_item-itmdt.
* CONCATENATE '@IAQ' 'Batch Split' '@' INTO gs_item-batsp.
gs_item-batdt = icon_batch. "Batch Icon
gs_item-itmdt = icon_information. "Information Icon
IF ls_lips-uecha IS INITIAL.
gs_item-batsp = icon_distribute. "Batch Splitup Icon
ENDIF.
gs_item-ebeln = ls_lips-vgbel.
gs_item-ebelp = ls_lips-vgpos.
gs_item-charg = ls_lips-charg.
gs_item-lgort = ls_lips-lgort.
*Begin of changes By R.Ranjith for IRIS
gs_item-grqty = ls_lips-lfimg.
gs_item-uom = ls_lips-vrkme.
*End of changes by R.Ranjith for IRIS
IF ls_wbitem-pkwgt IS INITIAL AND gs_item-posnr(1) <> 9.
gs_item-pckmt = abap_true.
ENDIF.

READ TABLE lt_likp INTO DATA(ls_likp) WITH KEY


vbeln = ls_wbitem-vbeln.
******************commented by mohan************************************
* TRY.
* IF ls_likp-gewei NE ls_lips-vrkme.
* CLEAR lv_menge.
* lv_menge = ls_likp-ntgew.
* PERFORM p_conv_mat_unit USING ls_wbitem-matnr
* ls_likp-gewei
* ls_lips-vrkme
* CHANGING lv_menge.
* ls_likp-ntgew = lv_menge.
* ENDIF.
* lv_nobag = ( ls_lips-lfimg / ls_likp-ntgew ) * 100.
* lv_difqty = ( lv_nobag / 100 ) * ls_wbitem-ntgew.
* lv_tlqty = ls_lips-lfimg - lv_difqty.
* gs_item-grqty = ls_lips-lfimg - lv_tlqty.
* CATCH cx_root.
* ENDTRY.
* CLEAR : lv_nobag , lv_tlqty , lv_difqty.
************************EOC by mohan************************************
gs_item-grqty = ls_lips-lfimg.

READ TABLE gt_mara INTO DATA(ls_mara)


WITH KEY matnr = ls_wbitem-matnr.
IF sy-subrc = 0.
* gs_item-uom = ls_mara-gewei.
* lv_uom = ls_lips-meins.
ENDIF.

gs_item-uom = ls_lips-vrkme.
lv_uom = ls_lips-vrkme.

IF ls_lips-charg IS NOT INITIAL.


gv_autob = abap_true.
ENDIF.

IF ls_wbitem-uom IS INITIAL. "Temp Code for testing


ls_wbitem-uom = 'KG'.
gs_item-wbuom = 'KG'.
ENDIF.

*-- Commentted on 09.05.2018 by IN_DILLIBABU


* IF ls_wbitem-uom <> lv_uom AND ls_wbitem-uom IS NOT INITIAL.
* PERFORM p_conv_mat_unit USING ls_wbitem-matnr
* ls_wbitem-uom
* lv_uom
* CHANGING gs_item-grqty.
* ENDIF.

CLEAR ls_makt.
READ TABLE lt_makt INTO ls_makt
WITH KEY matnr = ls_wbitem-matnr.
IF sy-subrc = 0.
gs_item-maktx = ls_makt-maktx.
ENDIF.
lv_wbuom = gs_item-wbuom.

APPEND gs_item TO gt_item.

CLEAR gs_item.
ENDLOOP.

ENDIF.
* LOOP AT lt_lips INTO ls_lips
* WHERE vbeln = ls_wbitem-vbeln AND
** AND VGPOS = ls_wbitem-posnr. " Added on
03.05.2018 by IN_DILLIBABU
* ( posnr = ls_wbitem-posnr OR "addd by mohan
* uecha = ls_wbitem-posnr ).
* gs_item-item = ls_wbitem-item.
* gs_item-delno = ls_wbitem-vbeln.
* gs_item-posnr = ls_lips-posnr.
* gs_item-matnr = ls_wbitem-matnr.
** CONCATENATE '@EJQ' 'Batch Characteristics' '@' INTO gs_item-batdt.
** CONCATENATE '@0SQ' 'Information' '@' INTO gs_item-itmdt.
** CONCATENATE '@IAQ' 'Batch Split' '@' INTO gs_item-batsp.
* gs_item-batdt = icon_batch. "Batch Icon
* gs_item-itmdt = icon_information. "Information Icon
* IF ls_lips-uecha IS INITIAL.
* gs_item-batsp = icon_distribute. "Batch Splitup Icon
* ENDIF.
* gs_item-ebeln = ls_lips-vgbel.
* gs_item-ebelp = ls_lips-vgpos.
* gs_item-charg = ls_lips-charg.
* gs_item-lgort = ls_lips-lgort.
* IF ls_wbitem-pkwgt IS INITIAL AND gs_item-posnr(1) <> 9.
* gs_item-pckmt = abap_true.
* ENDIF.
*
* READ TABLE lt_likp INTO DATA(ls_likp) WITH KEY
* vbeln = ls_wbitem-vbeln.
*******************commented by mohan************************************
** TRY.
** IF ls_likp-gewei NE ls_lips-vrkme.
** CLEAR lv_menge.
** lv_menge = ls_likp-ntgew.
** PERFORM p_conv_mat_unit USING ls_wbitem-matnr
** ls_likp-gewei
** ls_lips-vrkme
** CHANGING lv_menge.
** ls_likp-ntgew = lv_menge.
** ENDIF.
** lv_nobag = ( ls_lips-lfimg / ls_likp-ntgew ) * 100.
** lv_difqty = ( lv_nobag / 100 ) * ls_wbitem-ntgew.
** lv_tlqty = ls_lips-lfimg - lv_difqty.
** gs_item-grqty = ls_lips-lfimg - lv_tlqty.
** CATCH cx_root.
** ENDTRY.
** CLEAR : lv_nobag , lv_tlqty , lv_difqty.
*************************EOC by mohan************************************
* gs_item-grqty = ls_lips-lfimg.
*
* READ TABLE gt_mara INTO DATA(ls_mara)
* WITH KEY matnr = ls_wbitem-matnr.
* IF sy-subrc = 0.
** gs_item-uom = ls_mara-gewei.
** lv_uom = ls_lips-meins.
* ENDIF.
*
* gs_item-uom = ls_lips-vrkme.
* lv_uom = ls_lips-vrkme.
*
* IF ls_lips-charg IS NOT INITIAL.
* gv_autob = abap_true.
* ENDIF.
*
* IF ls_wbitem-uom IS INITIAL. "Temp Code for testing
* ls_wbitem-uom = 'KG'.
* gs_item-wbuom = 'KG'.
* ENDIF.
*
**-- Commentted on 09.05.2018 by IN_DILLIBABU
** IF ls_wbitem-uom <> lv_uom AND ls_wbitem-uom IS NOT INITIAL.
** PERFORM p_conv_mat_unit USING ls_wbitem-matnr
** ls_wbitem-uom
** lv_uom
** CHANGING gs_item-grqty.
** ENDIF.
*
* CLEAR ls_makt.
* READ TABLE lt_makt INTO ls_makt
* WITH KEY matnr = ls_wbitem-matnr.
* IF sy-subrc = 0.
* gs_item-maktx = ls_makt-maktx.
* ENDIF.
* lv_wbuom = gs_item-wbuom.
*
* APPEND gs_item TO gt_item.
* CLEAR gs_item.
* ENDLOOP.
ENDLOOP.
ENDIF.
ENDIF.

gt_wbitem[] = lt_wbitem[].
ENDFORM.
*&---------------------------------------------------------------------*
*& Form HIDE_SCREEN_9001
*&---------------------------------------------------------------------*
FORM hide_screen_9001 .
IF gs_item-pckmt IS INITIAL.
LOOP AT SCREEN.
CASE screen-group1.
WHEN 'D1'.
screen-input = 0.
MODIFY SCREEN.
ENDCASE.
ENDLOOP.
ELSEIF gs_item-pckmt = abap_true OR gv_cncl = abap_true.
LOOP AT SCREEN.
CASE screen-group1.
WHEN 'D1'.
screen-input = 1.
MODIFY SCREEN.
ENDCASE.

* Begin of changes by Ranjith for IRIS EPDK9A056E


CASE screen-group2.
WHEN 'BO1'.
screen-input = 0.
ENDCASE.
* End of changes By Ranjith for IRIS EPDK9A056E
ENDLOOP.
ENDIF.

*Begin of changes EPDK9A0819 4000004172 for IRIS Ranjith


* Set the disable properties

LOOP AT SCREEN.
CASE screen-group1.
WHEN 'D2'.
screen-input = 1.
MODIFY SCREEN.
ENDCASE.

CASE screen-group2.
WHEN 'BO2'.
screen-input = 1.
MODIFY SCREEN.
ENDCASE.

ENDLOOP.

*End of changes EPDK9A0819 4000004172 for IRIS Ranjith

ENDFORM.
*&---------------------------------------------------------------------*
*& Form POPULATE_VENDOR
*&---------------------------------------------------------------------*
FORM populate_vendor CHANGING cs_item TYPE ty_item.

SELECT SINGLE lifnr FROM ekko


INTO cs_item-lifnr
WHERE ebeln = cs_item-ebeln.
IF sy-subrc = 0.
SELECT SINGLE name1 FROM lfa1
INTO cs_item-name1
WHERE lifnr = cs_item-lifnr.
ENDIF.
gs_item-lifnr = cs_item-lifnr.
gs_item-name1 = cs_item-name1.
IF gs_item-name1 IS INITIAL.
SELECT SINGLE name1 FROM lfa1 INTO gs_item-name1 WHERE lifnr = cs_item-lifnr.
ENDIF.
cs_item-color = 'C300'.

* Execute PAI of actual screen to update ALV


CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'ENTER'.

* A flush is required to trigger the refresh


CALL METHOD cl_gui_cfw=>flush.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form P_CONV_MAT_UNIT
*&---------------------------------------------------------------------*
FORM p_conv_mat_unit USING lv_matnr TYPE matnr
lv_inuom TYPE meins
lv_opuom TYPE meins
CHANGING lv_netwr TYPE menge_d.

DATA : lv_netwt TYPE menge_d.

lv_netwt = lv_netwr.

CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'


EXPORTING
i_matnr = lv_matnr
i_in_me = lv_inuom
i_out_me = lv_opuom
i_menge = lv_netwt
IMPORTING
e_menge = lv_netwt
EXCEPTIONS
error_in_application = 1
error = 2
OTHERS = 3.
IF sy-subrc EQ 0.
lv_netwr = lv_netwt.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form HANDLE_F4
*&---------------------------------------------------------------------*
FORM handle_f4 USING p_fieldname TYPE lvc_fname
p_row_no TYPE lvc_s_roid.

CASE p_fieldname.
WHEN 'LGORT'.
PERFORM sloc_f4 USING p_row_no.
WHEN 'EBELN'.
PERFORM po_f4 USING p_row_no.
*Begin of changes by R.Ranjtih For IRIS EPDK9A07HP
WHEN 'EVERS'.
PERFORM evers_f4 USING p_row_no.
*End of changes by R.Ranjtih For IRIS EPDK9A07HP
* Start of Changes - IN_RAMESHNS - EPDK9A050F
WHEN 'CHARG'.
IF gs_head-direction = 'OUT' AND
( gs_head-wtype = 'STO' OR gs_head-wtype = 'SALES' ).
PERFORM batch_f4 USING p_row_no.
ENDIF.
* End of Changes - IN_RAMESHNS - EPDK9A050F
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form ASSIGN_F4
*&---------------------------------------------------------------------*
FORM assign_f4 USING p_field_name TYPE lvc_fname
CHANGING p_lt_f4 TYPE lvc_t_f4.
DATA: ls_f4 TYPE lvc_s_f4.

ls_f4-fieldname = p_field_name. " field need to have F4 help


ls_f4-register = 'X'.
ls_f4-getbefore = 'X'.
ls_f4-chngeafter = 'X'.
ls_f4-internal = ''.
INSERT ls_f4 INTO TABLE p_lt_f4.
CHECK NOT p_lt_f4 IS INITIAL.

CALL METHOD go_alv_itm->register_f4_for_fields


EXPORTING
it_f4 = p_lt_f4.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form HOTSPOT_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW_ID text
* -->P_E_COLUMN_ID text
*----------------------------------------------------------------------*
FORM hotspot_click USING pe_row_id TYPE lvc_s_row
pe_column_id TYPE lvc_s_col.
DATA: lv_rowno TYPE int4.
DATA: lv_appl TYPE zgtmmtr_wbbags-appl.
CLEAR gv_index.
lv_rowno = pe_row_id-index.
gv_index = pe_row_id-index.

CASE pe_column_id-fieldname.
* WHEN 'EBELN'.
* READ TABLE gt_item ASSIGNING FIELD-SYMBOL(<fs_item>)
* WITH KEY color = 'C300'.
* IF sy-subrc = 0.
* CLEAR <fs_item>-color.
* ENDIF.
*
* READ TABLE gt_item ASSIGNING <fs_item>
* INDEX pe_row_id-index.
* IF sy-subrc = 0." AND <fs_item>-ebeln IS NOT INITIAL.
* PERFORM populate_vendor CHANGING <fs_item>.
* PERFORM set_cursor_alv USING lv_rowno
* 'EBELN'.
* ENDIF.
*
* WHEN 'DELNO'.
* READ TABLE gt_item ASSIGNING <fs_item>
* WITH KEY color = 'C300'.
* IF sy-subrc = 0.
* CLEAR <fs_item>-color.
* ENDIF.
*
* READ TABLE gt_item ASSIGNING <fs_item>
* INDEX pe_row_id-index.
* IF sy-subrc = 0 AND <fs_item>-delno IS NOT INITIAL.
* PERFORM populate_delivery CHANGING <fs_item>.
* PERFORM set_cursor_alv USING lv_rowno
* 'DELNO'.
* ENDIF.

WHEN 'MATNR'.
IF ( gs_head-direction = gc_out AND gs_head-wtype NE gc_ret ) OR
( gs_head-direction = gc_in AND gs_head-wtype = gc_ret ) OR
( gs_head-direction = gc_in AND gs_head-wtype = gc_sto ).
READ TABLE gt_item ASSIGNING <fs_item>
WITH KEY color = 'C300'.
IF sy-subrc = 0.
CLEAR <fs_item>-color.
ENDIF.

READ TABLE gt_item ASSIGNING <fs_item>


INDEX pe_row_id-index.
IF sy-subrc = 0 AND <fs_item>-delno IS NOT INITIAL.
PERFORM populate_delivery CHANGING <fs_item>.
PERFORM set_cursor_alv USING lv_rowno
'MATNR'.
ENDIF.

ELSEIF gs_head-wtype NE gc_trf.

READ TABLE gt_item ASSIGNING FIELD-SYMBOL(<fs_item>)


WITH KEY color = 'C300'.
IF sy-subrc = 0.
CLEAR <fs_item>-color.
ENDIF.

READ TABLE gt_item ASSIGNING <fs_item>


INDEX pe_row_id-index.
IF sy-subrc = 0." AND <fs_item>-ebeln IS NOT INITIAL.
PERFORM populate_vendor CHANGING <fs_item>.
PERFORM set_cursor_alv USING lv_rowno
'MATNR'.
ENDIF.
ENDIF.
WHEN 'PAKDT'.
READ TABLE gt_item INTO gs_item INDEX pe_row_id-index.
IF sy-subrc = 0.
REFRESH gt_bags.
gs_itemt = gs_item.
*-- Start of added on 09.05.2018 by IN_DILLIBABU
CLEAR lv_appl.
IF gs_head-protype EQ '1' OR gs_head-protype EQ '2'.
lv_appl = 'GR'.
ELSEIF gs_head-protype EQ '3' OR gs_head-protype EQ '4'.
lv_appl = 'GI'.
ENDIF.
*-- End of added on 09.05.2018 by IN_DILLIBABU
SELECT * FROM zgtmmtr_wbbags
INTO TABLE gt_bags
WHERE appl EQ lv_appl " Added on 09.05.2018 by IN_DILLIBABU
AND werks = gs_head-werks.

CALL SCREEN 9001 STARTING AT 70 10.


ENDIF.

WHEN 'BATDT'.
READ TABLE gt_item INTO gs_item INDEX pe_row_id-index.
IF sy-subrc = 0.
IF gs_item-charg IS NOT INITIAL.
gs_itemt = gs_item.
CALL SCREEN 9002 STARTING AT 10 10.
ELSE.
MESSAGE 'Enter the Batch' TYPE 'I'.
PERFORM set_cursor_alv USING lv_rowno
'CHARG'.
ENDIF.
ENDIF.

WHEN 'ITMDT'.
READ TABLE gt_item INTO gs_item INDEX pe_row_id-index.
IF sy-subrc = 0.
gs_itemt = gs_item.
CALL SCREEN 9005 STARTING AT 30 10.
ENDIF.

WHEN 'BATSP'.

READ TABLE gt_item ASSIGNING <fs_item>


INDEX pe_row_id-index.
IF sy-subrc = 0 AND <fs_item>-batsp IS NOT INITIAL.
IF ( gs_head-wtype = gc_sto AND gs_head-direction = gc_out ) OR
( gs_head-wtype = gc_so AND gs_head-direction = gc_out ).

IF <fs_item>-delno IS INITIAL.
MESSAGE 'Enter Delivery document' TYPE 'I'.
PERFORM set_cursor_alv USING lv_rowno
'DELNO'.
ELSE.
IF <fs_item>-batsp IS NOT INITIAL.
SET PARAMETER ID 'VL' FIELD <fs_item>-delno.
CALL TRANSACTION 'VL02N' AND SKIP FIRST SCREEN.
WAIT UP TO 2 SECONDS.
SELECT * FROM lips INTO TABLE @DATA(lt_lips)
WHERE vbeln = @<fs_item>-delno AND
( posnr = @<fs_item>-posnr OR
uecha = @<fs_item>-posnr ).
SORT lt_lips BY vbeln posnr.

DATA(lv_index) = pe_row_id-index.
LOOP AT lt_lips INTO DATA(ls_lips).
IF ls_lips-posnr EQ <fs_item>-posnr.
<fs_item>-charg = ls_lips-charg.
<fs_item>-grqty = ls_lips-lfimg.
<fs_item>-lgort = ls_lips-lgort.
ELSE.
READ TABLE gt_item ASSIGNING FIELD-SYMBOL(<fs_bitem>)
WITH KEY item = <fs_item>-item
delno = ls_lips-vbeln
posnr = ls_lips-posnr.
IF sy-subrc IS INITIAL.
<fs_bitem>-posnr = ls_lips-posnr.
<fs_bitem>-charg = ls_lips-charg.
<fs_bitem>-grqty = ls_lips-lfimg.
* <fs_bitem>-wbqty = ls_lips-lfimg.
<fs_bitem>-lgort = ls_lips-lgort.
IF ls_lips-uecha IS NOT INITIAL.
CLEAR <fs_bitem>-batsp.
ELSE.
<fs_bitem>-batsp = icon_distribute.
ENDIF.
ELSE.
DATA(ls_item) = <fs_item>.
IF ls_lips-uecha IS NOT INITIAL.
CLEAR ls_item-batsp.
ELSE.
ls_item-batsp = icon_distribute.
ENDIF.
lv_index = lv_index + 1.
CLEAR <fs_item>-wbqty.
* ls_item-wbqty = ls_lips-lfimg.
ls_item-grqty = ls_lips-lfimg.
ls_item-posnr = ls_lips-posnr.
ls_item-charg = ls_lips-charg.
ls_item-lgort = ls_lips-lgort.
INSERT ls_item INTO gt_item INDEX lv_index.
ENDIF.
ENDIF.
ENDLOOP.

LOOP AT gt_item INTO ls_item WHERE item = <fs_item>-item AND


delno = <fs_item>-delno.

READ TABLE lt_lips TRANSPORTING NO FIELDS


WITH KEY vbeln = ls_item-delno
posnr = ls_item-posnr.
IF sy-subrc IS NOT INITIAL.
DELETE gt_item WHERE item = ls_item-item AND
delno = ls_item-delno AND
posnr = ls_item-posnr.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
SORT gt_item BY item delno posnr.
CALL METHOD go_alv_itm->refresh_table_display.
PERFORM set_cursor_alv USING lv_rowno
'BATSP'.
ELSE.
IF <fs_item>-ebeln IS INITIAL.
MESSAGE 'Enter PO' TYPE 'I'.
PERFORM set_cursor_alv USING lv_rowno
'EBELN'.
ELSE.
PERFORM batch_split USING lv_rowno
CHANGING <fs_item>.
ENDIF.
ENDIF.
ENDIF.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CHANGE_DATA
*&---------------------------------------------------------------------*
FORM change_data USING
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
DATA: lt_mod TYPE lvc_t_modi.

lt_mod[] = pr_data_changed->mt_mod_cells[].
READ TABLE lt_mod INTO DATA(ls_mod) INDEX 1.
IF sy-subrc = 0.
CASE ls_mod-fieldname.
WHEN 'CHARG'.
PERFORM validate_batch USING pr_data_changed
ls_mod.
* READ TABLE gt_fcat TRANSPORTING NO FIELDS WITH KEY fieldname = 'VALUE'
edit = abap_true.
* IF sy-subrc IS INITIAL.
* PERFORM set_cursor_alv USING ls_mod-row_id
* 'VALUE'.
* ELSE.
PERFORM set_cursor_alv USING ls_mod-row_id
'CHARG'.
* ENDIF.
WHEN 'LGORT'.
PERFORM validate_lgort USING pr_data_changed
ls_mod.
PERFORM set_cursor_alv USING ls_mod-row_id
* 'CHARG'.
'LGORT'.
WHEN 'EBELN'.
PERFORM populate_grqty USING pr_data_changed
ls_mod ls_mod-fieldname.
PERFORM set_cursor_alv USING ls_mod-row_id
* 'EBELP'.
'EBELN'.

WHEN 'EBELP'.
PERFORM populate_grqty USING pr_data_changed
ls_mod ls_mod-fieldname.
PERFORM set_cursor_alv USING ls_mod-row_id
* 'LGORT'.
'EBELP'.
ENDCASE.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form VALIDATE_BATCH
*&---------------------------------------------------------------------*
FORM validate_batch USING
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol
ps_mod TYPE lvc_s_modi.

DATA: lv_charg TYPE charg_d.

lv_charg = ps_mod-value.
IF lv_charg IS INITIAL.
EXIT.
ENDIF.

* Start of Changes - IN_RAMESHNS - EPDK9A050F


* Batch validation should only happen for WB Direction -> Inbound
* and Weighbridge Type -> Procurement or Stock Transfer
IF gs_head-direction = 'IN' AND
gs_head-wtype = 'PROCURE' .
* End of Changes - IN_RAMESHNS - EPDK9A050F

CLEAR gs_item.
READ TABLE gt_item INTO gs_item INDEX ps_mod-row_id.
SELECT SINGLE matnr, charg FROM mch1
INTO @DATA(ls_mch1)
WHERE matnr = @gs_item-matnr
AND charg = @lv_charg.
IF sy-subrc = 0.
*-- Start of added on 11.06.2018 by IN_DILLIBABU TR: EPDK9A05W8 Charms:
4000004199
*-- If the WBID,item, material and given batch is availabe in the table
ZGTMMTR_QCRECORD then dont show the error message. i
*-- if recrod not found show the error
SELECT SINGLE wbid,item,matnr,lifnr,charg FROM zgtmmtr_qcrecord
INTO @DATA(ls_qcrecord) WHERE wbid EQ @gs_head-wbid
AND item EQ @gs_item-item
AND matnr EQ @gs_item-matnr
AND charg EQ @lv_charg.
IF sy-subrc NE 0.
*-- End of added on 11.06.2018 by IN_DILLIBABU TR: EPDK9A05W8 Charms:
4000004199
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid = '0K'
i_msgno = '000'
i_msgty = 'E'
i_msgv1 = 'Batch already exist,'
i_msgv2 = 'Enter different batch'
i_fieldname = ps_mod-fieldname
i_row_id = ps_mod-row_id.
CALL METHOD pr_data_changed->display_protocol.
EXIT.
ENDIF.
ELSE.
CALL METHOD go_alv_itm->refresh_table_display.
ENDIF.

* Start of Changes - IN_RAMESHNS - EPDK9A050F


ENDIF.
* End of Changes - IN_RAMESHNS - EPDK9A050F

ENDFORM.
*&---------------------------------------------------------------------*
*& Form SLOC_F4
*&---------------------------------------------------------------------*
FORM sloc_f4 USING p_row_no TYPE lvc_s_roid.

DATA: lt_return_tab TYPE STANDARD TABLE OF ddshretval.


READ TABLE gt_item ASSIGNING FIELD-SYMBOL(<fs_item>)
INDEX p_row_no-row_id.
IF sy-subrc = 0.
**-To get the Storage Location Description
SELECT lgort, lgobe FROM t001l
INTO TABLE @DATA(lt_t001l)
WHERE werks = @gs_head-werks.
IF sy-subrc = 0.
SORT lt_t001l BY lgort.
ENDIF.
ENDIF.

IF lt_t001l[] IS NOT INITIAL.


CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'LGORT'
dynpprog = sy-repid
dynpnr = sy-dynnr
value_org = 'S'
TABLES
value_tab = lt_t001l
return_tab = lt_return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.

IF sy-subrc = 0 AND lt_return_tab[] IS NOT INITIAL.


READ TABLE lt_return_tab INTO DATA(ls_return_tab) INDEX 1.
IF sy-subrc = 0.
<fs_item>-lgort = ls_return_tab-fieldval.
CALL METHOD go_alv_itm->refresh_table_display.

PERFORM set_cursor_alv USING p_row_no-row_id


'LGORT'.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SET_CURSOR_ALV
*&---------------------------------------------------------------------*
FORM set_cursor_alv USING p_row_id TYPE int4
p_field TYPE lvc_fname.

DATA: ls_rowid TYPE lvc_s_row,


ls_colid TYPE lvc_s_col,
ls_rowno TYPE lvc_s_roid.

READ TABLE gt_fcat INTO DATA(ls_fcat) WITH KEY fieldname = p_field.


IF sy-subrc IS INITIAL.
LOOP AT gt_fcat INTO ls_fcat FROM sy-tabix WHERE edit = abap_true.
DATA(lv_field) = ls_fcat-fieldname.
ENDLOOP.
IF lv_field IS INITIAL.
DATA(lv_rowid) = p_row_id + 1.
READ TABLE gt_item TRANSPORTING NO FIELDS INDEX lv_rowid.
IF sy-subrc IS INITIAL.
CLEAR: lv_field, ls_fcat.
READ TABLE gt_fcat INTO ls_fcat WITH KEY edit = abap_true.
IF sy-subrc IS INITIAL.
lv_field = ls_fcat-fieldname.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF lv_field IS NOT INITIAL.
ls_colid-fieldname = lv_field.
IF lv_rowid IS INITIAL.
ls_rowid = p_row_id.
ls_rowno-row_id = p_row_id.
ELSE.
ls_rowid = lv_rowid.
ls_rowno-row_id = lv_rowid.
ENDIF.
ELSE.
ls_colid-fieldname = p_field.
ls_rowid = p_row_id.
ls_rowno-row_id = p_row_id.
ENDIF.

CALL METHOD go_alv_itm->set_current_cell_via_id


EXPORTING
is_row_id = ls_rowid
is_column_id = ls_colid
is_row_no = ls_rowno.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_BATCH_CHAR
*&---------------------------------------------------------------------*
FORM display_batch_char .
PERFORM get_batch_char CHANGING gt_char.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_BATCH_CHAR
*&---------------------------------------------------------------------*
FORM get_batch_char CHANGING ct_char TYPE zgtmm_tt_grnchar.
DATA: lv_object TYPE objnum,
ls_mcha TYPE mcha,
lv_process TYPE c,
lv_emessage TYPE char200,
ls_char TYPE zgtmm_s_grnchar,
lt_char1 TYPE TABLE OF api_char,
lt_att1 TYPE TABLE OF api_ch_att,
lt_char2 TYPE TABLE OF api_char,
lt_value2 TYPE TABLE OF api_value,
lt_char3 TYPE TABLE OF api_char,
lt_value3 TYPE TABLE OF api_vali,
lt_cbatch TYPE STANDARD TABLE OF clbatch,
ls_cbatch TYPE clbatch,
lt_class TYPE STANDARD TABLE OF sclass,
lt_obje TYPE STANDARD TABLE OF clobjdat.

ls_mcha-matnr = gs_item-matnr.
ls_mcha-werks = gs_head-werks.
ls_mcha-charg = gs_item-charg.
lv_object = gs_item-matnr.

* Get Batch Charecteristics against Material


CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
classtype = '023'
object = lv_object
objecttable = 'MARA'
TABLES
t_class = lt_class
t_objectdata = lt_obje
EXCEPTIONS
no_classification = 1
no_classtypes = 2
invalid_class_type = 3
OTHERS = 4.
IF sy-subrc EQ 0.
LOOP AT lt_obje INTO DATA(ls_obje).
READ TABLE ct_char TRANSPORTING NO FIELDS
WITH KEY matnr = gs_item-matnr
charg = gs_item-charg
atnam = ls_obje-atnam.
IF sy-subrc <> 0.
ls_char-matnr = gs_item-matnr.
ls_char-charg = gs_item-charg.
ls_char-c_desc = ls_obje-smbez.
ls_char-atnam = ls_obje-atnam.
TRANSLATE ls_char-c_desc TO UPPER CASE.
APPEND ls_char TO ct_char.
CLEAR ls_char.
ENDIF.
ENDLOOP.
ENDIF.

*-- Start of Added on 20.07.2018 by IN_DILLIBABU


*-- Issue: After enterting the value in standard screen which comes while callin
gbelow FM, clears the value when the user clicks CHECK in the screen
*-- Becasue CHEKC does the POST in test mode then calls the ROLL BACK, so clears
value in all standard variables including batch screen values
*-- To show back entered value
LOOP AT ct_char INTO DATA(ls_char_1) WHERE matnr EQ gs_item-matnr
AND charg EQ gs_item-charg.
*-- If value is not exists dont pass it
IF ls_char_1-c_value IS NOT INITIAL.
ls_cbatch-atnam = ls_char_1-atnam.
CLEAR ls_cbatch-atwtb.
ls_cbatch-atwtb = ls_char_1-c_value.
* CONDENSE ls_cbatch-atwtb. " Dont condense the value
APPEND ls_cbatch TO lt_cbatch.
ENDIF.
CLEAR : ls_cbatch.
ENDLOOP.

*-- Issue: Not allowing to view batch characteristics for already posted batch
details pop-up. Batch characters should be editable.
SELECT SINGLE matnr,werks,charg FROM mcha INTO @DATA(ls_mcha_1)
WHERE matnr EQ @gs_item-matnr
AND werks EQ @gs_head-werks
AND charg EQ @gs_item-charg.
IF gv_autob = abap_true OR sy-subrc EQ 0.
*-- End of Added on 20.07.2018 by IN_DILLIBABU
CALL FUNCTION 'VB_CHANGE_BATCH'
EXPORTING
ymcha = ls_mcha
bypass_lock = 'X'
kzcla = '3'
buffer_refresh = 'X'
* check_external = 'X'
* check_customer = 'X'
TABLES
char_of_batch = lt_cbatch
EXCEPTIONS
no_material = 1
no_batch = 2
no_plant = 3
material_not_found = 4
plant_not_found = 5
lock_on_material = 6
lock_on_plant = 7
lock_on_batch = 8
lock_system_error = 9
no_authority = 10
batch_not_exist = 11
no_class = 12
error_in_classification = 13
error_in_valuation_change = 14
error_in_status_change = 15
region_of_origin_not_found = 16
country_of_origin_not_found = 17
OTHERS = 18.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ELSE.
CALL FUNCTION 'VB_CREATE_BATCH'
EXPORTING
ymcha = ls_mcha
bypass_lock = 'X'
kzcla = '3'
buffer_refresh = 'X'
check_external = 'X'
check_customer = 'X'
TABLES
char_of_batch = lt_cbatch
EXCEPTIONS
no_material = 1
no_batch = 2
no_plant = 3
material_not_found = 4
plant_not_found = 5
stoloc_not_found = 6
lock_on_material = 7
lock_on_plant = 8
lock_on_batch = 9
lock_system_error = 10
no_authority = 11
batch_exist = 12
stoloc_exist = 13
illegal_batch_number = 14
no_batch_handling = 15
no_valuation_area = 16
valuation_type_not_found = 17
no_valuation_found = 18
error_automatic_batch_number = 19
cancelled = 20
wrong_status = 21
interval_not_found = 22
number_range_not_extern = 23
object_not_found = 24
error_check_batch_number = 25
no_external_number = 26
no_customer_number = 27
no_class = 28
error_in_classification = 29
inconsistency_in_key = 30
region_of_origin_not_found = 31
country_of_origin_not_found = 32
OTHERS = 33.
ENDIF.

IF sy-subrc = 12.
lv_process = 'N'.
MESSAGE e668(m7) INTO lv_emessage WITH gs_item-charg.
ENDIF.

CHECK lv_process IS INITIAL.


CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

CALL FUNCTION 'CTMS_DDB_CHAR_HAS_ATTRIBUTES'


TABLES
imp_characteristics = lt_char1
exp_attributes = lt_att1
EXCEPTIONS
OTHERS = 1.

CALL FUNCTION 'CTMS_DDB_HAS_VALUES'


EXPORTING
assigned_values = 'X'
allowed_values = space
TABLES
imp_characteristics = lt_char2
exp_values = lt_value2
EXCEPTIONS
not_found = 1
OTHERS = 2.

CALL FUNCTION 'CTMS_DDB_HAS_VALUES_INTERNAL'


TABLES
imp_characteristics = lt_char3
exp_values = lt_value3
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

CALL FUNCTION 'VB_INIT_ALL'.


CALL FUNCTION 'VB_SGT_CLEAR_BUFF'.
CALL FUNCTION 'VB_SET_STATUS_INIT_DONE'.
CALL FUNCTION 'CTMS_DDB_INIT'.

*-- Added on 19.09.2018 by IN_DILLIBABU- Since ATNAM is common for all batch so
batch wise fill should happen
LOOP AT ct_char ASSIGNING FIELD-SYMBOL(<fs_char>) WHERE matnr EQ gs_item-matnr
AND charg EQ gs_item-charg.
READ TABLE lt_value2 INTO DATA(ls_value)
WITH KEY atnam = <fs_char>-atnam.
IF sy-subrc = 0.
<fs_char>-c_value = ls_value-atwrt.
ELSE.
CLEAR <fs_char>-c_value.
ENDIF.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SET_DROPDOWN
*&---------------------------------------------------------------------*
FORM set_dropdown TABLES t_val TYPE vrm_values
USING p_field TYPE vrm_value-text.

DATA: lt_value TYPE vrm_values.

lt_value[] = t_val[].
IF lt_value IS INITIAL.
CLEAR gs_bags.
LOOP AT gt_bags INTO gs_bags.
gs_list-key = gs_bags-bagtyp.
APPEND gs_list TO lt_value.
CLEAR gs_list.
ENDLOOP.
ENDIF.

CALL FUNCTION 'VRM_SET_VALUES'


EXPORTING
id = p_field
values = lt_value
EXCEPTIONS
id_illegal_name = 1
OTHERS = 2.

t_val[] = lt_value[].
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CALC_TARE_GROSS_BAG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM calc_tare_gross_bag USING p_ptyp1
p_palno1
CHANGING c_gwt1
c_trwgt1
c_uom1.
CLEAR gs_bags.

READ TABLE gt_bags INTO gs_bags


WITH KEY bagtyp = p_ptyp1.
IF sy-subrc = 0.
c_trwgt1 = gs_bags-trwgt.
c_uom1 = gs_bags-uom.
IF p_palno1 IS NOT INITIAL.
c_gwt1 = c_trwgt1 * p_palno1.
ENDIF.
ENDIF.

IF p_ptyp1 IS INITIAL.
CLEAR: c_gwt1, c_trwgt1, c_uom1.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CALC_GROSS_BAG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM calc_gross_bag USING p_palno1
p_trwg1
CHANGING c_gwt1.

IF p_trwg1 IS NOT INITIAL.


c_gwt1 = p_palno1 * p_trwg1.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SAVE_PACK_DET
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM save_pack_det .
DATA: lv_rowno TYPE int4,
lv_netwt TYPE menge_d,
lv_vbeln TYPE vbeln_vl,
lv_difqty TYPE menge_d,
lv_tlqty TYPE menge_d,
lv_nobag TYPE p DECIMALS 6.

READ TABLE gt_item ASSIGNING <fs_item> INDEX gv_index.


IF sy-subrc = 0.
<fs_item> = gs_item.
<fs_item>-pakdt = gs_item-gwt1 + gs_item-gwt2 + gs_item-gwt3.

READ TABLE gt_grqty ASSIGNING FIELD-SYMBOL(<fs_qty>) WITH KEY item = <fs_item>-


item.
IF <fs_qty> IS ASSIGNED.
<fs_qty>-menge = gs_item-wbqty - <fs_item>-pakdt.
PERFORM p_conv_mat_unit USING <fs_item>-matnr
<fs_item>-wbuom
<fs_item>-uom
CHANGING <fs_qty>-menge.
ENDIF.

lv_netwt = gs_item-wbqty - <fs_item>-pakdt.


IF gs_head-direction = gc_in.
<fs_item>-grqty = lv_netwt.
IF <fs_item>-wbuom <> <fs_item>-uom AND <fs_item>-wbuom IS NOT INITIAL.
PERFORM p_conv_mat_unit USING <fs_item>-matnr
<fs_item>-wbuom
<fs_item>-uom
CHANGING <fs_item>-grqty.
ENDIF.
ELSE.
SELECT vbeln, posnr, lgort, charg, lfimg, meins, vgbel, vgpos
FROM lips INTO TABLE @DATA(lt_lips)
WHERE vbeln = @<fs_item>-delno.

SELECT vbeln, ntgew FROM likp


INTO TABLE @DATA(lt_likp)
WHERE vbeln = @<fs_item>-delno.

lv_vbeln = <fs_item>-delno.

UNASSIGN <fs_item>.
LOOP AT gt_item ASSIGNING <fs_item> WHERE vbeln = lv_vbeln.
READ TABLE lt_lips INTO DATA(ls_lips)
WITH KEY vbeln = <fs_item>-delno
posnr = <fs_item>-posnr.
IF sy-subrc = 0.
READ TABLE lt_likp INTO DATA(ls_likp)
WITH KEY vbeln = <fs_item>-delno.
IF sy-subrc = 0.
TRY.
lv_nobag = ( ls_lips-lfimg / ls_likp-ntgew ) * 100.
lv_difqty = ( lv_nobag / 100 ) * lv_netwt.
lv_tlqty = ls_lips-lfimg - lv_difqty.
<fs_item>-grqty = ls_lips-lfimg - lv_tlqty.
CLEAR : lv_nobag , lv_tlqty , lv_difqty.
CATCH cx_root.
ENDTRY.

IF <fs_item>-wbuom <> <fs_item>-uom AND


<fs_item>-wbuom IS NOT INITIAL.
PERFORM p_conv_mat_unit USING <fs_item>-matnr
<fs_item>-wbuom
<fs_item>-uom
CHANGING <fs_item>-grqty.
ENDIF.
ENDIF.

ENDIF.
ENDLOOP.
ENDIF.

CALL METHOD go_alv_itm->refresh_table_display.


lv_rowno = gv_index.
PERFORM set_cursor_alv USING lv_rowno
'PAKDT'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SAVE_BATCH_DET
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM save_batch_det .
DATA: lv_rowno TYPE int4.

READ TABLE gt_item ASSIGNING <fs_item> INDEX gv_index.


IF sy-subrc = 0.
<fs_item> = gs_item.
CALL METHOD go_alv_itm->refresh_table_display.
lv_rowno = gv_index.
PERFORM set_cursor_alv USING lv_rowno
'BATDT'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SAVE_ITEM_INFO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM save_item_info .
DATA: lv_rowno TYPE int4.

READ TABLE gt_item ASSIGNING <fs_item> INDEX gv_index.


IF sy-subrc = 0.
<fs_item> = gs_item.
CALL METHOD go_alv_itm->refresh_table_display.
lv_rowno = gv_index.
PERFORM set_cursor_alv USING lv_rowno
'ITMDT'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form POST_GR_GI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM post_gr_gi USING pv_test TYPE testrun.

DATA: ls_docnum TYPE bapi2017_gm_head_ret,


lt_return TYPE tt_return,
lt_style TYPE TABLE OF lvc_s_styl.

FIELD-SYMBOLS: <fs_style> TYPE lvc_s_styl.


******************************************************
* CALL METHOD go_alv_itm->get_selected_rows
* IMPORTING
* et_index_rows = DATA(lt_selected_rows)
* et_row_no = DATA(lt_row).
*****************************************************
* Begin of change by Ramani N for IRIS Project

* DATA: ls_mara TYPE ty_mara.


* LOOP AT gt_item ASSIGNING <fs_item>.
* READ TABLE gt_mara INTO ls_mara WITH KEY matnr = <fs_item>-matnr.
* IF sy-subrc EQ 0 AND ls_mara-mtart = 'VERP'.
* <fs_item>-uom1 = ls_mara-meins.
* <fs_item>-uom2 = ls_mara-meins.
* <fs_item>-uom3 = ls_mara-meins.
* <fs_item>-wbuom = ls_mara-meins.
* ENDIF.
* ENDLOOP.
* End of change by Ramani N for IRIS Project

IF gs_head-ptyp IS NOT INITIAL.


LOOP AT gt_item INTO DATA(ls_item) WHERE ebeln IS INITIAL AND
ebelp IS INITIAL AND
value IS INITIAL.
DATA(lv_eflag) = abap_true.
EXIT.
ENDLOOP.
IF lv_eflag IS NOT INITIAL.
MESSAGE 'Enter cost value for auto PO generation' TYPE 'E'.
ENDIF.
ENDIF.

REFRESH gt_final.
PERFORM populate_item_gr_gi.

*-- Added on 03.05.2018 by IN_DILLIBABU


*-- To populate delviery no in refernce whiule posting goods mvnt. If the scenario
is STO and GR
IF gs_head-wtype = 'STO' AND gs_head-direction = 'IN'.
READ TABLE gt_final INTO DATA(ls_final_1) INDEX 1.
gs_head-xblnr = ls_final_1-delno.
CLEAR ls_final_1.
ENDIF.

DELETE gt_char WHERE matnr IS INITIAL.


DELETE gt_char WHERE charg IS INITIAL.

CALL FUNCTION 'ZGTMMFM_GRN_POST'


EXPORTING
im_head = gs_head
im_testrun = pv_test
im_delivery = gv_delivery
IMPORTING
ex_docnum = ls_docnum
TABLES
tt_item = gt_final
tt_batch_char = gt_char
tt_return = lt_return.

IF gs_head-ptyp IS NOT INITIAL.


LOOP AT gt_final INTO DATA(ls_final).
READ TABLE gt_item ASSIGNING FIELD-SYMBOL(<fs_item>)
WITH KEY item = ls_final-wbitem.
IF sy-subrc IS INITIAL.
DATA(lv_flag) = abap_true.
<fs_item>-ebeln = ls_final-ebeln.
<fs_item>-ebelp = ls_final-ebelp.
<fs_item>-charg = ls_final-charg.
<fs_item>-autobatch = ls_final-autobatch.
IF <fs_item>-ebeln IS NOT INITIAL.
lt_style[] = <fs_item>-style.
READ TABLE lt_style ASSIGNING <fs_style> WITH KEY fieldname = 'EBELN'.
IF sy-subrc IS NOT INITIAL.
INSERT INITIAL LINE INTO TABLE lt_style ASSIGNING <fs_style>.
ENDIF.
<fs_style>-fieldname = 'EBELN'.
<fs_style>-style = cl_gui_alv_grid=>mc_style_disabled.

READ TABLE lt_style ASSIGNING <fs_style> WITH KEY fieldname = 'EBELP'.


IF sy-subrc IS NOT INITIAL.
INSERT INITIAL LINE INTO TABLE lt_style ASSIGNING <fs_style>.
ENDIF.
<fs_style>-fieldname = 'EBELP'.
<fs_style>-style = cl_gui_alv_grid=>mc_style_disabled.

READ TABLE lt_style ASSIGNING <fs_style> WITH KEY fieldname = 'VALUE'.


IF sy-subrc IS NOT INITIAL.
INSERT INITIAL LINE INTO TABLE lt_style ASSIGNING <fs_style>.
ENDIF.
<fs_style>-fieldname = 'VALUE'.
<fs_style>-style = cl_gui_alv_grid=>mc_style_disabled.

SORT lt_style BY fieldname.


CLEAR <fs_item>-style.
<fs_item>-style = lt_style[].
ENDIF.
ENDIF.
*--Start added on 08.05.2018 by IN_DILLIBABU
*-- To Update the PO to the ITAB, Its used while doing validation , Scenario: PO
can be create while clicking CHECK,
*- and GRN will be done while clikcing POST. POST has valdiation for GR qty
based on line_item/PO/item if
READ TABLE gt_grqty ASSIGNING FIELD-SYMBOL(<fs_grqty>)
WITH KEY item = ls_final-wbitem.
IF sy-subrc IS INITIAL.
<fs_grqty>-ebeln = ls_final-ebeln.
<fs_grqty>-ebelp = ls_final-ebelp.
ENDIF.
*-- End of added on 08.05.2018 by IN_DILLIBABU
ENDLOOP.
IF lv_flag IS NOT INITIAL.
IF go_alv_itm IS BOUND.
CALL METHOD go_alv_itm->refresh_table_display.
ENDIF.
ENDIF.
ENDIF.

IF lt_return[] IS NOT INITIAL.

READ TABLE lt_return INTO DATA(ls_ret) WITH KEY type = 'S'.


IF sy-subrc IS INITIAL.
PERFORM display_message USING lt_return. " Commneted and add on 03.05.2018 -
To show message as pop for GI, GR posting
* MESSAGE ID ls_ret-id TYPE ls_ret-type NUMBER ls_ret-number
* WITH ls_ret-message_v1 ls_ret-message_v2 ls_ret-message_v3
* ls_ret-message_v4.
ELSE.
PERFORM display_message USING lt_return.
ENDIF.
ENDIF.

READ TABLE lt_return TRANSPORTING NO FIELDS


WITH KEY type = 'E'.
IF sy-subrc <> 0 AND pv_test IS INITIAL.
PERFORM refresh_data.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form POPULATE_ITEM_GR_GI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM populate_item_gr_gi.
DATA: ls_final TYPE zgtmm_s_grnitm,
ls_ebeln TYPE ty_ebeln,
ls_vbeln TYPE ty_vbeln,
lt_return TYPE tt_return,
lt_ebeln TYPE TABLE OF ty_ebeln,
lt_vbeln TYPE TABLE OF ty_vbeln.

*Begin of changes EPDK9A0819 4000004172 for IRIS Ranjith


TYPES : BEGIN OF lty_mail,
bukrs TYPE bukrs,
werks TYPE werks_d,
bsart TYPE bsart,
bagtolerance TYPE zbagtolerance,
avgbagtolerance TYPE zavgbagtolerance,
END OF lty_mail,

BEGIN OF lty_mslb,
matnr TYPE matnr,
werks TYPE werks_d,
charg TYPE charg_d,
sobkz TYPE sobkz,
lifnr TYPE lifnr,
lblab TYPE labst,
END OF lty_mslb,

BEGIN OF lty_t159l,
werks TYPE werks_d,
xsong TYPE xsong,
END OF lty_t159l,

BEGIN OF lty_bags,
wbid TYPE zdt_gwbid,
item TYPE zdt_wbitem,
good_bag1 TYPE char5,
good_bag2 TYPE char5,
good_bag3 TYPE char5,
avg_bag1 TYPE char5,
avg_bag2 TYPE char5,
avg_bag3 TYPE char5,
bad_bag1 TYPE char5,
bad_bag2 TYPE char5,
bad_bag3 TYPE char5,
END OF lty_bags.

DATA : lt_mail TYPE TABLE OF lty_mail,


lt_mslb TYPE TABLE OF lty_mslb,
lt_bags_on TYPE TABLE OF zngmm_onlplant,
lt_t159l TYPE TABLE OF lty_t159l,
lt_bags TYPE TABLE OF lty_bags,
lt_final TYPE TABLE OF zgtmm_s_grnitm,
ls_bags TYPE lty_bags,
ls_bags_on TYPE zngmm_onlplant,
ls_t159l TYPE lty_t159l,
ls_mail TYPE lty_mail,
ls_mslb TYPE lty_mslb,
lv_menge TYPE menge_d,
lv_toler TYPE char15,
lv_toler_pos TYPE char15,
lv_toler_neg TYPE char15,
lv_menge_cal TYPE menge_d,
lv_weight TYPE char17,
lv_cal TYPE char5,
lv_bukrs TYPE bukrs,
lv_msg TYPE char72,
lv_total TYPE char6,
lv_lblab type labst,
lv_name TYPE char40.
FIELD-SYMBOLS : <fs_mslb> TYPE lty_mslb.

CONSTANTS : lc_err TYPE char1 VALUE 'E',


lc_sobkz_o TYPE sobkz VALUE 'O'.

* End of changes EPDK9A0819 4000004172 for IRIS Ranjith

*-- Start of added added and commtted on 11.06.2018 by IN_DILLIBABU TR:


EPDK9A05W8 Charms: 4000004199
*-- If direct delivery is given then GRQTY will not have any value.
*-- Only delivery scenario, allow to fill the ITAB GT_FINAL even though GRQTY empty

* LOOP AT gt_item INTO DATA(ls_item) WHERE grqty IS NOT INITIAL.


LOOP AT gt_item INTO DATA(ls_item).
IF ( ls_item-grqty IS NOT INITIAL ) OR ( gv_delivery IS NOT INITIAL ).

" End of added added and commtted on 11.06.2018 by IN_DILLIBABU TR:


EPDK9A05W8 Charms: 4000004199

ls_final-wbid = gs_head-wbid.
ls_final-wbitem = ls_item-item.
ls_final-ebeln = ls_item-ebeln.
ls_final-ebelp = ls_item-ebelp.
ls_final-vbeln = ls_item-vbeln.
ls_final-delno = ls_item-delno.
ls_final-posnr = ls_item-posnr.
ls_final-matnr = ls_item-matnr.
ls_final-maktx = ls_item-maktx.
ls_final-lifnr = ls_item-lifnr.
ls_final-name1 = ls_item-name1.
ls_final-pkwgt = ls_item-pakdt.
ls_final-wbqty = ls_item-wbqty.
ls_final-wbuom = ls_item-wbuom.
ls_final-wsqty = ls_item-wsqty.
ls_final-wsuom = ls_item-wsuom.
ls_final-grqty = ls_item-grqty.
ls_final-gruom = ls_item-uom.
ls_final-lgort = ls_item-lgort.
ls_final-charg = ls_item-charg.
ls_final-trlos = ls_item-trlos.
ls_final-kunag = ls_item-kunag.
ls_final-name2 = ls_item-name2.
ls_final-kunwe = ls_item-kunwe.
ls_final-name3 = ls_item-name3.
ls_final-mandt = ls_item-mandt.
ls_final-lichn = ls_item-lichn.
ls_final-vfdat = ls_item-sled.
ls_final-ablad = ls_item-ablad.
ls_final-sgtxt = ls_item-sgtxt.
ls_final-lsmng = ls_item-lsmng.
ls_final-lsmeh = ls_item-lsmeh.
ls_final-pmat1 = ls_item-ptyp1.
ls_final-pmatno1 = ls_item-palno1.
ls_final-pmatqty1 = ls_item-gwt1.
ls_final-pmat2 = ls_item-ptyp2.
ls_final-pmatno2 = ls_item-palno2.
ls_final-pmatqty2 = ls_item-gwt2.
ls_final-pmat3 = ls_item-ptyp3.
ls_final-pmatno3 = ls_item-palno3.
ls_final-pmatqty3 = ls_item-gwt3.
* Begin of changes by Ranjith for IRIS EPDK9A056E
ls_final-bagowner = ls_item-bagowner.
*CLEAR GS_PACK
* Read table gt_pack into gs_pack with key
* werks = gs_head-werks
* matnr = ls_item-matnr
* bagowner = ls_item-bagowner
* binary-search.

* iF SY-SUBRC EQ 0.
* LS_FINAL-JUTEBAG = GS_PACK-JUTEBAG.
* ls_final-bwart = gs_pack-bwart.
*CLEAR GS_PACK_MARA.
*READ TABLE gt_pack_mara INTO gs_pack_mara WITH KEY
* matnr = gs_pack-matnr
* BINARY SEARCH.
*
*IF sy-subrc EQ 0.
* ls_final-PACKmeins = gs_pack_mara-meins.
*ENDIF.

* ENDIF.
* End of changes By Ranjith for IRIS EPDK9A056E
* ls_final-pmat4 = ls_item-ptyp4.
* ls_final-pmatno4 = ls_item-palno4.
* ls_final-pmatqty4 = ls_item-gwt4.

IF ls_final-lifnr IS INITIAL.
ls_ebeln-ebeln = ls_final-ebeln.
ls_ebeln-ebelp = ls_final-ebelp.
APPEND ls_ebeln TO lt_ebeln.
CLEAR ls_ebeln.

ls_vbeln-vbeln = ls_final-delno.
ls_vbeln-posnr = ls_final-posnr.
APPEND ls_vbeln TO lt_vbeln.
CLEAR ls_vbeln.
ENDIF.
****************added by mohan**************
ls_final-kunnr = ls_item-kunnr.
ls_final-matkl = ls_item-matkl.
ls_final-ekgrp = ls_item-ekgrp.
ls_final-ekorg = ls_item-ekorg.
ls_final-value = ls_item-value.
ls_final-info_rec = ls_item-info_rec. "" *-- Added on 08.05.2018 by
IN_DILLIBABU
ls_final-cuky = ls_item-cuky .
*Begin of changes by R.Ranjtih For IRIS EPDK9A07HP
ls_final-evers = ls_item-evers.
*End of changes by R.Ranjtih For IRIS EPDK9A07HP
ls_final-unit = ls_item-unit .
ls_final-autobatch = ls_item-autobatch .
*Begin of changes EPDK9A0819 4000004172 for IRIS Ranjith
ls_final-goodbag = ls_item-good_bag1.
ls_final-averagebag = ls_item-avg_bag1.
ls_final-badbag = ls_item-bad_bag1.
*End of changes EPDK9A0819 4000004172 for IRIS Ranjith
******************EOA by mohan**************
APPEND ls_final TO gt_final.
CLEAR ls_final.
ENDIF.
ENDLOOP.

IF lt_ebeln[] IS NOT INITIAL.


SELECT ebeln, lifnr FROM ekko
INTO TABLE @DATA(lt_ekko)
FOR ALL ENTRIES IN @lt_ebeln
WHERE ebeln = @lt_ebeln-ebeln.
ENDIF.

IF lt_vbeln[] IS NOT INITIAL.


SELECT vbeln, lifnr FROM likp
INTO TABLE @DATA(lt_likp)
FOR ALL ENTRIES IN @lt_vbeln
WHERE vbeln = @lt_vbeln-vbeln.
ENDIF.

IF lt_ebeln[] IS NOT INITIAL AND


lt_vbeln[] IS NOT INITIAL.
LOOP AT gt_final ASSIGNING FIELD-SYMBOL(<fs_final>).
READ TABLE lt_ekko INTO DATA(ls_ekko)
WITH KEY ebeln = <fs_final>-ebeln.
IF sy-subrc = 0.
<fs_final>-lifnr = ls_ekko-lifnr.
ELSE.
READ TABLE lt_likp INTO DATA(ls_likp)
WITH KEY vbeln = <fs_final>-vbeln.
IF sy-subrc = 0.
<fs_final>-lifnr = ls_likp-lifnr.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
*Begin of changes EPDK9A0819 4000004172 for IRIS Ranjith

* Get the
SELECT SINGLE bukrs FROM t001k
INTO lv_bukrs
WHERE bwkey = gs_head-werks.
* Get bag details
REFRESH lt_bags.
SELECT * FROM zngmm_onlplant
INTO TABLE lt_bags_on
FOR ALL ENTRIES IN gt_final
WHERE bukrs = lv_bukrs
AND werks = gs_head-werks
AND ekorg = gt_final-ekorg
AND matnr = gt_final-matnr.

IF sy-subrc EQ 0.
SORT lt_bags_on BY bukrs werks ekorg matnr.

REFRESH lt_mslb.
* Get the Special Stocks with Vendor from MSLB.
SELECT matnr
werks
charg
sobkz
lifnr
lblab
FROM mslb
INTO TABLE lt_mslb
FOR ALL ENTRIES IN lt_bags_on
WHERE matnr EQ lt_bags_on-jutebag
AND werks EQ gs_head-werks
AND sobkz = lc_sobkz_o.
*

IF sy-subrc EQ 0.
SORT lt_mslb BY matnr werks lifnr .
* Move the local internal table
lt_final[] = gt_final[].
* Delete the vendors which is not available in the Item table
SORT lt_final BY lifnr.
LOOP AT lt_mslb ASSIGNING <fs_mslb>.

CLEAR ls_final.
READ TABLE lt_final INTO ls_final WITH KEY
lifnr = <fs_mslb>-lifnr
BINARY SEARCH.
IF sy-subrc ne 0.
CLEAR <fs_mslb>-matnr.
else.
lv_lblab = <fs_mslb>-lblab + lv_lblab.
ENDIF.
ENDLOOP.
*Delete the records .
DELETE lt_mslb WHERE matnr IS INITIAL.
SORT lt_mslb BY matnr werks lifnr .

ENDIF.
ENDIF.

* Get the AVerage bag from the table .

REFRESH lt_mail.
IF gt_final IS NOT INITIAL.
SELECT bukrs
werks
bsart
bagtolerance
avgbagtolerance
FROM zgtmmtr_mail
INTO TABLE lt_mail
WHERE bukrs = lv_bukrs
AND werks = gs_head-werks.

IF sy-subrc EQ 0.
DELETE lt_mail WHERE avgbagtolerance IS INITIAL.
SORT lt_mail BY avgbagtolerance.
DELETE ADJACENT DUPLICATES FROM lt_mail COMPARING avgbagtolerance.
SORT lt_mail BY bukrs werks.

REFRESH lt_t159l.
*Default values for inventory management and physical invent.
SELECT werks
xsong
FROM t159l
INTO TABLE lt_t159l
WHERE werks = gs_head-werks.

IF sy-subrc EQ 0.
SORT lt_t159l BY werks.
ENDIF.
ENDIF.

* Check and raise the error message.


LOOP AT gt_final INTO ls_final .

CLEAR ls_mail.
READ TABLE lt_mail INTO ls_mail WITH KEY
bukrs = lv_bukrs
werks = gs_head-werks
BINARY SEARCH.

IF sy-subrc EQ 0.

IF ls_final-pmatqty1 IS NOT INITIAL AND


ls_item-grqty IS NOT INITIAL.
CLEAR: lv_cal,
lv_msg,
lv_weight,
lv_menge_cal,
lv_toler,
lv_toler_pos,
lv_toler_neg.

lv_menge_cal = ls_final-grqty * 1000.


* Calculate the tolerance .
lv_toler = ( ls_mail-bagtolerance / 100 ) * ls_mail-avgbagtolerance.
CONDENSE lv_toler.
*Calculate the Bag tolerance.
lv_cal = ( lv_menge_cal / ls_final-pmatqty1 ).
CONDENSE lv_cal.
* Add the tolerance limit .
lv_toler_pos = ls_mail-avgbagtolerance + lv_toler.
CONDENSE lv_toler_pos.
* Subtract the tolerance limit .
lv_toler_neg = ls_mail-avgbagtolerance - lv_toler.
CONDENSE lv_toler_neg.
* Check the toler
IF ls_mail-avgbagtolerance IS NOT INITIAL.
IF lv_cal GT lv_toler_pos OR
lv_cal LT lv_toler_neg .
lv_weight = ls_final-pmatqty1.
CONDENSE: lv_weight NO-GAPS,
ls_mail-avgbagtolerance NO-GAPS.
CONCATENATE text-037 lv_weight
text-038 ls_mail-avgbagtolerance
text-039 INTO lv_msg SEPARATED BY space.
MESSAGE lv_msg TYPE lc_err.
ENDIF.
ENDIF.
ENDIF.

* Check the PMAT2 .


IF ls_final-pmatqty2 IS NOT INITIAL AND
ls_item-grqty IS NOT INITIAL.
CLEAR: lv_cal,
lv_msg,
lv_weight,
lv_menge_cal,
lv_toler,
lv_toler_pos,
lv_toler_neg.

lv_menge_cal = ls_final-grqty * 1000.


* Calculate the tolerance .
lv_toler = ( ls_mail-bagtolerance / 100 ) * ls_mail-avgbagtolerance.
CONDENSE lv_toler.
*Calculate the Bag tolerance.
lv_cal = ( lv_menge_cal / ls_final-pmatqty2 ).
CONDENSE lv_cal.
* Add the tolerance limit .
lv_toler_pos = ls_mail-avgbagtolerance + lv_toler.
* Subtract the tolerance limit .
lv_toler_neg = ls_mail-avgbagtolerance - lv_toler.
* Check the toler
IF ls_mail-avgbagtolerance IS NOT INITIAL.
IF lv_cal GT lv_toler_pos OR
lv_cal LT lv_toler_neg .
lv_weight = ls_final-pmatqty2.
CONDENSE: lv_weight NO-GAPS,
ls_mail-avgbagtolerance NO-GAPS.
CONCATENATE text-037 lv_weight
text-038 ls_mail-avgbagtolerance
text-039 INTO lv_msg SEPARATED BY space.
MESSAGE lv_msg TYPE lc_err.
ENDIF.
ENDIF.
ENDIF.
* Check the PMAT3 .
IF ls_final-pmatqty3 IS NOT INITIAL AND
ls_item-grqty IS NOT INITIAL.
CLEAR: lv_cal,
lv_msg,
lv_weight,
lv_menge_cal,
lv_toler,
lv_toler_pos,
lv_toler_neg.

lv_menge_cal = ls_final-grqty * 1000.


* Calculate the tolerance .
lv_toler = ( ls_mail-bagtolerance / 100 ) * ls_mail-avgbagtolerance.
CONDENSE lv_toler.
*Calculate the Bag tolerance.
lv_cal = ( lv_menge_cal / ls_final-pmatqty3 ).
CONDENSE lv_cal.
* Add the tolerance limit .
lv_toler_pos = ls_mail-avgbagtolerance + lv_toler.
* Subtract the tolerance limit .
lv_toler_neg = ls_mail-avgbagtolerance - lv_toler.
* Check the toler
IF ls_mail-avgbagtolerance IS NOT INITIAL.
IF lv_cal GT lv_toler_pos OR
lv_cal LT lv_toler_neg .
lv_weight = ls_final-pmatqty3.
CONDENSE: lv_weight NO-GAPS,
ls_mail-avgbagtolerance NO-GAPS.
CONCATENATE text-037 lv_weight
text-038 ls_mail-avgbagtolerance
text-039 INTO lv_msg SEPARATED BY space.
MESSAGE lv_msg TYPE lc_err.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
* Check the stock and error message.
* Check the bagowner .
IF ls_final-bagowner IS NOT INITIAL.
CLEAR ls_mslb.

* Get the packaging material from the table ZNGMM_ONLPLANT and move it to
* BAPI
CLEAR ls_bags .
READ TABLE lt_bags_on INTO ls_bags_on WITH KEY
bukrs = lv_bukrs
werks = gs_head-werks
ekorg = ls_item-ekorg
matnr = ls_item-matnr
BINARY SEARCH.
IF sy-subrc EQ 0.

READ TABLE lt_mslb INTO ls_mslb WITH KEY


matnr = ls_bags_on-jutebag
werks = gs_head-werks
lifnr = ls_final-lifnr
BINARY SEARCH.

IF sy-subrc EQ 0.

IF lv_lblab LT ls_final-pmatqty1.
* ls_mslb-lblab LT ls_final-pmatqty2 OR
* ls_mslb-lblab LT ls_final-pmatqty3 .
CLEAR ls_t159l.
* If the negative stock is not maintained then raise the error message
* READ TABLE lt_t159l INTO ls_t159l WITH KEY
* werks = gs_head-werks
* BINARY SEARCH.
*
* IF sy-subrc EQ 0.
*****************Commented for Demo Need to Remove************
* IF ls_t159l-xsong IS INITIAL.
CLEAR: lv_msg,
lv_weight.
lv_weight = ls_final-pmatqty1.
CONDENSE lv_weight NO-GAPS.
CONCATENATE text-040 lv_weight
text-041 ls_final-lifnr
INTO lv_msg SEPARATED BY space.
MESSAGE lv_msg TYPE lc_err.

* ENDIF.
*********************************************************
* ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
* Cumalate the bag percentage total
CLEAR: lv_total,
lv_msg.
lv_total = ls_final-goodbag +
ls_final-averagebag +
ls_final-badbag.
CONDENSE lv_total NO-GAPS.

IF lv_total GT 100.
CONCATENATE text-042 lv_total
text-043 INTO lv_msg
SEPARATED BY space.
MESSAGE lv_msg TYPE lc_err.
ENDIF.
ENDLOOP.

ENDIF.
*End of changes EPDK9A0819 4000004172 for IRIS Ranjith
ENDFORM.
*&------------------------- --------------------------------------------*
*& Form POPULATE_DELIVERY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM populate_delivery CHANGING cs_item TYPE ty_item.

SELECT SINGLE kunnr kunag


FROM likp INTO (cs_item-kunwe, cs_item-kunag)
WHERE vbeln = cs_item-delno.
IF sy-subrc = 0.
SELECT kunnr, name1 FROM kna1
INTO TABLE @DATA(lt_kna1)
WHERE kunnr IN (@cs_item-kunwe, @cs_item-kunag).
ENDIF.

READ TABLE lt_kna1 INTO DATA(ls_kna1)


WITH KEY kunnr = cs_item-kunwe.
IF sy-subrc = 0.
cs_item-name2 = ls_kna1-name1.
ENDIF.

CLEAR ls_kna1.
READ TABLE lt_kna1 INTO ls_kna1
WITH KEY kunnr = cs_item-kunag.
IF sy-subrc = 0.
cs_item-name3 = ls_kna1-name1.
ENDIF.
IF cs_item-ebeln IS INITIAL.
SELECT vbeln, vgbel FROM lips
INTO TABLE @DATA(lt_lips)
WHERE vbeln = @cs_item-delno.
IF sy-subrc = 0.
READ TABLE lt_lips INTO DATA(ls_lips) INDEX 1.
IF sy-subrc = 0.
cs_item-ebeln = ls_lips-vgbel.
ENDIF.
ENDIF.
ENDIF.

gs_item-kunwe = cs_item-kunwe.
gs_item-kunag = cs_item-kunag.
gs_item-name2 = cs_item-name2.
gs_item-name3 = cs_item-name3.
IF gs_head-wtype = gc_sto.
gs_item-ebeln = cs_item-ebeln.
ELSE.
gs_item-vbeln = cs_item-ebeln.
ENDIF.
*Begin of changes by R.Ranjtih For IRIS EPDK9A07HP
IF gs_item-trlos IS INITIAL.
*End of changes by R.Ranjtih For IRIS EPDK9A07HP
gs_item-trlos = cs_item-trlos.
*Begin of changes by R.Ranjtih For IRIS EPDK9A07HP
ENDIF.
*End of changes by R.Ranjtih For IRIS EPDK9A07HP

cs_item-color = 'C300'.

* Execute PAI of actual screen to update ALV


CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'ENTER'.

* A flush is required to trigger the refresh


CALL METHOD cl_gui_cfw=>flush.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form VALIDATE_LGORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM validate_lgort USING
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol
ps_mod TYPE lvc_s_modi.

DATA: lv_lgort TYPE lgort_d.

lv_lgort = ps_mod-value.
IF lv_lgort IS INITIAL.
EXIT.
ENDIF.
CLEAR gs_item.
READ TABLE gt_item INTO gs_item INDEX ps_mod-row_id.
SELECT SINGLE werks, lgort FROM t001l
INTO @DATA(ls_t001l)
WHERE werks = @gs_head-werks
AND lgort = @lv_lgort.
IF sy-subrc <> 0.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid = '0K'
i_msgno = '000'
i_msgty = 'E'
i_msgv1 = 'Enter a Valid Storage Location'
i_fieldname = ps_mod-fieldname
i_row_id = ps_mod-row_id.
CALL METHOD pr_data_changed->display_protocol.
EXIT.
ELSE.
CALL METHOD go_alv_itm->refresh_table_display.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_MESSAGE
*&---------------------------------------------------------------------*
FORM display_message USING pt_return TYPE tt_return.
DATA: ls_msgtab TYPE esp1_message_wa_type,
lt_msgtab TYPE esp1_message_tab_type.

LOOP AT pt_return INTO DATA(ls_return).


ls_msgtab-msgid = ls_return-id.
ls_msgtab-msgno = ls_return-number.
ls_msgtab-msgty = ls_return-type.
ls_msgtab-msgv1 = ls_return-message_v1.
ls_msgtab-msgv2 = ls_return-message_v2.
ls_msgtab-msgv3 = ls_return-message_v3.
ls_msgtab-msgv4 = ls_return-message_v4.

IF ls_msgtab-msgid = 'ZGTMM_MSG' AND ls_msgtab-msgno = 000.


CONDENSE ls_return-message.
* Msg 1
ls_msgtab-msgv1 = ls_return-message.
CONDENSE ls_msgtab-msgv1.

* Msg 2
ls_msgtab-msgv2 = ls_return-message_v1.
CONDENSE ls_msgtab-msgv2.

* Msg 3
ls_msgtab-msgv3 = ls_return-message_v2.
CONDENSE ls_msgtab-msgv3.

* Msg 4
ls_msgtab-msgv4 = ls_return-message_v3.
CONDENSE ls_msgtab-msgv4.
ENDIF.

* Line No
ls_msgtab-lineno = sy-tabix.
CONDENSE ls_msgtab-lineno.

APPEND ls_msgtab TO lt_msgtab.


CLEAR ls_msgtab.
ENDLOOP.
IF lt_msgtab IS NOT INITIAL.
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
i_message_tab = lt_msgtab.

*Begin of changes by R.Ranjith for IRIS EPDK9A056F


CLEAR ok_code.
*LEAVE TO SCREEN 9000.
* End of changes by R.Ranjith for IRIS EPDK9A056F
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_PO_CHARG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*FORM get_po_charg CHANGING ct_vbeln TYPE tty_vbeln.
*
* DATA: ls_likp TYPE likp,
* lt_wueb TYPE TABLE OF wueb.
*
* DATA(lt_vbeln) = ct_vbeln[].
* SORT lt_vbeln BY vbeln.
* DELETE ADJACENT DUPLICATES FROM lt_vbeln COMPARING vbeln.
*
* LOOP AT lt_vbeln INTO DATA(ls_vbeln).
* CALL FUNCTION 'SD_DELIVERY_ITEMS_RECEIVE'
* EXPORTING
* vbeln = ls_vbeln-vbeln
* if_lock = space
* IMPORTING
* es_likp = ls_likp
* TABLES
* wueb = lt_wueb
* EXCEPTIONS
* no_delivery = 1
* delivery_not_suitable = 2
* delivery_not_posted_gi = 3
* no_items_receiving = 4
* no_receiving_plant = 5
* no_delivery_item = 6
* no_movement_type = 7
* delivery_locked = 8
* OTHERS = 9.
* IF sy-subrc = 0 AND lt_wueb IS NOT INITIAL.
* LOOP AT lt_wueb INTO DATA(ls_wueb).
* READ TABLE ct_vbeln ASSIGNING FIELD-SYMBOL(<fs_vbeln>)
* WITH KEY vbeln = ls_wueb-vbeln
* posnr = ls_wueb-vbelp.
* IF sy-subrc = 0.
* <fs_vbeln>-ebeln = ls_wueb-ebeln.
* <fs_vbeln>-ebelp = ls_wueb-ebelp.
* <fs_vbeln>-charg = ls_wueb-charg.
* ENDIF.
* ENDLOOP.
* ENDIF.
* ENDLOOP.
*ENDFORM.
*&---------------------------------------------------------------------*
*& Form PO_F4
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM po_f4 USING p_row_no TYPE lvc_s_roid.

DATA: ls_f4po TYPE ty_f4po,


ls_mapping TYPE dselc,
lt_mapping TYPE STANDARD TABLE OF dselc,
lt_f4po TYPE STANDARD TABLE OF ty_f4po,
lt_return_tab TYPE STANDARD TABLE OF ddshretval.

READ TABLE gt_item ASSIGNING FIELD-SYMBOL(<fs_item>)


INDEX p_row_no-row_id.
IF sy-subrc = 0.
*-To get the purchase order
SELECT ebeln, ebelp, matnr, meins FROM ekpo
INTO TABLE @DATA(lt_ekpo)
WHERE matnr = @<fs_item>-matnr AND
werks = @gs_head-werks AND
loekz = @space AND
elikz = @space.
IF sy-subrc = 0.
SELECT SINGLE matnr, maktx FROM makt
INTO @DATA(ls_makt)
WHERE matnr = @<fs_item>-matnr.

SELECT ebeln, lifnr FROM ekko


INTO TABLE @DATA(lt_ekko)
FOR ALL ENTRIES IN @lt_ekpo
WHERE ebeln = @lt_ekpo-ebeln.

IF sy-subrc = 0.
SELECT lifnr, name1 FROM lfa1
INTO TABLE @DATA(lt_lfa1)
FOR ALL ENTRIES IN @lt_ekko
WHERE lifnr = @lt_ekko-lifnr.
ENDIF.
ENDIF.
ENDIF.

LOOP AT lt_ekpo INTO DATA(ls_ekpo).


ls_f4po-ebeln = ls_ekpo-ebeln.
ls_f4po-ebelp = ls_ekpo-ebelp.
ls_f4po-matnr = ls_ekpo-matnr.
ls_f4po-maktx = ls_makt-maktx.

READ TABLE lt_ekko INTO DATA(ls_ekko)


WITH KEY ebeln = ls_ekpo-ebeln.
IF sy-subrc = 0.
ls_f4po-lifnr = ls_ekko-lifnr.
ENDIF.

READ TABLE lt_lfa1 INTO DATA(ls_lfa1)


WITH KEY lifnr = ls_ekko-lifnr.
IF sy-subrc = 0.
ls_f4po-name1 = ls_lfa1-name1.
ENDIF.
APPEND ls_f4po TO lt_f4po.
CLEAR ls_f4po.
ENDLOOP.

*-- Added on 17.09.2018 by IN_DILLIBABU - To show only po list belongs to WB/item


vendor
DELETE lt_f4po WHERE lifnr NE <fs_item>-lifnr.

IF lt_f4po[] IS NOT INITIAL.


ls_mapping-fldname = 'F0001'.
ls_mapping-dyfldname = 'EBELN'.
APPEND ls_mapping TO lt_mapping.

ls_mapping-fldname = 'F0002'.
ls_mapping-dyfldname = 'EBELP'.
APPEND ls_mapping TO lt_mapping.

* ls_mapping-fldname = 'F0003'.
* ls_mapping-dyfldname = 'MATNR'.
* APPEND ls_mapping TO lt_mapping.
*
* ls_mapping-fldname = 'F0004'.
* ls_mapping-dyfldname = 'MAKTX'.
* APPEND ls_mapping TO lt_mapping.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'


EXPORTING
retfield = 'EBELN'
dynpprog = sy-repid
dynpnr = sy-dynnr
value_org = 'S'
TABLES
value_tab = lt_f4po
return_tab = lt_return_tab
dynpfld_mapping = lt_mapping
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.

IF sy-subrc = 0 AND lt_return_tab[] IS NOT INITIAL.


READ TABLE lt_return_tab INTO DATA(ls_return_tab) WITH KEY fieldname =
'F0001'.
IF sy-subrc = 0.
<fs_item>-ebeln = ls_return_tab-fieldval.
ENDIF.

READ TABLE lt_return_tab INTO ls_return_tab WITH KEY fieldname = 'F0002'.


IF sy-subrc = 0.
<fs_item>-ebelp = ls_return_tab-fieldval.
ENDIF.

IF <fs_item>-charg IS INITIAL.
IF gs_head-protype = '1'.
PERFORM get_batch_id USING <fs_item>-item CHANGING <fs_item>.
ELSE.
SELECT MIN( item ) FROM zgtmmtr_wsitem
INTO @DATA(lv_item)
WHERE matnr = @<fs_item>-matnr AND
parnr = @<fs_item>-lifnr.
PERFORM get_batch_id USING lv_item CHANGING <fs_item>.
ENDIF.
ENDIF.

CLEAR ls_ekpo.
READ TABLE lt_ekpo INTO ls_ekpo
WITH KEY ebeln = <fs_item>-ebeln
ebelp = <fs_item>-ebelp.
IF sy-subrc = 0.
<fs_item>-uom = ls_ekpo-meins.
ENDIF.
* EPDK9A0CVD IN_RANJITHR S 4000004952
* IF <fs_item>-wbuom <> <fs_item>-uom AND <fs_item>-wbuom IS NOT INITIAL.
* PERFORM p_conv_mat_unit USING <fs_item>-matnr
* <fs_item>-wbuom
* <fs_item>-uom
* CHANGING <fs_item>-grqty.
* ENDIF.
* EPDK9A0CVD IN_RANJITHR S 4000004952
*-Data Population for Batch Split Validation
READ TABLE gt_grqty ASSIGNING FIELD-SYMBOL(<fs_grqty>)
WITH KEY ebeln = space
matnr = <fs_item>-matnr.
IF sy-subrc = 0.
<fs_grqty>-ebeln = <fs_item>-ebeln.
<fs_grqty>-ebelp = <fs_item>-ebelp.
<fs_grqty>-menge = <fs_item>-grqty.
ENDIF.

CALL METHOD go_alv_itm->refresh_table_display.


PERFORM set_cursor_alv USING p_row_no-row_id
'EBELN'.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form POPULATE_GRQTY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM populate_grqty USING
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol
ps_mod TYPE lvc_s_modi
pv_fname TYPE lvc_fname.

DATA: lv_ebeln TYPE ebeln,


lv_ebelp TYPE ebelp.

READ TABLE gt_item ASSIGNING FIELD-SYMBOL(<fs_item>)


INDEX ps_mod-row_id.
IF sy-subrc = 0.

IF pv_fname = 'EBELN'.
<fs_item>-ebeln = lv_ebeln = ps_mod-value.

SELECT SINGLE ebeln FROM ekko


INTO @DATA(ls_ebeln)
WHERE ebeln = @lv_ebeln.
ELSEIF pv_fname = 'EBELP'.
<fs_item>-ebelp = lv_ebelp = ps_mod-value.

SELECT SINGLE ebeln, ebelp FROM ekpo


INTO @DATA(ls_ebelp)
WHERE ebeln = @<fs_item>-ebeln
AND ebelp = @lv_ebelp
AND matnr = @<fs_item>-matnr
AND loekz = @space
AND elikz = @space.
ENDIF.

IF sy-subrc <> 0.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid = '0K'
i_msgno = '000'
i_msgty = 'E'
i_msgv1 = 'Enter Valid PO Number'
i_fieldname = ps_mod-fieldname
i_row_id = ps_mod-row_id.
CALL METHOD pr_data_changed->display_protocol.
EXIT.
ENDIF.

IF ls_ebelp-ebeln IS NOT INITIAL AND ls_ebelp-ebelp IS NOT INITIAL.

SELECT SINGLE ebeln ebelp FROM ekpo


INTO ls_ebelp
WHERE ebeln = <fs_item>-ebeln
AND ebelp = lv_ebelp
AND matnr = <fs_item>-matnr
AND loekz = space
AND elikz = space.
IF sy-subrc IS NOT INITIAL.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid = '0K'
i_msgno = '000'
i_msgty = 'E'
i_msgv1 = 'Enter Valid PO and Item'
i_fieldname = ps_mod-fieldname
i_row_id = ps_mod-row_id.
CALL METHOD pr_data_changed->display_protocol.
EXIT.
ENDIF.

IF <fs_item>-charg IS INITIAL.
IF gs_head-protype = '1'.
PERFORM get_batch_id USING <fs_item>-item CHANGING <fs_item>.
ELSE.
SELECT MIN( item ) FROM zgtmmtr_wsitem
INTO @DATA(lv_item)
WHERE matnr = @<fs_item>-matnr AND
parnr = @<fs_item>-lifnr.
PERFORM get_batch_id USING lv_item CHANGING <fs_item>.
ENDIF.
ENDIF.
SELECT SINGLE ebeln, ebelp, matnr, meins FROM ekpo
INTO @DATA(ls_ekpo)
WHERE ebeln = @ls_ebelp-ebeln
AND ebelp = @ls_ebelp-ebelp.
IF sy-subrc = 0.
<fs_item>-uom = ls_ekpo-meins.
ENDIF.

IF <fs_item>-wbuom <> <fs_item>-uom AND <fs_item>-uom IS NOT INITIAL.


PERFORM p_conv_mat_unit USING <fs_item>-matnr
<fs_item>-wbuom
<fs_item>-uom
CHANGING <fs_item>-grqty.
ENDIF.

*-Data Population for Batch Split Validation


READ TABLE gt_grqty ASSIGNING FIELD-SYMBOL(<fs_grqty>)
WITH KEY ebeln = space
matnr = <fs_item>-matnr.
IF sy-subrc = 0.
<fs_grqty>-ebeln = ls_ebelp-ebeln.
<fs_grqty>-ebelp = ls_ebelp-ebelp.
<fs_grqty>-menge = <fs_item>-grqty.
ENDIF.
ENDIF.

CALL METHOD go_alv_itm->refresh_table_display.


ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form HIDE_SCR_9002
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM hide_scr_9002 .
IF gs_head-direction = gc_in." AND gs_head-wtype <> 'STO'.
LOOP AT SCREEN.
CASE screen-group1.
WHEN 'B1'.
screen-input = 1.
MODIFY SCREEN.
ENDCASE.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
CASE screen-group1.
WHEN 'B1'.
screen-input = 0.
MODIFY SCREEN.
ENDCASE.
ENDLOOP.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_BATCH_ID
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_batch_id USING pv_item CHANGING ps_item TYPE ty_item.
DATA : lv_fmname TYPE rs38l_fnam,
ls_batch TYPE zgtppst_autobatch,
ls_eket TYPE eket.

* TRY.
* SELECT SINGLE param5
* FROM zgtcatr_param
* INTO lv_fmname
* WHERE prognam EQ 'AUTOBATCH'
* AND werks EQ gs_head-werks
* AND modules EQ 'MM'.
* CATCH cx_sy_open_sql_db.
* ENDTRY.
* IF sy-subrc EQ 0.
*
* CONDENSE lv_fmname NO-GAPS.
*
* ls_batch-matnr = ls_item-matnr.
* ls_batch-werks = gs_head-werks.
** ls_batch-budat = ls_head-budat.
* ls_batch-ebeln = ls_item-ebeln.
* ls_batch-ebelp = ls_item-ebelp.
*
* TRY.
** Calling the FM to Create a AUTOBATCH
* CALL FUNCTION lv_fmname
* EXPORTING
* is_batch = ls_batch
* IMPORTING
* ev_charg = ls_item-charg.
*
** READ TABLE lt_item ASSIGNING <fs_item> INDEX lv_line.
** IF sy-subrc EQ 0.
** <fs_item>-charg = ls_item-charg.
** IF <fs_item>-ebeln EQ ls_9005-ebeln AND <fs_item>-ebelp EQ ls_9005-
ebelp AND <fs_item>-line_item EQ ls_9005-line_item.
** ls_9005-charg = ls_item-charg.
** ENDIF.
** UNASSIGN <fs_item>.
** ENDIF.
*
* CATCH cx_sy_dyn_call_param_missing.
* ENDTRY.
*
* ELSE.
* SELECT SINGLE charg
* FROM eket
* INTO ls_item-charg
* WHERE ebeln EQ ls_item-ebeln
* AND ebelp EQ ls_item-ebelp.
*
** PERFORM p_get_eket USING ls_item
** CHANGING ls_eket.
*
** IF ls_eket-charg IS NOT INITIAL.
**
** ls_item-charg = ls_eket-charg.
** MODIFY lt_item FROM ls_item INDEX tc_item-current_line.
**
** READ TABLE lt_item ASSIGNING <fs_item> INDEX lv_line.
** IF sy-subrc EQ 0.
** ls_9005 = <fs_item>.
** ENDIF.
**
** ENDIF.
*
* ENDIF.

* IF ps_item-ebeln IS NOT INITIAL AND ps_item-ebelp IS NOT INITIAL.


* SELECT SINGLE charg FROM eket
* INTO ps_item-charg
* WHERE ebeln = ps_item-ebeln AND
* ebelp = ps_item-ebelp.
* ENDIF.
DATA: ls_item TYPE goitem,
ls_dyn TYPE godynpro,
lv_code TYPE sy-ucomm VALUE 'OK_GO'.

DATA: lt_param TYPE TABLE OF zgtcatr_param,


lt_batch TYPE TABLE OF zgtppst_autobatch.

IF ps_item-charg IS NOT INITIAL AND ps_item-autobatch IS NOT INITIAL.


RETURN.
ENDIF.

DATA(lv_batch) = ps_item-charg.
CLEAR ps_item-charg.
IF gs_head-wtype = gc_po OR gs_head-wtype = gc_sto.

SELECT SINGLE charg FROM zgtmmtr_qcrecord


INTO ps_item-charg
WHERE wbid = gs_head-wbid AND
item = pv_item AND
matnr = ps_item-matnr AND
lifnr = ps_item-lifnr .
IF sy-subrc IS NOT INITIAL.
IF ( gs_head-wtype = gc_po AND ps_item-ebeln IS NOT INITIAL AND
ps_item-ebelp IS NOT INITIAL ) OR ( gs_head-wtype = gc_sto AND
ps_item-delno IS NOT INITIAL AND ps_item-posnr IS NOT INITIAL ).
ls_item-bwart = 101.
ls_item-bukrs_for_stock = gv_bukrs.
ls_item-matnr = ps_item-matnr.
ls_item-werks = gs_head-werks.
IF gs_head-wtype = gc_sto.
ls_item-vbeln = ps_item-delno.
ls_item-posnr = ps_item-posnr.
ELSE.
ls_item-ebeln = ps_item-ebeln.
ls_item-ebelp = ps_item-ebelp.
ENDIF.
ls_item-iprkz = 'D'.

ls_dyn-action = 'A01'.
IF gs_head-wtype = gc_po.
ls_dyn-refdoc = 'R01'.
ELSEIF gs_head-wtype = gc_sto.
ls_dyn-refdoc = 'R05'.
ENDIF.

CALL FUNCTION 'ZGTMMFM_AUTOBATCH_MIGO'


EXPORTING
igoitem = ls_item
igodynpro = ls_dyn
ifcode = lv_code
idate = gs_head-budat
IMPORTING
echarg = ps_item-charg
* MESSAGE =
TABLES
tt_param = lt_param
tt_batch = lt_batch
EXCEPTIONS
no_method_create = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
ENDIF.
ENDIF.

IF ps_item-charg IS NOT INITIAL.


ps_item-autobatch = abap_true.
ELSE.
ps_item-charg = lv_batch.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form POPULATE_CONFIG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM populate_config CHANGING ps_config TYPE zgtmmtr_wbconfig.
SELECT SINGLE * FROM zgtmmtr_wbconfig
INTO ps_config
WHERE werks = gs_head-werks." AND
* matnr = space AND
* matkl = space.
IF sy-subrc = 0.
IF ps_config-grn IS INITIAL.
ps_config-grn = 'B'.
ENDIF.
ENDIF.

REFRESH gt_config_main.
SELECT * FROM zgtmmtr_wbconfig
INTO TABLE gt_config_main
WHERE werks = gs_head-werks.

IF sy-subrc EQ 0.
SORT gt_config_main BY werks matnr matkl.
ENDIF.

SELECT SINGLE currency FROM zgtmmtr_wbmaster


INTO gv_currency
WHERE werks = gs_head-werks.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form POPULATE_SCREEN_WS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM populate_screen_ws CHANGING lv_wbuom TYPE meins
lv_type TYPE char2..
DATA: ls_matnr TYPE ty_matnr,
ls_ebeln TYPE ty_ebeln,
ls_vbeln TYPE ty_vbeln,
lv_uom TYPE meins,
lv_cnt TYPE zdt_wbitem,
lv_difqty TYPE menge_d,
lv_tlqty TYPE menge_d,
lv_nobag TYPE p DECIMALS 6,
lt_vbeln TYPE TABLE OF ty_vbeln,
lt_ebeln TYPE TABLE OF ty_ebeln,
lt_matnr TYPE TABLE OF ty_matnr.

*-to get the item details of wb item.


SELECT * FROM zgtmmtr_wsitem
INTO TABLE @DATA(lt_wsitem)
WHERE wbid = @gs_head-wbid.
* AND werks = @gs_head-werks.
IF sy-subrc = 0.
IF gv_cncl IS INITIAL.
DELETE lt_wsitem WHERE mblnr IS NOT INITIAL.
ELSE.
DELETE lt_wsitem WHERE mblnr IS INITIAL.
ENDIF.
ELSE.
MESSAGE 'Enter Valid Weighscale ID' TYPE 'E'.
ENDIF.

*Begin of changes by R.Ranjtih For IRIS EPDK9A056F


IF lt_wsitem IS NOT INITIAL.
* select * from zgtmmtr_wbpack
* into table @data(lt_pack)
* FOR ALL ENTRIES IN lt_wbitem
* where werks = @it_wbitem-werks
* and matnr = @it_wbitem-matnr
* and bagowner = @it-wbitem-bagowner.
*REFRESH gt_pack.
* select * from zgtmmtr_wbpack
* APPENDING TABLE gt_pack
* FOR ALL ENTRIES IN lt_wbitem
* where werks = it_wbitem-werks
* and matnr = it_wbitem-matnr
* and bagowner = it-wbitem-bagowner.

*IF sy-subrc EQ 0.
** SORT gt_pack BY werks matnr bagowner.
*ENDIF.

*IF gt_pack IS NOT INITIAL.


* REFRESH gt_pack_mara.
* SELECT matnr
* meins
* FROM mara
* APPENDING TABLE gt_pack_mara
* FOR ALL ENTRIES IN gt_pack
* WHERE matnr = gt_pack-jutebag.

* IF sy-subrc EQ 0.
* SORT gt_pack_mara BY matnr.
* ENDIF.
ENDIF.

IF lt_wsitem[] IS NOT INITIAL.


LOOP AT lt_wsitem INTO DATA(ls_wsitem).
*-Populate Material to TEMP internal table
ls_matnr-matnr = ls_wsitem-matnr.
APPEND ls_matnr TO lt_matnr.
CLEAR ls_matnr.

*-Populate PO details
IF ls_wsitem-ebeln IS NOT INITIAL.
ls_ebeln-ebeln = ls_wsitem-ebeln.
ls_ebeln-ebelp = ls_wsitem-ebelp.
APPEND ls_ebeln TO lt_ebeln.
CLEAR ls_ebeln.
ENDIF.

*-Populate Delivery Details


IF ls_wsitem-vbeln IS NOT INITIAL.
ls_vbeln-vbeln = ls_wsitem-vbeln.
ls_vbeln-posnr = ls_wsitem-posnr.
APPEND ls_vbeln TO lt_vbeln.
CLEAR ls_vbeln.
ENDIF.
ENDLOOP.

SORT: lt_matnr BY matnr,


lt_ebeln BY ebeln ebelp,
lt_vbeln BY vbeln posnr.
DELETE ADJACENT DUPLICATES FROM:
lt_matnr COMPARING matnr,
lt_ebeln COMPARING ebeln ebelp,
lt_vbeln COMPARING vbeln posnr.
DELETE lt_matnr WHERE matnr IS INITIAL.
ELSE.
IF gv_cncl IS INITIAL.
MESSAGE 'Enter Open Weighscale ID' TYPE 'E'.
ELSE.
MESSAGE 'Enter GRN posted WS ID' TYPE 'E'.
ENDIF.
ENDIF.

*-Populate Material Description


IF lt_matnr[] IS NOT INITIAL.
SELECT matnr, maktx FROM makt
INTO TABLE @DATA(lt_makt)
FOR ALL ENTRIES IN @lt_matnr
WHERE matnr = @lt_matnr-matnr
AND spras = @sy-langu.
***********************added by mohan*********************

*-Populate Material UOM


* SELECT matnr, gewei FROM mara
* INTO TABLE @DATA(lt_mara)
* FOR ALL ENTRIES IN @lt_matnr
* WHERE matnr = @lt_matnr-matnr.
*
IF gs_head-direction = gc_in AND gs_head-wtype = gc_po.
SELECT matnr matkl gewei meins
mtart "4000004952 EPDK9A0CVD
FROM mara INTO TABLE gt_mara FOR ALL ENTRIES IN lt_matnr
WHERE matnr = lt_matnr-matnr.

IF sy-subrc IS INITIAL.
SELECT * FROM zgtmmtr_wbconfig INTO TABLE gt_config
FOR ALL ENTRIES IN gt_mara
WHERE werks = gs_head-werks AND
matkl = gt_mara-matkl.
ENDIF.
ENDIF.
***********************EOA by mohan*********************
ENDIF.

*-Populate PO unit
IF lt_ebeln[] IS NOT INITIAL.
SELECT ebeln, ebelp, meins FROM ekpo
INTO TABLE @DATA(lt_ekpo)
FOR ALL ENTRIES IN @lt_ebeln
WHERE ebeln = @lt_ebeln-ebeln
AND ebelp = @lt_ebeln-ebelp.
ENDIF.

*-Populate Delivery unit


IF lt_vbeln[] IS NOT INITIAL.
SELECT vbeln, posnr, lgort, charg, lfimg, meins, vgbel, vgpos, uecha
FROM lips INTO TABLE @DATA(lt_lips)
FOR ALL ENTRIES IN @lt_vbeln
WHERE vbeln = @lt_vbeln-vbeln.

SELECT vbeln, ntgew FROM likp


INTO TABLE @DATA(lt_likp)
FOR ALL ENTRIES IN @lt_vbeln
WHERE vbeln = @lt_vbeln-vbeln.
ENDIF.

*-Populate Bag details.


SELECT * FROM zgtmmtr_wbbags
INTO TABLE @DATA(lt_wbbag)
WHERE werks = @gs_head-werks.

*-Populate WB Header details


SELECT SINGLE * FROM zgtmmtr_wbhead
INTO @DATA(ls_wbhead)
WHERE wbid = @gs_head-wbid.
IF sy-subrc = 0.
IF ls_wbhead-direction = gc_in.
gs_head-protype = '2'. "process Type
ELSEIF ls_wbhead-direction = gc_out.
gs_head-protype = '4'. "process Type
ENDIF.
gs_head-budat = sy-datum. "Posting Date
gs_head-bldat = sy-datum. "Document Date
gs_head-wtype = ls_wbhead-wtype. "Weighbridge Ttpe
gs_head-direction = ls_wbhead-direction. "Direction

IF ls_wbhead-direction = gc_in.
CLEAR lv_type.
SORT lt_wsitem BY ebeln ebelp.

LOOP AT lt_wsitem INTO ls_wsitem.


IF ls_wbhead-wtype = gc_sto OR ls_wbhead-wtype = gc_ret.
READ TABLE gt_item ASSIGNING FIELD-SYMBOL(<fs_item>)
WITH KEY "ebeln = ls_wsitem-ebeln
* ebelp = ls_wsitem-ebelp
delno = ls_wsitem-vbeln
posnr = ls_wsitem-posnr
matnr = ls_wsitem-matnr
kunnr = ls_wsitem-parnr.

ELSE.
READ TABLE gt_item ASSIGNING <fs_item>
WITH KEY ebeln = ls_wsitem-ebeln
ebelp = ls_wsitem-ebelp
* delno = ls_wsitem-vbeln
* posnr = ls_wsitem-posnr
matnr = ls_wsitem-matnr
lifnr = ls_wsitem-parnr.
ENDIF.
IF sy-subrc IS NOT INITIAL.
APPEND INITIAL LINE TO gt_item ASSIGNING <fs_item>.
lv_cnt = lv_cnt + 1.
<fs_item>-item = lv_cnt.
<fs_item>-ebeln = ls_wsitem-ebeln.
<fs_item>-ebelp = ls_wsitem-ebelp.
<fs_item>-delno = ls_wsitem-vbeln.
<fs_item>-posnr = ls_wsitem-posnr.
<fs_item>-mblnr = ls_wsitem-mblnr.
<fs_item>-mjahr = ls_wsitem-mjahr.
<fs_item>-matnr = ls_wsitem-matnr.

**********************added by mohan*******************

IF gs_head-wtype = gc_sto OR gs_head-wtype = gc_ret.


<fs_item>-kunnr = ls_wsitem-parnr.
ELSE.
<fs_item>-lifnr = ls_wsitem-parnr.
ENDIF.

IF gs_head-direction = gc_in AND gs_head-wtype = gc_po AND


gs_item-ebeln IS INITIAL.
TRY.
<fs_item>-matkl = gt_mara[ matnr = <fs_item>-matnr ]-matkl.
CATCH cx_sy_itab_line_not_found.
ENDTRY.

TRY.
DATA(ls_config) = gt_config[ werks = gs_head-werks
matnr = space
matkl = <fs_item>-matkl ].
<fs_item>-ekgrp = ls_config-ekgrp.
<fs_item>-ekorg = ls_config-ekorg.
CLEAR ls_config.
CATCH cx_sy_itab_line_not_found.
ENDTRY.
IF ls_config-autopo IS NOT INITIAL.
IF <fs_item>-ekorg IS INITIAL.
CONCATENATE 'Purchase org not maintained in ZWB601 for plant:'
gs_head-werks 'material group:' <fs_item>-matkl
INTO DATA(lv_msg) SEPARATED BY space.
MESSAGE lv_msg TYPE 'E'.
ENDIF.
IF <fs_item>-ekgrp IS INITIAL.
CONCATENATE 'Purchase group not maintained in ZWB601 for plant:'
gs_head-werks 'material group:' <fs_item>-matkl
INTO lv_msg SEPARATED BY space.
MESSAGE lv_msg TYPE 'E'.
ENDIF.
CLEAR lv_msg.
ENDIF.
ENDIF.
**********************EOA by mohan*******************
PERFORM get_batch_id USING ls_wsitem-item CHANGING <fs_item>.
ENDIF.

<fs_item>-delno = ls_wsitem-vbeln.
<fs_item>-posnr = ls_wsitem-posnr.
<fs_item>-pakdt = ls_wsitem-bgtrwt + <fs_item>-pakdt.
<fs_item>-batdt = icon_batch. "Batch Icon
<fs_item>-itmdt = icon_information. "Information Icon
<fs_item>-batsp = icon_distribute. "Batch Splitup Icon
IF <fs_item>-ptyp1 IS INITIAL.
<fs_item>-ptyp1 = ls_wsitem-pmat1.
<fs_item>-palno1 = ls_wsitem-pmatno1.
<fs_item>-gwt1 = ls_wsitem-pmatqty1.

READ TABLE lt_wbbag INTO DATA(ls_wbbag)


WITH KEY bagtyp = ls_wsitem-pmat1.
IF sy-subrc = 0.
<fs_item>-trwgt1 = ls_wbbag-trwgt.
<fs_item>-uom1 = ls_wbbag-uom.
ENDIF.
ELSE.
IF <fs_item>-ptyp1 = ls_wsitem-pmat1.
<fs_item>-palno1 = ls_wsitem-pmatno1 + <fs_item>-palno1.
<fs_item>-gwt1 = ls_wsitem-pmatqty1 + <fs_item>-gwt1.
ELSEIF <fs_item>-ptyp2 IS INITIAL OR
<fs_item>-ptyp2 = ls_wsitem-pmat1.
<fs_item>-ptyp2 = ls_wsitem-pmat1.
<fs_item>-palno2 = ls_wsitem-pmatno1 + <fs_item>-palno2.
<fs_item>-gwt2 = ls_wsitem-pmatqty1 + <fs_item>-gwt2.

CLEAR ls_wbbag.
READ TABLE lt_wbbag INTO ls_wbbag
WITH KEY bagtyp = ls_wsitem-pmat1.
IF sy-subrc = 0.
<fs_item>-trwgt2 = ls_wbbag-trwgt.
<fs_item>-uom2 = ls_wbbag-uom.
ENDIF.
ELSEIF <fs_item>-ptyp3 IS INITIAL OR
<fs_item>-ptyp3 = ls_wsitem-pmat1.
<fs_item>-ptyp3 = ls_wsitem-pmat1.
<fs_item>-palno3 = ls_wsitem-pmatno1 + <fs_item>-palno3.
<fs_item>-gwt3 = ls_wsitem-pmatqty1 + <fs_item>-gwt3.

CLEAR ls_wbbag.
READ TABLE lt_wbbag INTO ls_wbbag
WITH KEY bagtyp = ls_wsitem-pmat1.
IF sy-subrc = 0.
<fs_item>-trwgt3 = ls_wbbag-trwgt.
<fs_item>-uom3 = ls_wbbag-uom.
ENDIF.
ENDIF.
ENDIF.
* Begin of changes by Ranjith for IRIS EPDK9A056E
<fs_item>-bagowner = ls_wsitem-bagowner.
<fs_item>-pmatno1 = ls_wsitem-pmatno1.
* End of changes By Ranjith for IRIS EPDK9A056E
IF ls_wbhead-direction = gc_in AND ls_wbhead-wtype <> 'STO' AND
<fs_item>-ebeln IS INITIAL.
lv_type = 'MM'.
ENDIF.

<fs_item>-wbqty = ls_wsitem-ntgew + <fs_item>-wbqty.


<fs_item>-wbuom = ls_wsitem-uom.
<fs_item>-grqty = ls_wsitem-ntgew + <fs_item>-grqty.

READ TABLE lt_ekpo INTO DATA(ls_ekpo)


WITH KEY ebeln = ls_wsitem-ebeln
ebelp = ls_wsitem-ebelp.
IF sy-subrc = 0.
<fs_item>-uom = ls_ekpo-meins.
lv_uom = ls_ekpo-meins.
ENDIF.

CLEAR gv_autob.
READ TABLE lt_lips INTO DATA(ls_lips)
WITH KEY vbeln = ls_wsitem-vbeln
posnr = ls_wsitem-posnr.
IF sy-subrc = 0.
<fs_item>-uom = ls_lips-meins.
lv_uom = ls_lips-meins.
<fs_item>-ebeln = ls_lips-vgbel.
<fs_item>-ebelp = ls_lips-vgpos.
* <fs_item>-charg = ls_lips-charg.
* IF ls_lips-charg IS NOT INITIAL.
* gv_autob = abap_true.
* ENDIF.
ENDIF.

* IF ls_wsitem-uom IS INITIAL. "Temp Code for testing


* ls_wsitem-uom = 'KG'.
* <fs_item>-wbuom = 'KG'.
* ENDIF.
IF lv_uom IS INITIAL.
SELECT SINGLE meins FROM mara INTO lv_uom WHERE matnr = ls_wsitem-matnr.
<fs_item>-uom = lv_uom.
ENDIF.

IF ls_wsitem-uom <> lv_uom AND ls_wsitem-uom IS NOT INITIAL.


PERFORM p_conv_mat_unit USING ls_wsitem-matnr
ls_wsitem-uom
lv_uom
CHANGING <fs_item>-grqty.
ENDIF.

READ TABLE lt_makt INTO DATA(ls_makt)


WITH KEY matnr = ls_wsitem-matnr.
IF sy-subrc = 0.
<fs_item>-maktx = ls_makt-maktx.
ENDIF.
lv_wbuom = <fs_item>-wbuom.

IF gs_head-wtype = gc_sto AND ls_lips-lfimg GT <fs_item>-grqty..


<fs_item>-trlos = ls_lips-lfimg - <fs_item>-grqty.
ELSE.
CLEAR <fs_item>-trlos.
ENDIF.
* <fs_item>-matkl
UNASSIGN <fs_item>.
CLEAR lv_uom.

ENDLOOP.
*-Data Population for Batch Split Quantity Validation
IF gs_config-bchsplt = abap_true.
LOOP AT gt_item INTO gs_item.
READ TABLE gt_grqty ASSIGNING FIELD-SYMBOL(<fs_grqty>)
WITH KEY item = gs_item-item
ebeln = gs_item-ebeln
ebelp = gs_item-ebelp.
IF sy-subrc = 0.
<fs_grqty>-menge = gs_item-grqty + <fs_grqty>-menge.
ELSE.
gs_grqty-item = gs_item-item.
gs_grqty-ebeln = gs_item-ebeln.
gs_grqty-ebelp = gs_item-ebelp.
gs_grqty-matnr = gs_item-matnr.
gs_grqty-menge = gs_item-grqty.
*Begin of changes by R.Ranjtih For IRIS EPDK9A056F
gs_grqty-bagowner = gs_item-bagowner.
gs_grqty-pmatno1 = gs_item-pmatno1.

* End of changes by R.Ranjith for IRIS EPDK9A056F


APPEND gs_grqty TO gt_grqty.
CLEAR gs_grqty.
ENDIF.
ENDLOOP.
ENDIF.

ELSE.

LOOP AT lt_wsitem INTO ls_wsitem.


IF ls_wbhead-wtype = gc_sto OR ls_wbhead-wtype = gc_ret.
READ TABLE gt_item ASSIGNING <fs_item>
WITH KEY ebeln = ls_wsitem-ebeln
ebelp = ls_wsitem-ebelp
delno = ls_wsitem-vbeln
posnr = ls_wsitem-posnr
matnr = ls_wsitem-matnr
kunnr = ls_wsitem-parnr.

ELSE.
READ TABLE gt_item ASSIGNING <fs_item>
WITH KEY ebeln = ls_wsitem-ebeln
ebelp = ls_wsitem-ebelp
delno = ls_wsitem-vbeln
posnr = ls_wsitem-posnr
matnr = ls_wsitem-matnr
lifnr = ls_wsitem-parnr.
ENDIF.

IF sy-subrc IS NOT INITIAL.


APPEND INITIAL LINE TO gt_item ASSIGNING <fs_item>.
lv_cnt = lv_cnt + 1.
<fs_item>-item = lv_cnt.
<fs_item>-mblnr = ls_wsitem-mblnr.
<fs_item>-mjahr = ls_wsitem-mjahr.
***********************added by mohan*********************************
IF gs_head-wtype NE gc_ret.
gs_item-kunnr = ls_wsitem-parnr.
ELSE.
gs_item-lifnr = ls_wsitem-parnr.
ENDIF.
***********************added by mohan*********************************
ENDIF.

<fs_item>-pakdt = ls_wsitem-bgtrwt + <fs_item>-pakdt.


IF <fs_item>-ptyp1 IS INITIAL.
<fs_item>-ptyp1 = ls_wsitem-pmat1.
<fs_item>-palno1 = ls_wsitem-pmatno1.
<fs_item>-gwt1 = ls_wsitem-pmatqty1.

READ TABLE lt_wbbag INTO ls_wbbag


WITH KEY bagtyp = ls_wsitem-pmat1.
IF sy-subrc = 0.
<fs_item>-trwgt1 = ls_wbbag-trwgt.
<fs_item>-uom1 = ls_wbbag-uom.
ENDIF.
ELSE.
IF <fs_item>-ptyp1 = ls_wsitem-pmat1.
<fs_item>-palno1 = ls_wsitem-pmatno1 + <fs_item>-palno1.
<fs_item>-gwt1 = ls_wsitem-pmatqty1 + <fs_item>-gwt1.
ELSEIF <fs_item>-ptyp2 IS INITIAL OR
<fs_item>-ptyp2 = ls_wsitem-pmat1.
<fs_item>-ptyp2 = ls_wsitem-pmat1.
<fs_item>-palno2 = ls_wsitem-pmatno1 + <fs_item>-palno2.
<fs_item>-gwt2 = ls_wsitem-pmatqty1 + <fs_item>-gwt2.

CLEAR ls_wbbag.
READ TABLE lt_wbbag INTO ls_wbbag
WITH KEY bagtyp = ls_wsitem-pmat2.
IF sy-subrc = 0.
<fs_item>-trwgt2 = ls_wbbag-trwgt.
<fs_item>-uom2 = ls_wbbag-uom.
ENDIF.
ELSEIF <fs_item>-ptyp3 IS INITIAL OR
<fs_item>-ptyp3 = ls_wsitem-pmat1.
<fs_item>-ptyp3 = ls_wsitem-pmat1.
<fs_item>-palno3 = ls_wsitem-pmatno1 + <fs_item>-palno3.
<fs_item>-gwt3 = ls_wsitem-pmatqty1 + <fs_item>-gwt3.

CLEAR ls_wbbag.
READ TABLE lt_wbbag INTO ls_wbbag
WITH KEY bagtyp = ls_wsitem-pmat3.
IF sy-subrc = 0.
<fs_item>-trwgt3 = ls_wbbag-trwgt.
<fs_item>-uom3 = ls_wbbag-uom.
ENDIF.
ENDIF.
ENDIF.
* Begin of changes by Ranjith for IRIS EPDK9A056E
<fs_item>-bagowner = ls_wsitem-bagowner.
* End of changes By Ranjith for IRIS EPDK9A056E

<fs_item>-wbqty = ls_wsitem-ntgew + <fs_item>-wbqty.


<fs_item>-wbuom = ls_wsitem-uom.
<fs_item>-grqty = ls_wsitem-ntgew + <fs_item>-grqty.

LOOP AT lt_lips INTO ls_lips WHERE vbeln = ls_wsitem-vbeln


AND ( posnr = ls_wsitem-posnr OR
uecha = ls_wsitem-posnr ).
<fs_item>-item = lv_cnt.
<fs_item>-delno = ls_wsitem-vbeln.
<fs_item>-posnr = ls_lips-posnr.
<fs_item>-matnr = ls_wsitem-matnr.
<fs_item>-batdt = icon_batch. "Batch Icon
<fs_item>-itmdt = icon_information. "Information Icon
IF ls_lips-uecha IS INITIAL.
<fs_item>-batsp = icon_distribute. "Batch Splitup Icon
ENDIF.
<fs_item>-ebeln = ls_lips-vgbel.
<fs_item>-ebelp = ls_lips-vgpos.
<fs_item>-charg = ls_lips-charg.
<fs_item>-lgort = ls_lips-lgort.

* READ TABLE lt_likp INTO DATA(ls_likp) WITH KEY


* vbeln = ls_wsitem-vbeln.
* TRY.
* lv_nobag = ( ls_lips-lfimg / ls_likp-ntgew ) * 100.
* lv_difqty = ( lv_nobag / 100 ) * ls_wsitem-ntgew.
* lv_tlqty = ls_lips-lfimg - lv_difqty.
* <fs_item>-grqty = ls_lips-lfimg - lv_tlqty.
* CLEAR : lv_nobag , lv_tlqty , lv_difqty.
* CATCH cx_root.
* ENDTRY.
<fs_item>-grqty = ls_lips-lfimg.

READ TABLE gt_mara INTO DATA(ls_mara)


WITH KEY matnr = ls_wsitem-matnr.
IF sy-subrc = 0.
<fs_item>-uom = ls_mara-gewei.
lv_uom = ls_lips-meins.
ENDIF.

IF ls_lips-charg IS NOT INITIAL.


gv_autob = abap_true.
ENDIF.

IF ls_wsitem-uom IS INITIAL. "Temp Code for testing


ls_wsitem-uom = 'KG'.
<fs_item>-wbuom = 'KG'.
ENDIF.

IF ls_wsitem-uom <> lv_uom AND ls_wsitem-uom IS NOT INITIAL.


PERFORM p_conv_mat_unit USING ls_wsitem-matnr
ls_wsitem-uom
lv_uom
CHANGING <fs_item>-grqty.
ENDIF.

CLEAR ls_makt.
READ TABLE lt_makt INTO ls_makt
WITH KEY matnr = ls_wsitem-matnr.
IF sy-subrc = 0.
<fs_item>-maktx = ls_makt-maktx.
ENDIF.
lv_wbuom = <fs_item>-wbuom.
UNASSIGN <fs_item>.
* APPEND gs_item TO gt_item.
* CLEAR gs_item.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDIF.
CLEAR gs_item.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form REFRESH_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM refresh_data .

CLEAR: gs_head, gs_config, gs_list, gv_dynnr, gv_name, gv_index, gv_test,


gs_item, gs_itemt, gs_batch, gs_9005, ok_code, gs_bags, gv_autob,
gs_fcat, gv_cncl, gv_wbuom, gv_type, gs_grqty, gv_error, gv_ebeln,
gv_delivery,gv_gi_rb,gv_gr_rb,gv_mblnr,gv_mjahr,gv_wbid,gv_vbeln_vl,

gv_mblnr_can,gv_mjahr_can,gv_wb_can,gv_wo_wb_can,gv_wb_print,gv_wo_wb_print.

REFRESH: gt_bags, gt_batch, gt_item, gt_final, gt_char, gt_list,gt_fcat,

gt_grqty,gt_config,gt_config_main,gt_wbitem,gt_wsitem,gt_fcode,gt_item_tmp. "
Added on 10.08.2018 by IN_DILLIBABU

IF go_cont_itm IS BOUND.
go_alv_itm->free( ).
go_cont_itm->free( ).
CLEAR: go_cont_itm, go_alv_itm, g_event.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form POPULATE_GRN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM populate_grn.

READ TABLE gt_item INTO gs_item INDEX 1.

SELECT SINGLE mblnr, mjahr, bldat, budat, xblnr, bktxt, frbnr, xabln
FROM mkpf INTO @DATA(ls_mkpf)
WHERE mblnr = @gs_item-mblnr
AND mjahr = @gs_item-mjahr.
IF sy-subrc = 0.
gs_head-bldat = ls_mkpf-bldat.
gs_head-bktxt = ls_mkpf-bktxt.
gs_head-frbnr = ls_mkpf-frbnr.
gs_head-xblnr = ls_mkpf-xblnr.
gs_head-xabln = ls_mkpf-xabln.
ENDIF.

IF gs_item-lgort IS INITIAL.
SELECT mblnr, mjahr, zeile, lgort, charg
FROM mseg INTO TABLE @DATA(lt_mseg)
WHERE mblnr = @gs_item-mblnr
AND mjahr = @gs_item-mjahr.
IF sy-subrc = 0.
LOOP AT gt_item ASSIGNING <fs_item>.
READ TABLE lt_mseg INTO DATA(ls_mseg) INDEX sy-tabix.
IF sy-subrc = 0.
<fs_item>-lgort = ls_mseg-lgort.
<fs_item>-charg = ls_mseg-charg.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.

CLEAR gs_item. " Added on 03.05.2018 by IN_DILLIBABU - STO field is filled on


entering the WB ID. To avoid, its cleared
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CANCEL_GR_GI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM cancel_gr_gi USING pv_test TYPE testrun.
DATA: lt_return TYPE tt_return,
ls_docnum TYPE bapi2017_gm_head_ret.

CALL FUNCTION 'ZGTMMFM_GRN_POST'


EXPORTING
im_head = gs_head
im_testrun = pv_test
im_cancel = abap_true
IMPORTING
ex_docnum = ls_docnum
TABLES
tt_return = lt_return.
* IF gs_head-protype = '1' OR gs_head-protype = '2'.
* PERFORM cancel_gr USING pv_test
* CHANGING lt_return.
* ELSEIF gs_head-protype = '3' OR gs_head-protype = '4'.
* PERFORM cancel_gi USING pv_test
* CHANGING lt_return.
* ENDIF.

IF lt_return[] IS NOT INITIAL.


PERFORM display_message USING lt_return.
ENDIF.

READ TABLE lt_return TRANSPORTING NO FIELDS


WITH KEY type = 'E'.
IF sy-subrc <> 0 AND pv_test IS INITIAL.
PERFORM refresh_data.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F4_WBID_CANCEL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f4_wbid_cancel.

DATA: lv_rfield TYPE dfies-fieldname,


lv_dfield TYPE help_info-dynprofld,
lt_ret TYPE STANDARD TABLE OF ddshretval.

SELECT a~wbid,
a~item,
a~werks,
a~matnr,
a~mblnr,
a~mjahr,
b~direction,
b~wtype FROM zgtmmtr_wbitem AS a
INNER JOIN zgtmmtr_wbhead AS b ON a~wbid = b~wbid
INTO TABLE @DATA(lt_wbhead)
WHERE b~werks = @gs_head-werks AND
b~voref = @abap_true AND
b~del = @space AND
a~mblnr NE @space..
IF sy-subrc = 0.
DELETE lt_wbhead WHERE mblnr IS INITIAL.
ENDIF.

lv_rfield = 'WBID'.
lv_dfield = 'GS_HEAD-WBID'.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'


EXPORTING
retfield = lv_rfield
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = lv_dfield
value_org = 'S'
TABLES
value_tab = lt_wbhead
return_tab = lt_ret
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CANCEL_GR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*FORM cancel_gr USING pv_test TYPE testrun
* CHANGING ct_return TYPE tt_return.
*
* DATA: ls_gsmvt TYPE bapi2017_gm_item_04,
* lt_gsmvt TYPE goodsmovement_items_t,
* ls_grout TYPE bapi2017_gm_head_ret,
* ls_return TYPE bapiret2.
*
* CLEAR gs_item.
* READ TABLE gt_item INTO gs_item INDEX 1.
* IF sy-subrc = 0.
** Fill Mat. Doc. Item Details
* SELECT mblnr,
* mjahr,
* zeile
* FROM mseg
* INTO TABLE @DATA(lt_mseg)
* WHERE mblnr EQ @gs_item-mblnr
* AND mjahr EQ @gs_item-mjahr.
* IF sy-subrc EQ 0.
* LOOP AT lt_mseg INTO DATA(ls_mseg).
* ls_gsmvt-matdoc_item = ls_mseg-zeile.
* APPEND ls_gsmvt TO lt_gsmvt.
* CLEAR ls_gsmvt.
* ENDLOOP.
* ENDIF.
*
* CALL FUNCTION 'BAPI_GOODSMVT_CANCEL'
* EXPORTING
* materialdocument = gs_item-mblnr
* matdocumentyear = gs_item-mjahr
* goodsmvt_pstng_date = gs_head-budat
* goodsmvt_pr_uname = sy-uname
* IMPORTING
* goodsmvt_headret = ls_grout
* TABLES
* return = ct_return
* goodsmvt_matdocitem = lt_gsmvt.
*
* READ TABLE ct_return TRANSPORTING NO FIELDS WITH KEY type = 'E'.
* IF sy-subrc NE 0 AND pv_test IS INITIAL.
* CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* wait = abap_true.
*
* ls_return-type = 'S'.
* ls_return-id = 'ZIVMM_MSG'.
* ls_return-number = 152.
* MESSAGE s152(zivmm_msg) INTO ls_return-message
* WITH 'GR' gs_head-wbid.
* ls_return-message_v1 = 'GR'.
* ls_return-message_v2 = gs_head-wbid.
* APPEND ls_return TO ct_return.
* CLEAR ls_return.
*
**-To update table
* IF gs_config-grn = 'S'.
* SELECT *
* FROM zgtmmtr_wsitem
* INTO TABLE @DATA(lt_wsitem)
* WHERE wbid = @gs_head-wbid.
* IF sy-subrc = 0.
* LOOP AT lt_wsitem ASSIGNING FIELD-SYMBOL(<fs_wsitem>).
* CLEAR: <fs_wsitem>-mblnr, <fs_wsitem>-mjahr.
* ENDLOOP.
*
* UPDATE zgtmmtr_wsitem FROM TABLE lt_wsitem.
* COMMIT WORK AND WAIT.
* ENDIF.
*
* ELSE.
* SELECT *
* FROM zgtmmtr_wbitem
* INTO TABLE @DATA(lt_wbitem)
* WHERE wbid = @gs_head-wbid.
* IF sy-subrc = 0.
* LOOP AT lt_wbitem ASSIGNING FIELD-SYMBOL(<fs_wbitem>).
* CLEAR: <fs_wbitem>-mblnr, <fs_wbitem>-mjahr.
* IF <fs_wbitem>-grn_pkwgt = abap_true.
* CLEAR: <fs_wbitem>-pmat1, <fs_wbitem>-pmatno1, <fs_wbitem>-pmatqty1,
* <fs_wbitem>-pmat2, <fs_wbitem>-pmatno2, <fs_wbitem>-pmatqty2,
* <fs_wbitem>-pmat3, <fs_wbitem>-pmatno3, <fs_wbitem>-pmatqty3,
* <fs_wbitem>-grn_pkwgt.
* ENDIF.
* ENDLOOP.
*
* UPDATE zgtmmtr_wbitem FROM TABLE lt_wbitem.
* COMMIT WORK AND WAIT.
* ENDIF.
* ENDIF.
* ELSE.
* IF sy-subrc NE 0 AND pv_test IS NOT INITIAL.
* MESSAGE 'No Error Found' TYPE 'S'.
* ENDIF.
* CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
* ENDIF.
* ENDIF.
*ENDFORM.
**&---------------------------------------------------------------------*
**& Form CANCEL_GI
**&---------------------------------------------------------------------*
** text
**----------------------------------------------------------------------*
*FORM cancel_gi USING pv_test TYPE testrun
* CHANGING ct_return TYPE tt_return.
*
* DATA: ls_giout TYPE emkpf,
* ls_return TYPE bapiret2,
* lv_subrc TYPE sy-subrc,
* lt_mesg TYPE STANDARD TABLE OF mesg.
*
* DATA(lt_item) = gt_item[].
* SORT lt_item BY delno.
* DELETE ADJACENT DUPLICATES FROM lt_item COMPARING delno.
*
* IF lt_item[] IS NOT INITIAL.
* SELECT vbeln, vbtyp
* FROM likp
* INTO TABLE @DATA(lt_likp)
* FOR ALL ENTRIES IN @lt_item
* WHERE vbeln = @lt_item-delno.
* ENDIF.
*
* LOOP AT lt_item INTO DATA(ls_item).
* READ TABLE lt_likp INTO DATA(ls_likp)
* WITH KEY vbeln = ls_item-delno.
* IF sy-subrc = 0.
* CALL FUNCTION 'WS_REVERSE_GOODS_ISSUE'
* EXPORTING
* i_vbeln = ls_item-delno
* i_budat = gs_head-budat
* i_tcode = 'VL09'
* i_vbtyp = ls_likp-vbtyp
* IMPORTING
* es_emkpf = ls_giout
* TABLES
* t_mesg = lt_mesg
* EXCEPTIONS
* error_reverse_goods_issue = 1
* OTHERS = 2.
* IF sy-subrc EQ 0 AND ls_giout-mblnr IS NOT INITIAL
* AND pv_test IS INITIAL.
* READ TABLE lt_mesg TRANSPORTING NO FIELDS
* WITH KEY msgty = 'E'.
* IF sy-subrc NE 0.
* COMMIT WORK AND WAIT.
*
**-To update table
* IF gs_config-grn = 'S'.
* SELECT *
* FROM zgtmmtr_wsitem
* INTO TABLE @DATA(lt_wsitem)
* WHERE wbid = @gs_head-wbid.
* IF sy-subrc = 0.
* LOOP AT lt_wsitem ASSIGNING FIELD-SYMBOL(<fs_wsitem>).
* CLEAR: <fs_wsitem>-mblnr, <fs_wsitem>-mjahr.
* ENDLOOP.
*
* UPDATE zgtmmtr_wsitem FROM TABLE lt_wsitem.
* COMMIT WORK AND WAIT.
* ENDIF.
*
* ELSE.
* SELECT *
* FROM zgtmmtr_wbitem
* INTO TABLE @DATA(lt_wbitem)
* WHERE wbid = @gs_head-wbid.
* IF sy-subrc = 0.
* LOOP AT lt_wbitem ASSIGNING FIELD-SYMBOL(<fs_wbitem>).
* CLEAR: <fs_wbitem>-mblnr, <fs_wbitem>-mjahr.
* IF <fs_wbitem>-grn_pkwgt = abap_true.
* CLEAR: <fs_wbitem>-pmat1, <fs_wbitem>-pmatno1, <fs_wbitem>-
pmatqty1,
* <fs_wbitem>-pmat2, <fs_wbitem>-pmatno2, <fs_wbitem>-
pmatqty2,
* <fs_wbitem>-pmat3, <fs_wbitem>-pmatno3, <fs_wbitem>-
pmatqty3,
* <fs_wbitem>-grn_pkwgt.
* ENDIF.
* ENDLOOP.
*
* UPDATE zgtmmtr_wbitem FROM TABLE lt_wbitem.
* COMMIT WORK AND WAIT.
* ENDIF.
* ENDIF.
*
* IF lt_mesg IS NOT INITIAL.
* LOOP AT lt_mesg INTO DATA(ls_mesg).
* ls_return-type = ls_mesg-msgty.
* ls_return-id = ls_mesg-arbgb.
* ls_return-number = ls_mesg-txtnr.
* ls_return-message = ls_mesg-text.
* ls_return-log_msg_no = ls_mesg-zeile.
* ls_return-message_v1 = ls_mesg-msgv1.
* ls_return-message_v2 = ls_mesg-msgv2.
* ls_return-message_v3 = ls_mesg-msgv3.
* ls_return-message_v4 = ls_mesg-msgv4.
* APPEND ls_return TO ct_return.
* CLEAR ls_return.
* ENDLOOP.
*
* ELSE.
* ls_return-type = 'S'.
* ls_return-id = 'ZIVMM_MSG'.
* ls_return-number = 152.
* MESSAGE s152(zivmm_msg) INTO ls_return-message
* WITH 'GI' gs_head-wbid.
* ls_return-message_v1 = 'GI'.
* ls_return-message_v2 = gs_head-wbid.
* APPEND ls_return TO ct_return.
* CLEAR ls_return.
* ENDIF.
*
* ELSE.
* ROLLBACK WORK.
* LOOP AT lt_mesg INTO ls_mesg.
* ls_return-type = ls_mesg-msgty.
* ls_return-id = ls_mesg-arbgb.
* ls_return-number = ls_mesg-txtnr.
* ls_return-message = ls_mesg-text.
* ls_return-log_msg_no = ls_mesg-zeile.
* ls_return-message_v1 = ls_mesg-msgv1.
* ls_return-message_v2 = ls_mesg-msgv2.
* ls_return-message_v3 = ls_mesg-msgv3.
* ls_return-message_v4 = ls_mesg-msgv4.
* APPEND ls_return TO ct_return.
* CLEAR ls_return.
* ENDLOOP.
* ENDIF.
*
* ELSE.
* CLEAR : lv_subrc.
* lv_subrc = sy-subrc.
* ROLLBACK WORK.
* IF pv_test IS INITIAL.
* IF lt_mesg IS NOT INITIAL.
* LOOP AT lt_mesg INTO ls_mesg.
* ls_return-type = ls_mesg-msgty.
* ls_return-id = ls_mesg-arbgb.
* ls_return-number = ls_mesg-txtnr.
* ls_return-message = ls_mesg-text.
* ls_return-log_msg_no = ls_mesg-zeile.
* ls_return-message_v1 = ls_mesg-msgv1.
* ls_return-message_v2 = ls_mesg-msgv2.
* ls_return-message_v3 = ls_mesg-msgv3.
* ls_return-message_v4 = ls_mesg-msgv4.
* APPEND ls_return TO ct_return.
* CLEAR ls_return.
* ENDLOOP.
*
* ELSEIF lv_subrc EQ 1.
* ls_return-type = 'E'.
* ls_return-id = 'ZIVMM_MSG'.
* ls_return-number = 168.
* MESSAGE e168(zivmm_msg) INTO ls_return-message.
* APPEND ls_return TO ct_return.
* CLEAR ls_return.
* ENDIF.
* ENDIF.
* ENDIF.
* ENDIF.
* ENDLOOP.
*ENDFORM.
*&---------------------------------------------------------------------*
*& Form BATCH_SPLIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM batch_split USING pv_rowno TYPE int4
CHANGING ps_item TYPE ty_item.
DATA: lv_index TYPE int4,
lv_menge TYPE menge_d,
ls_stylerow TYPE lvc_s_styl,
lt_styletab TYPE lvc_t_styl.

DATA(ls_item) = ps_item.
ls_stylerow-fieldname = 'GRQTY'.
ls_stylerow-style = cl_gui_alv_grid=>mc_style_enabled.
APPEND ls_stylerow TO lt_styletab.
CLEAR ls_stylerow.
ps_item-style[] = lt_styletab[].
lv_menge = ps_item-grqty.
ps_item-grqty = ps_item-grqty / 2.
CLEAR ps_item-pckmt.

CLEAR: ls_item-lgort, ls_item-charg, ls_item-pakdt, ls_item-grqty,


ls_item-pckmt, ls_item-batsp.
lv_index = pv_rowno + 1.

ls_item-grqty = lv_menge - ps_item-grqty.


REFRESH lt_styletab.
ls_stylerow-fieldname = 'GRQTY'.
ls_stylerow-style = cl_gui_alv_grid=>mc_style_enabled.
APPEND ls_stylerow TO lt_styletab.
CLEAR ls_stylerow.

ls_item-style[] = lt_styletab[].

IF gs_head-protype = '1'.
PERFORM get_batch_id USING ls_item-item CHANGING ls_item.
ELSE.
SELECT MIN( item ) FROM zgtmmtr_wsitem
INTO @DATA(lv_item)
WHERE matnr = @ps_item-matnr AND " WA changed on 11.07.2018 by
IN_DILLIBABU Charms: 4000004475
parnr = @ps_item-lifnr.
* WHERE matnr = @<fs_item>-matnr AND
* parnr = @<fs_item>-lifnr.
PERFORM get_batch_id USING lv_item CHANGING ls_item.
ENDIF.

INSERT ls_item INTO gt_item INDEX lv_index.


CALL METHOD go_alv_itm->refresh_table_display.
PERFORM set_cursor_alv USING pv_rowno
'BATSP'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form VALIDATE_GRQTY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM validate_grqty CHANGING cv_error TYPE c.
DATA: lv_menge TYPE menge_d,
ls_return TYPE bapiret2,
lt_return TYPE tt_return.

CLEAR cv_error.
IF gs_config-bchsplt = abap_true.
LOOP AT gt_grqty INTO gs_grqty.
CLEAR lv_menge.
LOOP AT gt_item INTO gs_item WHERE item = gs_grqty-item
AND ebeln = gs_grqty-ebeln
AND ebelp = gs_grqty-ebelp.
lv_menge = gs_item-grqty + lv_menge.
ENDLOOP.

IF lv_menge <> gs_grqty-menge.


lv_menge = gs_grqty-menge - lv_menge.
ls_return-type = 'E'.
ls_return-id = 'ZGTMM_MSG'.
ls_return-number = 000.
MESSAGE e000 WITH text-034
lv_menge text-035 gs_grqty-ebeln
INTO ls_return-message.
* Start of Comments - IN_RAMESHNS - EPDK9A050F
* ls_return-message_v1 = text-034. "Total GR Qty
* ls_return-message_v2 = lv_menge.
* ls_return-message_v3 = text-035. "does not match with PO
* ls_return-message_v4 = gs_grqty-ebeln.
* End of Comments - IN_RAMESHNS - EPDK9A050F
APPEND ls_return TO lt_return.
CLEAR ls_return.
cv_error = abap_true.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
CLEAR: gs_item.
IF lt_return[] IS NOT INITIAL.
PERFORM display_message USING lt_return.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form HIDE_SCR_9004
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM hide_scr_9004 .
* IF gv_ttinc IS INITIAL AND gv_poinc IS INITIAL.
* gv_poinc = abap_true.
* ENDIF.
*
* IF gv_ttinc IS NOT INITIAL.
* LOOP AT SCREEN.
* CASE screen-name.
* WHEN 'GV_EBELN'.
* screen-active = 0.
* MODIFY SCREEN.
* WHEN 'GS_HEAD-TTNO'.
* screen-active = 1.
* MODIFY SCREEN.
* ENDCASE.
* ENDLOOP.
* ELSEIF gv_poinc IS NOT INITIAL.
* LOOP AT SCREEN.
* CASE screen-name.
* WHEN 'GV_EBELN'.
* screen-active = 1.
* MODIFY SCREEN.
* WHEN 'GS_HEAD-TTNO'.
* screen-active = 0.
* MODIFY SCREEN.
* ENDCASE.
* ENDLOOP.
* ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form POPULATE_ITEM_GR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM populate_item_gr .

DATA : lv_ebeln TYPE ebeln.

lv_ebeln = gv_ebeln.

PERFORM refresh_data.

CALL FUNCTION 'ZGTMMFM_GRN_GET_DETAILS'


EXPORTING
* im_werks =
im_po = lv_ebeln
* IM_GUI =
IMPORTING
es_head = gs_head
et_wb_ws_item = gt_item
es_config = gs_config
* EV_TYPE =
* EV_WBUOM =
* EV_ERROR =
* TABLES
* TT_RETURN =
.

gv_ebeln = lv_ebeln.

IF gt_item[] IS NOT INITIAL.


PERFORM populate_fcat USING gv_type gv_wbuom.
ENDIF.

*--------------------------------------------------------------------*
*
* SELECT SINGLE ebeln, bukrs, lifnr
* FROM ekko
* INTO @DATA(ls_ekko)
* WHERE ebeln = @gv_ebeln.
*
* IF sy-subrc = 0.
* PERFORM refresh_data.
*
* gv_ebeln = ls_ekko-ebeln.
* SELECT ebeln, ebelp, matnr, werks, menge, meins
* FROM ekpo
* INTO TABLE @DATA(lt_ekpo)
* WHERE ebeln = @gv_ebeln.
* ENDIF.
*
* READ TABLE lt_ekpo INTO DATA(ls_ekpo) INDEX 1.
* IF sy-subrc = 0.
* SELECT SINGLE werks, name1 FROM t001w
* INTO @DATA(ls_t001w)
* WHERE werks = @ls_ekpo-werks.
* ENDIF.
*
* IF lt_ekpo[] IS NOT INITIAL.
* SELECT matnr, maktx FROM makt
* INTO TABLE @DATA(lt_makt)
* FOR ALL ENTRIES IN @lt_ekpo
* WHERE matnr = @lt_ekpo-matnr.
* ENDIF.
*
* gs_head-budat = sy-datum.
* gs_head-bldat = sy-datum.
* gs_head-werks = ls_ekpo-werks.
* gs_head-pname = ls_t001w-name1.
* gs_head-direction = gc_in.
* PERFORM populate_config CHANGING gs_config.
*
* CLEAR ls_ekpo.
* LOOP AT lt_ekpo INTO ls_ekpo.
* gs_item-ebeln = ls_ekpo-ebeln.
* gs_item-ebelp = ls_ekpo-ebelp.
* gs_item-matnr = ls_ekpo-matnr.
* gs_item-grqty = ls_ekpo-menge.
* gs_item-uom = ls_ekpo-meins.
* gs_item-lifnr = ls_ekko-lifnr.
* gs_item-batdt = icon_batch. "Batch Icon
* gs_item-itmdt = icon_information. "Information Icon
* gs_item-batsp = icon_distribute. "Batch Splitup Icon
** CONCATENATE '@EJQ' 'Batch Characteristics' '@' INTO gs_item-batdt.
** CONCATENATE '@0SQ' 'Information' '@' INTO gs_item-itmdt.
** CONCATENATE '@IAQ' 'Batch Split' '@' INTO gs_item-batsp.
*
* READ TABLE lt_makt INTO DATA(ls_makt)
* WITH KEY matnr = ls_ekpo-matnr.
* IF sy-subrc = 0.
* gs_item-maktx = ls_makt-maktx.
* ENDIF.
* APPEND gs_item TO gt_item.
* CLEAR gs_item.
* ENDLOOP.
*
* IF gt_item[] IS NOT INITIAL.
* PERFORM populate_fcat USING gv_type gv_wbuom.
* ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F4_WSID
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f4_wsid .

DATA: lv_rfield TYPE dfies-fieldname,


lv_dfield TYPE help_info-dynprofld,
lt_ret TYPE STANDARD TABLE OF ddshretval.

SELECT a~wbid,
a~matnr,
b~direction,
b~wtype FROM zgtmmtr_wsitem AS a
INNER JOIN zgtmmtr_wbhead AS b ON a~wbid = b~wbid
INTO TABLE @DATA(lt_wbhead)
WHERE b~werks = @gs_head-werks AND
b~voref = @abap_true AND
b~del = @space AND
a~mblnr = @space.
IF sy-subrc = 0.
SORT lt_wbhead BY wbid matnr.
DELETE ADJACENT DUPLICATES FROM lt_wbhead
COMPARING wbid matnr.

lv_rfield = 'WBID'.
lv_dfield = 'GS_HEAD-WBID'.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'


EXPORTING
retfield = lv_rfield
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = lv_dfield
value_org = 'S'
TABLES
value_tab = lt_wbhead
return_tab = lt_ret
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F4_WSID_CANCEL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f4_wsid_cancel .

DATA: lv_rfield TYPE dfies-fieldname,


lv_dfield TYPE help_info-dynprofld,
lt_ret TYPE STANDARD TABLE OF ddshretval.

SELECT a~wbid,
a~matnr,
a~mblnr,
a~mjahr,
b~direction,
b~wtype FROM zgtmmtr_wsitem AS a
INNER JOIN zgtmmtr_wbhead AS b ON a~wbid = b~wbid
INTO TABLE @DATA(lt_wbhead)
WHERE b~werks = @gs_head-werks AND
b~voref = @abap_true AND
b~del = @space AND
a~mblnr NE @space.

IF sy-subrc = 0.
DELETE lt_wbhead WHERE mblnr IS INITIAL.
SORT lt_wbhead BY wbid matnr.
DELETE ADJACENT DUPLICATES FROM lt_wbhead
COMPARING wbid matnr.

lv_rfield = 'WBID'.
lv_dfield = 'GS_HEAD-WBID'.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'


EXPORTING
retfield = lv_rfield
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = lv_dfield
value_org = 'S'
TABLES
value_tab = lt_wbhead
return_tab = lt_ret
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SET_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_fcat .
* IF gt_fcat IS NOT INITIAL.
* READ TABLE gt_fcat ASSIGNING FIELD-SYMBOL(<fs_fcat>) WITH KEY fieldname =
'VALUE'.
* IF <fs_fcat> IS ASSIGNED.
* IF gs_head-wtype = 'PROCURE' AND gs_head-ptyp = 'Z007'.
* <fs_fcat>-edit = abap_true.
* ELSE.
* CLEAR <fs_fcat>-edit.
* ENDIF.
* UNASSIGN <fs_fcat>.
* IF go_alv_itm IS NOT INITIAL.
* go_alv_itm->set_frontend_fieldcatalog( it_fieldcatalog = gt_fcat ).
* ENDIF.
* ENDIF.
* ENDIF.

CLEAR gt_fcat.
PERFORM populate_fcat USING gv_type gv_wbuom.
IF go_alv_itm IS NOT INITIAL.
go_alv_itm->set_frontend_fieldcatalog( it_fieldcatalog = gt_fcat ).
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GENERATE_PTBF_PO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM generate_ptbf_po .

DATA: lv_menge TYPE menge_d.

IF gs_head-ptyp = 'Z002'.
SELECT * FROM a993
INTO TABLE @DATA(lt_a993)
FOR ALL ENTRIES IN @gt_item
WHERE kappl = 'M' AND
kschl = 'MP01' AND
werks = @gs_head-werks AND
ekorg = @gt_item-ekorg AND
matnr = @gt_item-matnr AND
matkl = @gt_item-matkl.
IF sy-subrc IS INITIAL.
DELETE lt_a993 WHERE datbi LT sy-datum.
SORT lt_a993 BY kappl kschl werks ekorg matnr matkl ASCENDING
datab DESCENDING.
DELETE ADJACENT DUPLICATES FROM lt_a993
COMPARING kappl
kschl
werks
ekorg
matnr
matkl.
IF lt_a993 IS NOT INITIAL.
SELECT knumh, kopos, kbetr, konwa, kpein, kmein
FROM konp
INTO TABLE @DATA(lt_konp)
FOR ALL ENTRIES IN @lt_a993
WHERE knumh = @lt_a993-knumh.
ENDIF.
ENDIF.
ENDIF.
LOOP AT gt_item ASSIGNING FIELD-SYMBOL(<fs_item>).

IF gs_head-ptyp = 'Z002'.
TRY .
DATA(ls_a993) = lt_a993[ kappl = 'M'
kschl = 'MP01'
werks = gs_head-werks
ekorg = <fs_item>-ekorg
matnr = <fs_item>-matnr
matkl = <fs_item>-matkl ].
CATCH cx_sy_itab_line_not_found .
CONCATENATE 'Condition record not found for plant:' gs_head-werks
'purchase org.:' <fs_item>-ekorg 'material:'
<fs_item>-matnr 'material group:' <fs_item>-matkl
INTO DATA(lv_msg) SEPARATED BY space.
MESSAGE lv_msg TYPE 'E'.
ENDTRY.

TRY .
DATA(ls_konp) = lt_konp[ knumh = ls_a993-knumh ].
CATCH cx_sy_itab_line_not_found .
CONCATENATE 'Condition record no:' ls_a993-knumh 'not found for plant:'
gs_head-werks 'purchase org.:' <fs_item>-ekorg 'material:'
<fs_item>-matnr 'material group:' <fs_item>-matkl
INTO lv_msg SEPARATED BY space.
MESSAGE lv_msg TYPE 'E'.
ENDTRY.

DATA(lv_val) = ls_konp-kbetr / ls_konp-kpein.


<fs_item>-cuky = ls_konp-konwa.
TRY.
<fs_item>-unit = gt_mara[ matnr = <fs_item>-matnr ]-meins.
CATCH cx_sy_itab_line_not_found .
ENDTRY.

IF <fs_item>-unit NE ls_konp-kmein.
CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
EXPORTING
i_matnr = <fs_item>-matnr
i_in_me = ls_konp-kmein
i_out_me = <fs_item>-unit
i_menge = 1
IMPORTING
e_menge = lv_menge
EXCEPTIONS
error_in_application = 1
error = 2
OTHERS = 3.
IF sy-subrc EQ 0.
<fs_item>-value = lv_val / lv_menge.
ENDIF.
ELSE.
<fs_item>-value = lv_val.
ENDIF.
ELSEIF gs_head-ptyp = 'Z007'.
* Start of Changes - IN_RAMESHNS - EPDK9A050F
* TRY.
* <fs_item>-unit = gt_mara[ matnr = <fs_item>-matnr ]-meins.
* CATCH cx_sy_itab_line_not_found .
* ENDTRY.
* End of Changes - IN_RAMESHNS - EPDK9A050F
<fs_item>-cuky = gv_currency.

*-- Added on 08.05.2018 by IN_DILLIBABU


*-- To populate price per unit from info record

PERFORM get_inforecord_price USING <fs_item>-matnr <fs_item>-lifnr gs_head-


werks
CHANGING <fs_item>-value <fs_item>-info_rec
* Start of Changes - IN_RAMESHNS - EPDK9A050F
<fs_item>-unit.

IF <fs_item>-unit IS INITIAL.
<fs_item>-unit = gt_mara[ matnr = <fs_item>-matnr ]-meins.
ENDIF.
* End of Changes - IN_RAMESHNS - EPDK9A050F

ENDIF.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F4CALLBACK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_wbid_sel
TABLES record_tab STRUCTURE seahlpres
CHANGING shlp TYPE shlp_descr
callcontrol LIKE ddshf4ctrl.
** set field name for the F4 field
* READ TABLE shlp-interface ASSIGNING FIELD-SYMBOL(<fs_int>) WITH KEY shlpfield =
'F0002'.
* IF sy-subrc IS NOT INITIAL.
* APPEND INITIAL LINE TO shlp-interface ASSIGNING <fs_int>.
* ENDIF.
* <fs_int>-shlpfield = 'F0002'.
* <fs_int>-valfield = 'GV_ALV1'.
* <fs_int>-f4field = c_x.
*
** set the text for the F4 field*
* READ TABLE shlp-fielddescr ASSIGNING FIELD-SYMBOL(<fs_desc>) WITH KEY fieldname
= 'F0003'.
* IF sy-subrc IS INITIAL.
* <fs_desc>-scrtext_m = 'Equipment Type'.
* ENDIF.

READ TABLE shlp-selopt ASSIGNING FIELD-SYMBOL(<fs_sel>)


WITH KEY shlpfield = 'GRN'.
IF sy-subrc IS NOT INITIAL.
APPEND INITIAL LINE TO shlp-selopt ASSIGNING <fs_sel>.
ENDIF.
<fs_sel>-sign = 'I'.
<fs_sel>-option = 'EQ'.
<fs_sel>-low = gs_config-grn.

ENDFORM. "f4callback
*&---------------------------------------------------------------------*
*& Form GET_WBID
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_wbid .

TYPES : BEGIN OF lty_matkl,


matnr TYPE matnr,
matkl TYPE matkl,
END OF lty_matkl.
DATA : lt_wbitem TYPE TABLE OF zgtmmtr_wbitem,
lt_wsitem TYPE TABLE OF zgtmmtr_wsitem,
lt_matkl TYPE TABLE OF lty_matkl,
ls_wbitem TYPE zgtmmtr_wbitem,
ls_wsitem TYPE zgtmmtr_wsitem,
ls_wbconfig TYPE zgtmmtr_wbconfig,
ls_matkl TYPE lty_matkl.

IF gs_head-wbid IS NOT INITIAL.


CLEAR gv_voref.
SELECT SINGLE pgiba FROM zgtmmtr_wbconfig
INTO @DATA(lv_pgiba)
WHERE werks EQ @gs_head-werks.
IF lv_pgiba EQ 'A'.
gv_voref = space.
ELSE.
gv_voref = abap_true.
ENDIF.

SELECT SINGLE * FROM zgtmmtr_wbhead INTO @DATA(ls_wb)


WHERE wbid = @gs_head-wbid AND
werks = @gs_head-werks." AND
" voref = gv_voref.
IF sy-dbcnt IS INITIAL.
MESSAGE 'Please select completed weighbridge ID' TYPE 'E'.
ELSE.
*Begin of changes by Ranjith for IRIS EPDK9A056E
gs_head-wtype = ls_wb-wtype.
gs_head-direction = ls_wb-direction.

SELECT * FROM zgtmmtr_wbitem


INTO TABLE lt_wbitem
WHERE wbid = gs_head-wbid.

IF sy-subrc NE 0.
SORT lt_wbitem BY wbid matnr.
ENDIF.

SELECT * FROM zgtmmtr_wsitem


INTO TABLE lt_wsitem
WHERE wbid = gs_head-wbid.
IF sy-subrc EQ 0.

SORT lt_wsitem BY wbid matnr.


ENDIF.

IF lt_wbitem IS NOT INITIAL.


SELECT matnr
matkl
FROM mara
INTO TABLE lt_matkl
FOR ALL ENTRIES IN lt_wbitem
WHERE matnr = lt_wbitem-matnr.

IF sy-subrc EQ 0.
SORT lt_matkl BY matnr.
ENDIF.
CLEAR ls_wbitem.
READ TABLE lt_wbitem INTO ls_wbitem INDEX 1.

CLEAR ls_matkl.
READ TABLE lt_matkl INTO ls_matkl WITH KEY
matnr = ls_wbitem-matnr
BINARY SEARCH .

IF ls_wbitem IS NOT INITIAL AND


ls_matkl IS NOT INITIAL.
CLEAR ls_wbconfig.
READ TABLE gt_config_main INTO ls_wbconfig WITH KEY
werks = gs_head-werks
matnr = ls_wbitem-matnr
matkl = ls_matkl-matkl
BINARY SEARCH.
IF sy-subrc EQ 0.
IF ls_wbconfig IS NOT INITIAL.
CLEAR gs_config.
gs_config = ls_wbconfig.
ENDIF.
ELSE.
SORT gt_config_main BY werks matkl.
READ TABLE gt_config_main INTO ls_wbconfig WITH KEY
werks = gs_head-werks
matkl = ls_matkl-matkl
BINARY SEARCH.
IF sy-subrc EQ 0.
IF ls_wbconfig IS NOT INITIAL.
CLEAR gs_config.
gs_config = ls_wbconfig.
ENDIF.
ENDIF.

ENDIF.

ENDIF.

ELSEIF lt_wsitem IS NOT INITIAL.


SELECT matnr
matkl
FROM mara
INTO TABLE lt_matkl
FOR ALL ENTRIES IN lt_wsitem
WHERE matnr = lt_wsitem-matnr.

IF sy-subrc EQ 0.
SORT lt_matkl BY matnr.
ENDIF.
CLEAR ls_wbitem.
READ TABLE lt_wsitem INTO ls_wsitem INDEX 1.

CLEAR ls_matkl.
READ TABLE lt_matkl INTO ls_matkl WITH KEY
matnr = ls_wsitem-matnr
BINARY SEARCH .

IF ls_wsitem IS NOT INITIAL AND


ls_matkl IS NOT INITIAL.
CLEAR ls_wbconfig.
READ TABLE gt_config_main INTO ls_wbconfig WITH KEY
werks = gs_head-werks
matnr = ls_wsitem-matnr
matkl = ls_matkl-matkl
BINARY SEARCH.
IF sy-subrc EQ 0.
IF ls_wbconfig IS NOT INITIAL.
CLEAR gs_config.
gs_config = ls_wbconfig.
ENDIF.
ENDIF.
ELSE.
SORT gt_config_main BY werks matkl.
READ TABLE gt_config_main INTO ls_wbconfig WITH KEY
werks = gs_head-werks
matkl = ls_matkl-matkl
BINARY SEARCH.
IF sy-subrc EQ 0.
IF ls_wbconfig IS NOT INITIAL.
CLEAR gs_config.
gs_config = ls_wbconfig.
ENDIF.
ENDIF.

ENDIF.
ENDIF.

*End of changes by Ranjith for IRIS EPDK9A056E


IF ls_wb-direction = gc_out AND ( ls_wb-wtype = gc_sto OR ls_wb-wtype = gc_so
).
IF ls_wb-voref NE gv_voref AND lv_pgiba EQ 'A'.
* MESSAGE 'Please select non completed weighbridge ID' TYPE 'E'.
ELSEIF ls_wb-voref NE gv_voref .
MESSAGE 'Please select completed weighbridge ID' TYPE 'E'.
ENDIF.
ELSEIF ls_wb-voref IS INITIAL.
MESSAGE 'Please select completed weighbridge ID' TYPE 'E'.
ENDIF.
ENDIF.
IF gs_config-grn = 'B'.
PERFORM populate_screen CHANGING gv_wbuom gv_type.
ELSEIF gs_config-grn = 'S'.
PERFORM populate_screen_ws CHANGING gv_wbuom gv_type.
ELSE.
MESSAGE 'Maintain GRN based on weighbridge or weighscale' TYPE 'E'.
ENDIF.
SORT gt_item BY item ebeln ebelp delno posnr.
IF gv_cncl = abap_true.
PERFORM populate_grn.
ENDIF.
PERFORM populate_fcat USING gv_type gv_wbuom.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CHK_WBID
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM chk_wbid .
IF gs_head-wbid IS NOT INITIAL AND gs_head-werks IS NOT INITIAL.
* SELECT COUNT(*) FROM zgtmmtr_wbhead WHERE wbid = gs_head-wbid AND
* werks = gs_head-werks AND
* voref = gv_voref.
* IF sy-dbcnt IS INITIAL.
* MESSAGE 'Weighbridge ID & Plant is invalid for GRN' TYPE 'E'.
* ENDIF.

SELECT SINGLE * FROM zgtmmtr_wbhead INTO @DATA(ls_wb)


WHERE wbid = @gs_head-wbid AND
werks = @gs_head-werks." AND
" voref = gv_voref.
IF sy-dbcnt IS INITIAL.
MESSAGE 'Please select valid weighbridge ID' TYPE 'E'.
ELSE.
IF ls_wb-direction = gc_out AND ( ls_wb-wtype = gc_sto OR ls_wb-wtype = gc_so
).
IF ls_wb-voref NE gv_voref AND gv_voref EQ space.
* MESSAGE 'Please select non completed weighbridge ID' TYPE 'E'.
ELSEIF ls_wb-voref NE gv_voref .
MESSAGE 'Please select completed weighbridge ID' TYPE 'E'.
ENDIF.
ELSEIF ls_wb-voref IS INITIAL.
MESSAGE 'Please select completed weighbridge ID' TYPE 'E'.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form POPULATE_ITEM_GI_DELIVERY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM populate_item_gi_delivery .

DATA : lv_delivery TYPE vbeln_vl.

lv_delivery = gv_delivery.

PERFORM refresh_data.

CALL FUNCTION 'ZGTMMFM_GRN_GET_DETAILS'


EXPORTING
* im_werks =
* IM_WBID =
* IM_PO =
im_delivery = lv_delivery
* IM_GUI =
IMPORTING
es_head = gs_head
et_wb_ws_item = gt_item
* EV_ERROR =
* TABLES
* TT_RETURN =
.

gv_delivery = lv_delivery. " Fill GV_DELIVERY this here because its cleared in
the above PERFORM Refresh_data.

IF gt_item[] IS NOT INITIAL.


PERFORM populate_fcat USING gv_type gv_wbuom.
ENDIF.
*--------------------------------------------------------------------*

* SELECT vbeln,posnr,matnr,werks,uecha
* FROM lips INTO TABLE @DATA(lt_lips)
* WHERE vbeln = @gv_delivery.
* IF sy-subrc = 0.
*
* PERFORM refresh_data.
*
* READ TABLE lt_lips INTO DATA(ls_lips_1) INDEX 1.
*
**-- To get plant description
* SELECT SINGLE werks, name1 FROM t001w
* INTO @DATA(ls_t001w)
* WHERE werks = @ls_lips_1-werks.
*
* gv_delivery = ls_lips_1-vbeln. " Fill GV_DELIVERY this here because its
cleared in the above PERFORM Refresh_data.
*
* gs_head-werks = ls_lips_1-werks.
* gs_head-pname = ls_t001w-name1.
* gs_head-direction = gc_out.
* gs_head-wtype = gc_so.
* gs_head-budat = sy-datum.
* gs_head-bldat = sy-datum.
*
* IF lt_lips[] IS NOT INITIAL.
* SELECT matnr, maktx FROM makt
* INTO TABLE @DATA(lt_makt)
* FOR ALL ENTRIES IN @lt_lips
* WHERE matnr = @lt_lips-matnr.
* ENDIF.
*
* LOOP AT lt_lips INTO DATA(ls_lips).
* gs_item-delno = ls_lips-vbeln.
* gs_item-posnr = ls_lips-posnr.
* gs_item-matnr = ls_lips-matnr.
* IF ls_lips-uecha IS INITIAL.
* gs_item-batsp = icon_distribute. "Batch Splitup Icon
* ENDIF.
* READ TABLE lt_makt INTO DATA(ls_makt) WITH KEY matnr = ls_lips-matnr.
* IF sy-subrc = 0.
* gs_item-maktx = ls_makt-maktx.
* ENDIF.
*
* APPEND gs_item TO gt_item.
* CLEAR gs_item.
* ENDLOOP.
* SORT gt_item BY delno posnr.
* ENDIF.
*
* IF gt_item[] IS NOT INITIAL.
* PERFORM populate_fcat USING gv_type gv_wbuom.
* ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_INFORECORD_PRICE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_MATNR text
* -->P_LIFNR text
* -->P_WERKS text
* <--P_PRICE text
*----------------------------------------------------------------------*
FORM get_inforecord_price USING p_matnr TYPE bapieina-material
p_lifnr TYPE bapieina-vendor
p_werks TYPE bapieine-plant
CHANGING p_price
p_info_rec
p_ord_unit.

DATA: lt_inforecord_general TYPE TABLE OF bapieina,


lt_inforecord_purchorg TYPE TABLE OF bapieine,
ls_inforecord_purchorg TYPE bapieine,
lt_return TYPE TABLE OF bapireturn.

DATA : lv_value TYPE netpr,


lv_cuky TYPE waers,
lv_price TYPE bapicurr_d.

*-- To get inforecord and price


CALL FUNCTION 'BAPI_INFORECORD_GETLIST'
EXPORTING
vendor = p_lifnr
material = p_matnr
* MAT_GRP =
* VEND_MAT =
* VEND_PART =
* VEND_MATG =
* PURCH_ORG =
* INFO_TYPE =
plant = p_werks
* PUR_GROUP =
* PURCHASINGINFOREC =
* DELETED_INFORECORDS = ' '
* PURCHORG_DATA = 'X'
* GENERAL_DATA = 'X'
* MATERIAL_EVG =
* PURCHORG_VEND = ' '
TABLES
inforecord_general = lt_inforecord_general
inforecord_purchorg = lt_inforecord_purchorg
* INFORECORD_SEGMENT =
return = lt_return.

IF lt_return[] IS INITIAL.

READ TABLE lt_inforecord_purchorg INTO ls_inforecord_purchorg WITH KEY plant =


p_werks.
IF sy-subrc = 0.

p_info_rec = ls_inforecord_purchorg-info_rec. " Info record


p_price = ls_inforecord_purchorg-net_price. " Price

p_ord_unit = ls_inforecord_purchorg-orderpr_un. "Order Price Unit


* IF ls_inforecord_purchorg-net_price IS NOT INITIAL AND
ls_inforecord_purchorg-currency IS NOT INITIAL.
*
* lv_cuky = ls_inforecord_purchorg-currency.
* lv_value = ls_inforecord_purchorg-net_price.
*
* CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'
* EXPORTING
* currency = lv_cuky
* amount_internal = lv_value
* IMPORTING
* amount_external = lv_price.
*
* p_price = lv_price. " Price
* ENDIF.

ENDIF.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form STATUS_9008
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM status_9008 .

SET PF-STATUS '9008_CANCEL'.


* SET TITLEBAR 'xxx'.

LOOP AT SCREEN.
IF screen-group1 EQ 'WO' AND gv_wo_wb_can IS NOT INITIAL.
screen-active = 1.
ELSEIF screen-group1 EQ 'WO'.
screen-active = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.

ENDFORM.
FORM status_9009 .

SET PF-STATUS '9009_PRINT'.


* SET TITLEBAR 'xxx'.

LOOP AT SCREEN.

IF screen-group1 EQ 'WB' AND gv_wb_print IS NOT INITIAL.


screen-active = 1.
ELSEIF screen-group1 EQ 'WO' AND gv_wo_wb_print IS NOT INITIAL.
screen-active = 1.
ELSEIF screen-group1 EQ 'WB'.
screen-active = 0.
ELSEIF screen-group1 EQ 'WO'.
screen-active = 0.
ENDIF.
* IF screen-group1 EQ 'WO' AND gv_wo_wb_can IS NOT INITIAL.
* screen-active = 1.
* ELSEIF screen-group1 EQ 'WO'.
* screen-active = 0.
* ENDIF.
MODIFY SCREEN.
ENDLOOP.

ENDFORM.

* Start of Changes - IN_RAMESHNS - EPDK9A050F


*&---------------------------------------------------------------------*
*& Form BATCH_F4
*&---------------------------------------------------------------------*
FORM batch_f4 USING p_row_no TYPE lvc_s_roid.

DATA: lt_return_tab TYPE STANDARD TABLE OF ddshretval.


READ TABLE gt_item ASSIGNING FIELD-SYMBOL(<fs_item>)
INDEX p_row_no-row_id.
IF sy-subrc = 0.
**-To get the Storage Location Description
SELECT werks, lgort, matnr, charg, clabs FROM mchb
INTO TABLE @DATA(lt_mchb)
WHERE matnr = @<fs_item>-matnr
AND werks = @gs_head-werks.
IF sy-subrc = 0.
DELETE lt_mchb WHERE clabs IS INITIAL.
SORT lt_mchb BY werks matnr charg.
ENDIF.
ENDIF.

IF lt_mchb[] IS NOT INITIAL.


CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CHARG'
dynpprog = sy-repid
dynpnr = sy-dynnr
value_org = 'S'
TABLES
value_tab = lt_mchb
return_tab = lt_return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.

IF sy-subrc = 0 AND lt_return_tab[] IS NOT INITIAL.


READ TABLE lt_return_tab INTO DATA(ls_return_tab) INDEX 1.
IF sy-subrc = 0.
<fs_item>-charg = ls_return_tab-fieldval.
CALL METHOD go_alv_itm->refresh_table_display.

PERFORM set_cursor_alv USING p_row_no-row_id


'CHARG'.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
* End of Changes - IN_RAMESHNS - EPDK9A050F
*&---------------------------------------------------------------------*
*& Form SET_DROPDOWN_BAGOWNER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_LIST text
* -->P_0044 text
*----------------------------------------------------------------------*
FORM set_dropdown_bagowner TABLES t_val "STRUCTURE vrm_value
USING p_field TYPE vrm_value-text.

TYPES: BEGIN OF lty_domain,


ddtext TYPE val_text, " Domain text
domvalue_l TYPE domvalue_l, " Domain value
END OF lty_domain,

BEGIN OF lty_vrm_value,
key(40) TYPE c, "Key
text(80) TYPE c, " Key text
END OF lty_vrm_value.

DATA: lt_value TYPE TABLE OF lty_vrm_value,


lt_domain TYPE TABLE OF lty_domain,
ls_domain TYPE lty_domain,
ls_value TYPE lty_vrm_value.

CONSTANTS : lc_domain TYPE char20 VALUE 'ZDM_BAGOWNER'.

* Get domain values from the table DD07T.

REFRESH lt_domain.
SELECT ddtext " Texts
domvalue_l " Key
FROM dd07t
INTO TABLE lt_domain
WHERE domname = lc_domain
AND ddlanguage = sy-langu
AND as4local = 'A'.

IF sy-subrc EQ 0.
SORT lt_domain BY domvalue_l.

REFRESH lt_value.
LOOP AT lt_domain INTO ls_domain.
ls_value-key = ls_domain-domvalue_l.
ls_value-text = ls_domain-ddtext.
APPEND ls_value TO lt_value.
ENDLOOP.
ENDIF.

DELETE lt_value WHERE key = space.

*set the drop down values for the packing material


CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = p_field
values = lt_value
EXCEPTIONS
id_illegal_name = 1
OTHERS = 2.

t_val[] = lt_value[].

ENDFORM.
* Begin of Ramani N for IRIS Project
FORM create_delivery_wo_po.

DATA: lt_ekpo TYPE STANDARD TABLE OF ekpo,


lt_item TYPE TABLE OF zgtmmtr_wbitem,
ls_ekpo TYPE ekpo,
lt_ekko TYPE TABLE OF ekko,
ls_ekko TYPE ekko,
lv_werks TYPE werks_d,
lv_matnr TYPE matnr, "IRIS
lv_ebeln TYPE ebeln, " IRIS
lv_deliv TYPE bapishpdelivnumb-deliv_numb,
lv_kunnr TYPE i,
ls_mara TYPE ty_mara,
lt_sto_items TYPE TABLE OF bapidlvreftosto,
ls_item_tmp TYPE zgtmmtr_wbitem,
ls_sto_items TYPE bapidlvreftosto,
lt_return TYPE STANDARD TABLE OF bapiret2,
lt_return_tmp TYPE tt_return,
ls_return TYPE LINE OF tt_return,
lv_del TYPE char1,
lv_grqty TYPE menge_d,
lv_uom TYPE meins,
ls_item TYPE ty_item.

FIELD-SYMBOLS: <fs_ekko> TYPE ekko,


<fs_item> TYPE ty_item.

*Get the record from the WBITEM


SELECT * FROM zgtmmtr_wbitem
INTO TABLE lt_item
WHERE wbid = gs_head-wbid.

IF sy-subrc EQ 0.
LOOP AT lt_item INTO ls_item_tmp WHERE vbeln IS NOT INITIAL.
lv_del = 'X'.
EXIT.
ENDLOOP.
ENDIF.

IF lv_del IS INITIAL.
READ TABLE gt_item INTO ls_item INDEX 1.
IF sy-subrc EQ 0.
lv_kunnr = ls_item-kunnr.
MOVE lv_kunnr TO lv_werks.
CLEAR lv_matnr .
lv_matnr = ls_item-matnr.
ENDIF.

* Need to get a lattest PO for the session for the material

SELECT *
INTO TABLE lt_ekpo
FROM ekpo
WHERE werks = lv_werks AND
loekz = space AND
elikz = space . "#EC CI_NOFIRST
IF sy-subrc EQ 0.
SORT lt_ekpo BY ebeln ebelp matnr.
ENDIF.

lv_werks = gs_head-werks."6145.
SELECT * INTO TABLE lt_ekko FROM ekko
FOR ALL ENTRIES IN lt_ekpo
WHERE ebeln = lt_ekpo-ebeln.
IF sy-subrc EQ 0.
SORT lt_ekpo BY ebeln ebelp.
DELETE lt_ekko WHERE reswk <> lv_werks AND bsart NE 'Z004'.
SORT lt_ekko BY aedat DESCENDING.
ENDIF.

* iris
LOOP AT lt_ekko INTO ls_ekko.

READ TABLE lt_ekpo INTO ls_ekpo


WITH KEY ebeln = ls_ekko-ebeln
matnr = lv_matnr
BINARY SEARCH.

IF sy-subrc EQ 0.
CLEAR lv_ebeln .
lv_ebeln = ls_ekko-ebeln.
EXIT.
ELSE.
CONTINUE.
ENDIF.

ENDLOOP.
* IRIS
* CLEAR LS_EKKO.
* READ TABLE lt_ekko INTO ls_ekko INDEX 1.
* IF sy-subrc = 0.
IF ls_ekko IS NOT INITIAL.

* IRIS
CLEAR ls_ekpo.
READ TABLE lt_ekpo INTO ls_ekpo
WITH KEY
ebeln = ls_ekko-ebeln ebelp = 1
BINARY SEARCH.

IF sy-subrc EQ 0 AND
lv_matnr EQ ls_ekpo-matnr.
* IRIS

READ TABLE gt_item INTO ls_item INDEX 1.


IF sy-subrc EQ 0.
ls_sto_items-ref_doc = ls_ekko-ebeln.
ls_sto_items-ref_item = '000001'.

IF sy-tabix = 1.
* IF ls_item-pakdt IS NOT INITIAL.
* ls_item-wbqty = ls_item-wbqty - ls_item-pakdt.
* ENDIF.
ls_sto_items-dlv_qty = ls_item-wbqty / 1000.
ls_sto_items-sales_unit = 'MT'.
ELSE.
ls_sto_items-dlv_qty = ls_item-palno1.
ENDIF.
lv_grqty = ls_sto_items-dlv_qty.
lv_uom = ls_sto_items-sales_unit.

APPEND ls_sto_items TO lt_sto_items.


ENDIF.
CLEAR ls_ekpo.
READ TABLE lt_ekpo INTO ls_ekpo
WITH KEY ebeln = ls_ekko-ebeln ebelp = 2 BINARY SEARCH.
IF sy-subrc EQ 0.

ls_sto_items-ref_item = '000002'.
IF ls_item-palno1 IS NOT INITIAL.
ls_sto_items-dlv_qty = ls_item-palno1.
* ELSEIF ls_item-pakdt IS NOT INITIAL.
* ls_sto_items-dlv_qty = ls_item-pakdt.
ENDIF.
SELECT SINGLE mtart meins
INTO (ls_mara-mtart,ls_mara-meins)
FROM mara WHERE matnr EQ ls_ekpo-matnr.
IF ls_mara-mtart = 'VERP'. " Check whether Packaging material
ls_sto_items-sales_unit = ls_mara-meins.
ENDIF.
APPEND ls_sto_items TO lt_sto_items.
ls_item-item = 2.
* ls_item-posnr = 20.
ls_item-matnr = ls_ekpo-matnr.
ls_item-wbuom = ls_mara-meins.
ls_item-wbqty = ls_item-palno1.
ls_item-grqty = ls_item-palno1.
* IF ls_item-palno1 IS INITIAL AND
* ls_item-pakdt IS NOT INITIAL.
* ls_item-wbqty = ls_item-pakdt.
* ls_item-grqty = ls_item-pakdt.
* LS_ITEM-PALNO1 = LS_ITEM-PAKDT.
* ENDIF.

APPEND ls_item TO gt_item.


ENDIF.

CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_STO'


EXPORTING
ship_point = gs_head-werks
due_date = sy-datum
IMPORTING
delivery = lv_deliv
TABLES
stock_trans_items = lt_sto_items[]
return = lt_return.

READ TABLE lt_return TRANSPORTING NO FIELDS WITH KEY type = gc_e.


IF sy-subrc EQ 0.
APPEND LINES OF lt_return TO lt_return_tmp .
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

IF lv_deliv IS NOT INITIAL.


LOOP AT gt_item ASSIGNING <fs_item>.
<fs_item>-delno = lv_deliv.
<fs_item>-posnr = sy-tabix * 10.
*Begin of changes by R.Ranjtih For IRIS EPDK9A07HP
IF <fs_item>-ebeln IS INITIAL AND
ls_ekko-ebeln IS NOT INITIAL.
<fs_item>-ebeln = ls_ekko-ebeln.
ENDIF.
*End of changes by R.Ranjtih For IRIS EPDK9A07HP
IF lv_grqty IS NOT INITIAL AND sy-tabix EQ 1.
<fs_item>-grqty = lv_grqty.
<fs_item>-uom = lv_uom.
ENDIF.
.
*

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'


EXPORTING
input = <fs_item>-posnr
IMPORTING
output = <fs_item>-posnr.

ENDLOOP.
REFRESH gt_item_tmp.
gt_item_tmp[] = gt_item[].
DELETE gt_item WHERE item = '0002'.
ENDIF.

PERFORM update_table USING gs_head gt_item.

ENDIF.

ENDIF.
ENDIF.
ELSE.
IF ls_item_tmp-vbeln IS NOT INITIAL.
ls_return-type = gc_e.
ls_return-id = '00'.
ls_return-number = 001.
ls_return-message_v1 = 'Delivery document already created ' .
* CONCATENATE 'Item' <fs_pitem>-wbitem
* INTO ls_return-message_v2 SEPARATED BY space.
APPEND ls_return TO lt_return_tmp.
ENDIF.

PERFORM display_message USING lt_return_tmp.


ENDIF.

IF lt_return_tmp IS NOT INITIAL.


PERFORM display_message USING lt_return_tmp.
ENDIF.

ENDFORM.
* End of Ramani N for IRIS Project
*&---------------------------------------------------------------------*
*& Form UPDATE_TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PS_HEAD text
* -->P_GT_ITEM_TMP text
* -->P_LS_GM_HRET text
* -->P_ENDIF text
*----------------------------------------------------------------------*
FORM update_table USING ps_head TYPE zgtmm_s_grnhead
pt_item TYPE tt_item.

DATA : lt_item TYPE TABLE OF zgtmmtr_wbitem,


lt_wsitem TYPE TABLE OF zgtmmtr_wsitem,
lt_item_tmp TYPE TABLE OF ty_item,
ls_item TYPE ty_item,
ls_wsitem TYPE ty_item.

FIELD-SYMBOLS :<fs_wbitem> TYPE zgtmmtr_wbitem,


<fs_wsitem> TYPE zgtmmtr_wsitem.

lt_item_tmp[] = pt_item[].
SORT lt_item_tmp BY matnr.
*Get the record from the WBITEM
SELECT * FROM zgtmmtr_wbitem
INTO TABLE lt_item
WHERE wbid = ps_head-wbid.

IF sy-subrc EQ 0.
SORT lt_item BY wbid item.

LOOP AT lt_item ASSIGNING <fs_wbitem>.


CLEAR ls_item.
READ TABLE lt_item_tmp INTO ls_item WITH KEY
matnr = <fs_wbitem>-matnr
BINARY SEARCH.
<fs_wbitem>-vbeln = ls_item-delno.
<fs_wbitem>-posnr = ls_item-posnr.
*Begin of changes by R.Ranjtih For IRIS EPDK9A07HP
IF <fs_wbitem>-ebeln IS INITIAL AND
ls_item-ebeln IS NOT INITIAL.
<fs_wbitem>-ebeln = ls_item-ebeln.
ENDIF.
*End of changes by R.Ranjtih For IRIS EPDK9A07HP
* <fs_wbitem>-pmatno1 = ls_item-pakdt.
* <fs_wbitem>-pmat1 = ls_item-ptyp1.
ENDLOOP.

ENDIF.
*Get the record from WS table
SELECT * FROM zgtmmtr_wsitem
INTO TABLE lt_wsitem
WHERE wbid = ps_head-wbid.

IF sy-subrc EQ 0.
SORT lt_item BY wbid item.
LOOP AT lt_wsitem ASSIGNING <fs_wsitem>.
CLEAR ls_item.
READ TABLE lt_item_tmp INTO ls_item WITH KEY
matnr = <fs_wsitem>-matnr
BINARY SEARCH.
<fs_wsitem>-vbeln = ls_item-delno.
<fs_wsitem>-posnr = ls_item-posnr.
*Begin of changes by R.Ranjtih For IRIS EPDK9A07HP
IF <fs_wsitem>-ebeln IS INITIAL AND
ls_item-ebeln IS NOT INITIAL.
<fs_wsitem>-ebeln = ls_item-ebeln.
ENDIF.
*End of changes by R.Ranjtih For IRIS EPDK9A07HP
* <fs_wbitem>-pmatno1 = ls_item-pakdt.
* <fs_wbitem>-pmat1 = ls_item-ptyp1.
ENDLOOP.
ENDIF.

IF lt_item IS NOT INITIAL.


MODIFY zgtmmtr_wbitem FROM TABLE lt_item.
IF sy-subrc EQ 0.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF.
ENDIF.

IF lt_wsitem IS NOT INITIAL.


MODIFY zgtmmtr_wsitem FROM TABLE lt_wsitem.
IF sy-subrc EQ 0.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form MESSAGE_POP_UP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LT_MESG text
*----------------------------------------------------------------------*
FORM message_pop_up TABLES p_lt_mesg TYPE esp1_message_tab_type.
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
i_message_tab = p_lt_mesg.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form EVERS_F4
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_ROW_NO text
*----------------------------------------------------------------------*
FORM evers_f4 USING p_row_no TYPE lvc_s_roid.

* Begin of changes 4000004952 EPDK9A0CVD on 25/09/2018


* As per GT suggetions take the same logic from ZMM404
TYPES : BEGIN OF lty_t001w ,
werks TYPE werks_d,
bukrs TYPE bukrs,
END OF lty_t001w.

DATA : lt_t024w TYPE TABLE OF t024w,


lt_param TYPE TABLE OF zgtcatr_param,
lt_return_tab TYPE STANDARD TABLE OF ddshretval,
lt_evers TYPE TABLE OF zgtmmst_spot_purchase_evers,
ls_t001k TYPE t001k,
ls_t024w LIKE LINE OF lt_t024w,
ls_evers TYPE zgtmmst_spot_purchase_evers,
ls_param TYPE zgtcatr_param.

RANGES : lv_werks FOR ekpo-werks.


CLEAR : ls_param, lt_param[].
* Fill the param as ZMM404
ls_param-prognam = 'SAPMZNGONLMM_GRN'.
ls_param-mapid = 'A'.
ls_param-modules = 'MM'.

ls_param-werks = gs_head-werks.
* Ge the company code.
SELECT SINGLE bwkey
bukrs
FROM t001k INTO ls_t001k
WHERE bwkey = gs_head-werks.

ls_param-bukrs = ls_t001k-bukrs.
*Get the Param
CALL FUNCTION 'ZGTTOOLSFM_PARAM'
EXPORTING
gs_param = ls_param
TABLES
gt_param = lt_param
EXCEPTIONS
import_parameters_empty = 1
nodatafound = 2
OTHERS = 3.

* If the Param is initial


IF lt_param IS INITIAL.
*Get the Purchase org detials as per ZMM404
*Get the Purchase org
DATA(ls_config1) = gt_config[ werks = gs_head-werks
matnr = space
matkl = gs_item-matkl ].
SELECT * FROM t024w INTO TABLE lt_t024w WHERE ekorg = ls_config1-ekorg.
REFRESH lv_werks.
LOOP AT lt_t024w INTO ls_t024w.
lv_werks-sign = 'I'.
lv_werks-option = 'EQ'.
lv_werks-low = ls_t024w-werks.
APPEND lv_werks.
ENDLOOP.
* Get again the PARAM based on the ZMM409
SELECT * FROM zgtcatr_param INTO TABLE lt_param WHERE prognam = ls_param-
prognam
AND mapid = ls_param-mapid AND modules = ls_param-modules AND werks IN
lv_werks.
ENDIF.

CLEAR : ls_evers, lt_evers[].


*Fill the EVERS table
LOOP AT lt_param INTO ls_param.
ls_evers-evers = ls_param-param1.
APPEND ls_evers TO lt_evers.
ENDLOOP.
* Get the EVERS texts
IF lt_evers IS NOT INITIAL.
SELECT evers,evtxt FROM t027b
INTO TABLE @DATA(lt_t027b)
FOR ALL ENTRIES IN @lt_evers
WHERE spras = @sy-langu AND
evers = @lt_evers-evers.

IF sy-subrc = 0.
SORT lt_t027b BY evers.
ENDIF.
ENDIF.

* End of changes 4000004952 EPDK9A0CVD on 25/09/2018

READ TABLE gt_item ASSIGNING FIELD-SYMBOL(<fs_item>)


INDEX p_row_no-row_id.
IF sy-subrc = 0.
** Begin of changes 4000004952 EPDK9A0CVD on 25/09/2018
***-To get the Storage Location Description
* SELECT evers,evtxt FROM t027b
* INTO TABLE @DATA(lt_t027b)
* WHERE spras = @sy-langu.
*
* IF sy-subrc = 0.
* SORT lt_t027b BY evers.
* ENDIF.
*
* End of changes 4000004952 EPDK9A0CVD on 25/09/2018
ENDIF.
IF lt_t027b[] IS NOT INITIAL.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'EVERS'
dynpprog = sy-repid
dynpnr = sy-dynnr
value_org = 'S'
TABLES
value_tab = lt_t027b
return_tab = lt_return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.

IF sy-subrc = 0 AND lt_return_tab[] IS NOT INITIAL.


READ TABLE lt_return_tab INTO DATA(ls_return_tab) INDEX 1.
IF sy-subrc = 0.
<fs_item>-evers = ls_return_tab-fieldval.
CALL METHOD go_alv_itm->refresh_table_display.

PERFORM set_cursor_alv USING p_row_no-row_id


'EVERS'.
ENDIF.
ENDIF.
ENDIF.

IF <fs_item>-evers = 'PR'.
MESSAGE text-036 TYPE 'E'." DISPLAY LIKE 'E'.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form CALL_MB90
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM call_mb90 .

IF gv_wb_print IS NOT INITIAL.

SELECT SINGLE mblnr, mjahr FROM zgtmmtr_wbitem


INTO @DATA(ls_doc_no)
WHERE wbid = @gv_wbid.
IF sy-subrc NE 0.
SELECT SINGLE mblnr, mjahr FROM zgtmmtr_wsitem
INTO @ls_doc_no
WHERE wbid = @gv_wbid.
ENDIF.

SET PARAMETER ID 'MBN' FIELD ls_doc_no-mblnr.


SET PARAMETER ID 'MJA' FIELD ls_doc_no-mjahr.

ELSEIF gv_wo_wb_print IS NOT INITIAL.


SET PARAMETER ID 'MBN' FIELD gv_mblnr.
SET PARAMETER ID 'MJA' FIELD gv_mjahr.
ENDIF.

CALL TRANSACTION 'MB90' AND SKIP FIRST SCREEN.


ENDFORM.

You might also like