Sie sind auf Seite 1von 4

Include - FV50PF0P_POS_GEWUPDATE_CHSP - ENHANCEMENT 2 ZMM_REMOVE_LGORT_PGI

line - 6

if sy-ucomm = 'SAMD' or sy-tcode = 'VL10X'


or SY-TCODE = 'VL03N' or sy-tcode = 'VL02N' "Hemanth - Change
or SY-UCOMM = 'WABU_T' .
* BREAK renfroabap.
TYPES: BEGIN OF ty_mara,
matnr TYPE mara-matnr,
mtart TYPE mara-mtart,
END OF ty_mara,
BEGIN OF ty_mchb,
matnr TYPE mchb-matnr,
werks TYPE mchb-werks,
lgort TYPE mchb-lgort,
charg TYPE mchb-charg,
clabs TYPE mchb-clabs,
END OF ty_mchb.

DATA : gt_mara TYPE TABLE OF ty_mara,


gs_mara TYPE ty_mara,
gt_mchb TYPE TABLE OF ty_mchb,
gs_mchb TYPE ty_mchb,
gs_ekpo like LINE OF xekpo,
gs_lips LIKE LINE OF xlips,
gs_lips1 LIKE LINE OF xlips,
gs_lips_new LIKE LINE OF xlips,
v_qty type ekpo-MENGE,
v_posnr type posnr.
* gt_lips like xlips.
DATA: BEGIN OF gt_lips OCCURS 15.
INCLUDE STRUCTURE LIPSVB.
DATA: END OF gt_lips.
data : lv_lfimg TYPE lips-lfimg,
lv_lgmng TYPE lips-lgmng.

if xlips is NOT INITIAL.


SELECT matnr
mtart FROM mara INTO TABLE gt_mara
FOR ALL ENTRIES IN xlips
WHERE matnr = xlips-matnr.

SELECT matnr
werks
lgort
charg
clabs FROM mchb INTO TABLE gt_mchb
FOR ALL ENTRIES IN xlips
WHERE matnr = xlips-matnr
AND werks = xlips-werks
* AND lgort = xlips-lgort
AND charg = xlips-charg.
endif.
delete gt_mchb where lgort ne 'LF01' and lgort ne 'WP02'.
sort gt_mchb by lgort.
sort xlips by lgort.
SELECT sum( lfimg ) sum( lgmng ) from lips INTO (lv_lfimg, lv_lgmng ) WHERE matnr =
xekpo-matnr and
vgbel = xekpo-ebeln and vgpos = xekpo-ebelp.
LOOP AT xlips INTO gs_lips.
READ TABLE gt_mara INto gs_mara with KEY matnr = gs_lips-matnr.
IF sy-subrc = 0 and gs_mara-mtart = 'ZSFG'.
READ TABLE XEKPO INto gs_ekpo WITH KEY ebeln = gs_lips-vgbel
ebelp = gs_lips-vgpos.
IF sy-subrc = 0.
READ TABLE gt_mchb Into gs_mchb with KEY matnr = gs_lips-matnr
werks = gs_lips-werks
lgort = gs_lips-lgort
charg = gs_lips-charg.
IF sy-subrc = 0 .
if gs_lips-lgort = 'LF01'
or gs_lips-lgort = ' '.
if sy-tcode = 'VL10X'.
IF gs_ekpo-menge < gs_mchb-CLABS.

gs_lips-lfimg = gs_ekpo-menge - lv_lfimg.


