2007 Nov 13 7:55 PM
Hi,
In my sales order creation program if item qty is zero, it should not include that item in the order. It is not working properly with this example it is creating same order for customer 1001 and 1004. It is checking for qty = 0 condition and executing 'continue' statememt , then it is not checking 'At end of kunnr' and creating only one order for all the remaining 4 items from 1001 and 1004 other than 0 qty's.
kunnr matnr qty order#
1001 51038 723 102255
1001 51054 0
1001 51055 0
1004 51038 207 102255
1004 51054 236 102255
1004 51055 219 102255
it should create like this.
kunnr matnr qty order#
1001 51038 723 102255
1001 51054 0
1001 51055 0
1004 51038 207 102256
1004 51054 236 102256
1004 51055 219 102256
Please help me fix this.
Thanks,
veni.
2007 Nov 13 7:56 PM
Hi,
Here is the code.
WHEN 'ORDERS'.
DESCRIBE TABLE gt_zprice LINES lv_cnt.
DO lv_cnt TIMES.
lv_index = sy-index + 4.
READ LINE lv_index FIELD VALUE chbox.
IF chbox = 'X'.
READ TABLE gt_zprice INTO gs_zprice1 INDEX sy-index.
IF sy-subrc EQ 0.
gs_zprice1-index = sy-index.
APPEND gs_zprice1 TO gt2_zprice.
CLEAR gs_zprice1.
ENDIF.
ENDIF.
CLEAR chbox.
ENDDO.
gt4_zprice[] = gt2_zprice[].
SORT gt4_zprice BY kunnr vtweg.
LOOP AT gt4_zprice INTO gs_zprice1.
IF gs_zprice1-crmemo IS INITIAL.
AT NEW kunnr.
MOVE 'Y' TO lv_flg.
ENDAT.
IF lv_flg EQ 'Y'.
PERFORM headerdata.
PERFORM texts.
CLEAR lv_flg.
ENDIF.
IF gs_zprice1-eohqty IS INITIAL.
CONTINUE.
ENDIF.
PERFORM itemdata.
APPEND gs_zprice1 TO gt3_zprice.
CLEAR gs_zprice1.
AT END OF kunnr.
PERFORM call_function.
PERFORM update_pricetable.
PERFORM errorcheckandcommit.
REFRESH gt2_zprice.
CLEAR chbox.
REFRESH partner.
REFRESH item.
REFRESH itemx.
REFRESH lt_schedules_in.
REFRESH lt_schedules_inx.
REFRESH conditions1.
REFRESH order_text.
lv_itemno = 10.
ENDAT.
ELSE.
REFRESH gt2_zprice.
CLEAR chbox.
ENDIF.
ENDLOOP.
WRITE: /01(179) sy-uline.
PERFORM headings.
WRITE: /01(179) sy-uline.
PERFORM displaydata.
ENDCASE.
Thanks,
Veni.
2007 Nov 13 7:56 PM
Hi,
Here is the code.
WHEN 'ORDERS'.
DESCRIBE TABLE gt_zprice LINES lv_cnt.
DO lv_cnt TIMES.
lv_index = sy-index + 4.
READ LINE lv_index FIELD VALUE chbox.
IF chbox = 'X'.
READ TABLE gt_zprice INTO gs_zprice1 INDEX sy-index.
IF sy-subrc EQ 0.
gs_zprice1-index = sy-index.
APPEND gs_zprice1 TO gt2_zprice.
CLEAR gs_zprice1.
ENDIF.
ENDIF.
CLEAR chbox.
ENDDO.
gt4_zprice[] = gt2_zprice[].
SORT gt4_zprice BY kunnr vtweg.
LOOP AT gt4_zprice INTO gs_zprice1.
IF gs_zprice1-crmemo IS INITIAL.
AT NEW kunnr.
MOVE 'Y' TO lv_flg.
ENDAT.
IF lv_flg EQ 'Y'.
PERFORM headerdata.
PERFORM texts.
CLEAR lv_flg.
ENDIF.
IF gs_zprice1-eohqty IS INITIAL.
CONTINUE.
ENDIF.
PERFORM itemdata.
APPEND gs_zprice1 TO gt3_zprice.
CLEAR gs_zprice1.
AT END OF kunnr.
PERFORM call_function.
PERFORM update_pricetable.
PERFORM errorcheckandcommit.
REFRESH gt2_zprice.
CLEAR chbox.
REFRESH partner.
REFRESH item.
REFRESH itemx.
REFRESH lt_schedules_in.
REFRESH lt_schedules_inx.
REFRESH conditions1.
REFRESH order_text.
lv_itemno = 10.
ENDAT.
ELSE.
REFRESH gt2_zprice.
CLEAR chbox.
ENDIF.
ENDLOOP.
WRITE: /01(179) sy-uline.
PERFORM headings.
WRITE: /01(179) sy-uline.
PERFORM displaydata.
ENDCASE.
Thanks,
Veni.
2007 Nov 13 7:59 PM
Veni,
Can u check ur internal table structure....
<b>kunnr</b> should be first in the internal table to work on Control Statement....
Chandra.
2007 Nov 13 8:04 PM
Hi,
Try to use <b>exit</b> instead of <b>continue</b>.
reward if it helps,
Satish
2007 Nov 13 8:06 PM
Hi Chandra,
vkorg, vtweg, spart, kunnr, matnr, crdate are the key fields in my table.
TYPES: BEGIN OF ty_zprice,
mandt TYPE mandt,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
spart TYPE spart,
kunnr TYPE kunnr,
matnr TYPE matnr,
crdate TYPE zcrdate,
efdate TYPE zefdate,
sprice TYPE zprice3,
eprice TYPE zprice4,
eohqty TYPE zquantity1,
aohqty TYPE zquantity2,
auart TYPE auart,
bstkd TYPE bstkd,
werks TYPE werks_d,
augru TYPE augru,
xblnr TYPE xblnr,
crmemo TYPE vbeln,
index TYPE sy-index,
END OF ty_zprice.
Thanks,
Veni.
2007 Nov 13 8:09 PM
Veni,
Can you try changing the structure of internal table with kunnr as first field....
Chandra.
2007 Nov 13 8:10 PM
Before starting this ORDERS processing delete the items form your internal table for which you don't want to generate the Order.
delete gt4_zprice where eohqty is initial.
WHEN 'ORDERS' .....Regards,
Naimesh Patel
2007 Nov 13 8:14 PM
Hi,
Please try this.
...
SORT gt4_zprice STABLE BY kunnr vtweg. "Change here
LOOP AT gt4_zprice INTO gs_zprice1.
IF gs_zprice1-crmemo IS INITIAL.
AT NEW kunnr.
MOVE 'Y' TO lv_flg.
ENDAT.
...
Regards,
Ferry Lianto
2007 Nov 13 9:04 PM
Hi All,
Thank you Chandra.
Ferry, I tried it and did not work. Thank you.
delete gt_zprice where eohqty is initial, is working well. Thank you Naimesh.
Regards,
Veni.
2007 Nov 13 9:08 PM
Hi Veni,
Just curios ... how does control break work without sort the internal table gt4_zprice? Are you sure?
Regards,
Ferry Lianto
2007 Nov 14 10:31 PM
Hi Ferry,
I sorted the internal table. I mean to say sorting and Continue did not solve the problem, as at end of kunnr was not executing. So I deleted all records in internal table with qty=0, before creating the order.
Thank you.
Regards,
Veni.