10-08-2007 10:27 AM
Hi all,
While batch goes on, when it comes to a predefined number, I want he remaining items should be belong to another order and hence I need to create a new order and group the rest of the items to this vbeln.
How can I do that?
Thanks.
10-08-2007 10:30 AM
10-08-2007 11:48 AM
Hi Hymavathi,
The code is this:
form siparisbatch.
data : lmenge(14) type c,
warning type string.
* PERFORM OPEN_GROUP.
describe table item lines count.
countnow = 0.
loop at order.
loop at rejecttab where no = order-no
and kdmat is initial.
exit.
endloop.
check sy-subrc <> 0.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'VBAK-AUART' order-auart.
PERFORM BDC_FIELD USING 'VBAK-VKORG' order-vkorg.
PERFORM BDC_FIELD USING 'VBAK-VTWEG' order-vtweg.
PERFORM BDC_FIELD USING 'VBAK-SPART' order-spart.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR' order-sipvr.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR' order-tesal.
PERFORM BDC_FIELD USING 'RV45A-KETDAT' order-ketdat. " İst. Tsl. Trh.
PERFORM BDC_FIELD USING 'RV45A-DWERK' p_werks.
PERFORM BDC_FIELD USING 'VBKD-BSTKD' order-no.
write p_datum to tarih.
PERFORM BDC_FIELD USING 'VBKD-BSTDK' tarih. " SAS Tarihi
PERFORM BDC_FIELD USING 'VEDA-VBEGDAT' tarih. " Geçerlilik başl.
PERFORM BDC_FIELD USING 'VEDA-VENDDAT' '31.12.9999'.
if not p_prsdt is initial.
PERFORM BDC_FIELD USING 'VBKD-PRSDT' order-prsdt.
else.
PERFORM BDC_FIELD USING 'VBKD-PRSDT' tarih. " Fiyatlandırma tarihi
endif.
PERFORM BDC_FIELD USING 'VBAK-AUGRU' p_augru.
* clear warning.
refresh ireject.
loop at rejecttab into ireject
where no = order-no
and not kdmat is initial.
append ireject.
* concatenate warning ', ' ireject-kdmat into warning.
endloop.
if sy-subrc = 0.
* replace ',' with '' into warning.
* concatenate 'Sip: ' order-no ';' warning into warning.
* message I011 with warning.
call screen 500 starting at 15 5 ending at 73 21.
endif.
Data : count type i.
count = 0.
loop at item where no = order-no
and tesal = order-tesal
and ketdat = order-ketdat.
count = count + 1.
loop at rejecttab where no = item-no
and kdmat = item-kdmat(8).
exit.
endloop.
check sy-subrc <> 0.
* perform check_availability_item using order-vkorg order-vtweg
* item-kdmat item-kwmeng.
* if item-kwmeng <= 0.
* message I012 with order-no item-kdmat.
* continue.
* endif.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=POAN'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
write item-kwmeng to lmenge decimals 0.
condense lmenge.
PERFORM BDC_FIELD USING 'RV45A-KWMENG(02)' lmenge.
CALL FUNCTION 'WSTP_CONVERT_UNIT'
EXPORTING
P_ACTION = '04'
P_MEINH_IN = item-vrkme
CHANGING
P_MEINH_OUT = item-vrkme.
PERFORM BDC_FIELD USING 'VBAP-VRKME(02)' item-vrkme.
if p_bcode = 'X'.
clear mara-matnr.
if vrkmb is initial. " TÖB Barkodu
select single mara~matnr
into (mara-matnr)
from mean
inner join mara on mara~matnr = mean~matnr
where mean~meinh = mara~meins
and mean~ean11 = item-ean11
and mean~eantp in so_eantp.
else.
select single mean~matnr
into (mara-matnr)
from mean
where mean~meinh = vrkmb
and mean~ean11 = item-ean11
and mean~eantp in so_eantp.
endif.
PERFORM BDC_FIELD USING 'VBAP-MATNR(02)' mara-matnr.
else.
PERFORM BDC_FIELD USING 'VBAP-KDMAT(02)' item-kdmat.
endif.
perform teklifpercent using ' sipariş girildi'.
endloop.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' 'T01'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=SICH'.
* PERFORM BDC_FIELD USING 'RV45A-DWERK' p_werks.
PERFORM BDC_FIELD USING 'VBAK-AUGRU' p_augru.
CALL TRANSACTION 'VA01' USING BDCDATA MODE p_tmods.
* PERFORM BDC_TRANSACTION USING 'VA01'.
refresh BDCDATA.
endloop.
* PERFORM CLOSE_GROUP.
endform.
The requirement is this: When the item count is greater than or equal to 45 then a new order should be created, so how can I use the following code to create a new order.Should I control the item count and if it is 45, call this segment of the code..
PERFORM BDC_DYNPRO USING 'SAPMV45A' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'VBAK-AUART' order-auart.
PERFORM BDC_FIELD USING 'VBAK-VKORG' order-vkorg.
PERFORM BDC_FIELD USING 'VBAK-VTWEG' order-vtweg.
PERFORM BDC_FIELD USING 'VBAK-SPART' order-spart.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR' order-sipvr.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR' order-tesal.
PERFORM BDC_FIELD USING 'RV45A-KETDAT' order-ketdat. " İst. Tsl. Trh.
PERFORM BDC_FIELD USING 'RV45A-DWERK' p_werks.
PERFORM BDC_FIELD USING 'VBKD-BSTKD' order-no.
write p_datum to tarih.
PERFORM BDC_FIELD USING 'VBKD-BSTDK' tarih. " SAS Tarihi
PERFORM BDC_FIELD USING 'VEDA-VBEGDAT' tarih. " Geçerlilik başl.
PERFORM BDC_FIELD USING 'VEDA-VENDDAT' '31.12.9999'.
if not p_prsdt is initial.
PERFORM BDC_FIELD USING 'VBKD-PRSDT' order-prsdt.
else.
PERFORM BDC_FIELD USING 'VBKD-PRSDT' tarih. " Fiyatlandırma tarihi
endif.
PERFORM BDC_FIELD USING 'VBAK-AUGRU' p_augru.
Thanks.