Internal table updation

Hi,
Internal table declaration
data: begin of test occurs 0,
       salesorg type vkorg,
       palnt    type werks,
      end of test.
Internal table Data
Sales org     Plant
XXX           PPP
YYY           OOO
ZZZ           III
Now the plant of all records should be changed to 'PPP' <b>without looping the test table.</b>
<u><i>Need syntax for changing plant in all records to PPP without using loop statement.</i></u>
Regards,
Sreedevi P

Hi Sreedevi,
   I don't think you can do that modification of the only one field without looping the internal table.
Looping the internal table is the best alternative.
Loop at test.
  test-plant = 'PPP'.
  Modify test transporting plant.
Endloop.
Reward if helpful.
Regards,
Tushar
Message was edited by: Tushar  Marshall Dass

Similar Messages

  • Help regarding 'table controls' and 'internal table' updation

    Hi all.
    Basically this is what i have done..... I have created a table control in module pool program. I declared an Internal table and also have populated it from a database table. I have also used insert statement to insert an blank record in the table control view and delete statements to delete any record,  also in the table control view... .
    But I am not able to update any new record into an Internal table or  the  original table ..
    Any Ideas how to do it ,Gurus
    Thanks

    HEllo,
    Check thsi simple report.
    REPORT ZTFH_TABLECONTROL .
    TABLES : ZEMPTABLE.
    DATA : SELLINE .
    DATA : FLD(20).
    DATA : LINNO TYPE I , OFF TYPE I.
    DATA : ITAB LIKE ZEMPTABLE OCCURS 10 WITH HEADER LINE.
    CONTROLS  : CON_TAB TYPE TABLEVIEW USING SCREEN 100.
    SELECT * FROM ZEMPTABLE INTO TABLE ITAB.
    DESCRIBE TABLE ITAB LINES CON_TAB-LINES.
    CALL SCREEN 100.
    *&      Module  EXT_COMM  INPUT
    *       text
    MODULE EXT_COMM INPUT.
    LEAVE PROGRAM.
    ENDMODULE.                 " EXT_COMM  INPUT
    *&      Module  TAB_UPDATE  INPUT
    *       text
    MODULE TAB_UPDATE INPUT.
    CASE SY-UCOMM.
    WHEN 'DEL'.
          IF SELLINE = 'X'.
            DELETE ITAB WHERE EMPNO = ITAB-EMPNO.
            MESSAGE I000(ZYF_DEL).
          ENDIF.
    WHEN 'UPD'.
        IF SELLINE = 'X'.
             MODIFY ITAB INDEX CON_TAB-CURRENT_LINE.
             MESSAGE I001(ZYF_DEL).
        ENDIF.
    WHEN 'INS'.
         IF SELLINE = 'X'.
          GET CURSOR FIELD FLD LINE LINNO OFFSET OFF.
          SET CURSOR FIELD FLD LINE LINNO OFFSET OFF.
          IF FLD CP 'ITAB*' AND SY-SUBRC = 0.
            IF LINNO >= 1.
              LINNO = LINNO + CON_TAB-TOP_LINE - 1.
              CLEAR ITAB.
              INSERT ITAB INDEX LINNO.
              CON_TAB-LINES = CON_TAB-LINES + 1.
            ELSE.
              CLEAR ITAB.
              APPEND ITAB.
              CON_TAB-LINES = CON_TAB-LINES + 1.
            ENDIF.
          ENDIF.
        ENDIF.
    WHEN 'SAV'.
      MODIFY ITAB INDEX CON_TAB-CURRENT_LINE.
      MESSAGE I002(ZYF_DEL).
    ENDCASE.
    ENDMODULE.                 " TAB_UPDATE  INPUT
    “ FLOW LOGIC
    PROCESS BEFORE OUTPUT.
    MODULE STATUS_0100.
    LOOP AT ITAB WITH CONTROL CON_TAB.
    ENDLOOP.
    PROCESS AFTER INPUT.
    MODULE USER_COMMAND_0100.
    MODULE EXT_COMM AT EXIT-COMMAND.
    LOOP AT ITAB.
    MODULE TAB_UPDATE.
    ENDLOOP.     
    REgards,
    Vasanth

  • RFC - delay in internal table update/refresh

    Hello,
    We have an RFC call. The end of the function call returns an internal table with new rows appended to it.However, when we check at the invoking code, i could see that it takes a while for the newly appended rows to be refreshed in the internal table. In order to avoid this, i have introduced a 'Wait upto' statement. However, this is proving to be a performance overhead. Can you please suggest if there is any other alternative to achieve this?
    Thanks and regards,
    Deepthi.

    Hi,
    If you are using nested loops, the better way to use the internal table, is always use READ statement. When you use read statement, you will be mentioning all the key fields like READ table itab with key f1 = k1.....
    a) So first see in all your internal tables while comparing entries are you mentioning all the key fields in the read statements.
    b) While you compare data between 2 internal tables inside a loop. Always check whether entries exist in both the tables, like if the values are initial for a particular internal table.
    c) check sy-subrc = 0 for all the entries and internal tables.
    d) try using continue inside your loop .... endloop.
    Because, if there is no entry in the top level internal table, you can immediately give a continue statement there, so that system shall not check all the internal tables. It will exit from the current loop entry and the checking shall immediately start for the next table index.
    This shall drastically reduce your processing time logic.
    Lakshminarayanan
    P.S. Mark all helpful answers for points

  • Problem with dynamic internal table updation

    Hello Folks,
      I created  a dynamic internal table
    CALL METHOD cl_alv_table_create=>create_dynamic_table
          EXPORTING
            it_fieldcatalog           = i_fieldcat
          IMPORTING
            ep_table                  = i_dyntab
          EXCEPTIONS
            generate_subpool_dir_full = 1
            OTHERS                    = 2.
    ASSIGN i_dyntab->* TO <f_dyntable>.
    and created a work area
    CREATE DATA wg_f_split LIKE LINE OF <f_dyntable>.
        ASSIGN wg_f_split->* TO <f_wg_dyntable>.
    My requirement is that , i have to loop a normal internal table and append those records to the filed symbol internal table.
    READ TABLE i_normal_itab INTO wg_split INDEX wl_rows-index.
          IF sy-subrc EQ 0.
            ASSIGN wg_split to <f_wg_dyntable>.
             APPEND <f_wg_dyntable> to <f_dyntable>.
           endif.
    here i am geeting dump as "MOVE src TO dst" ... i can get the data in the work area FSymbol but cannot append it in Internal table Field Symbol.. Please help..
    <Added code tags>
    Edited by: Suhas Saha on Aug 3, 2011 10:52 AM

    Hello Sandra,
    Thanks for the reply..
    First i tried  appending the normal work area to the fieldsymbol  internal table.
      append wg_split to <f_dyntable>
    This is hiting dump the same dump and so i created a fieldsymbol work area. ( <f_wg_dyntable>.)and tried to append the field symbol internal table with this work area. which is again giving the dump
    APPEND <f_wg_dyntable> to <f_dyntable>. ( Again a Dump)
    Edited by: Charan-SAP on Aug 2, 2011 9:40 PM
    Edited by: Charan-SAP on Aug 2, 2011 9:42 PM

  • Internal table update

    Hi,
    I am created a structure in se11 and using that structure i have created one table type variable.
    This table type variable,i am using in my function module as export parameter .In my import parameter i am taken one a field type of my structure .
    In source code i have written the select statement which retrieve records as per my requirement but problem is that,
    one fileld which is blank in some cases where records r not in the database.I have fill that blank filed with corresponding data for another same type fileld. How it is possible.
    Please help anyone.
    Regards ,
    Rajesh

    Hi,
    This question already solved but another problem is that when i retrieve records from both table by using left outer join then records are coming with cross product of both i.e if left table match 4 record and right table match 5 record to a given condition then total records retrieves 20 records.
    But i want those records which are only in left table which match or not match with the right table.If match corresponding data will come from right table otherwise that field will blank if not match with right table.
    Regards,
    Rajesh

  • Update internal table data from table control

    Hi GURUS,
    I need help regarding one of my requirement.
    I need to display data from the internal table on the screen and when the user selects a record/multiple records from screen and clicks on approve button i need to update one of the field from N to Y in the corresponding Ztable. Once the record is updated from Ztable , that should no longer be visible for the user on the screen.
    I am using table control wizard to display data. I am able to update the Ztable, but that record is not refreshing from the user screen. Any suggestions would be approved.
    Also please let me know if table control is the best way to do this/ alv grid control??

    hi
       REFRESH CONTROL Control-Name FROM SCREEN '0100'  -> use this command to refresh the table control
    to know more, read into
    https://forums.sdn.sap.com/click.jspa?searchID=2934287&messageID=673474
    Re: URGENT HELP REQ IN TABLE CONTROL WIZARD
    if helpful, reward
    Sathish. R

  • Using an internal table from a strt rountine in an update rule

    I created a start routine and i now want to take the value from the internal table and set my result to it in my update rule.  I try that and it says it isn't a header table but I defined it this way.  here is the code
    DATA: T_BILL_DATA LIKE STANDARD TABLE OF /BIC/AZBIL_O5300,
       Ls_data like line of T_BILL_DATA.
    $$ end of global - insert your declaration only before this line   -
    FORM compute_key_field
      TABLES   MONITOR STRUCTURE RSMONITOR "user defined monitoring
      USING    COMM_STRUCTURE LIKE /BIC/CS2LIS_12_VCSCL
               RECORD_NO LIKE SY-TABIX
               RECORD_ALL LIKE SY-TABIX
               SOURCE_SYSTEM LIKE RSUPDSIMULH-LOGSYS
      CHANGING RESULT LIKE /BIC/VZSD_C51T-SALESORG
               RETURNCODE LIKE SY-SUBRC
               ABORT LIKE SY-SUBRC. "set ABORT <> 0 to cancel update
    $$ begin of routine - insert your code only below this line        -
    fill the internal table "MONITOR", to make monitor entries
    result value of the routine
      READ TABLE T_BILL_DATA WITH KEY
      DOC_NUMBER = COMM_STRUCTURE-DOC_NUMBER
      S_ORD_ITEM = COMM_STRUCTURE-S_ORD_ITEM
      REFER_DOC =  COMM_STRUCTURE-DELIV_NUMB
      REFER_ITM =  COMM_STRUCTURE-DELIV_ITEM
      BINARY SEARCH.
      RESULT = T_BILL_DATA-SALESORG.

    Hi LMM,
    The definition is not correct, your table doesn't have header line.
    try this,
    DATA: T_BILL_DATA LIKE STANDARD TABLE OF /BIC/AZBIL_O5300 with header line.
    Hope it helps.
    Thanks,
    Soumya

  • Data package's data coolection in one internal table of Update rule in bw

    Hello Gurus,
    I have a requirement in bw which demands to create update routine, in which I need to find the vendor for the material, which doesn't have vendor by some business rule but, here in this case data is divided into different datapackages so here in this case material data is splited over different datapackages.
    One material can have n no of records with differnt plants.
    My only question is like can we collect all datapackage data in one internal table.
    Ex: if there are total 5 datapckages, so in update rule can we collect all these datapackages records?
    Please suggest your opinion.
    Thanks in advance,
    Snehal.
    Moderator message: please have a look in the BW forums.
    Edited by: Thomas Zloch on Jan 11, 2011 1:49 PM

    hi,
    i think your problem is need of a work area...
    Using "FOR ALL ENTRIES IN lt_zhrp"  You must use " check lt_zhrp is not initial "
    DATA: lt_zhrp TYPE STANDARD TABLE OF zhrp,
          lt_zhrt TYPE STANDARD TABLE OF zhrt.
    *new
    data: wa_zhrp type lt_zhrp.
    SELECT tabnr
    FROM zhrp
    INTO CORRESPONDING FIELDS OF TABLE lt_zhrp
    WHERE objid = lv_posid.
    LOOP AT lt_zhrp INTO wa_zhrp.
      SELECT low
      FROM zhrt
      INTO CORRESPONDING FIELDS OF TABLE lt_zhrt
      WHERE tabnr =  wa_zhrp-tabnr  " lt_zhrp-tabnr
      AND attrib = 'NET_VALUE'.
    ENDLOOP.
    Edited by: Miguel Antunes on Apr 28, 2010 4:22 PM

  • Updation of blank field in internal table

    Hi,
      I want to update the blank businees area field with the header item of that particular business area belnr.
    i am sending you the updation of business area code plz find out where rhe error and rectify please.
    points given
    REPORT zfir_vendorwise_grir_balances NO STANDARD PAGE HEADING
                            LINE-SIZE 142
                            LINE-COUNT 65.
    TABLES: bsis,bkpf,bseg,ekko,lfa1.
    TYPE-POOLS: slis.
    CONSTANTS:
    gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
    DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
          gs_layout   TYPE slis_layout_alv ,
          gs_print    TYPE slis_print_alv,
          gt_sort     TYPE slis_t_sortinfo_alv ,
          gt_filter   TYPE slis_t_filter_alv,
          gt_sp_group TYPE slis_t_sp_group_alv,
          gt_alv_graphics TYPE dtc_t_tc,
          gt_excluding  TYPE slis_t_extab ,
          gt_events   TYPE slis_t_event .
    DATA: g_repid LIKE sy-repid.
    DATA: gt_list_top_of_page TYPE slis_t_listheader.
    DATA:       g_boxnam TYPE slis_fieldname VALUE  'BOX',
                p_f2code LIKE sy-ucomm       VALUE  '&ETA',
                p_lignam TYPE slis_fieldname VALUE  'LIGHTS',
                g_save(1) TYPE c,
                g_default(1) TYPE c,
                g_exit(1) TYPE c,
                gx_variant LIKE disvariant,
                g_variant LIKE disvariant.
    DATA : g_user_command(30) VALUE 'USER_COMMAND'.
    DATA : g_status_set(30)  VALUE 'PF_STATUS_SET'.
    DATA: BEGIN OF it_final OCCURS 0,
          awkey TYPE awkey,
          grir(10) TYPE c,
          bukrs LIKE bsis-bukrs,
          hkont LIKE bsis-hkont,
          gjahr LIKE bsis-gjahr,
          belnr LIKE bsis-belnr,
          budat LIKE bsis-budat,
          waers LIKE bsis-waers,
          xblnr LIKE bsis-xblnr,
          blart LIKE bkpf-blart,
          buzei like bseg-buzei,
          bschl LIKE bseg-bschl,
          shkzg LIKE bseg-shkzg,
          gsber LIKE bseg-gsber,
          dmbtr LIKE bseg-dmbtr,
          wrbtr LIKE bsis-wrbtr,
          sgtxt LIKE bseg-sgtxt,
          ebeln LIKE bseg-ebeln,
          lifnr LIKE ekko-lifnr,
          ps_psp_pnr LIKE ekkn-ps_psp_pnr,
          name1 LIKE addr1_data-name1,
          END OF it_final.
    DATA : it_po LIKE it_final OCCURS 0 WITH HEADER LINE.
    DATA : it_ebeln LIKE it_final OCCURS 0 WITH HEADER LINE.
    DATA : it_awkey LIKE it_final OCCURS 0 WITH HEADER LINE.
    DATA : wa_final LIKE LINE OF it_final.
    DATA : BEGIN OF it_lifnr OCCURS 0,
            ebeln TYPE ebeln,
            lifnr TYPE lifnr,
    END OF it_lifnr.
    DATA : BEGIN OF it_name1 OCCURS 0,
            lifnr TYPE lifnr,
            name1 TYPE name1,
    END OF it_name1.
    DATA : hmin TYPE bseg-hkont.
    DATA : hmax TYPE bseg-hkont.
    DATA: idx TYPE sy-tabix.
    DATA:  temp_gsber TYPE bseg-gsber.
    DATA:  temp_ebeln TYPE bseg-ebeln.
    DATA : temp_gjahr TYPE bseg-gjahr.
    DATA : temp_belnr TYPE bseg-belnr.
    DATA : temp_lifnr TYPE bseg-lifnr.
    *DEFINING THE SELECTION-CRITERIA.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS: p_bukrs LIKE skb1-bukrs OBLIGATORY.
    SELECT-OPTIONS: s_gsber FOR bseg-gsber OBLIGATORY.
    SELECT-OPTIONS: s_hkont FOR bseg-hkont OBLIGATORY.
    PARAMETERS: p_lifnr LIKE ekko-lifnr.
    PARAMETERS: p_budat LIKE bkpf-budat OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK b1.
    AT SELECTION-SCREEN ON s_hkont.
      CHECK s_hkont-low LT 250301 OR s_hkont-high GT 250500.
      MESSAGE e000(zm) WITH 'PLEASE SELECT A GRIR CLEARING ACCOUNT BETWEEN'
                            '250301 AND 250500'.
    *INITIALIZATION.
    INITIALIZATION.
      g_repid = sy-repid.
    *START-OF-SELECTION.
    START-OF-SELECTION.
      PERFORM select_data.
      PERFORM display_data.
      PERFORM list_display.
    *&      Form  select_data
          text
    -->  p1        text
    <--  p2        text
    FORM select_data .
    *selecting open item details
      SELECT bukrs  hkont  gjahr   belnr buzei
             budat  waers  xblnr   blart
             bschl  shkzg  gsber   dmbtr
             wrbtr  sgtxt
         FROM bsis
            INTO CORRESPONDING FIELDS OF TABLE it_final
            WHERE bukrs EQ p_bukrs
                  AND hkont BETWEEN  '0000250301' AND  '0000250500'
                  AND budat LE p_budat AND ( blart EQ 'WE' OR
                                             blart EQ 'RE' OR
                                             blart EQ 'SA' OR
                                             blart EQ 'EI').
    *selecting closed/cleared item details
      SELECT bukrs  hkont gjahr belnr buzei budat
             waers  xblnr blart bschl shkzg
             gsber  dmbtr wrbtr sgtxt
         FROM bsas
            APPENDING CORRESPONDING FIELDS OF TABLE it_final
            WHERE bukrs EQ p_bukrs
            AND hkont BETWEEN '0000250301' AND  '0000250500'
            AND budat LE p_budat
            AND blart IN ('WE', 'RE','SA','EI')
            AND augdt GE p_budat.
      SORT it_final BY belnr gsber DESCENDING.
      CLEAR: temp_belnr, temp_gsber.
    update blank business areas
    LOOP AT it_final .
    IF temp_gsber IN s_gsber AND it_final-belnr = temp_belnr.
         IF it_final-gsber = ' '.
           it_final-gsber = temp_gsber.
         ENDIF.
       ENDIF.
    if it_final-gsber eq space or it_final-gsber in s_gsber.
         wa_final-gsber = it_final-gsber.
         wa_final-belnr = it_final-belnr.
         modify it_final from wa_final transporting gsber.
    else.
         wa_final-gsber = it_final-gsber.
         wa_final-belnr = it_final-belnr.
         modify it_final from wa_final transporting gsber.
    endif.
    *clear wa_final.
    endloop.
    LOOP AT it_final.
       IF temp_gsber IN s_gsber AND it_final-belnr = temp_belnr.
         IF it_final-gsber = ' '.
           it_final-gsber = temp_gsber.
         ENDIF.
         IF it_final-lifnr = ' '.
           it_final-lifnr = temp_lifnr.
         ENDIF.
         IF it_final-belnr = ' '.
           it_final-belnr = temp_belnr.
         ENDIF.
       ENDIF.
       IF it_final-gsber EQ space OR it_final-gsber IN s_gsber.
         CLEAR: temp_belnr, temp_gsber,temp_lifnr.
         temp_belnr = it_final-belnr.
         temp_gsber = it_final-gsber.
         temp_lifnr = it_final-lifnr.
       ELSE.
         CLEAR : temp_belnr, temp_gsber,temp_lifnr.
       ENDIF.
       MODIFY it_final TRANSPORTING gsber.
    ENDLOOP.
      sort it_final by belnr buzei.
    loop at it_final.
    on change of it_final-belnr.
    clear temp_belnr.
    clear temp_gsber.
    clear temp_lifnr.
    temp_belnr = it_final-belnr.
    temp_gsber = it_final-gsber.
    temp_lifnr = it_final-lifnr.
    endon.
    if it_final-gsber is initial.
      it_final-gsber = temp_gsber.
    *modify it_final transporting gsber.
    endif.
    if it_final-lifnr is initial.
      it_final-lifnr = temp_lifnr.
    *modify it_final transporting lifnr.
    endif.
    modify it_final transporting gsber lifnr where belnr = temp_belnr.
    endloop.
    *deleting entries which are not as per input parameter for business area
    DELETE it_final WHERE  gsber NOT IN s_gsber .
    loop at it_final.
      if s_gsber-low ne '' and s_gsber-high ne ''.
      delete it_final where gsber not in s_gsber.
    elseif s_gsber-low ne '' and s_gsber-high eq ''.
    delete it_final  where gsber ne s_gsber-low.
    endif.
    endloop.
    *initialising internal tables
      it_awkey[] = it_final[].
      it_po[] = it_final[].
      it_ebeln[] = it_final[].
      IF it_final[] IS NOT INITIAL.
    *selecting purchase doc details
        SELECT bukrs  hkont  gjahr   belnr
                       bschl  shkzg  gsber   dmbtr
             wrbtr  sgtxt ebeln
               FROM bseg  INTO CORRESPONDING FIELDS OF TABLE it_ebeln
               FOR ALL ENTRIES IN it_final
                WHERE bukrs = p_bukrs
                  AND belnr = it_final-belnr
                  AND gjahr = it_final-gjahr
                  AND hkont = it_final-hkont.
    *selecting the GR/IR number from BKPF
        SELECT  bukrs    gjahr   belnr
             budat  waers  xblnr   blart
             awkey
            FROM bkpf
          INTO CORRESPONDING FIELDS OF  TABLE it_awkey
              FOR ALL ENTRIES IN it_final
        WHERE bukrs EQ it_final-bukrs
              AND gjahr EQ it_final-gjahr
              AND belnr EQ it_final-belnr.
      ENDIF.
      IF it_ebeln[] IS NOT INITIAL.
    *selecting WBS element
        SELECT   ebeln  gsber
              ps_psp_pnr
          FROM ekkn
          INTO CORRESPONDING FIELDS OF TABLE it_po
          FOR ALL ENTRIES IN it_ebeln
          WHERE ebeln = it_ebeln-ebeln.
    *selecting vendor
        SELECT bukrs ebeln lifnr
          FROM ekko
          INTO CORRESPONDING FIELDS OF TABLE it_lifnr
          FOR ALL ENTRIES IN it_ebeln
          WHERE ebeln = it_ebeln-ebeln.
      ENDIF.
      IF it_lifnr[] IS NOT INITIAL.
    *selecting vendor name
        SELECT lifnr name1
            FROM lfa1
            INTO CORRESPONDING FIELDS OF  TABLE  it_name1
            FOR ALL ENTRIES IN it_lifnr
            WHERE lifnr EQ it_lifnr-lifnr.
      ENDIF.
      LOOP AT it_final.
        idx = sy-tabix.
    *retrieving purchase doc
        READ TABLE it_ebeln WITH KEY belnr = it_final-belnr
                                     gjahr = it_final-gjahr
                                     hkont = it_final-hkont.
        IF sy-subrc EQ 0.
          READ TABLE it_final INDEX idx.
          it_final-ebeln = it_ebeln-ebeln.
          MODIFY it_final INDEX sy-tabix.
        ENDIF.
    *retrieving WBS element
        READ TABLE it_po WITH KEY ebeln = it_final-ebeln.
        IF sy-subrc EQ 0.
          READ TABLE it_final INDEX idx.
          it_final-ps_psp_pnr = it_po-ps_psp_pnr.
          MODIFY it_final INDEX sy-tabix.
        ENDIF.
    calculating amount based on debit/credit
        IF it_final-shkzg = 'H'.
          it_final-dmbtr = 0 - it_final-dmbtr.
          it_final-wrbtr = 0 - it_final-wrbtr.
        ENDIF.
        MODIFY it_final INDEX idx.
      ENDLOOP.
      CLEAR idx.
      SORT it_final BY belnr ebeln DESCENDING.
    *updating blank purchase doc numbers
      CLEAR: temp_belnr, temp_ebeln,temp_gjahr.
      DATA: w_idx LIKE sy-tabix.
      LOOP AT it_final.
        w_idx = sy-tabix.
    *updating blank purchase docs
        IF it_final-gjahr = temp_gjahr AND it_final-belnr = temp_belnr.
          IF it_final-ebeln = ' '.
            it_final-ebeln = temp_ebeln.
          ENDIF.
        ENDIF.
        IF it_final-ebeln NE ' ' .
          CLEAR: temp_belnr, temp_ebeln, temp_gjahr.
          temp_belnr = it_final-belnr.
          temp_ebeln = it_final-ebeln.
          temp_gjahr = it_final-gjahr.
        ELSE.
          CLEAR : temp_belnr, temp_ebeln, temp_gjahr.
        ENDIF.
        MODIFY it_final TRANSPORTING ebeln.
    *retrieving vendor
        READ TABLE it_lifnr WITH KEY ebeln = it_final-ebeln.
        IF sy-subrc EQ 0.
          READ TABLE it_final INDEX w_idx.
          it_final-lifnr = it_lifnr-lifnr.
          MODIFY it_final INDEX sy-tabix.
        ENDIF.
    *retrieving GRIR number
        READ TABLE it_awkey WITH KEY belnr = it_final-belnr
                                     gjahr = it_final-gjahr
                                     bukrs = it_final-bukrs.
        IF sy-subrc EQ 0.
          READ TABLE it_final INDEX w_idx.
          it_final-awkey = it_awkey-awkey.
          MODIFY it_final INDEX sy-tabix.
        ENDIF.
    *retrieving vendor name
        READ TABLE it_name1 WITH KEY lifnr = it_final-lifnr.
        IF sy-subrc EQ 0.
          READ TABLE it_final INDEX w_idx.
          it_final-name1 = it_name1-name1..
          MODIFY it_final INDEX sy-tabix.
        ENDIF.
      ENDLOOP.
    *deleting entries which are not per input parameters
      DELETE it_final WHERE hkont NOT IN s_hkont.
      IF p_lifnr NE ' '.
        DELETE it_final WHERE lifnr NE p_lifnr.
      ENDIF.
    for selecting the grir number which is the first 10 digits of reference key and
    selecting vendor name
      LOOP AT it_final.
        MOVE it_final-awkey+0(10) TO it_final-grir.
        MODIFY it_final INDEX sy-tabix.
      ENDLOOP.
      SORT it_final BY hkont belnr.
    deleting entries where purchase doc is blank.
      DELETE it_final WHERE ebeln EQ ' '.
    ENDFORM.                    " select_data
    *&      Form  build_fieldcat
          text
    -->  p1        text
    <--  p2        text
    FORM e01_fieldcat_init  USING gt_fieldcat TYPE slis_t_fieldcat_alv.
      DATA: ls_fieldcat TYPE slis_fieldcat_alv.
      DATA: gs_sort TYPE slis_sortinfo_alv.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'HKONT'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '1'.
      ls_fieldcat-seltext_l    = 'ACCOUNT'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'BSCHL'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '2'.
      ls_fieldcat-seltext_l    = 'POSTING KEY'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'BLART'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '3'.
      ls_fieldcat-seltext_l    = 'DOC TYPE'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'BELNR'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '4'.
      ls_fieldcat-seltext_l    = 'DOC NUMBER'.
      ls_fieldcat-hotspot(1)   = 'X'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'BUDAT'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '5'.
      ls_fieldcat-seltext_l    = 'POSTING DATE'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'XBLNR'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '6'.
      ls_fieldcat-seltext_l    = 'REF. DOC NO'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'EBELN'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '7'.
      ls_fieldcat-seltext_l    = 'PURCHASE DOC NO'.
      ls_fieldcat-hotspot(1)   = 'X'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'GSBER'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '8'.
      ls_fieldcat-seltext_l    = 'BUSINESS AREA'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'DMBTR'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '9'.
      ls_fieldcat-seltext_l    = 'AMOUNT(LC)'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'WRBTR'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '10'.
      ls_fieldcat-seltext_l    = 'AMOUNT(DC)'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'WAERS'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '11'.
      ls_fieldcat-seltext_l    = 'CURRENCY'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'GJAHR'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '14'.
      ls_fieldcat-seltext_l    = 'Fiscal year'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'GRIR'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '14'.
      ls_fieldcat-seltext_l    = 'GR/IR Number'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'LIFNR'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '12'.
      ls_fieldcat-seltext_l    = 'VENDOR NO'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'PS_PSP_PNR'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '13'.
      ls_fieldcat-seltext_l    = 'WBS Element'.
      APPEND ls_fieldcat TO gt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname    = 'NAME1'.
      ls_fieldcat-tabname    = 'IT_FINAL'.
      ls_fieldcat-col_pos      = '14'.
      ls_fieldcat-seltext_l    = 'VENDOR NAME'.
      APPEND ls_fieldcat TO gt_fieldcat.
    ENDFORM.                    " build_fieldcat
    *&      Form  LIST_DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM list_display .
      gs_layout-colwidth_optimize(1)  = 'X'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_background_id         = 'ALV_BACKGROUND'
          i_callback_program      = g_repid
          i_callback_user_command = 'USER_COMMAND'
          i_structure_name        = 'IT_FINAL'
          is_layout               = gs_layout
          it_fieldcat             = gt_fieldcat[]
          it_special_groups       = gt_sp_group[]
          it_sort                 = gt_sort[]
          it_filter               = gt_filter[]
          i_save                  = g_save
          is_variant              = g_variant
          it_events               = gt_events[]
          is_print                = gs_print
          it_alv_graphics         = gt_alv_graphics[]
          it_excluding            = gt_excluding
        TABLES
          t_outtab                = it_final.
    ENDFORM.                    " LIST_DISPLAY
    *&      Form  USER_COMMAND
    FORM user_command USING i_ucomm  LIKE sy-ucomm
                            is_selfield TYPE slis_selfield.     "#EC CALLED
      CASE i_ucomm.
        WHEN '&IC1'.                        " Pick(Double-click)
          CASE is_selfield-fieldname.
            WHEN 'BELNR'.
              CLEAR it_final.
              READ TABLE it_final INDEX is_selfield-tabindex.
              IF sy-subrc EQ 0.
              FI Document number
                SET PARAMETER ID 'BLN' FIELD it_final-belnr.
              Display Document
                CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
              ENDIF.
            WHEN 'EBELN'.
              CLEAR it_final.
              READ TABLE it_final INDEX is_selfield-tabindex.
              IF sy-subrc EQ 0.
              PO number
                IF it_final-ebeln NE ' '.
                  SET PARAMETER ID 'BES' FIELD it_final-ebeln.
              Display Document
                  CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
                ENDIF.
              ENDIF.
          ENDCASE.
      ENDCASE.
    ENDFORM.                    "user_command
    *&      Form  display_data
          text
    -->  p1        text
    <--  p2        text
    FORM display_data .
      g_repid = sy-repid.
      PERFORM e01_fieldcat_init  USING gt_fieldcat[].
      PERFORM eventtab_build CHANGING gt_events.
      PERFORM e04_comment_build USING gt_list_top_of_page[].
    ENDFORM.                    " display_data
    *&      Form  eventtab_build
          text
         <--P_GT_EVENTS  text
    FORM eventtab_build CHANGING lt_events TYPE slis_t_event.
      CONSTANTS:
        gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
      DATA: ls_event TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = lt_events.
      READ TABLE lt_events WITH KEY name = slis_ev_top_of_page
      INTO ls_event.
      IF sy-subrc = 0.
        MOVE gc_formname_top_of_page TO ls_event-form.
        APPEND ls_event TO lt_events.
      ENDIF.
    ENDFORM.                    " eventtab_build
    *&      Form  e04_comment_build
          text
         -->P_GT_LIST_TOP_OF_PAGE[]  text
    FORM e04_comment_build  USING e04_lt_top_of_page TYPE slis_t_listheader.
      DATA : v_time(10) TYPE c.
      DATA: ls_line TYPE slis_listheader.
      DATA : v_text(50) TYPE c.
      DATA : v_date_low(10)  TYPE c,
             v_date_high(10)  TYPE c.
      CONCATENATE 'GR/IR Report' ' '
      INTO v_text SEPARATED BY space.
      CLEAR ls_line.
      ls_line-typ  = 'H'.
      ls_line-info = v_text.
      APPEND ls_line TO e04_lt_top_of_page.
    ENDFORM.                    " e04_comment_build
    *&      Form  top_of_page
          text
    FORM top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = gt_list_top_of_page.
    ENDFORM   .                    "TOP_OF_PAGE
    regards,
    Amit teja
    Message was edited by: amit teja
    Message was edited by: amit teja
    Message was edited by: amit teja

    Hello,
    <b>Sort it_final by belnr.</b>
    loop at it_final.
    on change of it_final-belnr.
    clear temp_gsber.
    clear temp_lifnr.
    <b>temp_belnr = it_final-belnr.</b>
    temp_gsber = it_final-gsber.
    temp_lifnr = it_final-lifnr.
    if it_final-gsber eq ' '.
    it_final-gsber = temp_gsber.
    endif.
    if it_final-lifnr eq ' '.
    it_final-lifnr = temp_lifnr.
    endif.
    modify it_final transporting gsber lifnr where <b>belnr = temp_belnr</b>.
    <b>endon.</b>
    endloop.
    Regards,
    Naimesh

  • BRFplus: Problem updating values in an internal table in a loop expression

    Hi
    I'm looking into the loop expression type of BRFplus and I have come across a problem updating an internal table, I'm trying to create and populate the table using a loop, here is the functionality I'm trying to achieve:
    In a rule set create an internal MONTH_TBL table containing 12 rows of two columns: MONTH_NUM containing values 1 through 12 and MONTH_VAL containing an amount (initially 0,00 EUR in all 12 rows).
    After initializing the table traverse through SFLIGHT table and for each row add PRICE from the table to MONTH_VAL in the row of MONTH_TBL corresponding to the month of FLDATE field in SFLIGHT.
    The initialization of MONTH_TBL works as intended, as does the traversal of and retrieval of values from SFLIGHT. The problem however is the update of the internal table MONTH_TBL (defined as result data object for the function). I don't get an error, but the tables does not get updated, and I cannot seem to find out what the problem is. I would have attached an XML extract of the function + ruleset for information, but it dosen't seem like that is possible, I could e-mail it on request (for SAP employees with access to system QU5 the function is LOOP_TEST in application Z_KLAUS_TEST).
    I hope that this is sufficient information to understand the issue that I'm dealing with.
    best regards
    Klaus Stenbæk, KMD

    Hi Klaus,
    The Loop expression is part of NW 7.02 which is not yet released. When you experience the problem as part of a test you should have a contact at SAP for dealing with problems/errors. Usually SAP-internal messages are used for this purpose. Please clarify with your SAP contact how the model is.
    BR,
    Carsten

  • Is it possible to update internal table from database table

    Hello All:
              I know how to update database table from internal table in one shot (batch) but is the reverse possible? Can I update some fields in an internal table from a database table in one shot (without looping) because my internal table is huge? Could you please provide me any ideas how to acheive something like this? Thanks in advance and answers will be rewarded.
    thanks.
    Mithun

    Hello my friend,
    You can do it MAYBE , i think you can reverse the update doing a ROLLBACK, but only after you update....not after the program finishes..
    To update some fields at once use:
    UPDATE DBTABLE FROM TABLE IT_TABLE
    Hope this helps!!
    Gabriel

  • Update value of internal table in table control

    hi friends,
                  i have two text field and a button in a screen.if give the value and click the button it should get updated in the table control which is in the next screen.plz
    help me with some sample coding.

    Hi,
    As I can understand, you want
    1. To enter details in two fields. You want to enter data there and then press an enter Button.
    2. This two fields are part of table control in the next screen and it has some data present there. You want to add data of this two fields in the Internal table.
    THere are few options.
    1. Define a Global internal Table.
    2. Fetch Data in that internal Table in your 1st Screen Say 100 with the 2 text fields.
    3. On click of the button. In PAI append data of the fields in the Global Internal Table.
    4. Display internal table by looping on it in the next screen say 200.
    Hope this is the answer you are looking for.
    Try to solve, if you can't then send me message or email.
    Cheers.
    Darshan
    <b><i>** Please reward points if this helps u. It motivates us to write more answer and put more efforts.</i></b>

  • How to update value in internal table from cdpos taking fname n value_new?

    hello everyone,
              i want to insert  value in internal table from cdpos table taking field name  from fname and value from value_new.but the problem is i am not getting how to map the corresponding field of internal table with fname value  which is the field name.
    for example
    i
    fieldname
    value
    name1
    raj
    name2
    sharma
    i want to update field name1. this name1 is there in fname with updated value in value_new  how to make name1 with fname value
    thanks and regards
    laxmikant soni

    Hi Laxmikant,
    If I have understood your requirement correctly, you need to update an internal table with latest 'value_new' from cdpos table where  'fname' = 'fieldname' .
    Hope the below logic will help you:
    FIELD-SYMBOLS: <wa_intab> LIKE LINE OF lt_intab.  "the internal table you want to change
    LOOP AT lt_intab ASSIGNING <wa_intab> .
       READ TABLE lt_cdpos INTO wa_cdpos           "lt_cdpos contains latest data selected from CDPOS
        WITH KEY fname = <wa_intab>-fieldname.
       IF sy-subrc = 0.
         <wa_intab>-value = wa_cdpos-value_new.    
       ELSE.
         "//logic if the name is not there in CDPOS
       ENDIF.
       CLEAR  wa_cdpos.
    ENDLOOP.
    If you wish to improve performance, I suggest using
    1. "transporting value_new" addition in READ TABLE,
    2.  select only the data which you require from CDPOS,
    3.  create the internal tables with only fields which you require,
    4.  when you are using SELECT,LOOP AT statements, limit records by using WHERE condition
    Regards,
    Kavya

  • Update statement in Internal Table

    Plz tell me the syntax and e.g. of update statement in Internal Table program
    Moderator message: Welcome to SCN, please research yourself before asking basic questions.
    Edited by: Thomas Zloch on Feb 25, 2010 12:47 PM

    Hi,
    Use UPDATE statement , check below description from SAP help.
    UPDATE dbtab FROM TABLE itab. or UPDATE (dbtabname) FROM TABLE itab.
    Effect
    Mass update of several lines in a database table.Here, the primary key for identifying the lines tobe updated and the values to be changed are taken from the lines of theinternal table itab. 
    The system field SY-DBCNT contains the number of updated lines,i.e. the number of lines in the internal table itab which havekey values corresponding to lines in the database table.
    Regards
    L Appana

  • File Format Mismatch while update into Internal table using RFC_REMOTE_FILE

    Hi All,
    I used RFC_REMOTE_FILE to communicate with the presentation server in Background Mode. I connected successfully and got output too.
    But my requirement is to update the .csv file into internal tables.
    With RFC_REMOTE_FILE i can get the data as single row. But I can't separate the fields and update into the corressponding table field.
    What is the solution for the above issue. Could anyone help me.
    For the above RFC Communication I followed the below link
    http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/9831750a-0801-0010-1d9e-f8c64efb2bd2&overridelayout=true

    Hi All,
    I used RFC_REMOTE_FILE to communicate with the presentation server in Background Mode. I connected successfully and got output too.
    But my requirement is to update the .csv file into internal tables.
    With RFC_REMOTE_FILE i can get the data as single row. But I can't separate the fields and update into the corressponding table field.
    What is the solution for the above issue. Could anyone help me.
    For the above RFC Communication I followed the below link
    http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/9831750a-0801-0010-1d9e-f8c64efb2bd2&overridelayout=true

Maybe you are looking for