This man is too old to remember everything in his brain. Right now, he needs a place to write down what he has studied.
2012年11月19日 星期一
ZCL_IM_SHP_TAB_CUST_ITEM
客製DN new tab
METHOD IF_EX_LE_SHP_TAB_CUST_ITEM~ACTIVATE_TAB_PAGE .
DATA: CHINAORDERTYPE TYPE EKKO-CHINAORDERTYPE.
FIELD-SYMBOLS: <LS_XLIPS> TYPE LIPSVB.
CASE IS_LIKP-LFART.
WHEN 'NL' OR 'NLR'.
READ TABLE IT_XLIPS ASSIGNING <LS_XLIPS>
WITH KEY VBELN = IS_LIKP-VBELN.
CHECK SY-SUBRC EQ 0.
SELECT CHINAORDERTYPE INTO CHINAORDERTYPE FROM EKKO
WHERE EBELN EQ <LS_XLIPS>-VGBEL.
EXIT.
ENDSELECT.
IF SY-SUBRC EQ 0.
CASE CHINAORDERTYPE.
WHEN '3'.
IF IS_LIKP-LFART EQ 'NLR'.
EF_CAPTION = 'Goods Movement Data'.
EF_POSITION = 11.
EF_PROGRAM = 'SAPLZM008'.
EF_DYNPRO = '2000'.
ENDIF.
WHEN 'D'.
EF_CAPTION = 'Goods Movement Data'.
EF_POSITION = 11.
EF_PROGRAM = 'SAPLZM008'.
EF_DYNPRO = '1000'.
ENDCASE.
ENDIF.
ENDCASE.
EF_CAPTION = 'LED Specification'.
EF_POSITION = 12.
EF_PROGRAM = 'SAPLZM008'.
EF_DYNPRO = '3000'.
ENDMETHOD.
METHOD IF_EX_LE_SHP_TAB_CUST_ITEM~TRANSFER_DATA_TO_SUBSCREEN .
CASE IS_LIKP-LFART.
WHEN 'NL' OR 'NLR'.
CALL FUNCTION 'Z_SHPTAB_ITEM_GR_PUSH'
EXPORTING
IM_LIPS = IS_LIPS
IM_TRANTYPE = IF_TRTYP.
ENDCASE.
CALL FUNCTION 'Z_SHPTAB_ITEM_GR_PUSH'
EXPORTING
IM_LIPS = IS_LIPS
IM_TRANTYPE = IF_TRTYP
IM_LIKP = IS_LIKP
TABLES
IT_XLIPS = IT_XLIPS.
ENDMETHOD.
FUNCTION Z_SHPTAB_ITEM_GR_PUSH.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(IM_LIPS) TYPE LIPS
*" REFERENCE(IM_TRANTYPE) TYPE TRTYP
*" REFERENCE(IM_LIKP) TYPE LIKP
*" TABLES
*" IT_XLIPS TYPE SHP_LIPS_T OPTIONAL
*"----------------------------------------------------------------------
LIPS-REFDOCNR = IM_LIPS-REFDOCNR.
LIPS-REFDOCITEM = IM_LIPS-REFDOCITEM.
TRANTYPE = IM_TRANTYPE.
MOVE-CORRESPONDING IM_LIPS TO LIPS.
MOVE-CORRESPONDING IM_LIKP TO LIKP.
IT_LIPS[] = IT_XLIPS[].
IMPORT IT_ZST046 FROM MEMORY ID 'ZST046'.
FREE MEMORY ID 'ZST046'.
*20101110 BY SM IF IT_ZST046[] IS INITIAL.
LOOP AT IT_LIPS INTO WA_LIPSVB.
*20110119 BY SM 找不到DN及ITEM 的才從ZST045讀取
READ TABLE IT_ZST046 WITH KEY POSNR = WA_LIPSVB-POSNR "因為VL01N進來時不會有DN NO.
MATNR = WA_LIPSVB-MATNR. "若該項次有異動料號時也要能判斷正確
* READ TABLE IT_ZST046 WITH KEY VBELN = WA_LIPSVB-VBELN
* POSNR = WA_LIPSVB-POSNR.
IF SY-SUBRC = 4. "找不到的才從ZST045讀取
*20110119 BY SM 若是找不到,有可能是該項次料號異動,該item在IT_ZST046 & ZST046的資料要刪除
*否則會有Double item資料的情形
DELETE IT_ZST046 WHERE POSNR = WA_LIPSVB-POSNR.
* MODIFY IT_ZST046.
DELETE FROM ZST046 WHERE VBELN = WA_LIPSVB-VBELN AND POSNR = WA_LIPSVB-POSNR.
SELECT *
INTO CORRESPONDING FIELDS OF IT_ZST046
FROM ZST045
WHERE VBELN = WA_LIPSVB-VGBEL
AND POSNR = WA_LIPSVB-VGPOS
*20101022 BY SM 增加客戶及料號判斷,才可以抓到正確的資料
AND KUNNR = IM_LIKP-KUNAG
AND MATNR = WA_LIPSVB-MATNR.
IT_ZST046-VBELN = WA_LIPSVB-VBELN.
IT_ZST046-POSNR = WA_LIPSVB-POSNR.
APPEND IT_ZST046.
ENDSELECT.
ENDIF. " END OF 找不到的才從ZST045讀取
ENDLOOP.
*20101110 ENDIF.
ENDFUNCTION.
FUNCTION Z_SHPTAB_ITEM_GR_PUSH.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(IM_LIPS) TYPE LIPS
*" REFERENCE(IM_TRANTYPE) TYPE TRTYP
*" REFERENCE(IM_LIKP) TYPE LIKP
*" TABLES
*" IT_XLIPS TYPE SHP_LIPS_T OPTIONAL
*"----------------------------------------------------------------------
LIPS-REFDOCNR = IM_LIPS-REFDOCNR.
LIPS-REFDOCITEM = IM_LIPS-REFDOCITEM.
TRANTYPE = IM_TRANTYPE.
MOVE-CORRESPONDING IM_LIPS TO LIPS.
MOVE-CORRESPONDING IM_LIKP TO LIKP.
IT_LIPS[] = IT_XLIPS[].
IMPORT IT_ZST046 FROM MEMORY ID 'ZST046'.
FREE MEMORY ID 'ZST046'.
*20101110 BY SM IF IT_ZST046[] IS INITIAL.
LOOP AT IT_LIPS INTO WA_LIPSVB.
*20110119 BY SM 找不到DN及ITEM 的才從ZST045讀取
READ TABLE IT_ZST046 WITH KEY POSNR = WA_LIPSVB-POSNR "因為VL01N進來時不會有DN NO.
MATNR = WA_LIPSVB-MATNR. "若該項次有異動料號時也要能判斷正確
* READ TABLE IT_ZST046 WITH KEY VBELN = WA_LIPSVB-VBELN
* POSNR = WA_LIPSVB-POSNR.
IF SY-SUBRC = 4. "找不到的才從ZST045讀取
*20110119 BY SM 若是找不到,有可能是該項次料號異動,該item在IT_ZST046 & ZST046的資料要刪除
*否則會有Double item資料的情形
DELETE IT_ZST046 WHERE POSNR = WA_LIPSVB-POSNR.
* MODIFY IT_ZST046.
DELETE FROM ZST046 WHERE VBELN = WA_LIPSVB-VBELN AND POSNR = WA_LIPSVB-POSNR.
SELECT *
INTO CORRESPONDING FIELDS OF IT_ZST046
FROM ZST045
WHERE VBELN = WA_LIPSVB-VGBEL
AND POSNR = WA_LIPSVB-VGPOS
*20101022 BY SM 增加客戶及料號判斷,才可以抓到正確的資料
AND KUNNR = IM_LIKP-KUNAG
AND MATNR = WA_LIPSVB-MATNR.
IT_ZST046-VBELN = WA_LIPSVB-VBELN.
IT_ZST046-POSNR = WA_LIPSVB-POSNR.
APPEND IT_ZST046.
ENDSELECT.
ENDIF. " END OF 找不到的才從ZST045讀取
ENDLOOP.
*20101110 ENDIF.
ENDFUNCTION.
method if_ex_le_shp_tab_cust_item~transfer_data_from_subscreen .
* case cs_likp-lfart.
* when 'NL' or 'NLR'.
call function 'Z_SHPTAB_ITEM_GR_POP'
IMPORTING
ex_lips = cs_lips.
* endcase.
endmethod.
function z_shptab_item_gr_pop.
*"----------------------------------------------------------------------
*"*"Local interface:
*" EXPORTING
*" REFERENCE(EX_LIPS) TYPE LIPS
*"----------------------------------------------------------------------
*ex_lips-refdocnr = lips-refdocnr.
*ex_lips-refdocitem = lips-refdocitem.
free memory id 'ZST046'.
export it_zst046 to memory id 'ZST046'.
endfunction.
沒有留言:
張貼留言