ALV Display for Quantity Field

Hi All,
I am working on ALV classes.
I have a quantity field which needs to be displayed without decimals.
When I declare the data type as type p decimals 0,It is displayed correctly but when I change the field with a value using the method handle_data_changed it gives a value multiplied by 10 always. i.e., when the new value is 5 it gives the value as 50.
I tried referencing the Unit value but it doesn't work.
Any views on suppressing the decimal values without getting the value multiplied by 10 is highly appreciated.
Thank you in advance.
Regards,
K.S.

Hello Kandasamy,
                             Change the reference field that points to the ALV display field to a non decimal field and then use the Integer variable assignment for  removing the decimals  during teh BAPi or database fetch.
Hope this answers your question.
Thanks,
Greetson

Similar Messages

  • Best practice for "Quantity" field in Asset Master

    Hi
    I want to know what is the best practice for "Quantity field" in asset master. It should be made displayed only or required field in Asset Master creation.
    Initially I made this field as required entry. So user entered 1 quantity. At the time of posting F-90, he again entered quantity. So my quantity in asset master got increased. Hence i decided to make that field display only in asset master creation.
    Now i made that field as display only in asset master creation. At the time of posting F-90, that quantity field is not coming only. I check my field status group for posting key as well as GL account. Its optional field. Inspite of that user is able to make entry in F-90. Now quantity field is '0' only in asset master even though there is some value in asset.
    Please help what is the best practice wrt quantity field. Should be open in asset master or it should be display only.

    Hi:
               SAP Standard does not recommend you to update quantity field in asset master data.  Just leave the Qty Field Blank , just mention the Unit of Measure as EA. While you post acquisition through F-90 or MIGO this field will get updated in Asset master data automatically. Hope this will help you.
    Regards

  • ALV display using dynamic field catalog and dynamic internal table

    hi ,
    please guide me for ALV display using dynamic field catalog and dynamic internal table.
    Thank you.

    Hi Rahul,
    maybe thread dynamic program for alv is helpful for you. More information about the [SAP List Viewer (ALV)|http://help.sap.com/saphelp_nw70/helpdata/EN/5e/88d440e14f8431e10000000a1550b0/frameset.htm]. Also have a look into the example programs SALV_DEMO_TABLE*.
    Regards Rudi

  • Urgent : Problem with Editable  ALV Grid  for Quantity and Currency Fields

    Hi All,
    I am using Editable ALV Grid display and have quantity and value as editable fields in the display.
    When user changes these values these values are not changing properly .
    For the quantity field the domain is MENG13 with 3 deciamal places and here  if we enter 500 it takes it as 0.500   .
    The same problem is for the currency field. Here the Domain is WERT7 with 3 decimal places.
    Here also it takes last 2 digits after decimal places by default.
    Please advice how to get proper values in this case from ALV editable fields.
    Thanks and Regards
    Harshad
    Edited by: Harshad Rahirkar on Dec 25, 2007 7:39 AM

    for all the currency field , it will display like that only.
    u have to manipulate uin program before displaying.
    if they are giving 500, in program multiply with 100 and move it to table.
    when u are getting from table, divinde and display.
    this is what I am doing.
    Reward if helpfull.

  • ALV report for individual fields (urgent...........)

    Hi all,
    using this ZUS_SDN_THREE_ALV_GRIDS program structure i have generated the all the fields from table.
    could you please guide me how to generate the ALV report for splecific fileds from  individual tables.
    if i click in click on grid1 (that is sales header details) we need populate the item details in grid2 and paralally customer details in grid3.
    please guide me how to resolve the issuee..
    thanks in advance
    Srinivas...

    Hi,
    I have done an example, like on 1st grid it displays header data (EKKO) and when you double click on any record, for that PO you will get item details (EKPO) on 2nd grid,
    In the similar way, you can add one more grid and populate it with your own data simultaneously along with 2nd grid.
    *& Report  ZOOABAP1_SOW
    report  zabap2.
    *                     TABLES
    tables:ekko.
    *                     DATA DECLARATIONS
    data: grid1 type ref to cl_gui_alv_grid,
          grid2 type ref to cl_gui_alv_grid,
          container1 type ref to cl_gui_custom_container,
          container2 type ref to cl_gui_custom_container,
          flag.
    *                     INTERNAL TABLES
    data: it_ekko type table of ekko.
    data: wa_ekko like line of it_ekko.
    data: it_ekpo type table of ekpo.
    data: it_fcat1 type lvc_t_fcat,
          wa_fcat1 type lvc_s_fcat,
          it_fcat2 type lvc_t_fcat,
          wa_fcat2 type lvc_s_fcat,
          wa_layout1 type lvc_s_layo,
          wa_layout2 type lvc_s_layo,
          wa_variant type disvariant.
    *                     SELECTION-SCREEN
    selection-screen begin of block b with frame title text-s01.
    select-options: s_ebeln for ekko-ebeln.
    selection-screen end of block b.
    *       CLASS lcl1 DEFINITION
    class lcl1 definition.
      public section.
        methods:
          handler_dbl_clk for event double_click
                                      of cl_gui_alv_grid
                                         importing e_row.
    endclass.                    "lcl1 DEFINITION
    *       CLASS lcl1 IMPLEMENTATION
    class lcl1 implementation.
      method handler_dbl_clk.
        read table it_ekko into wa_ekko index e_row-index.
        if sy-subrc = 0.
          perform get_ekpo.
        endif.
      endmethod.                    "handler_dbl_clk
    endclass.                    "lcl1 IMPLEMENTATION
    *                     START_OF_SELECTION
    start-of-selection.
    * Get PO header data
      perform get_ekko.
    * screen for container
      call screen 100.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    module status_0100 output.
      set pf-status 'PFS'.
      set titlebar 'TIT'.
      data: obj type ref to lcl1.
      if flag is initial.
        create object container1
          exporting
            container_name = 'CONT1'.
        create object container2
          exporting
            container_name = 'CONT2'.
        create object grid1
          exporting
            i_parent = container1.
        create object grid2
          exporting
            i_parent = container2.
        create object obj.
        set handler obj->handler_dbl_clk for grid1.
        perform build_fcat.
        perform build_layout.
        call method grid1->set_table_for_first_display
           exporting
    *        i_buffer_active               =
    *        i_bypassing_buffer            =
    *        i_consistency_check           =
    *          i_structure_name              = 'EKKO'
    *        is_variant                    = wa_variant
            i_save                        = 'X'
    *        i_default                     = 'X'
            is_layout                     = wa_layout1
    *        is_print                      =
    *        it_special_groups             =
    *        it_toolbar_excluding          =
    *        it_hyperlink                  =
    *        it_alv_graphics               =
    *        it_except_qinfo               =
    *        ir_salv_adapter               =
              changing
                it_outtab                     = it_ekko
                it_fieldcatalog               = it_fcat1
    *        it_sort                       =
    *        it_filter                     =
    *      EXCEPTIONS
    *        invalid_parameter_combination = 1
    *        program_error                 = 2
    *        too_many_lines                = 3
    *        others                        = 4
        if sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        endif.
        flag = 'X'.
      endif.
    endmodule.                 " STATUS_0100  OUTPUT
    *&      Form  get_ekko
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form get_ekko .
      select ebeln bsart lifnr
             from ekko
             into corresponding fields of table it_ekko
             where ebeln in s_ebeln.
    endform.                    " get_ekko
    *&      Form  GET_EKPO
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form get_ekpo .
      select ebeln ebelp menge meins peinh from ekpo
       into corresponding fields of table it_ekpo
       where ebeln = wa_ekko-ebeln.
      if not it_ekpo[] is initial.
        call method grid2->set_table_for_first_display
      exporting
    *    i_buffer_active               =
    *    i_bypassing_buffer            =
    *    i_consistency_check           =
    *    i_structure_name              =
    *    is_variant                    =
    *    i_save                        =
    *    i_default                     = 'X'
        is_layout                     = wa_layout2
    *    is_print                      =
    *    it_special_groups             =
    *    it_toolbar_excluding          =
    *    it_hyperlink                  =
    *    it_alv_graphics               =
    *    it_except_qinfo               =
    *    ir_salv_adapter               =
          changing
            it_outtab                     = it_ekpo
            it_fieldcatalog               = it_fcat2
    *    it_sort                       =
    *    it_filter                     =
    *  EXCEPTIONS
    *    invalid_parameter_combination = 1
    *    program_error                 = 2
    *    too_many_lines                = 3
    *    others                        = 4
        if sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        endif.
      endif.
    endform.                    " GET_EKPO
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    module user_command_0100 input.
      case sy-ucomm.
        when 'BACK' or 'EXIT' or 'CANC'.
          call method container1->free.
          call method container2->free.
          leave to screen 0.
      endcase.
    endmodule.                 " USER_COMMAND_0100  INPUT
    *&      Form  build_fcat
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form build_fcat .
    * fieldcatalog for EKKO table
      wa_fcat1-col_pos = '1'.
      wa_fcat1-fieldname = 'EBELN'.
      wa_fcat1-tabname = 'EKKO'.
      wa_fcat1-coltext = 'PO No.'.
      append wa_fcat1 to it_fcat1.
      clear wa_fcat1.
      wa_fcat1-col_pos = '2'.
      wa_fcat1-fieldname = 'BSART'.
      wa_fcat1-tabname = 'EKKO'.
      wa_fcat1-coltext = 'PO Type'.
      append wa_fcat1 to it_fcat1.
      clear wa_fcat1.
      wa_fcat1-col_pos = '3'.
      wa_fcat1-fieldname = 'LIFNR'.
      wa_fcat1-tabname = 'EKKO'.
      wa_fcat1-coltext = 'Vendor No.'.
      append wa_fcat1 to it_fcat1.
      clear wa_fcat1.
    * fieldcatalog for EKPO table
      wa_fcat2-col_pos = '1'.
      wa_fcat2-fieldname = 'EBELN'.
      wa_fcat2-tabname = 'EKPO'.
      wa_fcat2-coltext = 'PO No.'.
      append wa_fcat2 to it_fcat2.
      clear wa_fcat2.
      wa_fcat2-col_pos = '2'.
      wa_fcat2-fieldname = 'EBELP'.
      wa_fcat2-tabname = 'EKPO'.
      wa_fcat2-coltext = 'PO Item'.
      append wa_fcat2 to it_fcat2.
      clear wa_fcat2.
      wa_fcat2-col_pos = '3'.
      wa_fcat2-fieldname = 'MENGE'.
      wa_fcat2-tabname = 'EKPO'.
      wa_fcat2-coltext = 'Quantity'.
      append wa_fcat2 to it_fcat2.
      clear wa_fcat2.
      wa_fcat2-col_pos = '4'.
      wa_fcat2-fieldname = 'MEINS'.
      wa_fcat2-tabname = 'EKPO'.
      wa_fcat2-coltext = 'UOM'.
      append wa_fcat2 to it_fcat2.
      clear wa_fcat2.
      wa_fcat2-col_pos = '5'.
      wa_fcat2-fieldname = 'PEINH'.
      wa_fcat2-tabname = 'EKPO'.
      wa_fcat2-coltext = 'Price Unit'.
      append wa_fcat2 to it_fcat2.
      clear wa_fcat2.
    endform.                    " build_fcat
    *&      Form  build_layout
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form build_layout .
      clear wa_layout1.
      wa_layout1-grid_title = 'Header data'.
    *  wa_layout-sel_mode = 'A'.             "allow to select multiple lines
      clear wa_layout2.
      wa_layout2-grid_title = 'Item Data'.
    endform.                    " build_layout
    If you have any poblems while doing this, post it.
    Do reward points for all helpful answers
    Regards,
    Sowjanya

  • ALV Display - Error in field catalog

    Hi ,
    I am facing a problem in ALV... Field catalot is not getting populated... I am getting a message field catalog not found...
    Can anyone please help me....... <URGENT DOES NOT EXIST HERE>...
    I am enclosing my code also.. please go thourh it and help it....
    REPORT ZINVENTORY
          LINE-SIZE  120
           LINE-COUNT 64.
          MESSAGE-ID Z2
          NO STANDARD PAGE HEADING..
    type-pools : slis.
    Tables                                                               *
    tables: zasset,
            anla,
            itob,
            equi.
    data: v_repid LIKE sy-repid.
    Selection Screen                                                     *
    SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001 .
    SELECT-OPTIONS : S_bukrs FOR anla-bukrs OBLIGATORY ,
                     S_kostl FOR itob-kostl .
    SELECTION-SCREEN : END OF BLOCK B1 .
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t02.
    PARAMETERS: p_screen RADIOBUTTON GROUP gr1,
                p_list RADIOBUTTON GROUP gr1 DEFAULT 'X'.
    SELECTION-SCREEN END OF BLOCK b2.
    Internal Tables                                                      *
    types: BEGIN OF ty_zasset, " occurs 0,
             equnr  like zasset-equnr,
             ANLN1 LIKE zasset-ANLN1, " Asset number
             ANLN2 LIKE zasset-ANLN2, " Sub Asset number
             BUKRS LIKE zasset-BUKRS, " Company Code
             KOSTL  like zasset-kostl,
             SCANNEDBY type zasset-scannedby,
             SCANNINGDATE type zasset-SCANNINGDATE,
             SCANNINGTIME type zasset-scanningtime,
             UPDATEDATE   type zasset-updatedate,
             UPDATETIME type zasset-updatetime,
           END OF ty_zasset.
    DATA: wa_zasset   TYPE ty_zasset.
    DATA: it_zasset TYPE TABLE OF ty_zasset with header line..
    types: BEGIN OF ty_zasset1, " occurs 0,
            equnr  TYPE equi-equnr,
             ANLN1 LIKE anla-ANLN1, " Asset number
             ANLN2 LIKE anla-ANLN2, " Sub Asset number
             BUKRS LIKE anla-BUKRS, " Company Code
             ernam like anla-ernam,
             erdat like anla-erdat,
            KOSTL  like anlz-kostl,
            SCANNEDBY type zasset-scannedby,
            SCANNINGDATE type zasset-SCANNINGDATE,
            SCANNINGTIME type zasset-scanningtime,
            UPDATEDATE   type zasset-updatedate,
            UPDATETIME type zasset-updatetime,
           END OF ty_zasset1.
    DATA: wa_zasset1   TYPE ty_zasset1.
    DATA: it_zasset1 TYPE TABLE OF ty_zasset1 with header line..
    types: BEGIN OF ty_zasset2, " occurs 0,
             equnr  like itob-equnr,
             ANLNr LIKE itob-ANLNr, " Asset number
             ANLuN LIKE itob-ANLuN, " Sub Asset number
             BUKRS LIKE itob-BUKRS, " Company Code
             timbi like itob-timbi,
             kostl like itob-kostl,
            KOSTL  like anlz-kostl,
            SCANNEDBY type zasset-scannedby,
            SCANNINGDATE type zasset-SCANNINGDATE,
            SCANNINGTIME type zasset-scanningtime,
            UPDATEDATE   type zasset-updatedate,
            UPDATETIME type zasset-updatetime,
           END OF ty_zasset2.
    DATA: wa_zasset2   TYPE ty_zasset2.
    DATA: it_zasset2 TYPE TABLE OF ty_zasset2 with header line..
    types: begin of ty_final , "occurs 0,
            equnr like itob-equnr,
            anln1 like anla-anln1,
            anln2 like anla-anln2,
            bukrs like anla-bukrs,
           ernam
           erdat
            kostl like itob-kostl,
            end of ty_final.
    DATA: wa_final   TYPE ty_final.
    DATA: it_final TYPE TABLE OF ty_final with header line..
    *DATA: it_zasset TYPE TABLE OF ty_zasset.
    *data: it_zasset1 type table of ty_zasset1.
    *data:wa_zasset type ty_zasset.
    *data:wa_zasset1 type ty_zasset1.
    Flags and Variables                                                 *
    DATA : F_ERROR.                   " Flag for No Data
    *pop field cat for f7
    data: V_SYREPID LIKE SY-REPID,
          IT_FLDCAT type slis_t_fieldcat_alv , "with header line,
          wa_fldcat   type slis_fieldcat_alv.
    *DATA : IT_FLDCATS TYPE SLIS_T_FIELDCAT_ALV.
    data: itab_events type slis_t_event,
          wa_events   type slis_alv_event.
    *data: wa_layout type slis_layout_alv.
    DATA : IT_COMMENTS TYPE SLIS_T_LISTHEADER,
           WA_COMMENTS TYPE SLIS_LISTHEADER.
    DATA : IT_SORTINFO TYPE SLIS_T_SORTINFO_ALV,
           WA_SORTINFO TYPE SLIS_SORTINFO_ALV.
    Initialization                                                       *
    initialization.
      SY-REPID = V_REPID.
    At Selection Screen                                                  *
    AT SELECTION-SCREEN.
      PERFORM validation.
    Start Of Selection                                                   *
    start-of-selection.
    perform select_data.
    IF P_LIST = 'X'.
    perform get_field_catalog.
    PERFORM MODIFYFIELDCAT.
    perform get_events.
    perform write_comments.
    perform grid_display.
    *perform list_display.
    ENDIF.
    IF sy-subrc = 0.
       IF p_list = 'X'.
       loop at it_final.
       perform get_events.
       endloop.
       endif.
       endloop.
       else.
    *endif.
    End Of Selection                                                     *
    END-OF-SELECTION.
    *perform display_Recorsds.
    *loop at zasset.
    *&      Form  validation
          text
    -->  p1        text
    <--  p2        text
    FORM validation.
    *Local variables.
      DATA:
            lv_bukrs type anla-bukrs,
            lv_kostl type itob-kostl,
            lv_anln1 TYPE anla-anln1,        "MAterial Number
            lv_anln2 TYPE anla-anln2.
    *Validation for company code
      if not s_bukrs is initial.
        select single bukrs from anla
               into lv_bukrs
               where bukrs in s_bukrs.
        if sy-subrc <> 0.
    *Message used : Invalid company code.
        endif.
      endif    .
    Validation for cost center
      if not s_kostl is initial.
        select single kostl from itob
               into lv_kostl
               where kostl in s_kostl.
        if sy-subrc <> 0.
    *Message used : Invalid company code.
        endif.
      endif  .
    ENDFORM.                    " validation
    *&      Form  display
          text
    -->  p1        text
    <--  p2        text
    FORM display.
      write :/15 it_final-anln1,
      it_final-anln2,
                sy-vline.
    *-bukrs,
           it_zasset-anln1.
    ENDFORM.                    " display
    *&      Form  get_field_catalog
          text
    -->  p1        text
    <--  p2        text
    FORM get_field_catalog.
    *REFRESH IT_FLDCAT.
    *CLEAR IT_FLDCAT.
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
       I_PROGRAM_NAME               = V_REPID
       I_INTERNAL_TABNAME           = 'IT_FINAL'
       I_INCLNAME                   = V_REPID
      I_BYPASSING_BUFFER           =
      I_BUFFER_ACTIVE              =
      CHANGING
        CT_FIELDCAT                  = IT_FLDCAT
    EXCEPTIONS
       INCONSISTENT_INTERFACE       = 1
       PROGRAM_ERROR                = 2
       OTHERS                       = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.                    " get_field_catalog
    *&      Form  get_events
          text
    -->  p1        text
    <--  p2        text
    FORM get_events.
      WA_COMMENTS-TYP = 'H'.
      WA_COMMENTS-KEY = 'THIS IS THE HEADING.'.
      WA_COMMENTS-INFO = 'LIST OF SALES ORDERS'.
      APPEND WA_COMMENTS TO IT_COMMENTS.
    ENDFORM.                    " get_events
    *&      Form  grid_display
          text
    -->  p1        text
    <--  p2        text
    FORM grid_display.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                =
      I_BUFFER_ACTIVE                   = ' '
       I_CALLBACK_PROGRAM                = v_repid
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
       I_CALLBACK_TOP_OF_PAGE            = 'FIRST PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      =  'LIST OF FLIGHT DETAILS'
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         =
       IT_FIELDCAT                       =  it_fldcat
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
      IT_EVENTS                         =  itab_events
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      IT_ALV_GRAPHICS                   =
      IT_ADD_FIELDCAT                   =
      IT_HYPERLINK                      =
      I_HTML_HEIGHT_TOP                 =
      I_HTML_HEIGHT_END                 =
      IT_EXCEPT_QINFO                   =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = it_final
    EXCEPTIONS
       PROGRAM_ERROR                     = 1
       OTHERS                            = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.                    " grid_display
    *&      Form  write_comments
          text
    -->  p1        text
    <--  p2        text
    FORM write_comments.
      WA_COMMENTS-TYP = 'H'.
      WA_COMMENTS-KEY = 'THIS IS THE HEADING.'.
      WA_COMMENTS-INFO = 'LIST OF SALES ORDERS'.
      APPEND WA_COMMENTS TO IT_COMMENTS.
    ENDFORM.                    " write_comments
    *&      Form  select_data
          text
    -->  p1        text
    <--  p2        text
    FORM select_data.
      clear: it_zasset, it_zasset[].
      select  equnr "bukrs
              anln1
              anln2
              bukrs
              KOSTL
              SCANNEDBY
              SCANNINGDATE
              SCANNINGTIME
              UPDATEDATE
              UPDATETIME
              into table it_zasset "(g_anln1,g_anln2)
              from zasset
              where bukrs = zasset-bukrs..
          and   kostl = zasset-kostl.
      if sy-subrc = 0.
        sort it_zasset by anln1 anln2.
      endif.
    append it_zasset.
      clear it_zasset1.
      select
             equnr
              anln1
              anln2
              bukrs
              ernam
              erdat
             bukrs
             KOSTL
             SCANNEDBY
             SCANNINGDATE
             SCANNINGTIME
             UPDATEDATE
             UPDATETIME
              into table it_zasset1 "(g_anln1,g_anln2)
              from  anla
             where bukrs = it_zasset-bukrs.
      WHERE BUKRS IN S_BUKRS.
    and   kostl = anla-kostl.
      if sy-subrc = 0.
        select equnr
               anlnr
               anlun
               bukrs
               timbi
               kostl
               into table it_zasset2
               from itob
               for all entries in it_zasset1
              where bukrs = it_zasset1-bukrs
               WHERE   anlnr = it_zasset1-anln1.
      endif.
      APPEND IT_ZASSET1.
      IF SY-SUBRC = 0.
    *loop at it_zasset1 into wa_zasset1.
    loop at it_ZASSET1 into wa_zasset1.
    move wa_zasset1-bukrs to wa_final-bukrs.
        move wa_zasset1-anln1 to wa_final-anln1.
        move wa_zasset1-anln2 to wa_final-anln2.
    append wa_final to it_final.
    endloop.
    ENDIF.
    sort it_final.
    *LOOP AT IT_FINAL.
    *ENDLOOP.
    *ENDIF.
    *if sy-subrc = 0.
    *loop at it_zasset into wa_asset.
    *read table it_zasset into wa_asset with key anln2 = wa_asset-anln2
    *binary search.
    *read table it_final into wa_final with key anln2 = wa_final-anln2
    *binary search.
    *if wa_asset-anln2 = wa_final-anln2.
    *write : / 'error'.
    *endif.
    If sy-subrc <> 0.
       f_error = 'X'.
       write :  'No data Exists for the given selection in FA table'.
    else.
       loop at it_final.
         perform display.
       endloop.
    records exits in anla table also.
    endif.
    ENDFORM.                    " select_data
    *&      Form  MODIFYFIELDCAT
          text
    -->  p1        text
    <--  p2        text
    FORM MODIFYFIELDCAT.
      LOOP AT IT_FLDCAT INTO WA_FLDCAT.
         CASE WA_FLDCAT-FIELDNAME.
            WHEN 'EQUNR'.
    WA_FLDCAT-COL_POS = 1.
              WA_FLDCAT-SELTEXT_L = 'aSSET'.
            WHEN 'ANLN1'.
            wa_FLDCAT-KEY = 'X'.
              WA_FLDCAT-COL_POS = 5.
              WA_FLDCAT-SELTEXT_L = 'aSSET'.
            WHEN 'ANLN2'.
              WA_FLDCAT-KEY = 'X'.
              WA_FLDCAT-COL_POS = 6.
            wa_FLDCAT-HOTSPOT = 'X'.
            WHEN 'BUKRS'.
              WA_FLDCAT-CURRENCY = 'INR'.
             WA_FLDCAT-SYMBOL = 'X'.
          ENDCASE.
        MODIFY IT_FLDCAT FROM WA_FLDCAT.
    *IT_FLDCAT-fieldname   = 'EQUNR'.
    IT_FLDCAT-seltext_m   = 'DOCUM_TYPE'.
    IT_FLDCAT-col_pos     = 1.
    IT_FLDCAT-outputlen   = 10.
    IT_FLDCAT-emphasize   = 'X'.
    IT_FLDCAT-key         = 'X'.
    fieldcatalog-do_sum      = 'X'.
    fieldcatalog-no_zero     = 'X'.
    append IT_FLDCAT TO IT_FLDCAT.
    IT_FLDCAT-fieldname   = 'ANLN1'.
    IT_FLDCAT-seltext_m   = 'DOCUM_TYPE'.
    IT_FLDCAT-col_pos     = 1.
    IT_FLDCAT-outputlen   = 10.
    IT_FLDCAT-emphasize   = 'X'.
    IT_FLDCAT-key         = 'X'.
    fieldcatalog-do_sum      = 'X'.
    fieldcatalog-no_zero     = 'X'.
    append IT_FLDCAT TO IT_FLDCAT.
      ENDLOOP.
    ENDFORM.                    " MODIFYFIELDCAT
    *&      Form  list_display
          text
    -->  p1        text
    <--  p2        text
    *FORM list_display.
    *CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK              = ' '
      I_BUFFER_ACTIVE                = ' '
      I_CALLBACK_PROGRAM             = V_SYREPID
      I_CALLBACK_PF_STATUS_SET       = ' '
      I_CALLBACK_USER_COMMAND        = 'FRM_USER_COMMAND'
      I_STRUCTURE_NAME               =
      IS_LAYOUT                      = wa_layout
      IT_FIELDCAT                    = IT_FLDCAT
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
      IT_SORT                        =
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_DEFAULT                      = 'X'
      I_SAVE                         = 'A'
      IS_VARIANT                     =
      IT_EVENTS                      = ITAB_EVENTS
      IT_EVENT_EXIT                  =
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
    TABLES
       T_OUTTAB                       = IT_FINAL
    EXCEPTIONS
      PROGRAM_ERROR                  = 1
      OTHERS                         = 2
    *IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    *ENDIF.
    *ENDFORM.                    " list_display
    Edited by: Craig Cmehil on Jul 18, 2008 10:01 AM

    The problem is with this...
    types: begin of ty_final , "occurs 0,
    equnr like itob-equnr,
    anln1 like anla-anln1,
    anln2 like anla-anln2,
    bukrs like anla-bukrs,
    ernam
    erdat
    kostl like itob-kostl,
    end of ty_final.
    DATA: wa_final TYPE ty_final.
    DATA: it_final TYPE TABLE OF ty_final with header line.
    when you are using Fieldcatalog merge you have to avoid using the TYPES Declaration of the internal table.
    Instead of that you can do this
    data: begin of it_final occurs 0,
    equnr like itob-equnr,
    anln1 like anla-anln1,
    anln2 like anla-anln2,
    bukrs like anla-bukrs,
    ernam
    erdat
    kostl like itob-kostl,
            end of it_final.

  • ALV  display for  row  s   and columns in this format.have ur full points..

    Hi ALL
      I have to dispalay data in the ALV format as :
    Basic
    DA
    HRA
    PF
    VPF
    20000
    500
    5000
    | 1500     | 600  |          |
    Details :  Basic   HRA in one Row and   PF , VPF in  second Row.
    The Amount  regarding htese fields are also displayed in the next rows for all  emp. numbers.
    its urgent for me and need helpful answers...
    Regards
    Lakhan

    see the attached code it will display the hierarchial display as per your need
    change the internal tables with dat of your own orgn structure and pass it to the fun module.
    Description : Pick Status Report
    This is an ALV report using the heirarchical ALV list display. The
    report selects all deliveries that fulfil the selection criteria
    and displays a summary of all items in that delivery with reference
    to certain statuses: overall status, goods issue status, transfer
    order status, load to pallet status, pallet count status, loaded to
    van status, van manifest printed status and end of day manifest
    printed status. These statuses have been defined by the business.
    There is extra functionality required to trigger printing of the van
    and end of day manifests from this report, and to set the loading
    end status of a shipment if the last handling unit of a particular
    shipment has been loaded onto a van for which the van manifest has
    been triggered.
    REPORT zwmr_pick_status_report NO STANDARD PAGE HEADING
    MESSAGE-ID zw.
    Type Pools
    TYPE-POOLS: icon, slis.
    Tables
    TABLES: tvst,
    likp,
    t30b,
    vekp,
    *{ INSERT UKMK900355 4
    zhu_to_link, "AS03
    *} INSERT
    zpallettr,
    vttk, "MB01
    zvantr.
    Types
    TYPES:
    BEGIN OF ty_data,
    lgtor LIKE likp-lgtor, " door
    vbeln LIKE likp-vbeln, " delivery
    wbstk LIKE vbuk-wbstk, " Goods movement status
    kostk LIKE vbuk-kostk, " Picking status
    posnr LIKE lips-posnr, " item
    route LIKE likp-route, " route
    wadat LIKE likp-wadat, " goods issue date
    lvsta LIKE vbup-lvsta, " warehouse status
    packvorschr LIKE vekp-packvorschr, " pack mnemonic
    exidv LIKE vekp-exidv, " handling unit
    zpallet_no(10), "like zpallettr-zpallet_no, " pallet no
    zdep_point LIKE zpallettr-zdep_point, "Departur Point "Jvdm01
    zcount_check LIKE zpallettr-zcount_check," count check flag
    zvan_no(10), "like zvantr-zvan_no, " van no
    zvan_print LIKE zvantr-zvan_print, " van manifest print
    tknum LIKE vttk-tknum, " Shipment No "ANV 11523
    zeod_print LIKE zvantr-zeod_print, " eod manifest print
    zzpackclass LIKE vekp-zzpackclass, " package class
    zzti LIKE vekp-zzti, " T.I. value
    vstel LIKE likp-vstel, "Shipping point RM050906
    anzpk TYPE znopack, "No of packages in dlv MB01+
    END OF ty_data.
    TYPES:BEGIN OF x_likp ,
    vbeln LIKE likp-vbeln,
    vstel LIKE likp-vstel, "RM050906
    lgtor LIKE likp-lgtor,
    zzroute2lgtor LIKE likp-zzroute2lgtor, "MB01
    route LIKE likp-route,
    wadat LIKE likp-wadat,
    zz2route LIKE likp-zz2route, "MB01+
    zzexproute LIKE likp-zzexproute, "MB01+
    zzroute2 LIKE likp-zzroute2, "MB01+
    anzpk LIKE likp-anzpk,
    END OF x_likp.
    TYPES: BEGIN OF x_vbuk,
    vbeln TYPE vbuk-vbeln,
    wbstk TYPE vbuk-wbstk, " Goods movement status
    kostk TYPE vbuk-kostk, " Picking status
    END OF x_vbuk.
    TYPES: BEGIN OF x_lips,
    vbeln TYPE lips-vbeln, " delivery
    posnr TYPE lips-posnr, " item
    pstyv TYPE lips-pstyv,
    matnr TYPE lips-matnr,
    charg TYPE lips-charg,
    END OF x_lips.
    TYPES: BEGIN OF x_vbup,
    vbeln TYPE vbup-vbeln, " delivery
    posnr TYPE vbup-posnr, " item
    lvsta TYPE vbup-lvsta, " warehouse status
    END OF x_vbup.
    TYPES: BEGIN OF x_vepo,
    venum TYPE vepo-venum, "Internal Handling Unit
    Number
    vepos TYPE vepo-vepos, "Handling Unit Item
    vbeln TYPE vepo-vbeln, " delivery
    posnr TYPE vepo-posnr, " item
    exidv TYPE vekp-exidv,
    END OF x_vepo.
    TYPES: BEGIN OF x_vepo1,
    venum TYPE vekp-venum, "Internal Handling Unit
    Number
    exidv TYPE vekp-exidv,
    END OF x_vepo1.
    Start of changes by ANV SR#11523
    TYPES: BEGIN OF x_vttp,
    tknum TYPE tknum, " Shipment No
    tpnum TYPE tpnum, " Item No
    vbeln TYPE vbup-vbeln, " delivery
    laufk LIKE vttk-laufk, " leg indicator MB01+
    END OF x_vttp.
    End of changes by ANV SR#11523
    Data
    RANGES: r_del FOR likp-vbeln,
    r_lgtor FOR likp-lgtor.
    RANGES: r_vanno FOR zvantr-zvan_no,
    r_palno FOR zpallettr-zpallet_no.
    DATA: BEGIN OF number_range OCCURS 0,
    mark(1),
    id(3),
    num(10) TYPE n,
    desc LIKE zpalletmd-zdesc,
    END OF number_range.
    DATA: t_disp_tab TYPE STANDARD TABLE OF zpickdisp,
    t_data_tab TYPE ty_data OCCURS 0 WITH HEADER LINE,
    it_likp TYPE x_likp OCCURS 0 WITH HEADER LINE, "SUM
    it_vbuk TYPE x_vbuk OCCURS 0 WITH HEADER LINE, "SUM
    it_lips TYPE x_lips OCCURS 0 WITH HEADER LINE, "SUM
    it_vbup TYPE x_vbup OCCURS 0 WITH HEADER LINE, "SUM
    it_vepo TYPE x_vepo OCCURS 0 WITH HEADER LINE, "SUM
    it_vepo2 TYPE x_vepo OCCURS 0 WITH HEADER LINE, "SUM
    *{ INSERT UKMK900355 3
    t_vepo_low TYPE x_vepo OCCURS 0 WITH HEADER LINE, " AS01
    *} INSERT
    it_vepo1 TYPE x_vepo1 OCCURS 0 WITH HEADER LINE, "SUM
    it_vttp TYPE x_vttp OCCURS 0 WITH HEADER LINE, "ANV SR#11523
    t_disp_head TYPE STANDARD TABLE OF zpickhead.
    DATA wa_item_tab TYPE zpickdisp OCCURS 0 WITH HEADER LINE.
    "ANV SR#11113
    DATA: w_numrnge LIKE number_range,
    w_number(10) TYPE n.
    DATA: t_likp LIKE likp OCCURS 0 WITH HEADER LINE,
    t_lips LIKE lips OCCURS 0 WITH HEADER LINE,
    t_vbuk LIKE vbuk OCCURS 0 WITH HEADER LINE,
    t_vbup LIKE vbup OCCURS 0 WITH HEADER LINE,
    t_vepo LIKE vepo OCCURS 0 WITH HEADER LINE,
    t_vekp LIKE vekp OCCURS 0 WITH HEADER LINE,
    t_vantr LIKE zvantr OCCURS 0 WITH HEADER LINE,
    t_pallettr LIKE zpallettr OCCURS 0 WITH HEADER LINE,
    w_likp like likp,
    w_lips LIKE lips,
    w_vbuk LIKE vbuk,
    w_vbup LIKE vbup,
    w_vepo LIKE vepo,
    w_vekp LIKE vekp,
    w_vepo TYPE x_vepo1,
    w_vbup TYPE x_vbup,
    w_vttp TYPE x_vttp, " ANV SR#11523
    w_lips TYPE x_lips,
    w_vbuk TYPE x_vbuk,
    w_likp TYPE x_likp, "MB01-+
    w_tplst LIKE vttk-tplst. "MB01+
    DATA: s_variant LIKE disvariant, "MB01+
    def_variant LIKE disvariant.
    ALV DATA *****
    DATA:
    g_grid TYPE REF TO cl_gui_alv_grid,
    g_sort TYPE slis_t_sortinfo_alv,
    g_custom_container TYPE REF TO cl_gui_custom_container,
    g_layout TYPE slis_layout_alv,
    gt_fieldcat TYPE slis_t_fieldcat_alv,
    t_fldcat LIKE LINE OF gt_fieldcat,
    g_keyinfo TYPE slis_keyinfo_alv,
    gt_events TYPE slis_t_event,
    gs_event TYPE slis_alv_event,
    w_sy_repid LIKE sy-repid.
    DATA: BEGIN OF seltab OCCURS 0.
    INCLUDE STRUCTURE rsparams.
    DATA: END OF seltab.
    SYSTEM GENERATED TABLE CONTROL DATA ********
    DECLARATION OF TABLECONTROL 'TC_TABCON' ITSELF
    CONTROLS: tc_tabcon TYPE TABLEVIEW USING SCREEN 0100.
    LINES OF TABLECONTROL 'TC_TABCON'
    DATA: g_tc_tabcon_lines LIKE sy-loopc.
    DATA: ok_code LIKE sy-ucomm.
    Constants
    CONSTANTS: c_data_class LIKE klah-class VALUE 'DG_DATA',
    c_mat_class LIKE rmclf-klart VALUE '001',
    c_pack LIKE lips-mtart VALUE 'VERP',
    c_a(1) VALUE 'A',
    c_b(1) VALUE 'B',
    c_c(1) VALUE 'C',
    c_yes(1) VALUE 'X',
    c_no(1) VALUE ' '.
    Selection screen
    standard report select options block
    SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-002.
    SELECT-OPTIONS:
    s_wadat FOR likp-wadat NO-EXTENSION OBLIGATORY. " Goods Issue Date
    *parameters: "TR01-
    p_vstel like tvst-vstel obligatory. " Shipping Point "TR01-
    SELECT-OPTIONS: "TR01+
    p_vstel FOR tvst-vstel. " Shipping Point "TR01+
    SELECT-OPTIONS:
    s_lfart FOR likp-lfart, " Delivery type
    s_lgtor FOR t30b-lgtor, " Door selection
    s_exidv FOR vekp-exidv, " Handling Unit
    s_vbeln FOR likp-vbeln, " Delivery "MB01-+
    s_lfdat FOR likp-lfdat. " Delivery date
    PARAMETERS:
    p_exdata AS CHECKBOX. " Show extra columns flag
    SELECTION-SCREEN END OF BLOCK a.
    van/pallet specific select options block
    SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-001.
    SELECT-OPTIONS:
    s_palno FOR zpallettr-zpallet_no, " no-extension,
    s_vanno FOR zvantr-zvan_no. " no-extension.
    SELECT-OPTIONS:
    s_deppnt FOR zpallettr-zdep_point, "Jvdm01
    s_tplst FOR vttk-tplst. "MB01
    SELECTION-SCREEN END OF BLOCK b.
    MB01 - START - Display variant
    SELECTION-SCREEN BEGIN OF BLOCK c WITH FRAME TITLE text-019.
    PARAMETERS: p_vari LIKE disvariant-variant.
    SELECTION-SCREEN END OF BLOCK c.
    MB01 - END
    Value Request Events
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_palno-low.
    CLEAR: number_range, w_number .
    REFRESH number_range.
    select numbers and display pop up screen for selection
    PERFORM select_pal_nos.
    s_palno-low = w_number.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_palno-high.
    CLEAR: number_range, w_number .
    REFRESH number_range.
    select numbers and display pop up screen for selection
    PERFORM select_pal_nos.
    s_palno-high = w_number.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_vanno-low.
    CLEAR: number_range, w_number .
    REFRESH number_range.
    select numbers and display pop up screen for selection
    PERFORM select_van_nos.
    s_vanno-low = w_number.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_vanno-high.
    CLEAR: number_range, w_number .
    REFRESH number_range.
    select numbers and display pop up screen for selection
    PERFORM select_van_nos.
    s_vanno-high = w_number.
    MB01 - START - display variant
    F4-Help for variant
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
    PERFORM f4_for_variant.
    MB01 - END
    At Selection Screen
    AT SELECTION-SCREEN.
    PERFORM validate_selections.
    Initialization
    INITIALIZATION.
    MB01 - START INSERT
    1. Transportation planning point
    Import transportation planning point from user parameters and
    populate
    select option.
    GET PARAMETER ID 'TDP' FIELD w_tplst.
    MOVE: 'I' TO s_tplst-sign,
    'EQ' TO s_tplst-option,
    w_tplst TO s_tplst-low.
    APPEND s_tplst.
    2. Display variant
    CLEAR s_variant.
    s_variant-report = sy-repid.
    Get default variant
    s_def_variante = s_variant.
    CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
    EXPORTING
    i_save = 'A'
    CHANGING
    cs_variant = s_variant
    EXCEPTIONS
    not_found = 2.
    IF sy-subrc = 0.
    p_vari = s_variant-variant.
    ENDIF.
    MB01 - END INSERT
    Start of selection
    START-OF-SELECTION.
    clear all data tables
    CLEAR: t_likp,
    it_likp,
    t_lips,
    t_vbuk,
    t_vbup,
    t_vepo,
    t_vantr,
    t_pallettr,
    w_likp,
    w_lips,
    w_vbuk,
    w_vbup,
    w_vepo,
    w_vekp.
    REFRESH: t_likp,
    it_likp,
    t_lips,
    t_vbuk,
    t_vbup,
    t_vepo,
    t_vantr,
    t_pallettr.
    select data for ALV
    due to different input parameters being used, to streamline the data
    selection process, different selection methods are required
    IF NOT s_vanno IS INITIAL
    OR NOT s_palno IS INITIAL
    OR NOT s_deppnt IS INITIAL. "Jvdm01
    if selecting by van/pallet number, need to select the data from the
    handling unit upwards to delivery
    PERFORM select_data_up.
    ELSE.
    otherwise the data can be selected from the delivery downwards
    PERFORM select_data_down.
    ENDIF.
    End of selection
    END-OF-SELECTION.
    call hierarchical ALV display function module
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
    i_callback_program = 'ZWMR_PICK_STATUS_REPORT'
    i_callback_pf_status_set = 'SET_STATUS'
    i_callback_user_command =
    'USER_COMMAND' "custom gui status form
    is_layout = g_layout "user command form
    it_fieldcat = gt_fieldcat
    it_sort = g_sort
    i_save = 'X' "MB01+
    is_variant = s_variant
    it_events = gt_events
    i_tabname_header = 't_disp_head'
    i_tabname_item = 't_disp_tab'
    i_structure_name_header = 'ZPICKHEAD'
    i_structure_name_item = 'ZPICKDISP'
    is_keyinfo = g_keyinfo
    TABLES
    t_outtab_header = t_disp_head
    t_outtab_item = t_disp_tab.
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    FORMS
    Includes inserted by Screen Painter Wizard. DO NOT CHANGE THIS LINE!
    INCLUDE zwmr_pick_o01.
    INCLUDE zwmr_pick_status_reporto01 .
    INCLUDE zwmr_pick_i01.
    INCLUDE zwmr_pick_status_reporti01 .
    INCLUDE zwmr_pick_f01.
    INCLUDE zwmr_pick_status_reportf01 .
    *& Form select_pal_nos
    select pallet numbers for search help
    FORM select_pal_nos.
    DATA: BEGIN OF t_palno OCCURS 0,
    zpallet_no LIKE zpallettr-zpallet_no,
    END OF t_palno.
    select all available pallet numbers
    SELECT DISTINCT zpallet_no FROM zpallettr
    INTO CORRESPONDING FIELDS OF TABLE t_palno.
    LOOP AT t_palno.
    get pallet id
    SELECT SINGLE zpallet_id FROM zpallettr
    INTO number_range-id
    WHERE zpallet_no = t_palno-zpallet_no.
    get pallet description
    SELECT SINGLE zdesc FROM zpalletmd
    INTO number_range-desc
    WHERE zpallet_id = number_range-id.
    number_range-num = t_palno-zpallet_no.
    append to search help table
    APPEND number_range.
    ENDLOOP.
    call pop up dialog box
    CALL SCREEN 0100 STARTING AT 5 5.
    ENDFORM. " select_pal_nos
    *& Form select_van_nos
    select van numbers for search help
    FORM select_van_nos.
    DATA: BEGIN OF t_vanno OCCURS 0,
    zvan_no LIKE zvantr-zvan_no,
    END OF t_vanno.
    select available van numbers
    SELECT DISTINCT zvan_no FROM zvantr
    INTO CORRESPONDING FIELDS OF TABLE t_vanno.
    LOOP AT t_vanno.
    select van id
    SELECT SINGLE zvan_id FROM zvantr
    INTO number_range-id
    WHERE zvan_no = t_vanno-zvan_no.
    select van description (maintained in pallet tables)
    SELECT SINGLE zdesc FROM zpalletmd
    INTO number_range-desc
    WHERE zpallet_id = number_range-id.
    number_range-num = t_vanno-zvan_no.
    append to search help table
    APPEND number_range.
    ENDLOOP.
    call pop up dialog box
    CALL SCREEN 0100 STARTING AT 5 5.
    ENDFORM. " select_van_nos
    *& Form select_data_down
    select data if selecting from delivery down
    FORM select_data_down.
    select all deliveries from LIKP that fulfill selection criteria
    Start SU01 optmization changes
    SELECT vbeln vstel lgtor route wadat "RM050906
    SELECT vbeln vstel lgtor route wadat
    zzroute2lgtor zz2route zzexproute zzroute2 anzpk "MB01-+
    FROM likp INTO CORRESPONDING FIELDS OF TABLE it_likp"MB01-+
    WHERE vbeln IN s_vbeln
    AND vstel IN p_vstel
    AND lfart IN s_lfart
    AND wadat IN s_wadat
    AND lfdat IN s_lfdat "MB01+
    AND
    ( lgtor IN s_lgtor OR zzroute2lgtor IN s_lgtor ) ."MB01+
    IF sy-subrc NE 0.
    no data found
    MESSAGE i007.
    EXIT.
    ENDIF.
    IF NOT t_likp[] IS INITIAL. "SUM
    IF NOT it_likp[] IS INITIAL.
    SORT it_likp BY vbeln. "SUM
    select sales document headers from VBUK
    SELECT vbeln wbstk kostk
    FROM vbuk INTO TABLE it_vbuk
    FOR ALL ENTRIES IN it_likp "SUM
    WHERE vbeln EQ it_likp-vbeln. "SUM
    SORT it_vbuk BY vbeln.
    select all relevant delivery items from LIPS
    SELECT vbeln posnr pstyv matnr charg
    FROM lips INTO TABLE it_lips
    FOR ALL ENTRIES IN it_likp
    WHERE vbeln EQ it_likp-vbeln
    AND pckpf NE 'B' "cannot be packed "AS05
    AND pstyv NE 'ZPAC' "AS05
    AND pstyv NE 'ZGDP' "TR02+ "AS05
    AND lfimg GT 0. "TR01+
    ENDIF.
    IF NOT it_lips[] IS INITIAL.
    select all sales document line items from VBUP
    SORT it_lips BY vbeln posnr. "SUM
    SELECT vbeln posnr lvsta
    FROM vbup INTO TABLE it_vbup
    FOR ALL ENTRIES IN it_lips
    WHERE vbeln EQ it_lips-vbeln
    AND posnr = it_lips-posnr.
    SORT it_vbup BY vbeln posnr.
    select corresponding handling unit ID's (venum)
    TR03 Replace
    start
    select * from vepo appending corresponding fields of table t_vepo
    for all entries in t_lips
    where vbeln = t_lips-vbeln
    and posnr = t_lips-posnr
    and matnr = t_lips-matnr
    and charg = t_lips-charg.
    SELECT vepoVENUM vepoVEPOS vepovbeln vepoposnr
    FROM vepo as vepo
    INNER JOIN vekp as vekp ON vepovenum = vekpvenum
    APPENDING corresponding fields of table it_vepo
    FOR ALL ENTRIES IN it_lips
    WHERE vepo~vbeln = it_lips-vbeln
    AND vepo~posnr = it_lips-posnr
    AND vepo~matnr = it_lips-matnr
    AND vepo~charg = it_lips-charg
    AND vekp~exidv IN s_exidv.
    SELECT venum vepos vbeln posnr
    FROM vepo INTO TABLE it_vepo2
    FOR ALL ENTRIES IN it_lips
    WHERE vbeln = it_lips-vbeln
    AND posnr = it_lips-posnr
    AND matnr = it_lips-matnr
    AND charg = it_lips-charg.
    SORT it_vepo2 BY venum vepos.
    *{ INSERT UKMK900355 1
    Ice-multis: replace lower-level HUs with highest level " AS01
    PERFORM replace_highest_hu. " AS01
    *} INSERT
    Start of changes by ANV SR#11523
    MB01 - extract shipment header as well to populate leg indicator
    Therefore, join vttp with vttk
    Limit as well by transportation planning point
    SELECT vttptknum vttptpnum vttpvbeln vttklaufk
    FROM vttp INNER JOIN vttk
    ON vttptknum = vttktknum
    INTO TABLE it_vttp
    FOR ALL ENTRIES IN it_lips
    WHERE vttp~vbeln = it_lips-vbeln
    AND vttk~tplst IN s_tplst.
    MB01 - END
    End of changes by ANV SR#11523
    IF NOT it_vepo2[] IS INITIAL.
    SELECT venum exidv
    FROM vekp INTO TABLE it_vepo1
    FOR ALL ENTRIES IN it_vepo2
    WHERE venum = it_vepo2-venum
    AND exidv IN s_exidv.
    ENDIF.
    SORT it_vepo1 BY venum.
    CLEAR: w_vepo, it_vepo.
    LOOP AT it_vepo1.
    READ TABLE it_vepo2 WITH KEY venum = it_vepo1-venum.
    IF sy-subrc = 0.
    it_vepo2-exidv = it_vepo1-exidv.
    MODIFY it_vepo2 TRANSPORTING exidv
    WHERE venum = it_vepo1-venum .
    ENDIF.
    ENDLOOP.
    DELETE it_vepo2 WHERE exidv IS initial.
    it_vepo[] = it_vepo2[].
    TR03 Replace end
    ENDIF.
    build process table
    PERFORM move_to_table.
    ENDFORM. "select_data_down
    *& Form select_data_up
    select data if selecting from van/pallet up
    FORM select_data_up.
    IF NOT s_vanno IS INITIAL.
    if van then select van numbers and hence pallet numbers
    SELECT * FROM zvantr INTO TABLE t_vantr
    WHERE zvan_no IN s_vanno.
    and vstel eq p_vstel."TR01-
    IF NOT t_vantr[] IS INITIAL.
    SORT t_vantr BY zvan_id zvan_no vstel zpallet_no. "SUM
    SELECT * FROM zpallettr INTO TABLE t_pallettr
    FOR ALL ENTRIES IN t_vantr
    WHERE zpallet_no EQ t_vantr-zpallet_no
    AND zdep_point IN s_deppnt. "Jvdm01
    and vstel eq p_vstel."TR01-
    ENDIF.
    ELSE.
    otherwise can get pallet numbers directly
    SELECT * FROM zpallettr INTO TABLE t_pallettr
    WHERE zpallet_no IN s_palno
    AND zdep_point IN s_deppnt. "Jvdm01
    and vstel eq p_vstel."TR01-
    ENDIF.
    IF NOT t_pallettr[] IS INITIAL.
    from the pallet nos. we can select the handling units
    SORT t_pallettr BY zpallet_id zpallet_no vstel exidv. "SUM
    SELECT * FROM vekp INTO TABLE t_vekp
    FOR ALL ENTRIES IN t_pallettr
    WHERE exidv EQ t_pallettr-exidv
    AND exidv NE space
    AND exidv IN s_exidv "TR03+
    AND ( exida = 'E' "TR01+
    OR exida = 'F' ). "TR01+
    ENDIF.
    SORT t_vekp BY venum. "SUM
    IF NOT t_vekp[] IS INITIAL.
    build vbeln range from t_vekp.
    LOOP AT t_vekp.
    r_del-sign = 'I'.
    r_del-option = 'EQ'.
    r_del-low = t_vekp-vpobjkey.
    APPEND r_del.
    ENDLOOP.
    select all deliveries from LIKP that correspond to HU's
    SELECT * FROM likp INTO TABLE t_likp
    WHERE vbeln IN r_del
    AND wadat IN s_wadat
    AND lfart IN s_lfart.
    ENDIF.
    MB01- START
    SELECT vbeln lgtor route wadat
    FROM likp INTO TABLE it_likp
    WHERE vbeln IN r_del
    AND wadat IN s_wadat
    AND lfart IN s_lfart.
    SELECT vbeln vstel lgtor route wadat
    zzroute2lgtor zz2route zzexproute zzroute2 anzpk "MB01-+
    FROM likp INTO CORRESPONDING FIELDS OF TABLE it_likp
    WHERE vbeln IN r_del
    AND lfart IN s_lfart
    AND wadat IN s_wadat "MB01-+
    AND lfdat IN s_lfdat. "MB01+
    MB01- END
    ENDIF.
    IF NOT it_likp[] IS INITIAL.
    SORT it_likp BY vbeln . "SUM
    select sales document headers from VBUK
    SELECT * FROM vbuk INTO TABLE t_vbuk
    FOR ALL ENTRIES IN t_likp
    WHERE vbeln EQ t_likp-vbeln.
    SELECT vbeln wbstk kostk
    FROM vbuk INTO TABLE it_vbuk
    FOR ALL ENTRIES IN it_likp
    WHERE vbeln EQ it_likp-vbeln.
    SORT it_vbuk BY vbeln. "SUM
    select all relevant delivery items from LIPS
    SELECT * FROM lips INTO TABLE t_lips
    FOR ALL ENTRIES IN t_likp
    WHERE vbeln EQ t_likp-vbeln
    AND pstyv NE 'ZPAC'
    AND pstyv NE 'ZGDP' "TR02+
    AND lfimg GT 0. "TR01+
    SELECT vbeln posnr pstyv matnr charg
    FROM lips INTO TABLE it_lips
    FOR ALL ENTRIES IN it_likp
    WHERE vbeln EQ it_likp-vbeln
    AND pckpf NE 'B' "cannot be packed "AS05
    AND pstyv NE 'ZPAC' "AS05
    AND pstyv NE 'ZGDP' "TR02+ "AS05
    AND lfimg GT 0. "TR01+
    ENDIF.
    IF NOT it_lips[] IS INITIAL.
    SORT it_lips BY vbeln posnr. "SUM
    select all sales document line items from VBUP
    SELECT * FROM vbup INTO TABLE t_vbup
    FOR ALL ENTRIES IN t_lips
    WHERE vbeln EQ t_lips-vbeln
    AND posnr = t_lips-posnr.
    Start of changes by ANV SR#11523
    MB01 - START
    join vttp with vttk to obtain leg indicator
    SELECT tknum tpnum vbeln
    FROM vttp INTO TABLE it_vttp
    FOR ALL ENTRIES IN it_lips
    WHERE vbeln = it_lips-vbeln.
    SELECT vttptknum vttptpnum vttpvbeln vttklaufk
    FROM vttp INNER JOIN vttk
    ON vttptknum = vttktknum
    INTO TABLE it_vttp
    FOR ALL ENTRIES IN it_lips
    WHERE vttp~vbeln = it_lips-vbeln
    AND vttk~tplst IN s_tplst.
    MB01 - END
    End of changes by ANV SR#11523
    SELECT vbeln posnr lvsta
    FROM vbup INTO TABLE it_vbup
    FOR ALL ENTRIES IN it_lips
    WHERE vbeln EQ it_lips-vbeln
    AND posnr = it_lips-posnr.
    SORT t_vbup BY vbeln posnr. "SUM
    select corresponding handling unit ID's (venum)
    SELECT * FROM vepo APPENDING CORRESPONDING FIELDS OF TABLE t_vepo
    FOR ALL ENTRIES IN t_lips
    WHERE vbeln = t_lips-vbeln
    AND posnr = t_lips-posnr
    AND matnr = t_lips-matnr
    AND charg = t_lips-charg.
    SELECT venum vepos vbeln posnr
    FROM vepo APPENDING CORRESPONDING FIELDS OF TABLE it_vepo
    FOR ALL ENTRIES IN it_lips
    WHERE vbeln = it_lips-vbeln
    AND posnr = it_lips-posnr
    AND matnr = it_lips-matnr
    AND charg = it_lips-charg.
    *{ INSERT UKMK900355 1
    it_vepo2[] = it_vepo[]. " DS01
    PERFORM replace_highest_hu. " DS01
    it_vepo[] = it_vepo2[]. " DS01
    *} INSERT
    ENDIF.
    build process table
    PERFORM move_to_table.
    ENDFORM. "select_data_up
    *& Form move_to_table
    move data to processing table
    FORM move_to_table.
    LOOP AT it_vepo.
    CLEAR t_data_tab.
    delivery lines.
    CLEAR w_lips.
    READ TABLE it_lips WITH KEY vbeln = it_vepo-vbeln
    posnr = it_vepo-posnr
    INTO w_lips BINARY SEARCH. "SUM
    MOVE-CORRESPONDING w_lips TO t_data_tab.
    sales document line items
    CLEAR w_vbup.
    READ TABLE it_vbup WITH KEY vbeln = it_vepo-vbeln
    posnr = it_vepo-posnr
    INTO w_vbup BINARY SEARCH. "SUM
    if w_vbup-kosta = space. "TR01-
    not relevant for picking
    delete t_vepo. "TR01-
    continue. "TR01-
    else. "TR01-
    MOVE-CORRESPONDING w_vbup TO t_data_tab.
    endif. "TR01-
    sales doc header
    CLEAR w_vbuk.
    READ TABLE it_vbuk WITH KEY vbeln = it_vepo-vbeln
    INTO w_vbuk BINARY SEARCH. "SUM
    MOVE-CORRESPONDING w_vbuk TO t_data_tab.
    delivery header
    CLEAR w_likp.
    READ TABLE it_likp WITH KEY vbeln = it_vepo-vbeln
    INTO w_likp BINARY SEARCH. "SUM
    MOVE-CORRESPONDING w_likp TO t_data_tab.
    MB01 - START
    DATA: w_routetype TYPE i. "0=non-global,1=1st route,2=2nd
    route,3=both
    At this point move DOOR2 if it falls within the global route scenario
    and the door2 is satisfies the selection criteria for door
    1. Does delivery fall within global route scenario
    CLEAR w_routetype.
    IF w_likp-zz2route = 'Y' .
    1.a. First route - does door1 satisfy the selection criteria
    IF w_likp-lgtor IN s_lgtor.
    w_routetype = 1.
    MOVE w_likp-zzexproute TO t_data_tab-route.
    1.b. Second route - does door2 satisfy the selection criteria
    ELSEIF w_likp-zzroute2lgtor IN s_lgtor.
    here we need to move door2 to lgtor
    w_routetype = 2.
    MOVE w_likp-zzroute2lgtor TO t_data_tab-lgtor.
    MOVE w_likp-zzroute2 TO t_data_tab-route.
    ENDIF.
    If both routes satsify the criteria, append for 2nd leg ***REVISIT!
    IF w_likp-lgtor IN s_lgtor AND w_likp-zzroute2lgtor IN s_lgtor.
    w_routetype = 3.
    ENDIF.
    ENDIF.
    MB01 - END
    Start of changes by ANV SR#11523
    MB01 - If the delivery falls within the global route scenario... need
    to select either preliminary shipment leg OR subsequent leg
    when laufk= 1 (prelim) and linked to route1, if laufk = 2 (subseq) &
    linked to route2
    Shipment Number
    SORT it_vttp BY vbeln laufk.
    CLEAR w_vttp.
    CASE w_routetype.
    WHEN 0.
    READ TABLE it_vttp WITH KEY vbeln = it_vepo-vbeln
    INTO w_vttp BINARY SEARCH.
    WHEN 1.
    READ TABLE it_vttp WITH KEY vbeln = it_vepo-vbeln
    laufk = '1'
    INTO w_vttp BINARY SEARCH.
    WHEN 2.
    READ TABLE it_vttp WITH KEY vbeln = it_vepo-vbeln
    laufk = '3'
    INTO w_vttp BINARY SEARCH.
    WHEN 3. "REVISIT
    ENDCASE.
    MOVE w_vttp-tknum TO t_data_tab-tknum.
    MB01 - END
    End of changes by ANV SR#11523
    select handling unit info using vepo entry
    CLEAR w_vekp.
    IF t_vekp[] IS INITIAL.
    SELECT SINGLE * FROM vekp INTO w_vekp
    WHERE venum = it_vepo-venum.
    ELSE.
    READ TABLE t_vekp WITH KEY venum = it_vepo-venum
    INTO w_vekp BINARY SEARCH. "SUM
    IF sy-subrc NE 0.
    SELECT SINGLE * FROM vekp INTO w_vekp
    WHERE venum = t_vepo-venum.
    ENDIF.
    ENDIF.
    MOVE-CORRESPONDING w_vekp TO t_data_tab.
    *{ INSERT UKMK900355 2
    WM status for HU "AS03
    SELECT SINGLE * FROM zhu_to_link WHERE lgnum EQ w_vekp-lgnum"AS03
    AND exidv EQ w_vekp-exidv."AS03
    IF sy-subrc EQ 0. "AS03
    IF zhu_to_link-zpick_comp EQ space. "AS03
    t_data_tab-lvsta = 'B'. "AS03
    ELSE. "AS03
    t_data_tab-lvsta = 'C'. "AS03
    ENDIF. "AS03
    ENDIF. "AS03
    *} INSERT
    select pallet / van load information "Jvdm01-
    SELECT SINGLE zpallet_no zcount_check FROM zpallettr "Jvdm01-
    INTO (t_data_tab-zpallet_no, "Jvdm01-
    t_data_tab-zcount_check) "Jvdm01-
    WHERE exidv EQ w_vekp-exidv. "Jvdm01-
    PERFORM read_pallet. "MB01+
    SELECT SINGLE zpallet_no zcount_check zdep_point "Jvdm01+
    FROM zpallettr "Jvdm01+
    INTO (t_data_tab-zpallet_no, "Jvdm01+
    t_data_tab-zcount_check, "Jvdm01+
    t_data_tab-zdep_point) "Jvdm01+
    WHERE exidv EQ w_vekp-exidv. "Jvdm01+
    WHERE exidv EQ w_vekp-exidv "MB01-+
    AND zpallet_id = t_data_tab-lgtor."MB01+
    MB01 - INSERT START
    If pallet number specified and
    we are in the global route scenario & both doors fall within the
    selection criteria, we need to copy the one that is currently in a
    specified pallet
    IF NOT s_palno IS INITIAL AND not t_data_tab-zpallet_no in s_palno
    AND w_routetype = '3' .
    Switch doors & get 2nd shipment
    MOVE w_likp-zzroute2lgtor TO t_data_tab-lgtor.
    MOVE w_likp-zzroute2 TO t_data_tab-route.
    Read subsequent leg shipment
    READ TABLE it_vttp WITH KEY vbeln = it_vepo-vbeln
    laufk = '3'
    INTO w_vttp BINARY SEARCH.
    IF sy-subrc = 0.
    MOVE w_vttp-tknum TO t_data_tab-tknum.
    ENDIF.
    PERFORM read_pallet. "MB01+
    ENDIF.
    MB01 - INSERT END
    IF NOT t_data_tab-zpallet_no IN s_palno. "TR01+
    CONTINUE. "TR01+
    ENDIF. "TR01+
    IF sy-subrc = 0. "mb01+
    perform read_van. "MB01+
    SELECT SINGLE zvan_no zvan_print zeod_print FROM zvantr
    INTO (t_data_tab-zvan_no,
    t_data_tab-zvan_print,
    t_data_tab-zeod_print)
    WHERE zpallet_no EQ t_data_tab-zpallet_no.
    MB01 - INSERT START
    If van number specified and
    we are in the global route scenario & both doors fall within the
    selection criteria, we need to copy the one that is currently on a
    specified van
    IF NOT s_vanno IS INITIAL AND not t_data_tab-zvan_no in s_vanno AND
    w_routetype = '3' .
    Switch doors & get 2nd shipment
    MOVE w_likp-zzroute2lgtor TO t_data_tab-lgtor.
    MOVE w_likp-zzroute2 TO t_data_tab-route.
    Read subsequent leg shipment
    READ TABLE it_vttp WITH KEY vbeln = it_vepo-vbeln
    laufk = '3'
    INTO w_vttp BINARY SEARCH.
    IF sy-subrc = 0.
    MOVE w_vttp-tknum TO t_data_tab-tknum.
    ENDIF.
    PERFORM read_pallet. "MB01+
    perform read_van.
    ENDIF. "mb01-
    MB01 - INSERT END
    IF NOT t_data_tab-zvan_no IN s_vanno. "TR01+
    CONTINUE. "TR01+
    ENDIF. "TR01+
    ENDIF.
    APPEND t_data_tab.
    ENDLOOP.
    *-----> TR01+ start
    If the delivery has yet to be packed, then need to include in report
    Thus delete t_lips here and if any entries left after looping through
    t_vepo, these will also need to be added to t_data_tab
    if the selection is by handling unit though we do not want
    these"TR03+
    IF s_exidv IS INITIAL. "TR03+
    *{ REPLACE UKMK900355 1
    *\ LOOP AT it_vepo.
    *\ READ TABLE it_lips WITH KEY vbeln = it_vepo-vbeln
    *\ posnr = it_vepo-posnr
    *\ BINARY SEARCH. "SUM
    *\ IF sy-subrc = 0.
    *\ DELETE it_lips INDEX sy-tabix.
    *\ ENDIF.
    *\ ENDLOOP.
    Higher-level HUs can contain more than one delivery item " AS01
    LOOP AT it_lips. " AS01
    READ TABLE t_vepo_low WITH KEY vbeln = it_lips-vbeln " AS01
    posnr = it_lips-posnr. " AS01
    CHECK sy-subrc EQ 0. " AS01
    DELETE it_lips. " AS01
    ENDLOOP. " AS01
    *} REPLACE
    IF NOT it_lips[] IS INITIAL.
    move any unpacked items to the data table
    PERFORM move_lips_to_table.
    ENDIF.
    ENDIF. "TR03+
    *<---- TR01+ End
    get relevant status icons
    PERFORM select_icons.
    prepare ALV data
    PERFORM prepare_alv.
    ENDFORM. " select_data
    *& Form select_icons
    select icons for display and move data to display table
    FORM select_icons.
    DATA: w_disp_tab LIKE zpickdisp,
    w_disp_head LIKE zpickhead,
    w_color LIKE zpickdisp-color,
    ov_icon LIKE zpickdisp-ov_icon,
    gi_icon LIKE zpickdisp-gi_icon,
    to_icon LIKE zpickdisp-to_icon,
    lp_icon LIKE zpickdisp-lp_icon,
    pc_icon LIKE zpickdisp-pc_icon,
    lv_icon LIKE zpickdisp-lv_icon,
    vm_icon LIKE zpickdisp-vm_icon,
    em_icon LIKE zpickdisp-em_icon,
    sp_icon LIKE zpickdisp-sp_icon, " ANV SR#11523
    t_ovst_tab LIKE t_disp_tab WITH HEADER LINE.
    CONSTANTS: c_col1(3) VALUE 'C10',
    c_col2(3) VALUE 'C20'.
    SORT t_data_tab BY lgtor vbeln.
    w_color = c_col2.
    LOOP AT t_data_tab.
    AT NEW lgtor.
    fill ALV header table
    CLEAR w_disp_head.
    w_disp_head-lgtor = t_data_tab-lgtor.
    APPEND w_disp_head TO t_disp_head.
    ENDAT.
    goods issue status & overall amber/green only
    CASE t_data_tab-wbstk.
    WHEN c_c.
    MOVE icon_green_light TO gi_icon.
    MOVE icon_green_light TO ov_icon.
    WHEN OTHERS.
    MOVE icon_red_light TO gi_icon.
    MOVE icon_yellow_light TO ov_icon.
    ENDCASE.
    transfer order status
    CASE t_data_tab-lvsta.
    WHEN c_a.
    MOVE icon_red_light TO to_icon.
    WHEN c_b.
    MOVE icon_yellow_light TO to_icon.
    WHEN c_c.
    MOVE icon_green_light TO to_icon.
    WHEN space.
    write N/A
    to_icon = 'N/A'.
    ENDCASE.
    loaded to pallet status
    IF NOT t_data_tab-zpallet_no IS INITIAL.
    MOVE icon_green_light TO lp_icon.
    ELSE.
    MOVE icon_red_light TO lp_icon.
    ENDIF.
    pallet count status
    IF NOT t_data_tab-zcount_check IS INITIAL.
    MOVE icon_green_light TO pc_icon.
    ELSE.
    MOVE icon_red_light TO pc_icon.
    ENDIF.
    loaded to van status
    IF NOT t_data_tab-zvan_no IS INITIAL.
    MOVE icon_green_light TO lv_icon.
    ELSE.
    MOVE icon_red_light TO lv_icon.
    ENDIF.
    van manifest status
    IF NOT t_data_tab-zvan_print IS INITIAL.
    MOVE icon_green_light TO vm_icon.
    ELSE.
    MOVE icon_red_light TO vm_icon.
    ENDIF.
    Start of changes by ANV SR#11523
    Shipment status
    IF NOT t_data_tab-tknum IS INITIAL.
    MOVE icon_green_light TO sp_icon.
    ELSE.
    MOVE icon_red_light TO sp_icon.
    ENDIF.
    End of changes by ANV SR#11523
    end of day manifest status
    IF NOT t_data_tab-zeod_print IS INITIAL.
    MOVE icon_green_light TO em_icon.
    ELSE.
    MOVE icon_red_light TO em_icon.
    ENDIF.
    move working data table to display table
    MOVE-CORRESPONDING t_data_tab TO w_disp_tab.
    w_disp_tab-ov_icon = ov_icon.
    w_disp_tab-gi_icon = gi_icon.
    w_disp_tab-to_icon = to_icon.
    w_disp_tab-lp_icon = lp_icon.
    w_disp_tab-pc_icon = pc_icon.
    w_disp_tab-lv_icon = lv_icon.
    w_disp_tab-vm_icon = vm_icon.
    w_disp_tab-em_icon = em_icon.
    w_disp_tab-sp_icon = sp_icon. "ANV SR#11523
    w_disp_tab-color = w_color.
    fill N/A values for initial fields for display
    IF w_disp_tab-packvorschr IS INITIAL.
    w_disp_tab-packvorschr = 'N/A'.
    ENDIF.
    IF w_disp_tab-exidv IS INITIAL.
    w_disp_tab-exidv = 'N/A'.
    ENDIF.
    IF w_disp_tab-zpallet_no IS INITIAL.
    WRITE 'N/A' TO w_disp_tab-zpallet_no.
    ENDIF.
    IF w_disp_tab-zvan_no IS INITIAL.
    WRITE 'N/A' TO w_disp_tab-zvan_no.
    ENDIF.
    display different color for new doc number
    AT END OF vbeln.
    IF w_color = c_col1.
    w_color = c_col2.
    ELSEIF w_color = c_col2.
    w_color = c_col1.
    ENDIF.
    ENDAT.
    APPEND w_disp_tab TO t_disp_tab.
    CLEAR w_disp_tab.
    ENDLOOP.
    we have all the icons in display but need to check the overall status
    as this refers to the line items
    green and amber statuses already set and use the same criteria as the
    goods issue status unless detected as red here
    DATA: ov_stat_red(1).
    CLEAR w_disp_tab.
    SORT t_disp_tab BY vbeln.
    LOOP AT t_disp_tab INTO w_disp_tab.
    AT NEW vbeln.
    check all line items for delivery
    LOOP AT t_data_tab WHERE vbeln = w_disp_tab-vbeln.
    IF t_data_tab-lvsta = c_a.
    set overall status to red
    ov_stat_red = c_yes.
    EXIT.
    ELSE.
    leave green/amber status icon as previosly determined
    ENDIF.
    ENDLOOP.
    IF ov_stat_red = c_yes.
    set overall status to red for all items in that delivery
    CLEAR ov_stat_red.
    MOVE icon_red_light TO w_disp_tab-ov_icon.
    MODIFY t_disp_tab FROM w_disp_tab TRANSPORTING ov_icon
    WHERE vbeln = w_disp_tab-vbeln.
    ENDIF.
    ENDAT.
    ENDLOOP.
    ENDFORM. " select_icons
    *& Form fill_layout
    fill ALV layout parameters
    FORM fill_layout.
    CLEAR g_layout.
    g_layout-colwidth_optimize = c_yes. " column width optimisation
    g_layout-zebra = space. " alternate line colors
    g_layout-box_fieldname = 'MARK'. " checkbox fieldname
    g_layout-info_fieldname = 'COLOR'. " highlight row indicator
    g_layout-no_vline = space. " vertical line
    g_layout-key_hotspot = space. " hotspot field
    g_layout-f2code = 'PICK'. " F2 ok_code
    g_layout-numc_sum = c_yes. " sum numc fields
    g_layout-box_tabname = 't_disp_head'. " checkbox table name
    g_layout-expand_fieldname = 'EXPAND'. " expand field name
    ENDFORM. " fill_layout
    *& Form fill_sort
    fill ALV sort table
    FORM fill_sort.
    DATA: w_g_sort TYPE slis_sortinfo_alv.
    w_g_sort-spos = 1.
    w_g_sort-fieldname = 'LGTOR'.
    w_g_sort-tabname = 't_disp_tab'.
    w_g_sort-up = c_yes.
    APPEND w_g_sort TO g_sort.
    w_g_sort-spos = 2.
    w_g_sort-fieldname = 'VBELN'.
    w_g_sort-tabname = 't_disp_tab'.
    w_g_sort-up = c_yes.
    APPEND w_g_sort TO g_sort.
    w_g_sort-spos = 3.
    w_g_sort-fieldname = 'POSNR'.
    w_g_sort-tabname = 't_disp_tab'.
    w_g_sort-up = c_yes.
    APPEND w_g_sort TO g_sort.

  • ALV DISPLAY- hiding a field

    Hi,
    I am using one of the fields for sorting and summing up in alv,but I don't want that field to appear on the display. Is it possible?
    Thanks.

    Hi,
    you can use
    fieldcat-no_out = 'X'. for that field while filling the fieldcat.
    but you can bring it back to display.
    but when you use
    <b>fieldcat-TECH = 'X'.</b> then it will not display, and there is no chance to get that back to display.
    its up to you to choose which one you want
    Regards
    vijay

  • Exit for CO02-FOR QUANTITY FIELD FOR THE LIST OF LINE ITEMS

    Hi,
    Can anyone just let me know the user exit to code the authority check for the quantity field in CO02 for the screen SAPLCOMK.
    The quantity assigned for the list of items should not be changed by the user.
    For this in which exit should i go and write the code?
    Regards,
    P.S.Chitra

    CCOWB001  Customer exit for modifying menu entries
    COIB0001  Customer Exit for As-Built Assignment Tool
    COZF0001  Change purchase req. for externally processed operation
    COZF0002  Change purchase req. for externally procured component
    PPCO0001  Application development: PP orders
    PPCO0002  Check exit for setting delete mark / deletion indicator
    PPCO0003  Check exit for order changes from sales order
    PPCO0004  Sort and processing exit: Mass processing orders
    PPCO0005  Storage location/backflushing when order is created
    PPCO0006  Enhancement to specify defaults for fields in order header
    PPCO0007  Exit when saving production order
    PPCO0008  Enhancement in the adding and changing of components
    PPCO0009  Enhancement in goods movements for prod. process order
    PPCO0010  Enhancement in make-to-order production - Unit of measure
    PPCO0012  Production Order: Display/Change Order Header Data
    PPCO0013  Change priorities of selection crit. for batch determinati
    PPCO0015  Additional check for document links from BOMs
    PPCO0016  Additional check for document links from master data
    PPCO0017  Additional check for online processing of document links
    PPCO0018  Check for changes to production order header
    PPCO0019  Checks for changes to order operations
    PPCO0021  Release Control for Automatic Batch Determination
    PPCO0022  Determination of Production Memo
    PPCO0023  Checks Changes to Order Components
    STATTEXT  Modification exit for formatting status text lines
    hi check your field where it is present
    if it header then check with the description header most probably the first must be your exit

  • Incorrect result of multiplication for quantity fields,coverting LB to KG.

    Hi All,
    The requirement is to convert LB(pounds) to KG.The formula goes as follows.
    l_ntgew = vbap-kwmeng   *  w_mara-ntgew *  l_zcazz  .
    l_brgew = vbap-kwmeng   * w_mara-brgew  *  l_zcazz  .
    where kwmeng = '1' is ordered quantity,w_mara-ntgew = '0.157' is the net weight from mara and l_zcazz ='0.454'  is the conversion factor from LB to KG.
    This information is for material mara-matnr = '100014609'
    The result I am getting is l_ntgew = '71278.000' which incorrect.
    Actual result is = '0.071278' .
    Similar issues with l_brgew.
    The same code works fine in a custom program but the requirement is to modify userexit 'userexit_check_vbap using us_dialog' within include 'MV45AFZB'.Here it fails completely. We have tried all types of field declarations, be it float or packed or ntgew_ap(quantity field).
    Please help.Its urgent.Full points will be awarded to the correct solution.
    Thanks,
    Shamia.

    VBAP-KWLMENG is a quantity field associated with unit VBAP-VRKME. (sales unit)
    Try to use FM to convert quantithy from sale unit to base unit
            call function 'MD_CONVERT_MATERIAL_UNIT'
                 exporting
                      i_matnr              = vbap-matnr
                      i_in_me              = vbap-vrkme
                      i_out_me             = mara-meins
                      i_menge              = vbap-kwlmeng
                 importing
                      e_menge              = <qty in base unit>
                 exceptions
                      error_in_application = 1
                      error                = 2
                      error_message        = 3
                      others               = 4.
    Then multiply by <b>mara-ntgew</b> giving a result in unit <b>mara-GEWEI</b> then convert from this unit to KG. (same FM)
    Regards

  • Need to supress a ALV display for a standard program  while submiting

    Hi ,
    I am trying to suppress an ALV display from a standard program which I am submitting though my Z program .
    Please kindly help me on the same.
    Thanks and Regards,
    Sankha

    Hmmmm... I suggest copying the code of RM08RELEASE to your program, if cannot then copy the program to a Z program without copying the includes.
    Now in the copied code comment
      PERFORM alv_list USING    release_auto
                       CHANGING tab_arbkp
                                tab_arseg
                                tab_released_arbkp.
    and u can use the 3 tables :
                                tab_arbkp
                                tab_arseg
                                tab_released_arbkp
    in your code.

  • Negative sign display for CURR field in ALV grid report

    I have a field BETRG defined as CURR field of length 15, decimal places 2. The value may be negative or positive. In case of negative values I am using EDIT_MSK option in the field catalog to bring the negative sign to the left of the value as shown below.
    Quote
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
        EXPORTING
          i_program_name         = sy-repid
          i_internal_tabname     = 'LT_FINAL'
          i_inclname             = sy-repid
        CHANGING
          ct_fieldcat            = fieldcat[]
        EXCEPTIONS
          inconsistent_interface = 1
          program_error          = 2
          OTHERS                 = 3.
    LOOP AT fieldcat.
        CASE fieldcat-fieldname.
            WHEN 'BETRG'.
            fieldcat-ctabname = ' '.
            fieldcat-cfieldname = ' '.
            fieldcat-edit_mask = 'RRV_______________.__'.
        ENDCASE.
        MODIFY fieldcat.
      ENDLOOP.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_buffer_active    = 'X'
          i_callback_program = sy-repid
          i_grid_title       = 'ABCD'
          is_layout          = gs_layout
          it_fieldcat        = fieldcat[]
          i_save             = 'A'
          is_variant         = gs_save
          it_events          = gs_events
        TABLES
          t_outtab           = lt_final
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
    Unquote
    On displaying the report using 'REUSE_ALV_GRID_DISPLAY' as shown above, when the value of BETRG is a smaller number like say 624, then the ALV output appears as '-            624.00' instead of '-624.00'.
    Is there any way that I can remove the space in between the negative sign and the number before displaying the ALV output using 'REUSE_ALV_GRID_DISPLAY'?

    Hi Deepak,
    I tried this and found that this doesn't work in case of currency field. Once you move back the char field (with negative sign to the left and condensed)  to the currency field, the negative sign again moves back to the right.
    I think that the only way a negative sign can be brought to the left of the currenct field is by using edit_mask of field catalog as I have shown above.
    Regards,
    Shayeree.

  • Alv display for the 2nd time.

    Hi everybody
    I have created a interactive alv report. when i am going for   first display it is giving correct result whne i go for 2nd time it is not initilizing the grids the records are displayed twice or same record is displayed. i have check BCALV_GRID_03 but i could not understand it properly so i am giving my code please help.
    *& Report  ZVTEST1                                                     *
    REPORT  ZVTEST1 .
    class lcl_event_receiver definition deferred.
    class cl_event_receiver definition deferred.
    TYPE-POOLS : SLIS.
    tables : ekko,ekpo,lfa1.
    data : begin of itab occurs 0,
             lifnr like ekko-lifnr,
             netwr like ekpo-netwr,
             name1 like lfa1-name1,
          end of itab.
    data : begin of inv_det occurs 0,
             ebeln like ekko-ebeln,
             bedat like ekko-bedat,
             lifnr like ekko-lifnr,
             netwr like ekpo-netwr,
             name1 like lfa1-name1,
           end of inv_det.
    data : begin of mat_det occurs 0,
             ebeln like ekko-ebeln,
             lifnr like ekko-lifnr,
             bedat like ekko-bedat,
             matnr like ekpo-matnr,
             menge like ekpo-menge,
             netpr like ekpo-netpr,
             NETWR LIKE EKPO-NETWR,
             maktx like makt-maktx,
           end of mat_det.
    DATA :TEST_GRID TYPE REF TO CL_GUI_ALV_GRID,
          TEST_CONT TYPE SCRFNAME VALUE 'TESTING_ALV',
          TEST_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
          TEST_LAYOUT TYPE LVC_S_LAYO,
          TEST_FIELDCAT TYPE LVC_T_FCAT,
          ok_code like sy-ucomm,
          event_receiver type ref to lcl_event_receiver,
          event_receiver1 type ref to cl_event_receiver,
          TEST_GRID1 TYPE REF TO CL_GUI_ALV_GRID,
          TEST_CONT1 TYPE SCRFNAME VALUE 'PARTYWISE_DETAILS',
          TEST_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
          ls_layout TYPE lvc_s_layo,
          TEST_LAYOUT1 TYPE LVC_S_LAYO,
          TEST_FIELDCAT1 TYPE LVC_T_FCAT,
          TEST_GRID2 TYPE REF TO CL_GUI_ALV_GRID,
          TEST_CONT2 TYPE SCRFNAME VALUE 'INVOICE',
          TEST_CONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
          TEST_LAYOUT2 TYPE LVC_S_LAYO,
          TEST_FIELDCAT2 TYPE LVC_T_FCAT.
    select-options: s_bedat for ekko-bedat.
    CALL SCREEN 100.
    class LCL_EVENT_RECEIVER definition.
      public section.
          methods:
          handle_double_click
            for event double_click of cl_gui_alv_grid
                importing e_row e_column.
      private section.
    endclass.
    class LCL_EVENT_RECEIVER implementation.
    method handle_double_click.
        data: itab1 like line of itab.
        read table itab index e_row-index into itab1.
        perform select_table_invdet using itab1
                                   changing inv_det.
        call screen 200 starting at 10 5.
    endmethod.
    endclass.
    class CL_EVENT_RECEIVER definition.
      public section.
          methods:
           handle_hotspot_click
            for event hotspot_click of cl_gui_alv_grid
                importing e_row_id e_column_id es_row_no.
      private section.
    endclass.
    class CL_EVENT_RECEIVER implementation.
    method handle_hotspot_click.
        data: itab2 like line of inv_det.
        read table inv_det index e_row_id-index into itab2.
        perform select_matdet using itab2
                                   changing mat_det.
        call screen 300 starting at 15 5.
    endmethod.
    endclass.
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'TEST'.
    PERFORM SELECT-DATA.  " FOR THE INITIAL LIST.
    PERFORM ALV_DISPLAY.   "TO DISPLAY INITIAL SCREEN.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
    CASE OK_CODE.
       WHEN 'BACK'.
         LEAVE TO SCREEN 0.
       WHEN 'EXIT'.
         LEAVE PROGRAM.
    ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  SELECT-DATA
          text
    -->  p1        text  DATA SELECTION FOR THE 1ST LIST
    <--  p2        text
    FORM SELECT-DATA .
    select alifnr sum( bnetwr ) as netwr
        into corresponding fields of itab
        from ekko as a inner join ekpo as b on bebeln = aebeln
         where abedat in s_bedat group by alifnr.
        select single name1 from lfa1 into itab-name1
           where lifnr = itab-lifnr.
    append itab.
    endselect.
    ENDFORM.                    " SELECT-DATA
    *&      Form  ALV_DISPLAY
          text
    -->  p1        text  DISPLAY THE LIST FIRST TIME.
    <--  p2        text
    FORM ALV_DISPLAY .
    IF TEST_GRID IS INITIAL.
         CREATE OBJECT TEST_CONTAINER
           EXPORTING
             CONTAINER_NAME              = 'TESTING_ALV'.
          CREATE OBJECT TEST_GRID
            EXPORTING
              I_PARENT          =  TEST_CONTAINER.
       PERFORM PROC_CATALOG CHANGING TEST_FIELDCAT.
       PERFORM PROC_LAYOUT CHANGING TEST_LAYOUT.
       CALL METHOD TEST_GRID->SET_TABLE_FOR_FIRST_DISPLAY
         EXPORTING
           IS_LAYOUT                     =  TEST_LAYOUT
         CHANGING
           IT_OUTTAB                     =  ITAB[]
           IT_FIELDCATALOG               =  TEST_FIELDCAT[].
    create object EVENT_RECEIVER.
        set handler EVENT_RECEIVER->handle_double_click for TEST_GRID.
    ENDIF.
    CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
      EXPORTING
        CONTROL           = TEST_CONTAINER.
    CALL METHOD CL_GUI_CFW=>FLUSH.
    ENDFORM.                    " ALV_DISPLAY
    *&      Form  PROC_CATALOG
          text
         <--P_TEST_FIELDCAT  text
    FORM PROC_CATALOG  CHANGING P_TEST_FIELDCAT type lvc_t_fcat.
    data: TEST_fieldcat type lvc_s_fcat.
    TEST_FIELDCAT-fieldname = 'LIFNR'.
    TEST_FIELDCAT-REF_TABLE = 'LFA1'.
    TEST_FIELDCAT-OUTPUTLEN = '12'.
    TEST_FIELDCAT-coltext   = 'VENDOR CODE'.
    TEST_FIELDCAT-SELTEXT   = 'VENDOR CODE'.
    *TEST_FIELDCAT-HOTSPOT   = 'X'.
    APPEND TEST_FIELDCAT TO P_TEST_FIElDCAT.
    CLEAR TEST_FIELDCAT.
    TEST_FIELDCAT-fieldname = 'NAME1'.
    TEST_FIELDCAT-REF_TABLE = 'LFA1'.
    TEST_FIELDCAT-OUTPUTLEN = '25'.
    TEST_FIELDCAT-coltext   = 'VENDOR NAME'.
    TEST_FIELDCAT-SELTEXT   = 'VENDOR NAME'.
    APPEND TEST_FIELDCAT TO P_TEST_FIElDCAT.
    CLEAR TEST_FIELDCAT.
    TEST_FIELDCAT-fieldname = 'NETWR'.
    TEST_FIELDCAT-REF_TABLE = 'EKPO'.
    TEST_FIELDCAT-OUTPUTLEN = '20'.
    TEST_FIELDCAT-coltext   = 'PURCHASE AMOUNT'.
    APPEND TEST_FIELDCAT TO P_TEST_FIElDCAT.
    CLEAR TEST_FIELDCAT.
    ENDFORM.                    " PROC_CATALOG
    *&      Form  PROC_LAYOUT
          text
         <--P_TEST_LAYOUT  text
    FORM PROC_LAYOUT  CHANGING P_TEST_LAYOUT type lvc_s_layo.
    p_TEST_layout-zebra = 'X'.
    p_TEST_layouT-grid_title = 'TEST INTERACTIVE ALV'.
    p_TEST_layout-smalltitle = 'X'.
    p_TEST_layout-no_hgridln    = 'X'.
    p_TEST_layout-excp_conds  = 'X'.
    p_TEST_layout-numc_total  = 'X'.
    ENDFORM.                    " PROC_LAYOUT
    *&      Form  select_table_invdet
          text
         -->P_ITAB1  DATA SELECTION FOR THE 2ND LIST
         <--P_INV_DET  text
    FORM select_table_invdet  USING    P_ITAB1 like line of itab
                              CHANGING P_INV_DET.
    clear inv_det.
    select alifnr aebeln abedat sum( bnetwr ) as netwr
        into corresponding fields of inv_det
        from ekko as a inner join ekpo as b on bebeln = aebeln
         where  alifnr = p_itab1-lifnr and abedat in s_bedat group by
         alifnr  aebeln a~bedat.
        select single name1 from lfa1 into inv_det-name1
           where lifnr = inv_det-lifnr.
    append INV_DET.
    endselect.
    ENDFORM.                    " select_table_invdet
    *&      Module  STATUS_0200  OUTPUT
          text
    MODULE STATUS_0200 OUTPUT.
    IF TEST_GRID1 IS INITIAL.
        CREATE OBJECT TEST_CONTAINER1
           EXPORTING
             CONTAINER_NAME              = 'NEXT_CONT'.
        IF SY-SUBRC NE 0.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              TITEL         =  SY-REPID
              TXT1          =  SY-SUBRC
              TXT2          =  'THE CONTROL IS NOT CREATED'.
      ENDIF.
         CREATE OBJECT TEST_GRID1
           EXPORTING
             I_PARENT          = TEST_CONTAINER1.
       PERFORM PROC_CATALOG1 CHANGING TEST_FIELDCAT1.
       PERFORM PROC_LAYOUT1 CHANGING TEST_LAYOUT1.
        CALL METHOD TEST_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
          EXPORTING
            IS_LAYOUT                     =  test_layout1
          CHANGING
            IT_OUTTAB                     =  inv_det[]
            IT_FIELDCATALOG               =  TEST_FIELDCAT1[].
    create object EVENT_RECEIVER1.
        set handler EVENT_RECEIVER1->handle_hotspot_click for TEST_GRID1.
    ELSE.
       CALL METHOD TEST_GRID1->REFRESH_TABLE_DISPLAY.
    ENDIF.
    CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
      EXPORTING
        CONTROL           =  TEST_container1.
    CALL METHOD CL_GUI_CFW=>FLUSH.
    ENDMODULE.                 " STATUS_0200  OUTPUT
    *&      Module  USER_COMMAND_0200  INPUT
          text
    MODULE USER_COMMAND_0200 INPUT.
      case ok_code.
        when 'EXIT'.
    leave to screen 0.
      endcase.
      clear ok_code.
    ENDMODULE.                 " USER_COMMAND_0200  INPUT
    *&      Form  PROC_CATALOG1
          text
         <--P_TEST_FIELDCAT1  text
    FORM PROC_CATALOG1  CHANGING P_TEST_FIELDCAT1 type lvc_t_fcat.
    data: TEST_fieldcat1 type lvc_s_fcat.
    TEST_FIELDCAT1-fieldname = 'EBELN'.
    TEST_FIELDCAT1-REF_TABLE = 'EKKO'.
    TEST_FIELDCAT1-OUTPUTLEN = '12'.
    TEST_FIELDCAT1-coltext   = 'P.O NUMBER'.
    TEST_FIELDCAT1-SELTEXT   = 'P.O NUMBAR'.
    TEST_FIELDCAT1-HOTSPOT   = 'X'.
    APPEND TEST_FIELDCAT1 TO P_TEST_FIElDCAT1.
    CLEAR TEST_FIELDCAT1.
    TEST_FIELDCAT1-fieldname = 'BEDAT'.
    TEST_FIELDCAT1-REF_TABLE = 'EKKO'.
    TEST_FIELDCAT1-OUTPUTLEN = '10'.
    TEST_FIELDCAT1-coltext   = 'P.O.DATE'.
    TEST_FIELDCAT1-SELTEXT   = 'P.O.DATE'.
    APPEND TEST_FIELDCAT1 TO P_TEST_FIElDCAT1.
    CLEAR TEST_FIELDCAT1.
    TEST_FIELDCAT1-fieldname = 'NETWR'.
    TEST_FIELDCAT1-REF_TABLE = 'EKPO'.
    TEST_FIELDCAT1-OUTPUTLEN = '20'.
    TEST_FIELDCAT1-coltext   = 'PURCHASE AMOUNT'.
    APPEND TEST_FIELDCAT1 TO P_TEST_FIElDCAT1.
    CLEAR TEST_FIELDCAT1.
    ENDFORM.                    " PROC_CATALOG1
    *&      Form  PROC_LAYOUT1
          text
         <--P_TEST_LAYOUT1  text
    FORM PROC_LAYOUT1  CHANGING P_TEST_LAYOUT1  type lvc_s_layo.
    p_TEST_layout1-zebra = 'X'.
    p_TEST_layouT1-grid_title = 'DATE WISE PURCHASE ORDERS'.
    p_TEST_layout1-smalltitle = 'X'.
    p_TEST_layout1-no_hgridln    = 'X'.
    p_TEST_layout1-excp_conds  = 'X'.
    p_TEST_layout1-numc_total  = 'X'.
    ENDFORM.                    " PROC_LAYOUT1
    *&      Form  select_matdet
          text
         -->P_ITAB2  text
         <--P_MAT_DET  text
    FORM select_matdet  USING    P_ITAB2 like line of inv_det
                        CHANGING P_MAT_DET.
    select ebeln bedat lifnr from ekko into corresponding fields of mat_det
        where ebeln = p_itab2-ebeln and bedat = p_itab2-bedat
          and lifnr = p_itab2-lifnr..
    select matnr menge netpr NETWR from ekpo
       into corresponding fields of mat_det
         where ebeln = mat_det-ebeln.
    select single maktx from makt into corresponding fields of mat_det
         where matnr = mat_det-matnr.
    append mat_DET.
    endselect.
    endselect.
    ENDFORM.                    " select_matdet
    *&      Module  STATUS_0300  OUTPUT
          text
    MODULE STATUS_0300 OUTPUT.
    set pf-status 'TEST1'.
    IF TEST_GRID2 IS INITIAL.
       CREATE OBJECT TEST_CONTAINER2
         EXPORTING
           CONTAINER_NAME              = 'INVOICE_DETAILS'.
        IF SY-SUBRC NE 0.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              TITEL         =  SY-REPID
              TXT1          =  SY-SUBRC
              TXT2          =  'THE CONTROL IS NOT CREATED'.
        ENDIF.
        CREATE OBJECT TEST_GRID2
          EXPORTING
            I_PARENT          = TEST_CONTAINER2.
         PERFORM PROC_CATALOG2 CHANGING TEST_FIELDCAT2.
         PERFORM PROC_LAYOUT2 CHANGING TEST_LAYOUT2.
         CALL METHOD TEST_GRID2->SET_TABLE_FOR_FIRST_DISPLAY
           EXPORTING
             IS_LAYOUT                     = test_layout2
           CHANGING
             IT_OUTTAB                     = mat_det[]
             IT_FIELDCATALOG               = test_fieldcat2[].
    else.
    CALL METHOD TEST_GRID2->GET_FRONTEND_LAYOUT
      IMPORTING
        ES_LAYOUT = ls_layout.
    CALL METHOD TEST_GRID2->SET_FRONTEND_LAYOUT
      EXPORTING
        IS_LAYOUT = ls_layout.
    ENDIF.
    CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
      EXPORTING
        CONTROL           = test_container2.
    CALL METHOD CL_GUI_CFW=>FLUSH.
    IF SY-SUBRC NE 0.
    CALL FUNCTION 'POPUP_TO_INFORM'
      EXPORTING
        TITEL         = SY-REPID
        TXT1          = SY-SUBRC
        TXT2          = 'ERROR IN FLUSH'.
    ENDIF.
    ENDMODULE.                 " STATUS_0300  OUTPUT
    *&      Module  USER_COMMAND_0300  INPUT
          text
    MODULE USER_COMMAND_0300 INPUT.
    case ok_code.
        when 'BACK'.
            leave to screen 0.
        WHEN 'CANCLE'.
          LEAVE PROGRAM.
      endcase.
      clear ok_code.
    ENDMODULE.                 " USER_COMMAND_0300  INPUT
    *&      Form  PROC_CATALOG2
          text
         <--P_TEST_FIELDCAT2  text
    FORM PROC_CATALOG2  CHANGING P_TEST_FIELDCAT2 TYPE LVC_T_FCAT.
    data: TEST_fieldcat2 type lvc_s_fcat.
    TEST_FIELDCAT2-fieldname = 'MATNR'.
    TEST_FIELDCAT2-REF_TABLE = 'EKPO'.
    TEST_FIELDCAT2-OUTPUTLEN = '12'.
    TEST_FIELDCAT2-coltext   = 'MATERIAL NO'.
    TEST_FIELDCAT2-SELTEXT   = 'MATERIAL NO'.
    *TEST_FIELDCAT1-HOTSPOT   = 'X'.
    APPEND TEST_FIELDCAT2 TO P_TEST_FIElDCAT2.
    CLEAR TEST_FIELDCAT2.
    TEST_FIELDCAT2-fieldname = 'MAKTX'.
    TEST_FIELDCAT2-REF_TABLE = 'MAKT'.
    TEST_FIELDCAT2-OUTPUTLEN = '30'.
    TEST_FIELDCAT2-coltext   = 'DESCRIPTION'.
    TEST_FIELDCAT2-SELTEXT   = 'DESCRIPTION'.
    APPEND TEST_FIELDCAT2 TO P_TEST_FIElDCAT2.
    CLEAR TEST_FIELDCAT2.
    TEST_FIELDCAT2-fieldname = 'MENGE'.
    TEST_FIELDCAT2-REF_TABLE = 'EKPO'.
    TEST_FIELDCAT2-OUTPUTLEN = '10'.
    TEST_FIELDCAT2-coltext   = 'QUANTITY'.
    TEST_FIELDCAT2-SELTEXT   = 'QUANTITY'.
    APPEND TEST_FIELDCAT2 TO P_TEST_FIElDCAT2.
    CLEAR TEST_FIELDCAT2.
    TEST_FIELDCAT2-fieldname = 'NETPR'.
    TEST_FIELDCAT2-REF_TABLE = 'EKPO'.
    TEST_FIELDCAT2-OUTPUTLEN = '20'.
    TEST_FIELDCAT2-coltext   = 'PURCHASE AMOUNT'.
    APPEND TEST_FIELDCAT2 TO P_TEST_FIElDCAT2.
    CLEAR TEST_FIELDCAT2.
    TEST_FIELDCAT2-fieldname = 'NETWR'.
    TEST_FIELDCAT2-REF_TABLE = 'EKPO'.
    TEST_FIELDCAT2-OUTPUTLEN = '20'.
    TEST_FIELDCAT2-coltext   = 'PURCHASE AMOUNT'.
    APPEND TEST_FIELDCAT2 TO P_TEST_FIElDCAT2.
    CLEAR TEST_FIELDCAT2.
    ENDFORM.                    " PROC_CATALOG2
    *&      Form  PROC_LAYOUT2
          text
         <--P_TEST_LAYOUT2  text
    FORM PROC_LAYOUT2  CHANGING P_TEST_LAYOUT2  type lvc_s_layo.
    p_TEST_layout2-zebra = 'X'.
    p_TEST_layouT2-grid_title = 'PURCHASE ORDERS MATERIAL WISE DETAILS'.
    p_TEST_layout2-smalltitle = 'X'.
    p_TEST_layout2-no_hgridln    = 'X'.
    p_TEST_layout2-excp_conds  = 'X'.
    p_TEST_layout2-numc_total  = 'X'.
    ENDFORM.                    " PROC_LAYOUT2
    thanks
    Vinayak.

    Vinayak,
    Add the Code(ELSE part) into the Form ALV_DISPLAY.
    IF TEST_GRID IS INITIAL.
      CREATE OBJECT TEST_CONTAINER
        EXPORTING
          CONTAINER_NAME = 'TESTING_ALV'.
      CREATE OBJECT TEST_GRID
        EXPORTING
         I_PARENT = TEST_CONTAINER.
       PERFORM PROC_CATALOG CHANGING TEST_FIELDCAT.
       PERFORM PROC_LAYOUT CHANGING TEST_LAYOUT.
       CALL METHOD TEST_GRID->SET_TABLE_FOR_FIRST_DISPLAY
          EXPORTING
               IS_LAYOUT = TEST_LAYOUT
          CHANGING
               IT_OUTTAB = ITAB[]
               IT_FIELDCATALOG = TEST_FIELDCAT[].
        create object EVENT_RECEIVER.
        set handler EVENT_RECEIVER->handle_double_click
           for   TEST_GRID.
    <b>ELSE.
       CALL METHOD TEST_GRID->REFRESH_TABLE_DISPLAY(
                 "EXPORTING
                 "IS_STABLE =
                 "I_SOFT_REFRESH=
                            ).</b>
    ENDIF.
    Thanks
    Kam
    Note: Allot points for all worthful postings

  • ALV display: Default setting field in grey mode

    Hi
    In SE16 or SE11 when we are checking the table (any table, say MARA, RESB etc) with ALV option, we are getting the "save layout" with default setting field in grey mode. So whatever layout is created it is not a default layout, the user has to select the layout. However when I check with another friend in another project there the ALV setting is coming with editable option.
    So how shall I get that the field in change mode. Pls suggest.
    Regds

    Hi BNR,
    for reasons that may be discussed elsewhere, the layout saved in SE16 is applied to all tables displayed using SE16. Thus a default layout does not make too much sense. In the layout the columns displayed are stored. If you have a default layout you will see only the columns that have all displayed columns in common.
    By the way, in my system I can store a default layout but only user-specific. I can not save standard (non-user-specific) layouts in SE16/SE11.
    In SE16N I can store both general (non-user-specific) and Default layouts. Here the layout is table-specific.
    If you users want a special layout (and they are allowed to use SE16!!!) , you should switch to SE16N.
    Regards,
    Clemens

  • ALV Display for Item & Sub-Item Level

    Hi Experts,
    i am developing one report and i want the display it in ALV as shown below.
    Item Level:
    Tax Jurisdiction    state     current balance       prior balance
    3900000               LA           10000                    15000
    Sub-Item Level:
    Jurisdiction Cd.   Posting Date       Type   Doc. no.    Amount
    3902948101        05/03/2008       AR      139          30,998.00
    3902948102        05/06/2008       AR      176         -56,987.00
    3902948123        05/11/2008                  178         -20,987.50
    3902948190        05/20/2008         AP      189          76,000.00
    3902948108        05/22/2008       GL       192          45,060.50
              Account Total                        74,164.00
    How can i achieve this for displaying Item Level And Sub-Item Level.
    Thanks & Regards,
    Ramana.

    hi,
    Plz refer this link for displaying hierarchical list in ALV.
    http://voiceofabap.blogspot.com/2008/05/how-to-use-alv-for-hierarchical-lists.html
    regards
    Sumit Agarwal

Maybe you are looking for

  • Downgrade using iCloud

    I just installed iOS 7 on my iPad 4 but I don't like it. Too bright, prefer the older icons, prefer the Notes yellow background, can't see calendar items it year view, transitions not as smooth, things too big etc. How do I revert back to the previou

  • Compiling Apache 2.2 and php 5.2 from source on Arch

    Hi there Wanting to compile Apache 2 with PHP 5 on my Arch server. I figure this must be frequently done by people out there wanting more control over how their servers are setup, and was wondering if anyone had some good documentation for this? If n

  • How can i import a video file to my ipod touch 4g

    hello I have multiple video files saved on my computer that i want to be able to watch on my ipod i tried to put them in my itunes program but when i try to sync the files to my ipod touch 4g it says these files are not compatible so i guess im askin

  • AirPort Express and Mac Os 10.8

    i have old AirPort Express and Mac Os 10.8 - how can I downgrade from 6.1 to 5.6 - can I uninstall 6.1? then install 5.6?

  • PSC 2410- How to clear fax report

    I have a HP PSC 2410 All in one printer.  I cannot find how to clear the fax report.  Thanks in advance. This question was solved. View Solution.