Младший специалист |
 |
Зарегистрирован: Ср, мар 21 2007, 07:42 Сообщения: 51
|
Привет всем,
Может кто пользовался этим расширением userexit_batch_determination?
В нем я пытаюсь сделать разделение партий, но проблема в том что при сохранении поставки позиции которые я добавил не сохраняются.
При создании я их вижу на экране все нормально.
Может я неправильно заполняю xlips таблицу или может еще куда добавить нужно.
Ниже кусок кода который я дописал в эту форму.
IF sy-mandt = 510 OR sy-mandt = 610.
IF lips-mtart = 'FERT'. SELECT * FROM zmcha_v INTO CORRESPONDING FIELDS OF TABLE lt_mcha WHERE matnr = lips-matnr AND werks = lips-werks AND bwtar = lips-bwtar.
SORT lt_mcha ASCENDING BY hsdat.
LOOP AT lt_mcha. SELECT SINGLE * FROM mchb INTO ls_mchb WHERE matnr = lt_mcha-matnr AND werks = lt_mcha-werks AND lgort = lips-lgort AND charg = lt_mcha-charg.
APPEND ls_mchb TO lt_mchb. ENDLOOP.
IF likp-vkorg = '3000' OR " V001 likp-vkorg = '3001' OR " V001 likp-vkorg = '3010' OR " V001 likp-vkorg = '3011' OR " V001 likp-vkorg = '3020' OR " V001 likp-vkorg = '3021' OR " V001 likp-vkorg = '3030' OR " V001 likp-vkorg = '3031'. " V001
DELETE lt_mchb WHERE clabs = 0. " V001 SORT lt_mchb BY ersda. " V001 DATA: lt_lips TYPE lips OCCURS 0 WITH HEADER LINE. " V001 DATA: lfimg LIKE lips-lfimg. " V001 DATA: posnr LIKE lips-posnr VALUE '900000'. " V001 DATA: lt_xlips LIKE xlips OCCURS 0 WITH HEADER LINE." V001 DATA: clabs LIKE lt_mchb-clabs. " V001 CLEAR: lfimg, clabs. " V001
lfimg = lips-lfimg. " V001
*** find previous number of position lt_xlips[] = xlips[]. " V001 DELETE lt_xlips WHERE pstyv NE 'Z001'. " V001 SORT lt_xlips BY posnr DESCENDING. " V001 READ TABLE lt_xlips INDEX 1. " V001 IF sy-subrc = 0. " V001 posnr = lt_xlips-posnr. " V001 ENDIF. " V001 *** delete quantity what is used before LOOP AT lt_xlips. " V001 LOOP AT lt_mchb " V001 WHERE matnr = lt_xlips-matnr AND " V001 lgort = lt_xlips-lgort AND " V001 charg = lt_xlips-charg. " V001 SUBTRACT lt_xlips-lfimg FROM lt_mchb-clabs. " V001 MODIFY lt_mchb. " V001 ENDLOOP. " V001 ENDLOOP. " V001 DELETE lt_mchb WHERE clabs = 0. " V001 SORT lt_mchb BY ersda. " V001 ***
*** Batch split LOOP AT lt_mchb. " V001 clabs = lt_mchb-clabs. " V001 SUBTRACT lfimg FROM clabs. " V001 IF clabs > 0. " V001 lips-charg = lt_mchb-charg. " V001 MOVE-CORRESPONDING lips TO lt_lips. " V001 lt_lips-lfimg = lfimg. " V001 lt_lips-lgmng = lfimg. " V001 lt_lips-lfimg_flo = lfimg. " V001 lt_lips-lgmng_flo = lfimg. " V001 IF sy-tabix > 1. " V001 ADD 1 TO posnr. " V001 lt_lips-posnr = posnr. " V001 lt_lips-pstyv = 'Z001'. " V001 lt_lips-uepos = lips-posnr. " V001 lt_lips-uecha = lips-posnr. " V001 CLEAR: lips-charg. " V001 ENDIF. " V001 APPEND lt_lips. " V001 CLEAR: lt_lips. " V001 EXIT. " V001 ELSE. " V001 MOVE-CORRESPONDING lips TO lt_lips. " V001 ADD 1 TO posnr. " V001 lt_lips-posnr = posnr. " V001 lt_lips-pstyv = 'Z001'. " V001 lt_lips-uepos = lips-posnr. " V001 lt_lips-uecha = lips-posnr. " V001 lt_lips-lfimg = lt_mchb-clabs. " V001 lt_lips-lgmng = lt_mchb-clabs. " V001 lt_lips-lfimg_flo = lt_mchb-clabs. " V001 lt_lips-lgmng_flo = lt_mchb-clabs. " V001 lt_lips-charg = lt_mchb-charg. " V001 SUBTRACT lt_mchb-clabs FROM lfimg. " V001 APPEND lt_lips. " V001 CLEAR: lt_lips. " V001 CLEAR: lips-charg. " V001 ENDIF. " V001 ENDLOOP. " V001 APPEND LINES OF lt_lips TO xlips. " V001
|
|
|