Dynamic rows increment according to user input in Table Control Module Pool

HI All,
I'm doing a Table Control module pool Program. Now suppose there are two fields - MATNR & MAKTX.
Our requirement is while weu2019ll give the material No (MATNR field), material desc. will be populated in corresponding field (MAKTX field),
Now the problem is, while we are entering Material No.  in 1st row it is Material Desc. coming in to corresponding field  but while the data is given to next row it replaces the 1st rows data .
eg - ...............................  ........                                 MATNR.............................MAKTX
1st entry in 1st row .....................        23...................................  XXX --after pressing 'ENTER'  mat desc XXX comes. now                 2nd entry in 2nd row 24 ..............................                         YYY         --after pressing 'ENTER'
1st row details like MATERIAL NO(23) & Desc(XXX) got  deleted  & that is replaced by 24 YYY
We can not extend that no. of rows of Table Control Table more than one row.
If you kindly help me how it is possible to increase the no. of rows of that table dynamically without replacing the previous row it will be very helpful for me.
Thanks & Regards,
Biswajit

Hi Biswajit,
This probably means that the table control PAI is modifying the first line always in the internal table instead of current line
eg: we wite the code
loop at screen and then modify the internal table with current line
table_control => name of table control as given on screen
in PAI of the screen
loop at internaltable.
   modify internaltable index table_control-current_line .
put a break point here and see*
it will always be updating the first record because of some reason - logic error or coding error*
endloop.
Also in PBO we can see that the internal table will be having just one record after the action mentioned above....it is a case of overwrite
To simply increment the number of lines
table_control-lines = table_control-lines  + 1. in PAI
Pls check and revert
Hope it helps
Regards
Byju

