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 smartforms

former_member187748
Active Contributor
0 Likes
4,469

Hi all,

i have to make a smartform for bidding, now i have written code, and creates a smartforms,

Now the problem is "as there are so many line items for which the bidding is to be done,as

shownn in screenshot, now i have to sort these line items and take unique values, for that i have

done it". Now i have to take into consideration all the unique values of  "ebeln", and to print its

corresponding values in order, i have two problem to sort out, how can i sort table it_bidding

which contains the screenshot values so that it will sort according to each line item and its values,

and the second problem is that i am using A3 page to print it, in which at a single time only

three sets of ebeln can be printed, and i wants to print it as many value of ebeln exist(when first three

sets get printed next set should print on next page and so on).

I have attached two screenshot, one contains set of values while debugging, and other

contains the bidding smartforms,in which 6000000004 and 6000000005 are values of ebeln.

(In simple words i wants to segregate my smartform based on ebeln)

Here is my code snippet, which i have used to finally segregating, but its not working

FORM CALL_SMARTFORMS.

   it_bidding2[] = it_bidding[].

   SORT it_bidding by ebeln matnr.

   SORT it_bidding2 by ebeln matnr.

   DELETE ADJACENT DUPLICATES FROM it_bidding COMPARING ebeln matnr.

   LOOP AT it_bidding .

     wa_temp-ebeln = it_bidding-ebeln.

     wa_temp-matnr = it_bidding-matnr.

     wa_temp-ebelp = it_bidding-ebelp.

     APPEND wa_temp to it_temp.

   ENDLOOP.

*  SORT it_temp by ebeln matnr.

SORT it_temp by  matnr .

   DATA im TYPE I.

   LOOP AT it_temp into wa_temp.

     delete  it_temp WHERE matnr = wa_temp-matnr.

     LOOP AT it_bidding2 WHERE matnr = wa_temp-matnr.

       if im eq 0.

         wa_bid-ebeln = it_bidding2-ebeln.

         wa_bid-ebelp = it_bidding2-ebelp.

         wa_bid-EMATN = it_bidding2-EMATN.

         wa_bid-menge = it_bidding2-menge.

         wa_bid-TXZ01 = IT_BIDDING2-txz01.

         wa_bid-KTMNG = IT_BIDDING2-ktmng.

         wa_bid-MEINS = IT_BIDDING2-meins.

         wa_bid-NETPR = IT_BIDDING2-netpr.

         wa_bid-ZWERT = IT_BIDDING2-zwert.

         wa_bid-MWSKZ = IT_BIDDING2-MWSKZ.

         wa_bid-FREIGHT  = IT_BIDDING2-FREIGHT.

         wa_bid-DIS = IT_BIDDING2-DIS.

         wa_bid-EXCISE = IT_BIDDING2-EXCISE.

         wa_bid-tot_amt = IT_BIDDING2-tot_amt.

         wa_bid-zterm = it_bidding2-zterm.

         wa_bid-angdt = it_bidding2-angdt.

         wa_bid-eindt = it_bidding2-eindt.

*        wa_bid-gwldt = it_bidding2-gwldt.

         wa_bid-txz5 = it_bidding2-txz5.

         wa_bid-txz11 = it_bidding2-txz11.

         wa_bid-txz21 = it_bidding2-txz21.

         wa_bid-txz31 = it_bidding2-txz31.

         wa_bid-vat1  = it_bidding2-vat.

         wa_bid-name1 = it_bidding2-name1.

         wa_bid-telf1 = it_bidding2-telf1.

         wa_bid-telf2 = it_bidding2-telf2.

         wa_bid-telfx1 = it_bidding2-telfx.

         wa_bid-name2 = it_bidding2-name2.

         im = 1.

       ELSEIF im = 1.

         wa_bid-ebeln1 = it_bidding2-ebeln.

         wa_bid-ebelp1 = it_bidding2-ebelp.

         wa_bid-NETPR1 = IT_BIDDING2-netpr.

         wa_bid-ZWERT1 = IT_BIDDING2-zwert.

         wa_bid-MWSKZ1 = IT_BIDDING2-MWSKZ.

         wa_bid-FREIGHT1 = IT_BIDDING2-FREIGHT.

         wa_bid-DIS1 = IT_BIDDING2-DIS.

         wa_bid-EXCISE1 = IT_BIDDING2-EXCISE.

         wa_bid-tot_amt1 = IT_BIDDING2-tot_amt.

         wa_bid-zterm1 = it_bidding2-zterm.

         wa_bid-angdt1 = it_bidding2-angdt.

         wa_bid-eindt1 = it_bidding2-eindt.