gs_lips-lgmng = gs_ekpo-menge - lv_lgmng.
* else.
* xlips-lfimg = gs_ekpo-menge.
* xlips-lgmng = gs_ekpo-menge.
* endif.
MODIFY xlips FROM gs_lips TRANSPORTING lfimg lgmng WHERE vbeln =
gs_lips-vbeln
AND posnr = gs_lips-posnr.
exit.
ELSEIF gs_ekpo-menge > gs_mchb-CLABS.
* if sy-tcode = 'VL10X'.
gs_lips-lfimg = gs_mchb-CLABS - lv_lfimg.
gs_lips-lgmng = gs_mchb-CLABS - lv_lgmng.
* else.
* xlips-lfimg = gs_ekpo-menge.
* xlips-lgmng = gs_ekpo-menge.
* endif.
v_qty = gs_ekpo-menge - gs_lips-lfimg.
MODIFY xlips FROM gs_lips TRANSPORTING lfimg lgmng WHERE vbeln =
gs_lips-vbeln
AND posnr =
gs_lips-posnr.
endif.
else.
IF gs_lips-lfimg < gs_mchb-CLABS.
gs_lips-lfimg = gs_lips-lfimg .
gs_lips-lgmng = gs_lips-lfimg .
MODIFY xlips TRANSPORTING lfimg lgmng WHERE vbeln = gs_lips-vbeln
AND posnr = gs_lips-posnr.
exit.
ELSEIF gs_lips-lfimg > gs_mchb-CLABS.
gs_lips-lfimg = gs_mchb-CLABS .
gs_lips-lgmng = gs_mchb-CLABS .
* v_qty = gs_ekpo-menge - gs_lips-lfimg.
MODIFY xlips FROM gs_lips TRANSPORTING lfimg lgmng WHERE vbeln =
gs_lips-vbeln
AND posnr =
gs_lips-posnr.
* exit.
endif.
endif.
* endif.
ELSEIF gs_lips-lgort = 'WP02'
or gs_lips-lgort = ' '.
if NOT v_qty is INITIAL.
* if sy-tcode = 'VL10X'.
*
* ENDIF.
IF v_qty < gs_mchb-CLABS.
gs_lips-lfimg = v_qty.
gs_lips-lgmng = v_qty.
MODIFY xlips FROM gs_lips TRANSPORTING lfimg lgmng WHERE vbeln =
gs_lips-vbeln
AND posnr = gs_lips-posnr.
ELSEIF v_qty > gs_mchb-CLABS.
gs_lips-lfimg = gs_mchb-CLABS.
gs_lips-lgmng = gs_mchb-CLABS.
MODIFY xlips FROM gs_lips TRANSPORTING lfimg lgmng WHERE vbeln =
gs_lips-vbeln
AND posnr =
gs_lips-posnr.
ENDIF.
ELSEIF v_qty is INITIAL.
if SY-TCODE = 'VL10X'.
IF gs_ekpo-menge < gs_mchb-CLABS.
*Begin Of Inser - Hemanth

gs_lips-lfimg = gs_ekpo-menge - lv_lfimg .


gs_lips-lgmng = gs_ekpo-menge - lv_lgmng .
MODIFY xlips FROM gs_lips TRANSPORTING lfimg lgmng WHERE vbeln =
gs_lips-vbeln
AND posnr = gs_lips-posnr.
exit.
* endif.
*End of Insert - hemanth

ELSEIF gs_ekpo-menge > gs_mchb-CLABS.


gs_lips-lfimg = gs_mchb-CLABS.
gs_lips-lgmng = gs_mchb-CLABS.
* v_qty = gs_ekpo-menge - gs_lips-lfimg.
MODIFY xlips FROM gs_lips TRANSPORTING lfimg lgmng WHERE vbeln =
gs_lips-vbeln
AND posnr =
gs_lips-posnr.
endif.
else.
IF gs_lips-lfimg < gs_mchb-CLABS.
*Begin Of Inser - Hemanth

* gs_lips-lfimg = gs_ekpo-menge - lv_lfimg .


* gs_lips-lgmng = gs_ekpo-menge - lv_lgmng .
* MODIFY xlips TRANSPORTING lfimg lgmng WHERE vbeln = gs_lips-vbeln
* AND posnr = gs_lips-posnr.
* exit.
* endif.
*End of Insert - hemanth

ELSEIF gs_lips-lfimg > gs_mchb-CLABS.


gs_lips-lfimg = gs_mchb-CLABS.
gs_lips-lgmng = gs_mchb-CLABS.
* v_qty = gs_ekpo-menge - gs_lips-lfimg.
MODIFY xlips FROM gs_lips TRANSPORTING lfimg lgmng WHERE vbeln =
gs_lips-vbeln
AND posnr =
gs_lips-posnr.
endif.
endif.
endif.
else.
delete xlips where VBELN = gs_lips-vbeln
AND posnr = gs_lips-posnr.

ENDIF.
READ TABLE xlips INto gs_lips with KEY lgort = 'LF01'.
IF sy-subrc = 0.
READ TABLE xlips INto gs_lips1 with KEY lgort = 'WP02'.
IF sy-subrc = 0.
IF gs_lips-posnr gt gs_lips1-posnr.
v_posnr = gs_lips-posnr.
gs_lips-posnr = gs_lips1-posnr.
MODIFY xlips FROM gs_lips TRANSPORTING posnr WHERE vbeln = gs_lips-vbeln
and lgort = 'LF01'.
gs_lips1-posnr = v_posnr.
MODIFY xlips FROM gs_lips1 TRANSPORTING posnr WHERE vbeln = gs_lips1-
vbeln
AND lgort = 'WP02'.
else.
CONTINUE.
ENDIF.
ENDIF.
ENDIF.
elseif gs_lips-lgort ne 'LF01' and
gs_lips-lgort ne 'WP02' and
gs_lips-lgort is NOT initial.
delete xlips where VBELN = gs_lips-vbeln
AND posnr = gs_lips-posnr.
ENDIF.
ENDIF.
ENDIF.

ENDLOOP.
endif.

Das könnte Ihnen auch gefallen