Similar Messages

  • Inserting rows in table control(Module pool)!!

    Hi,
    Pls provide me with some code sample for inserting rows in a table control (module pool)...
    Regards
    Gunjan

    HI
    Y dont u create a TABLE CONTROL using wizard and copy the coding-
    TRY THIS-
    WHEN 'INSR'.                      "insert row
           PERFORM FCODE_INSERT_ROW USING    P_TC_NAME
                                             P_TABLE_NAME.
    FORM fcode_insert_row
                   USING    P_TC_NAME           TYPE DYNFNAM
                            P_TABLE_NAME             .
    &SPWIZARD: BEGIN OF LOCAL DATA----
       DATA L_LINES_NAME       LIKE FELD-NAME.
       DATA L_SELLINE          LIKE SY-STEPL.
       DATA L_LASTLINE         TYPE I.
       DATA L_LINE             TYPE I.
       DATA L_TABLE_NAME       LIKE FELD-NAME.
       FIELD-SYMBOLS <TC>                 TYPE CXTAB_CONTROL.
       FIELD-SYMBOLS <TABLE>              TYPE STANDARD TABLE.
       FIELD-SYMBOLS <LINES>              TYPE I.
    &SPWIZARD: END OF LOCAL DATA----
       ASSIGN (P_TC_NAME) TO <TC>.
    *&SPWIZARD: get the table, which belongs to the tc                     *
       CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
       ASSIGN (L_TABLE_NAME) TO <TABLE>.                "not headerline
    *&SPWIZARD: get looplines of TableControl                              *
       CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_LINES_NAME.
       ASSIGN (L_LINES_NAME) TO <LINES>.
    *&SPWIZARD: get current line                                           *
       GET CURSOR LINE L_SELLINE.
       IF SY-SUBRC <> 0.                   " append line to table
         L_SELLINE = <TC>-LINES + 1.
    *&SPWIZARD: set top line                                               *
         IF L_SELLINE > <LINES>.
           <TC>-TOP_LINE = L_SELLINE - <LINES> + 1 .
         ELSE.
           <TC>-TOP_LINE = 1.
         ENDIF.
       ELSE.                               " insert line into table
         L_SELLINE = <TC>-TOP_LINE + L_SELLINE - 1.
         L_LASTLINE = <TC>-TOP_LINE + <LINES> - 1.
       ENDIF.
    *&SPWIZARD: set new cursor line                                        *
       L_LINE = L_SELLINE - <TC>-TOP_LINE + 1.
    *&SPWIZARD: insert initial line                                        *
       INSERT INITIAL LINE INTO <TABLE> INDEX L_SELLINE.
       <TC>-LINES = <TC>-LINES + 1.
    *&SPWIZARD: set cursor                                                 *
       SET CURSOR LINE L_LINE.
    ENDFORM.                              " FCODE_INSERT_ROW
    HOpe this helps u
    Regds,
    Seema.

  • Dynamically display/hide columns according to user inputs

    Hi,
    I need to display or hide columns in reports based on user input. ie. I have several prompts, if user doesn't input values, then the associated columns will not be displayed in the report. Is there a way to achieve this in BO XI R2. Greatly appreciated for your help.

    Hi Andy,
    You can't hide them totally, but you can get close using alerters.
    Build an alerter (probably a formula one) that put the value ="" in the field.
    Now the formula should test the userresponse for that column,
    based on the contents of it (filled in --> false, otherwise --> true).
    Apply the alerter to all cells of the column. It will empty completely when the prompt was not filled.
    Just set the width of the column to automatic (best use the header cell only) and the minimum width on zero. It will shrink the width when empty, making it seem as if hidden.
    Good luck,
    Marianne

  • Urgent******how can i get the number of rows enterd by the user in a table

    Hi Frndz..
    As per my requirement i need to do the validations for the multipple rows in a table that was enterd by the user,
                   T
              The prob is how can i get that number of rows that enterd by user,
           WDMessageManager msg = wdComponentAPI.getMessageManager();
         String col1= "";
         String col2= "";
         double col3= 0;
         double col4= 0;
         double amount= 0;
         int nodesize = wdContext.nodeTest().size();
         try
         for(int i=0; i<=2 ; i++)
                   col1 = wdContext.nodeTest().getTestElementAt(i).getCol1();
                 //msg.reportSuccess("col1 size is :"+col1);
                   col2 = wdContext.nodeTest().getTestElementAt(i).getCol2();
                   col3 = wdContext.nodeTest().getTestElementAt(i).getCol3();
                   col4 = wdContext.nodeTest().getTestElementAt(i).getCol4();
                    amount = wdContext.nodeTest().getTestElementAt(i).getAmount();
              if(col1 == "" )
                        msg.reportException("Plz fil the col1 for line:",true);
                   break;
              else
              if(col2 == "" )
                                  msg.reportException("Plz fil the col2 for line:",true);
                             break;
                        else
              if(col3 <= 0)
                   msg.reportException("Plz fil the col3:",true);
                   break;
              else
                   if(col4 <= 0)
                   msg.reportException("Plz fil the col4:",true);
                   break;
              msg.reportSuccess("skvgjhdfgasdfgsjkafguisafisenvtvyeriy");
                                                       wdThis.test();
         catch (Exception e)
                   msg.reportException("strMessage in catch block",true);
         this is the code am going
    Regards
    Rajesh

    Hi,
       You can try this:
    * Let's say the table's datasource is a node called Table  and it has two attributes first & second.
    * You want to check if any of these attributes has been changed by the user or not. If they have been
    * changed then you want to do some validations against them.
      int sizeOfTable = wdContext.nodeTable().size();
      for(int i = 0; i < sizeOfTable; i++){
         IPrivate<view name>.ITableElement ele = wdContext.nodeTable().getTableElementAt(i);
         if(ele.isChangedByClient(ITableElement.<attribute name>)){
            //value has been changed, do some validation. You can get the row index using ele.index().
    Regards,
    Satyajit.

  • How to get center alignment of Input/Output field in Module Pool

    Hi Friends,
    I am using Input/Output field in my Module pool program. Dynamically i am submitting the text to Input/Output field. What i want is i want to display the submitted text as center. By default It is displaying left aligned.
    Thank U in advance.
    Mahender.

    Hi,
    Use syntax "Centered".
    take one variable push into the field
    write w_variable1 to w_variable2 centered.
    next push the varaible to Destination screen input/output Field .
    Make sure the Field the Character Type.
    Prabhud@s

  • Comparing screen input in program in module pool programming(table control)

    Experts,
    I am a newbie in ABAP. I am working dialog programming where I am replicating PR creation. I am asking user to enter item number, material number and plant. I am validating material number and plant using chain and endchain. This validation is working fine and it throws error message if user enters invalid input. I am able to see corresponding details (corresponding details like unit of measure, delivery date and short text etc. if values entered are correct.) when user clicks on ADD button. Now I have one problem. If user enters same item number twice it should throw error message. I am not able to figure out how it should be done. I thought to set flag = 'X' after user enters item number.
    I am using table control. The validation part for material number(matnr) and plant (werks) work fine. I am getting problem while checking entered item number to check duplication.
    User should not enter the same item number again.
    In my structure i have defined a variable called checkflag(1) type c. and i am doing it now following way. Right now my checkflag code is commented.
    Following is my snippet for the same.
    Please let me know your ideas/suggestions and advices.
    DATA : counter TYPE i,
             itmno1 TYPE i.
      SELECT SINGLE matnr
           FROM mara INTO matno WHERE matnr = it_pr-matnr.
      SELECT SINGLE werks
             FROM t001w INTO plant WHERE werks = it_pr-werks.
      SELECT SINGLE matnr werks
             FROM marc INTO (matno,plant)
        WHERE matnr = it_pr-matnr AND werks = it_pr-werks.
      itmno1 = it_pr-bnfpo.
      IF ok_code = 'ADD'.
        IF it_pr-matnr <> matno OR it_pr-werks <> plant AND it_pr-bnfpo = ''.
          MESSAGE 'Not a Valid material number or plant. Please enter valid values.' TYPE 'E'.
        ELSEIF it_pr-matnr = matno AND it_pr-werks = plant AND it_pr-bnfpo <> ''.
          SELECT SINGLE maktx FROM makt INTO stext WHERE matnr = it_pr-matnr.
          SELECT SINGLE meins FROM mara INTO tmeins WHERE matnr = it_pr-matnr.
          SELECT SINGLE lpein FROM eban INTO tlpein WHERE matnr = it_pr-matnr.
    *      if it_pr-bnfpo = itmno1.
    *        it_pr-checkflag = 'X'.
    *      endif.
          READ TABLE it_pr WITH TABLE KEY
          checkflag = it_pr-checkflag
          bnfpo = it_pr-bnfpo
          maktx = it_pr-maktx
          matnr = it_pr-matnr
          eindt = it_pr-eindt
          meins = it_pr-meins
          werks = it_pr-werks
          lpein = it_pr-lpein.
    *      if it_pr-checkflag = 'X'.
    *          message 'Please enter another item number.' TYPE 'E'.
    *          endif.
          IF sy-subrc <> 0.
            it_pr-bnfpo = itmno1.
            it_pr-maktx = stext.
            it_pr-lpein = tlpein.
            it_pr-meins = tmeins.
            APPEND it_pr.
          ENDIF.
          IF sy-subrc = 0.
            MESSAGE 'Please enter another item number.' TYPE 'E'.
          ENDIF.
        ENDIF.
      ENDIF.

    Indeed thank you very much @medha24 and @gargi sarkar.
    If I use current-line, I will have to skip first entry as first entry should be appended. Then only I would be able to compare it with newly entered value. I will have to use loop end loop within the PAI. I have already written this code in the validation PAI  itself.
    I am not getting how I should use loop endloop effectively so that control will go to the next iteration effectively. Right now with this code, I am getting partial success if I enter item number in bulk (more than one item number as input at same time). later, even though I enter correct values I get error message as it doesn't find next entry in the table. It only appends first records only. Therefore, I am looking to enter first entry without any check and later entries should be compared and appended. I would appreciate your ideas/suggestions.
    Thank you.
    Best reagrds.

  • Make Select rows and columns as read only in Table Control

    Hi All,
    I would like to know how to make certain cells in a Table Control as display only.
    Table control should look like-(Those in bold are read only or in display mode)
    <b>Name1            Idno1 </b>         Address1
    <b>Name2            Idno2</b>          Address2
    <b>Name3            Idno3  </b>        Address3
    <b>Name4            Idno4</b>          Address4
    (Blank row to enter name idno and address)
    (Blank row to enter name idno and address)
    (Blank row to enter name idno and address)
    My table control should display all the above fields the way it is above of which first two colums and 4 rows should be read only,and the rest of the empty rows in the TC should be in change mode.i.e it must have provision to add new rows but not change the first two columns of existing rows.
    In short I am looking at solution to hide particular no of rows and columns and <b>not the entire column.</b>

    In the PBO of the table control loop. just write these statements
    NAME and IDNO considering the fields on the screen.
    and WA_TAB is the table work area being passed to the table control to display the rows.
    if not WA_TAB-NAME is initial and not WA_TAB-IDNO is initial.
    loop at screen.
    if screen-name = 'NAME' or
       screen-name = 'IDNO'.
    screen-input = <b>0</b>.
    modify screen.
    endif.
    endloop.
    endif.
    which means that the fields are disabled only if NAME and IDNO are not initial.
    Regards
    - Gopi

  • Take input from table control using wizard

    Dear experts,
    I am trying to take data from table control into internal table using wizard.
    In main report program i defined the internal table and used wizard after  that.
    I could see internal table there and i picked the fields i wanted.
    Also i defined a workarea of same time.Further i made a push button.
    In PAI user command module i specified
    loop at itab. (one used for table control data)
    endloop.
    Here i put break point and find that no data is coming from grid.
    With wizard what additional i have to do ?

    Hi
    PROCESS AFTER INPUT.
    MODULE USER_COMMAND_2209.  "do processing
    loop at itab.
       module UPDATE.                           "read from tbl ctl into db table using wa.
    endloop.
    DATA:   itab TYPE TABLE OF YSTUDENT WITH HEADER LINE,
                WA LIKE LINE OF ITAB.
    MODULE UPDATE INPUT.
    WA-ID = YSTUDENT-ID.
    WA-NAME = YSTUDENT-NAME.
    INSERT YSTUDENT FROM WA.  
    ENDMODULE.
    Instead of Insert into table, you can write: APPEND WA TO ITAB.    
    Also YSTUDENT-ID is the name of the column in your tbl ctrl.
    Make sure your PBO also loops thro the itab:
    loop at itab with control tab1.
    endloop.
    Hope this helps
    Regards,
    Jayanthi.K

  • Change screen input in table control

    Hi Expert Abapers,
    Hope everybody is in good health and state.
    Well my problem is that i am taking data in itab in a table control and i want to display the data in it only.
    only if we select and line and click modify, 2 fields of it should be enabled for writing.
    here's the code but is not working,
    case OK_CODE.
    WHEN 'EDIT'.
    IF MARK = 'X'.
    LOOP AT SCREEN.
    IF SCREEN-NAME <> 'ITAB-CHQ_NO' OR SCREEN-NAME <> 'ITAB-DD_NO'.
    SCREEN-INPUT = '0'.
    MODIFY SCREEN.
    ENDIF.
    ENDLOOP.
    ENDIF.
    ENDCASE.
    Pls suggest as to where am I wrong.
    Regards , Neetu

    Hi Neetu,
    Try to assign fields to a group , the fields which u don't want to be editable keep
    it in single group for eg, 'GP1'. And now write the code like this
    LOOP AT SCREEN.
    IF SCREEN-GROUP EQ 'GP1'
    SCREEN-INPUT = '0'.
    MODIFY SCREEN.
    ENDIF.
    ENDLOOP.
    Regards ,
    Vivek

  • Problem with increasing input field length in module pool programming.

    Hi All,
    I have created a screen in which i have used table control wizard. In my table control I have an input field. The problem is, this input filed only takes 23 inputs at a time. I need to make this field unfixed. This is an quantity field. I am not understanding why this is happening. Can anybody plz help me in this regard ?
    Thanks in advance.
    Tripod.

    HI Tripod  ,
    YOu can add  Lines to Table control  .
    Add one button  by name ADD LINES  : give func code 'ADD'
    IN PBO  ...
    if it_mat[] is not initial .
        describe table it_mat lines ln  .
        tab_ctrl-lines = ln .
      endif.
    case sy-ucomm .
    when  'ADD' .
          perform add_lines .
    endcase  .
    form add_lines .
      ln  = ln + 1 .
      clear it_mat .
      append initial line to it_mat .
    endform .
    regards
    deepak.

  • Disobey the user profile date setting in module pool

    Hi all,
    I am working on a module pool. I have a request to disobey the user profile date setting dd/mm/yyyy to user requested date format dd-mm-yyyy.
    I understand that it can easily be done in SAPScript with command SET DATE MAST dd-mm-yyyy, but how to do it in module pool?
    Thanks in advance.

    Hi, Wong.
    Follow the Steps Bellow
    --> Copy Search Help BU_DATE_CHAR to ZBU_DATE_CHAR using T-Code SE11
    --> Copy FM BUS_TOOLS_DATE_CHAR_EXIT to Z_BUS_TOOLS_DATE_CHAR_EXIT using T-Code SE37
    --> Open ZBU_DATE_CHAR in Change mode and add Z_ in the Start of Search help exit FM as we have copy new
    --> Active ZBU_DATE_CHAR it will not give you any Error message may be one Warning message but Ignore this.
    --> Active Z_BUS_TOOLS_DATE_CHAR_EXIT my will give you error message do the following Change
         in Changing Tab SHIP type SHLP_DESCR    " Change the Previous type with this one.
         in Tables Tab SHLP_TAB type SHLP_DESCT  " Change the Previous type with this one.-->
    --> After doing above changes.
    --> Add the following line of Code on line number 92 just before the line APPEND record_tab.
    REPLACE ALL OCCURRENCES OF '.' in record_tab-string WITH '-'.
    --> Activate both Search Help and FM
    now in the Search help filed in Module Pool you where using BU_DATE_CHAR use ZBU_DATE_CHAR
    I did the above way and it is working fine this way now When i Press F4 and select some date it show in the Field like 01-01-2009 Previously it was showing me 01.01.2009
    Please Reply if any problem,
    Best Regards,
    Faisal

  • Batch input with table control

    Hi,
    i have a problem with the batch input of picking window in vl02n transaction. I need to select a row of the bottom table but i don't know how many lines ara available in the program(different than the number of lines i can see) and it's possible that i will have to click the page down button, but i don't know when do this.
    I can't find any positioning option or similar.
    Any suggestion for doing this?
    Thanks

    Hi ,
    pls use the bi-recorder (ta: shdb)
    here's an example for positioning:
    *positioning
    perform bdc_dynpro      using 'SAPMF02D' '0360'.
    perform bdc_field       using 'BDC_CURSOR' 'KNVK-NAME1(03)'.
    perform bdc_field       using 'BDC_OKCODE' '=LSDP'.
    *page down
    perform bdc_field       using 'BDC_CURSOR' 'KNVK-NAMEV(04)'.
    perform bdc_field       using 'BDC_OKCODE' '=P+'.
    regards Andreas

  • Is there a user exit called when a module pool program is launch ?

    Hello,
    I know the exit 'EXIT_SAPLSABE_010' and it's very usefull for adding code before a report is launch.
    But this exit is not called when a program is a "Module pool" type.
    Is there a way to add my own code before this kind of program is launch ?
    Thanks in advance,
    Simon
    Edited by: Simon Desbonnets on Mar 9, 2010 2:23 PM

    Thanks for your answer.
    No it's not for initializing values. It's for logging statistics into a specific table (program name, date ...).
    The event "load-of-program" can be use for one program, it's not what I'm looking for.
    I would like to know if there is an exit that is called each time a module pool program is executed.

  • Dynamic rows in Table Control

    Hi Experts,
    My Requirement is create a table control with 5 coloumns. The rows have to be displayed dynamically...
    I created a screen , and placed a table control.
    For eg :
       if my internal table having 2 entries , then the table control should only have two rows....(no disable/greyout)
       if internal table having say 40 entries , then the table control should have 40 rows...
    Thanks,
    Lakshmiraj.A

    Hi,
    Refer
    table control dynamic rows
    Dynamic rows increment according to user input in Table Control Module Pool
    Hope this helps
    Sumana

  • Create a screen for user input in BI

    Hi Experts,
    I want to know can i creat a screen for user input in BI with module pool programing
    and i want to store the data in ztable in SAP-BI.
    Moderator message: please search for available documentation, these forums are no substitute for ABAP training.
    Edited by: Thomas Zloch on Dec 10, 2010 8:37 PM

    I'm afraid that I cannot get it. I had a look at the docs you suggested before posting, and still, no luck (...)
    JOptionPane.showMessageDialog(dialog, "Please input info");Can you please tell me what I'm doing wrong and I cannot add the JDialog to the JOptionPane?Re-read the API and tutorial. JOptionPane is meant specifically to spare you from instantiating manually a JDialog. The showXxxDialog(...) methods do create a JDialog of their own, based on the contents supplied as arguments.
    In particular, using the 2-arguments variation showMessageDialog(Component parentComponent, Object message):
    - The first argument parentComponent is not be the dialog you want to display, but the component over which you want the dialog to appear. The most typical value are this or null.
    - The second argument is the "message" to display, but as described in the API, it can be a JComponent, that is, even a JPanel with child widgets (in a word, a JPanel containing the specific form you'd display in the dialog if you were writing the dialog manually).
    Again, at the risk of insisting densely, I'm only quoting the API an tutorial, so please read them attentively.
    Edited by: jduprez on Nov 2, 2009 2:29 PM - Sorry Kevin, hadn't seen you latest reply. I completely subscribe to the thought process you recommend.
    Edited by: jduprez on Nov 2, 2009 2:32 PM
    Thinking about it further, I don't completely subscribe... Indeed it looks like a bad idea to make the OP wonder about dialog.setVisible() when JOptionPane enables him to forget about the hand-made dialog. I stand by my own advice ("JDialog" should not even appear in this code extract).

Maybe you are looking for

  • Not able to single space in dreamweaver CC

    I am not able to single space in dreamweaver CC. i try hitting shift+enter like i have in the past n now it dont work. I am using the software on a mac.

  • Iphone 4 apple logo shows and restarts constantly

    iphone 4 apple logo shows and restarts constantly help please

  • Disk to be repaired

    Hi, I have 13" 128GB MBP Retina laptop with disk encryption. I have used disk utility because my laptop going slower and partly locking down. I have seen message the disk must be repaired by using disk utility Cmd+R after restart. When I get into the

  • Fox code: unable to access infocube data

    Hi Friends, Multi planning area consists of 2 basic areas. One infocube based on key figure model and other infocube based on account model. Now unable to access infocube(keyfigure model) data in multi area. Here my taget cube is based on account mod

  • Upload records - SQL loader.

    Dear All, We are in the process of getting a big volume data upload project. The data is to be uploaded using SQLLDR in Oracle DB. However the no of records are huge in GB. Max volume looks to be for the table: 153 million records x 197 (Max size of