Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Problem with Sales Order Creation

Former Member
0 Likes
1,185

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,162

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.

10 REPLIES 10
Read only

Former Member
0 Likes
1,163

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.

Read only

0 Likes
1,162

Veni,

Can u check ur internal table structure....

<b>kunnr</b> should be first in the internal table to work on Control Statement....

Chandra.

Read only

0 Likes
1,162

Hi,

Try to use <b>exit</b> instead of <b>continue</b>.

reward if it helps,

Satish

Read only

0 Likes
1,162

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.

Read only

0 Likes
1,162

Veni,

Can you try changing the structure of internal table with kunnr as first field....

Chandra.

Read only

0 Likes
1,162

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

Read only

Former Member
0 Likes
1,162

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

Read only

0 Likes
1,162

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.

Read only

Former Member
0 Likes
1,162

Hi Veni,

Just curios ... how does control break work without sort the internal table gt4_zprice? Are you sure?

Regards,

Ferry Lianto

Read only

0 Likes
1,162

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.