*          wa_bid-gwldt1 = it_bidding2-gwldt.

         wa_bid-txz10 = it_bidding2-txz5.

         wa_bid-txz12 = it_bidding2-txz11.

         wa_bid-txz32 = it_bidding2-txz31.

         wa_bid-vat2  = it_bidding2-vat.

         wa_bid-name11 = it_bidding2-name1.

         wa_bid-telf12 = it_bidding2-telf1.

         wa_bid-telf22 = it_bidding2-telf2.

         wa_bid-telfx2 = it_bidding2-telfx.

         wa_bid-name22 = it_bidding2-name2.

       ELSEIF im = 2.

         wa_bid-ebeln2 = it_bidding2-ebeln.

         wa_bid-ebelp2 = it_bidding2-ebelp.

         wa_bid-NETPR2 = IT_BIDDING2-netpr.

         wa_bid-ZWERT2 = IT_BIDDING2-zwert.

         wa_bid-MWSKZ2 = IT_BIDDING2-MWSKZ.

         wa_bid-FREIGHT2 = IT_BIDDING2-FREIGHT.

         wa_bid-DIS2 = IT_BIDDING2-DIS.

         wa_bid-EXCISE2 = IT_BIDDING2-EXCISE.

         wa_bid-tot_amt2 = IT_BIDDING2-tot_amt.

         wa_bid-zterm2 = it_bidding2-zterm.

         wa_bid-angdt2 = it_bidding2-angdt.

         wa_bid-eindt2 = it_bidding2-eindt.

*        wa_bid-gwldt2 = it_bidding2-gwldt.

         wa_bid-txz15 = it_bidding2-txz5.

         wa_bid-txz13 = it_bidding2-txz11.

         wa_bid-txz33 = it_bidding2-txz21.

         wa_bid-vat3  = it_bidding2-vat.

         wa_bid-name12 = it_bidding2-name1.

         wa_bid-telf13 = it_bidding2-telf1.

         wa_bid-telf23 = it_bidding2-telf2.

         wa_bid-telfx3 = it_bidding2-telfx.

         wa_bid-name23 = it_bidding2-name2.

       ENDIF.

       DELETE it_bidding2 WHERE ebeln = it_bidding2-ebeln AND matnr = it_bidding2-matnr.

     ENDLOOP.

     APPEND wa_bid to it_bid.

     im = 0.

   ENDLOOP.

Please help me in sorting this problem.

1 ACCEPTED SOLUTION
Read only

nabheetscn
SAP Champion
SAP Champion
0 Likes
4,400

Hi Sanjeev

Can you please rephrase your question step by step and add screen shots with some comments like this is expected or what is expected then we will be able to help you out.

As far as in case you want to print 3 lines on one page you can triger a page break inside loop end loop of table in MAIN window once the count reaches 3

Nabheet

Dear Sanjeev Kumar,

There is a simple solution for this.

Loop your internal table and update a counter value. Call the smartform once the counter reaches 3.

And outside the loop, check the counter again just in case if the final counter end up in a value less than 3.

Here I give you an example.

