Passing Screen fields to Internal table

Hi Friends,
Here requirement is Palm oil plant details they want to update with Module Pool Program.
The Module Pool contains only four fields. 1.Block 2.editable field 3.editable field 4.editable field.
Let say for Block B1 , they want key in remaining three fields.that data need to transfer to internal table.
here i created module with this four fields but for each block they will key in more than 20 records. how to pass this 20 records to internal table. Please help on this.
Thank You,
Anu.

Hi,
Declare the 4 variables in ur prog with the same name. When PAI will trigger the 4 parameters value will come to those variables automatically.
Assign this 4 variables value to one work area.... and then append it to internal table.
Regards,
Amitava

Similar Messages

  • How can i pass calculated value to internal table

    Hi
    i have to pass calculated value into internal table
    below field are coming from database view and i' m passing view data into iznew1
    fields of iznew1
                 LIFNR  LIKE EKKO-LIFNR,
                 EBELN  LIKE EKKO-EBELN,
                 VGABE  LIKE EKBE-VGABE,
                 EBELP  LIKE EKBE-EBELP,
                 BELNR  LIKE EKBE-BELNR,
                 MATNR  LIKE EKPO-MATNR,
                 TXZ01  LIKE EKPO-TXZ01,
            PS_PSP_PNR  LIKE EKKN-PS_PSP_PNR,
                 KOSTL  LIKE EKKN-KOSTL,
                 NAME1  LIKE LFA1-NAME1,
                 NAME2  LIKE LFA1-NAME2,
                 WERKS  LIKE EKPO-WERKS,
                 NETWR  LIKE EKPO-NETWR,
                 KNUMV  LIKE EKKO-KNUMV,
                 GJAHR  LIKE EKBE-GJAHR,
    and now i want to pass
    one field ED1  which i has calculated separatly and i want to pass this value into iznew1
    but error is coming that iznew1 is a table with out header line  has no component like ED1.
    so how can i pass calculated value to internal table iznew1,

    When you declare your internal table , make an addtion occurs 0
    eg . data : begin of iznew occurs 0 ,
                    fields ...
       add the field here ed1.
               end of iznew.
    now when you are calculating the value of ed1,
    you can pass the corresponding value of  ed1 and modify table iznew.
    eg
    loop at iznew.
    iznew-ed1 = ed1.
    modify iznew.
    endloop.

  • How to handle field symbols internal table values?

    HI all,
              I declared field string as below.The below code is working fine.
    Data : ITAB TYPE STANDARD TABLE OF YAPOPLN, (Custom table).
              wa_itab like line of ITAB.
    field-symbol : <fs> type ITAB.
    ASSIGN PARAM TO <FS>
    LOOP AT <FS> INTO WA_ITAB.
    WRITE:/ 'ABC'.
    ENDLOOP.
    But my requirement is that I dont want all the fields of the table YAPOPLN.My output contains only 2 fields of the table YAPOPLN,which contains total 4 fields.According to my requirement only 2 fields will be getting into one parameter PARAM(this is function module parameter,which is from ALV classes) from the user entered output,which contains only 2 fields.So the above code is not working properly because wa_itab contains 4 fields and giving short dump.
    If I am declaring the internal table with the required fields(only 2 fields) and referring that internal table to field symbol <FS>
    Data : BEGIN OF ITAB1 OCCURS 0,
             FIELD1 LIKE YAPOPLN-FIELD1,
             FIELD2 LIKE YAPOPLN-FIELD2,
             END OF ITAB1.
    field-symbol : <fs> LIKE ITAB1 OR  <FS> TYPE ANY.
    DATA :WA_ITAB1 LIKE LINE OF ITAB1.
    ASSIGN PARAM TO <FS>
    LOOP AT <FS> INTO WA_ITAB.
    WRITE:/ 'ABC'.
    ENDLOOP.
    But when I am compiling this code i am getting the below error.I am gettting the same below error when even <FS> is also declared as <FS> TYPE ANY.
    .'FS' is not an internal table or defined in TABLES.
    Can anyone help me in this regard?
    Thanks,
    Balaji

    Hello,
    Try this way:
    If both the type of internal tables are same then you can directly assign dynamic internal table to static internal table.
    itab = <itab>.
    Suppose you have field symbol internal table <itab> which is different in structure from ITAB.
    Now, you can create <wa> as follow:
    FIELD-SYMBOLS <wa>.
    DATA wa TYPE REF TO DATA.
    CREATE DATA wa TYPE LINE OF <itab>.
    ASSIGN wa->* to <wa>.
    This way your work area is read.
    Using [ASSIGN COMPONENT|http://help.sap.com/saphelp_nw04/helpdata/EN/fc/eb3923358411d1829f0000e829fbfe/content.htm] syntax you can read required component of <wa>.
    Finally you can use that value to load static internal table.
    You can also refer to my thread on [Dynamic table|Re: Creating Dynamic table].
    Hope this helps!
    Thanks,
    Augustin.
    Edited by: Augustarian on Aug 20, 2009 10:06 AM

  • Passing a value from internal table to a powerpoint slide

    Hi,
    Does anyone know how to pass a value from internal table to a powerpoint slide?  I would also need some codes with regards to the coding to open the powerpoint and insert the value in.
    Thanks.
    Points will be awarded.
    Hope to hear from you soon.
    Lawrence

    geez!! do feel sorry for you
    you can fire FM WS_EXECUTE to open power point but passing a variable at run-time i'm not sure, sorry.

  • How to move field symbol internal table to internal table with header line?

    Dear all,
    hi...hereby i would like to ask how i can move field symbol internal table to a internal table?
    as i know field symbol internal table is without header line..
    so, may i know how to do this....to move field symbol internal table to internal table which consist of header line and field and record will same as field symbol internal table...in additional, my field symbol internal table is dynamic table mean everytime will have flexible columns..?
    Please advise...
    Thanks
    Regard,
    ToToRo.
    Edited by: @ToToRo@ on Aug 20, 2009 6:16 AM

    Hello,
    Try this way:
    If both the type of internal tables are same then you can directly assign dynamic internal table to static internal table.
    itab = <itab>.
    Suppose you have field symbol internal table <itab> which is different in structure from ITAB.
    Now, you can create <wa> as follow:
    FIELD-SYMBOLS <wa>.
    DATA wa TYPE REF TO DATA.
    CREATE DATA wa TYPE LINE OF <itab>.
    ASSIGN wa->* to <wa>.
    This way your work area is read.
    Using [ASSIGN COMPONENT|http://help.sap.com/saphelp_nw04/helpdata/EN/fc/eb3923358411d1829f0000e829fbfe/content.htm] syntax you can read required component of <wa>.
    Finally you can use that value to load static internal table.
    You can also refer to my thread on [Dynamic table|Re: Creating Dynamic table].
    Hope this helps!
    Thanks,
    Augustin.
    Edited by: Augustarian on Aug 20, 2009 10:06 AM

  • How To select maximum Value in a specifieid field in internal table.

    How To select maximum Value in a specifieid field in internal table?

    Step : 1
    Sort itab by <Field1> descending.
    Just sort the internal table by the field.
    STEP: 2
    Then read the table at index 1.
    Read table itab index 1.               
    ITAB-FIELD = MAX .                  " Max field will come in the first row of the internal table.
    Regards,
    Gurpreet

  • Assign function code to a field in internal table

    Hi all,
    Can we assign a function code to one field in internal table so that we can use it as an user command in list display.
    For ex:
    data : begin of itab occurs 0,
              check(1) type C,
              num type I,
             end of itab.
    I am preparing a list display using WRITE statements.
    I'ld like to update the checked value of check box as soon as the user selects a  check box. So I would like to assign a function code to this check box. Then I can use AT user-command.

    Hi,
    dinesh's apporach is not bad, but
    1. the structure' name cannot be part of the component
    2. you need to make sure the component-name always is in upper case.
    Try adapting the following code:
    data: begin of wa_test,
              field01 type string,
              field02 type string,
              field03 type string,
           end of wa_test.
    data:  l_fieldname  type string,
           l_counter    type string.
    field-symbols: <testc> type string.
    do 3 times.
      l_counter = sy-index.
      concatenate 'field0' l_counter into l_fieldname.
      translate l_fieldname to upper case.
      assign component l_fieldname of structure wa_test to <testc>.
      if <testc> is assigned.
        <testc> = 'any value'.
      endif.
    enddo.
    write / wa_test-field01.
    best regards

  • How to add the contents of a field of internal table.

    Hello Everybody,
    How to sum up the individual field from a internal table. Like i have a internal table that has menge field , I need to sum up the menge field for each matnr..
    exm : for each matnr there are 5 menge entries, I need to add all the menge fields and shud be put against the matnr .
    Thanks,

    Hi Khaleel,
    One more option is using the "collect" statement.....
    imagine in the internal table itab..we have 2 fields only..
    MATNR,MENGE,
    we have 2 internal tables itab1 and itab2...
    loop at itab1.
    collect itab1 to itab2.
    endloop.
    Action performed is ...for the same MATNR...menge gets added and saved as a single record...When matnr changes...new record is Appended
    another case is we have 3 fields in internal table
    MATNR,UNIT,MENGE
    imagine we hane the records
    Material1 KG  100
    Material1 LT   20
    Material1 LT   200
    MAterial2 KG 100
    in this case...the output will be
    Material1 KG 100
    Material1 LT  220
    MAterial2 KG 100
    Reason is that the fields before the addable value is checked for similarity..
    here field UNIT is also checked and also MATNR before adding up....
    Hope it gave you some alternative idea to proceed with....
    Reward if helpful
    Regards
    Byju

  • Read contents of changing fields from internal table

    Hi Folks,
    Please help me in my query below:
    Consider there is a Z-table with two fields TABNAM and FIELD having values KNA1 and NAME1 respectively.
    In my report I have fetched entries for customers from KNA1. Now based on the field from Z-table I want to populate a variable suppose V_FREE_VAR with the value from KNA1 table.
    Here V_FREE_VAR is of CHAR200 so that it accomodate all types of values from KNA1.
    The value of Z-table FIELD can change daily i.e next day the value may be PSTLZ.
    So how can I read the particular field from internal table as the field to be read is dynamic.
    Note: using case is not feasible.
    Thanks in advance.
    Regards,
    Shardul

    @Hartmut P
    As Rob said i want to get the value of the field from internal table. the code is something like this.
    I_KNA1 contains records for customers.
    Suppose values of Z-table are in internal table I_TEMP_TABLE.
    Entries in I_TEMP_TABLE are as follows
    TABNAME      FIELDNAME
    KNA1                 NAME1
    The value of FIELNAME in Z-table can be changed
    Loop at I_TEMP_TABLE into WA_TEMP_TABLE.
    Read I_KNA1 into WA_KNA1 with key KUNNR = '0001002234'.
    IF SY-SUBRC EQ 0.
       CASE WA_TEMP_TABLE-FIELDNAME.
            WHEN 'NAME1'.
                 V_VAR = WA_KNA1-NAME1.
             WHEN 'PSTLZ'
                  V_VAR = WA_KNA1-PSTLZ.
    ENDIF.
    But using case is not appropriate as KNA1 contains 176 fields.

  • Regarding passing selection screen values into internal table

    Hi,
    I have created one selection screen with fields
    <b>POSNR LIKE VBAP-POSNR</b>
    <b>SELECT-OPTIONS: s_posnr FOR vbap-posnr.</b>
    I had created one internal table as:
    <b>DATA: BEGIN OF i_item OCCURS 0,
            posnr     LIKE vbap-posnr,
          END OF i_item.</b>
    Now what i want is to pass what ever entries available in <b>s_posnr into i_item</b> internal table.
    If user gives 10 in select-screen i_item should have 10,
    If user gives 10 to 30 in select-screen i_item should have 10,20,30 entries.
    If user gives nothing in s_posnr of selection screen
    then i_item should have all the valid item no's[POSNR's]
    from respective sales order.
    Can anybody tell me how can i solve this issue!
    Thanks in advance.
    Thanks & Regards,
    Prasad.

    Hi Prasad,
    I guess somewhere on your selection screen there is also a parameter for sales order (eg. pa_vbeln)?
    Then:
    SELECT posnr
          FROM vbap
          INTO TABLE i_item
         WHERE vbeln EQ pa_vbeln
           AND posnr IN s_posnr.
    Will get all position numbers in your internal table.
    Regards,
    John.

  • How to pass the values from internal table to field groups

    hi all,
    how can i pass the internal  table values to field groups?
    already field groups are holding some values.. INSERT STATEMENT IS NOT WORKING as it is ovewriting the existing values..
    Use full answers will be rewared.
    Thanks.
    Moderator message - duplicate post locked
    Edited by: Rob Burbank on Jun 23, 2009 9:51 AM

    Hi,
    You can use INSERT statement to put a work area of an Internal table in Field-group
    and use Extract to get info out of it.
    Hope it helps,
    Raj

  • Regarding passing blank characters to internal table field

    Hi All,
    I have small issue.
    Actual issue is
    I am having one internal table field as <b>oper_table-arbid</b> in the program i will actually pass first 4 characters of that field into another internal table <b>i_download_operation-arbid.</b>
    Then if <b>oper_table-arbid</b> is blank i need to pass
    4 blank characters into <b>i_download_operation-arbid.</b>
    Can anybody tell me how can i do it.
    Code is like this
    IF oper_table-arbid NE space.
    MOVE oper_table-arbid+0(4) TO i_download_operation-arbid.
    ELSE.
    I need to pass 4 blank char's to i_download_operation-arbid
    ENDIF.
    oper_table-arbid is of 8 char length & i_download_operation-arbid is of 4 char length.
    Can any body tell me what i need to do here.
    Thanks in advance.
    Thanks & Regards,
    Rayeez.

    hi ,
    shaik.
    data: var(8) type c value 'abcdefgh'.
          write var.
    data: bar(8) type c value 'ijkl',
          p1(8)  .
          move bar to p1.
          write:/ p1 right-justified.
    just execute the program and see the o/p.
    if u r trying to pass character then default position is left-justfied .
    so u need to explicitly say right-justified so it will take positions 5,6,7,8.
    so here u need append blank spaces .
    after seeing the o/p u will hav a clear picture .
    vijay.

  • Passing data to different internal tables with different columns from a comma delimited file

    Hi,
    I have a program wherein we upload a comma delimited file and based on the region( we have drop down in the selection screen to pick the region).  Based on the region, the data from the file is passed to internal table. For region A, we have 10 columns and for region B we have 9 columns.
    There is a split statement (split at comma) used to break the data into different columns.
    I need to add hard error messages if the no. of columns in the uploaded file are incorrect. For example, if the uploaded file is of type region A, then the uploaded file should be split into 10 columns. If the file contains lesser or more columns thenan error message should be added. Similar is the case with region B.
    I do not want to remove the existing split statement(existing code). Is there a way I can exactly pass the data into the internal table accurately? I have gone through some posts where in they have made use of the method cl_alv_table_create=>create_dynamic_table by passing the field catalog. But I cannot use this as I have two different internal tables to be populated based on the region. Appreciate help on this.
    Thanks,
    Pavan

    Hi Abhishek,
    I have no issues with the rows. I have a file with format like a1,b1,c1,d1,e1, the file should be uploaded and split at comma. So far its fine. After this, if the file is related to region A say Asia, then it should have 5 fields( as an example). So, all the 5 values a1,b1..e1 will be passed to 5 fields of itab1.
    I also have region B( say Europe)  whose file will have only 4 fields. So, file is of the form a2,b2,c2,d2. Again data is split at comma and passed to itab2.
    If some one loads file related to Asia and the file has only 4 fields  then the data would be incorrect. Similar is the case when someone tries to load Europe file with 5 fields related data. To avoid this, I want to validate the data uploaded. For this, I want to count the no. of fields (seperated by comma). If no. of fields is 5 then the file is related to Asia or if no. of fields is 4 then it is Europe file.
    Well, the no. of commas is nothing but no. of fields - 1. If the file is of the form a1,b1..e1 then I can say like if no. of commas = 4 then it is File Asia.But I am not sure how to write a code for this.Please advise.
    Thanks,
    Pavan

  • 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

  • Populate dynamic table fields from internal table

    Hi,
    Im trying to populate an dynamic table , but it's giving me a few errors witch i can't solve ...
    Basically i have an internal table with te following types :
    DATA: BEGIN OF tab_docs41 OCCURS 0,
          conta TYPE bsis-hkont,
          banco TYPE t012t-text1,
          ano_3 TYPE i,
          ano_2 TYPE i,
          ano_1 TYPE i,
          jan TYPE  i,
          fev TYPE  i,
          mar TYPE  i,
          abr TYPE  i,
          mai TYPE  i,
          jun TYPE  i,
          jul TYPE  i,
          ago TYPE  i,
          set TYPE  i,
          out TYPE  i,
          nov TYPE  i,
          dez TYPE  i,
          total TYPE i,
          montante TYPE betrag11,
    END OF tab_docs41.
    and the following fieldcatalog , for the dynamic table :
    DATA : ls_fieldcat TYPE lvc_s_fcat.
      DATA: lv_period TYPE i.
      DATA str_period TYPE string.
      SUBTRACT 3 FROM ano.
      MOVE ano TO str_period.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname = 'CONTA'.
      ls_fieldcat-seltext = 'Conta do Razão'.
      ls_fieldcat-datatype = 'HKONT'.
    *  ls_fieldcat-intlen = '10'.
      APPEND ls_fieldcat TO p_fieldcat.
    Since the internal table, tab_docs41 it's allready filled how can i pass the tab_docs41 values to the corresponding fields of the dynamic table (the move-corresponding it's not working..)
      ASSIGN fs_data->* TO <fs_1>.
      CREATE DATA new_line LIKE LINE OF <fs_1>.
    *  ASSIGN new_line->*  TO <fs_2>.
    *** Next step is to create a work area for our dynamic internal table.
      LOOP AT tab_docs41.
       ASSIGN COMPONENT 'CONTA' OF STRUCTURE  tab_docs41 TO <fs2>.
    But this last step it's not working ...
    Can anyone help me please ?
    Point's will be rewarded
    Best Regards
    Thanks in advance
    João Martins

    Looks like you have used the method CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE to create the dynamic internal table.
    You have to change the last part of the code:
    FIELD-SYMBOLS:
    <itab> TYPE STANDARD TABLE,
    <wa> TYPE ANY,
    <val> TYPE ANY .
    ASSIGN fs_data->* TO <itab>.
    CREATE DATA new_line LIKE LINE OF <itab>.
    ASSIGN new_line->*  TO <wa>.
    LOOP AT tab_docs41.
      ASSIGN COMPONENT 'CONTA' OF STRUCTURE <wa> TO <val>.
      <val> = tab_docs41-conta.
      ASSIGN COMPONENT 'BANCO' OF STRUCTURE <wa> TO <val>.
      <val> = tab_docs41-banco.
      APPEND <wa> to <itab>.
    ENDLOOP.
    BR,
    Suhas

Maybe you are looking for