LOOP AT it_final INTO wa_final.
       v_count = v_count + 1.

       IF v_count EQ 1.
         tag1-butxt = wa_final-butxt.
         tag1-name1 = wa_final-name1.
         tag1-matnr = wa_final-matnr.
         tag1-lgort = wa_final-lgort.
         tag1-lgpbe = wa_final-lgpbe.
         tag1-bismt = wa_final-bismt.
         tag1-meins = wa_final-meins.
         tag1-maktx = wa_final-maktx.
         tag1-charg = wa_final-charg.
         tag1-clabs = wa_final-clabs.
         CLEAR wa_final.
       ENDIF.
       IF v_count EQ 2.
         tag2-butxt = wa_final-butxt.
         tag2-name1 = wa_final-name1.
         tag2-matnr = wa_final-matnr.
         tag2-lgort = wa_final-lgort.
         tag2-lgpbe = wa_final-lgpbe.
         tag2-bismt = wa_final-bismt.
         tag2-meins = wa_final-meins.
         tag2-maktx = wa_final-maktx.
         tag2-charg = wa_final-charg.
         tag2-clabs = wa_final-clabs.
         CLEAR wa_final.
       ENDIF.
       IF v_count EQ 3.
         tag3-butxt = wa_final-butxt.
         tag3-name1 = wa_final-name1.
         tag3-matnr = wa_final-matnr.
         tag3-lgort = wa_final-lgort.
         tag3-lgpbe = wa_final-lgpbe.
         tag3-bismt = wa_final-bismt.
         tag3-meins = wa_final-meins.
         tag3-maktx = wa_final-maktx.
         tag3-charg = wa_final-charg.
         tag3-clabs = wa_final-clabs.
         CLEAR wa_final.
       ENDIF.
       IF v_count EQ 4.
         tag4-butxt = wa_final-butxt.
         tag4-name1 = wa_final-name1.
         tag4-matnr = wa_final-matnr.
         tag4-lgort = wa_final-lgort.
         tag4-lgpbe = wa_final-lgpbe.
         tag4-bismt = wa_final-bismt.
         tag4-meins = wa_final-meins.
         tag4-maktx = wa_final-maktx.
         tag4-charg = wa_final-charg.
         tag4-clabs = wa_final-clabs.
         CLEAR wa_final.
       ENDIF.
       IF v_count EQ 5.
         tag5-butxt = wa_final-butxt.
         tag5-name1 = wa_final-name1.
         tag5-matnr = wa_final-matnr.
         tag5-lgort = wa_final-lgort.
         tag5-lgpbe = wa_final-lgpbe.
         tag5-bismt = wa_final-bismt.
         tag5-meins = wa_final-meins.
         tag5-maktx = wa_final-maktx.
         tag5-charg = wa_final-charg.
         tag5-clabs = wa_final-clabs.
         CLEAR wa_final.
       ENDIF.
       IF v_count EQ 6.
         tag6-butxt = wa_final-butxt.
         tag6-name1 = wa_final-name1.
         tag6-matnr = wa_final-matnr.
         tag6-lgort = wa_final-lgort.
         tag6-lgpbe = wa_final-lgpbe.
         tag6-bismt = wa_final-bismt.
         tag6-meins = wa_final-meins.
         tag6-maktx = wa_final-maktx.
         tag6-charg = wa_final-charg.
         tag6-clabs = wa_final-clabs.
         CLEAR wa_final.
       ENDIF.
       IF v_count EQ 7.
         tag7-butxt = wa_final-butxt.
         tag7-name1 = wa_final-name1.
         tag7-matnr = wa_final-matnr.
         tag7-lgort = wa_final-lgort.
         tag7-lgpbe = wa_final-lgpbe.
         tag7-bismt = wa_final-bismt.
         tag7-meins = wa_final-meins.
         tag7-maktx = wa_final-maktx.
         tag7-charg = wa_final-charg.
         tag7-clabs = wa_final-clabs.
         CLEAR wa_final.
       ENDIF.
       IF v_count EQ 8.
         tag8-butxt = wa_final-butxt.
         tag8-name1 = wa_final-name1.
         tag8-matnr = wa_final-matnr.
         tag8-lgort = wa_final-lgort.
         tag8-lgpbe = wa_final-lgpbe.
         tag8-bismt = wa_final-bismt.
         tag8-meins = wa_final-meins.
         tag8-maktx = wa_final-maktx.
         tag8-charg = wa_final-charg.
         tag8-clabs = wa_final-clabs.
         CLEAR wa_final.
       ENDIF.
       IF v_count EQ 9.
         tag9-butxt = wa_final-butxt.
         tag9-name1 = wa_final-name1.
         tag9-matnr = wa_final-matnr.
         tag9-lgort = wa_final-lgort.
         tag9-lgpbe = wa_final-lgpbe.
         tag9-bismt = wa_final-bismt.
         tag9-meins = wa_final-meins.
         tag9-maktx = wa_final-maktx.
         tag9-charg = wa_final-charg.
         tag9-clabs = wa_final-clabs.
         CLEAR wa_final.

         CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
           EXPORTING
             formname = 'ZMM_LABLE_PRINT_MAT_STCK'
           IMPORTING
             fm_name  = v_fm_name.

         CALL FUNCTION v_fm_name
           EXPORTING
             control_parameters = w_cparam
             tag1               = tag1
             tag2               = tag2
             tag3               = tag3
             tag4               = tag4
             tag5               = tag5
             tag6               = tag6
             tag7               = tag7
             tag8               = tag8
             tag9               = tag9.

         CLEAR : v_count, tag1, tag2, tag3, tag4, tag5, tag6, tag7, tag8, tag9.
       ENDIF.
     ENDLOOP.

IF NOT v_count IS INITIAL.

     CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
       EXPORTING
         formname = 'ZMM_LABLE_PRINT_MAT_STCK'
       IMPORTING
         fm_name  = v_fm_name.

     CALL FUNCTION v_fm_name
       EXPORTING
         control_parameters = w_cparam
         tag1               = tag1
         tag2               = tag2
         tag3               = tag3
         tag4               = tag4
         tag5               = tag5
         tag6               = tag6
         tag7               = tag7
         tag8               = tag8
         tag9               = tag9.

   ENDIF.

Hope this helps.

Thanks and Regards

Davis

42 REPLIES 42
Read only

0 Likes
3,877

Please put a break point using BREAK <Username > statement in Smartform and check what is happening in debugging..  I believe since you have some small mistake..Please cehck in debugging whether this value is getting picked up

Read only

0 Likes
3,877

Dear Nabheet,

i have debug my code, and as i told you earlier that it is picking each values.

But during Modify and transporting it looses my value......

anyhow thanks a lot once again and let me see my code throughout.

Read only

0 Likes
3,877

Yeah just debug it its now a small issue:) let us know about your finding