Declaring check box flag in export paramter functino module

how to declare check box flag in export paramter functino module

hi Rocky,
you have to do something like:
checkbox TYPE flag
flag is a character type data element with length 1.
hope this helps
ec

Similar Messages

  • How do I enable the check box for watermark?

    In Lightroom 3.3, when in the Library module and attempting to export, I am unable to check the checkbox for watermarking.

    Thank you for your reply.
    The file is a jpeg.
    In the Print module I am able to enable the watermark check box, but not in the Library module.

  • Check box printing

    I created a form in InDesign cs6 that contains check boxes. I exported the form as an interactive pdf.
    When I check the boxes and print the form it only prints the check mark and not the boxes around the checkmark.
    The unchecked boxes print just fine.
    This is probably something silly, but I can't figure it out!
    I'm not even sure if this should be fixed in InDesign or Acrobat...
    Help!
    Thank you

    If it's not a bug, I'd say this is related to one of the many settings in Adobe Reader/Acrobat.
    I never used such before, but I made a test how it turns out and it freaks me out what crap Adobe's programmers did here:
    Original in Indesign CS6                      Exported PDF in Acrobat, unchecked                Exported PDF in Acrobat, checked
    Other check box types are even worse!
    Checked (default), not hovered             Unchecked, not hovered                                   
    Only when checked AND hovered, it looks normal:
    Checked (default), not hovered
    Unchecked, not hovered
    Unchecked, hovered
    Checked, hovered
    Anyway, when printed on paper both come out as expected. Like top left and bottom right

  • Turn back on overset check box?

    How do I turn back on the overset check box in the Export PDF dialog box. This was checked to "Don't show this again" and I would like it to always display.
    Thanks

    Preferences dialog, General section, hit the big button "Reset all warning dialogs".
    I never select "Do not show this again", because usually ID warns with good reason. I would prefer a second checkbox "Do not show "Do not show this again" again".

  • I have a dynamic table that calculates the sum of all rows, no issue.  I'm struggling with pulling out a subtotal though.  I would like to have a check box in each row  that flags those rows and gives the sum of their total.  Any help would be greatly app

    I have a dynamic table that calculates the sum of all rows, no issue.  I'm struggling with pulling out a subtotal though.  I would like to have a check box in each row  that flags those rows and gives the sum of their total.  Any help would be greatly appreciated.

    Here's something I threw together rq. The script is in the change event for the checkbox in the table. (Of course, you'll have to modify it to suit the names of your fields.)
    var rows = xfa.resolveNodes("tblAmounts.Row1[*]");
    var subtotal=0;
    for (i=0; i<rows.length; i++) if (rows.item(i).cbAdd.rawValue == 1) subtotal = subtotal + rows.item(i).nfAmount.rawValue;
    nfSubtotal.rawVlaue=subtotal;

  • Is it possible to get a check box's export value when it is OFF

    Hi,
    I'm wondering if I can set a check box export value to something like "S".
    I'll want to check all boxes whose export value is "S", but I want to detect if the export value is "S" when the box is NOT checked. Is that possible?
    Thanks in advance.

    Another option is to use COUNTIF for the column of checkboxes.
    =COUNTIF(B2:B9, TRUE)*3.75
    Any of the cells between B2 and B9 with a checkbox will be included in the count of people that paid the 3.75 amount. It does of course assume that the amount received is always 3.75.
    Erik

  • Exporting PDF from InDesign with check boxes & name fields

    We are a high production print shop and do most of our proofing via PDF. We email the customer a PDF and they print it out, show it to their customer, mark changes, and fax it back to us. We'd like to start letting the customers email their proofs back to us with a check box marked for either OK or Changes Needed, as well as a place for a name and date.
    It appears that InDesign will not do this natively. I can make Acrobat do this, no problem. What I tried to do was to take a PDF of the "Proof OK" box with the check boxes and form fields and drop it into InDesign in hopes that the embedded PDF would hold it's interactive capabilities. It does not.
    Is there a way to make this work like I need without a bunch of scripting in a language I don't know well? Taking the hundred or so proofs each day and manually making them interactive PDFs is not really an option for obvious time reasons.
    Thanks,
    Mike

    This can't be done in ID, but I'd bet they can help you on the Acrobat Scripting forum. It shouldn't be too hard to do a script that only adds approval checkboxes and sets the document for commenting.

  • How to print check boxes in output using alv

    send me replly immediately

    hi
    Program Name: ALV ON SECONDARY LISTS            Creation: 02/01/2007*
    SAP Name    : YH634_0102007_ALV_LIST            Application:        *
    Author      : P.V.D.Veeresh Babu                Type: 1             *
    Description : This program is used to display secondary lists using *
                  ALV.                                                  *
    Inputs:                                                             *
      Tables:                                                           *
        SPFLI - Flight information                                      *
        SFLIGHT - Flight                                                *
        SBOOK   - Flight booking details                                *
      Select options:                                                   *
        N/A                                                             *
      Parameters:                                                       *
        NO                                                              *
    Outputs: secondary lists with ALV                                   *
    External Routines                                                   *
      Function Modules:                                                 *
        REUSE_ALV_LIST_DISPLAY                                          *
      Transactions    : No                                              *
      Programs        : No                                              *
    Return Codes: No                                                    *
    Ammendments:                                                        *
       Programmer        Date     Req. #            Action              *
    ================  ==========  ======  ==============================*
    type-pools: slis.
    *" Data declarations...................................................
    Data declaration of the structure to hold layout details            *
    data:
      fs_layout type slis_layout_alv.
    *" Data declarations...................................................
    Data declaration of the structure to hold spfli details             *
    data: begin of fs_spfli,
            color(4) type c,               " Color
            check    type c.               " Check box
            include  structure spfli.      " Spfli
    data  end of fs_spfli.
    *" Data declarations...................................................
    Data declaration of the structure to hold sflight details           *
    data:begin of fs_sflight,
          color(4) type c,                 " Color
          check    type c.                 " Check box
          include  structure sflight.      " Sflight
    data  end of fs_sflight.
    *" Data declarations...................................................
    Data declaration of the structure to hold sbook details             *
    data:
      fs_sbook like sbook.
    Internal table to hold list details                                 *
    data:
      t_sbook like
    standard table
           of fs_sbook.
    Internal table to hold list details                                 *
    data:
      t_sflight like
       standard table
             of fs_sflight .
    Internal table to hold spfli details                                *
    data:
    t_spfli like
    standard table
    of fs_spfli.
    fs_layout-box_fieldname = 'CHECK'.
    fs_layout-info_fieldname = 'COLOR'.
    "........Retrieving basic list data containing spfli details......."
    select *
      from spfli
      into corresponding fields of table t_spfli.
    if sy-subrc ne 0.
      message text-001 type 'I'.
    endif.                                 " IF SY-SUBRC NE 0
    ".................Calling function module for ALV..................."
    call function 'REUSE_ALV_LIST_DISPLAY'
      exporting
        i_callback_program       = sy-repid
        i_callback_pf_status_set = 'STATUS1'
        i_callback_user_command  = 'USER_COMMAND1'
        i_structure_name         = 'SPFLI'
        is_layout                = fs_layout
      tables
        t_outtab                 = t_spfli
      exceptions
        program_error            = 1
        others                   = 2.
    if sy-subrc <> 0.
      message text-002 type 'I'.
    endif.                                 " IF SY-SUBRC NE 0
    Form  STATUS1                                                     *
    This subroutine gives pf-status for spfli list                    *
         -->T_EXTAB    excluding table                                 *
    form status1 using t_extab type slis_t_extab.
      set pf-status 'STATUS1'.
    endform.                               " STATUS1
    Form  USER_COMMAND1                                               *
    This subroutine displays secondary list containing sflight details*
         -->FS_UCOMM   user command                                    *
         -->T_SELFIELD selfield                                        *
    form user_command1 using fs_ucomm type sy-ucomm
                             t_selfield type slis_selfield.
      case fs_ucomm.
        when 'SFLIGHT'.
          perform display_list2.
      endcase.                             " CASE FS_UCOMM
      t_selfield-refresh = 'X'.
    endform.                               " USER_COMMAND1
    Form  DISPLAY_LIST2                                                *
    This subroutine displays sflight details on secondary list         *
    There are no interface parameters to be passed in this subroutine  *
    form display_list2 .
      data lw_flag type i.                 " Flag
      refresh t_sflight.
      loop at t_spfli into fs_spfli.
        if fs_spfli-check = 'X'.
    "........Retrieving basic list data containing sflight details......."
          select *
            from sflight
       appending corresponding fields of table t_sflight
           where carrid eq fs_spfli-carrid
             and connid eq fs_spfli-connid.
          if sy-subrc eq 0.
            lw_flag = 1.
          endif.                           " IF SY-SUBRC EQ 0
          FS_SPFLI-CHECK = '0'.
          fs_spfli-color = 'C510'.
          modify t_spfli from fs_spfli .
        endif.                             " IF FS_SPFLI-CHECK EQ 'X'
      endloop.                             " LOOP AT T_SPFLI INTO FS_SPFLI
      if lw_flag eq 0.
        message text-003 type 'E'.
      endif.                               " IF LW_FLAG EQ 1
    ".................Calling function module for ALV..................."
      call function 'REUSE_ALV_LIST_DISPLAY'
        exporting
          i_callback_program       = sy-repid
          i_callback_pf_status_set = 'STATUS2'
          i_callback_user_command  = 'USER_COMMAND2'
          i_structure_name         = 'SFLIGHT'
          is_layout                = fs_layout
        tables
          t_outtab                 = t_sflight
        exceptions
          program_error            = 1
          others                   = 2.
      if sy-subrc <> 0.
        message text-002 type 'I'.
      endif.                               " IF SY-SUBRC NE 0
    endform.                               " DISPLAY_LIST2
    Form  STATUS2                                                     *
    This subroutine gives pf-status for secondary list.               *
         -->T_EXTAB    Excluding table                                 *
    form status2 using t_extab type slis_t_extab.
      set pf-status 'STATUS2'.
    endform.                               " STATUS2
    Form  USER_COMMAND2                                               *
    This subroutine gives secondary list containing sbook details     *
         -->FS_UCOMM   user command                                    *
         -->T_SELFIELD selfield                                        *
    form user_command2 using fs_ucomm type sy-ucomm
                             t_selfield type slis_selfield.
      case fs_ucomm.
        when 'SBOOK'.
          perform display_list3.
      endcase.                             " CASE FS_UCOMM
      t_selfield-refresh = 'X'.
    endform.                               " USER_COMMAND2
    Form  DISPLAY_LIST3                                                *
    This subroutine displays sbook details on secondary list           *
    There are no interface parameters to be passed in this subroutine  *
    form display_list3 .
      data lw_flag type i.                 " Flag
      refresh t_sbook.
      loop at t_sflight into fs_sflight.
        if fs_sflight-check eq 'X'.
    "........Retrieving basic list data containing sbook details......."
          select *
            from sbook
       appending corresponding fields of table t_sbook
           where carrid eq fs_sflight-carrid
             and connid eq fs_sflight-connid
             and fldate eq fs_sflight-fldate.
          if sy-subrc eq 0.
            lw_flag = 1.
          endif.                           " IF SY-SUBRC EQ 0
          FS_SFLIGHT-CHECK = '0'.
          fs_sflight-color = 'C910'.
          modify  t_sflight from fs_sflight.
        endif.                             " IF FS_FLIGHT-CHECK EQ 'X'
      endloop.                             " LOOP AT T_SFLIGHT INTO....
      if lw_flag eq 0.
        message text-004 type 'E'.
      endif.                               " IF LW_FLAG EQ 1
    ".................Calling function module for ALV..................."
      call function 'REUSE_ALV_LIST_DISPLAY'
        exporting
          i_structure_name = 'SBOOK'
          is_layout        = fs_layout
        tables
          t_outtab         = t_sbook
        exceptions
          program_error    = 1
          others           = 2.
      if sy-subrc <> 0.
        message text-002 type 'I'.
      endif.                               " IF SY-SUBRC NE 0
    endform.                               " DISPLAY_LIST3
    regards,
    veeresh
    null

  • Check Boxes in ALV Grid

    Hi,
    I want to display an ALV grid/ list report with a check box at the begining of each row.
    I want to select some or all check boxes.
    Based on the selection, i need to perform some action (like z table update).
    Can u plz send the sample code to meet this requirement.
    Thanks

    Hi..
    I had developed this code long time it uses container and its working
    *& Report  ZHR_REPT_EMP_NOT_PBOOKED
    *& Program title:    List of employees who have not done Pre-Booking and
    *                     Provision to send E mail to such employees
    *& Description:      To display a list of emloyees in report and then sending mails to them
    REPORT  ZHR_REPT_EMP_NOT_PBOOKED.
    TYPE-POOLS slis.
    *-----------tables
    TABLES: pernr,
            pa0001,
            hrp1001,
            hrp1000,
            zodtab,
            zcstab,
            zsbutab.
    *-----------Infotypes
    INFOTYPES :0001,  "org assignment,
               1001,
               1000,
               0105.
    TYPES : BEGIN OF i_conf,
              checkbox ,
              pernr TYPE pa0001-pernr,                  "personnel Number.
              ename TYPE pa0001-ename,                  "Name of Employee.
              zzbtc TYPE pa0001-zzbtc,                  "Band.
              btrtl  TYPE pa0001-btrtl,                 "Grade
              Location type string,
              persk type string,
              ptext type string,
              werks TYPE p0001-werks,
              zzod_txt type string,                         "OD name
              zzod type pa0001-zzod,
              zzcs type string,                         "cluster/sector
              vertical type string,
              sbu LIKE pa0001-zzsbu,                    "SBU
              sbutxt LIKE zsbutab-zsbutxt,              "SBUTXT
              orgeh LIKE pa0001-orgeh,                  "Vertical
              org_text type string,
              zzbloc LIKE pa0001-zzbloc,                "base location
              dept_loc type string,                     "dept loc
              ename_s LIKE pa0001-ename,                "Department
              zztc LIKE pa0001-zztc,
              endda type p0001-endda,
             celltab type lvc_t_styl,
            END OF i_conf.
    DATA : it_conf TYPE STANDARD TABLE OF i_conf WITH HEADER LINE,
           wa_conf TYPE i_conf.
    *data: begin of gs_outtab.
    *data: checkbox type c.                "field for checkbox
    ** §B1.Extend your output table by a field to dis- or enable
    **     cells for input.
    *data: celltab type lvc_t_styl.        "field to switch editability
    *        include structure i_conf.
    *data: end of gs_outtab.
    *data: gt_outtab type gs_outtab occurs 0 with header line.
    *& DATA DECLARATION FOR EMAIL
    DATA: docdata    TYPE sodocchgi1,
          objpack    TYPE STANDARD TABLE OF sopcklsti1 WITH HEADER LINE,
          objhead    TYPE STANDARD TABLE OF solisti1   WITH HEADER LINE,
          objtxt     TYPE STANDARD TABLE OF solisti1   WITH HEADER LINE,
          objbin     TYPE STANDARD TABLE OF solisti1   WITH HEADER LINE,
          reclist    TYPE STANDARD TABLE OF somlreci1  WITH HEADER LINE.
    DATA: tab_lines  TYPE sy-tabix.
    DATA : p_1001 TYPE TABLE OF p1001 WITH HEADER LINE.
    DATA : p_0001 TYPE TABLE OF p0001 WITH HEADER LINE.
    DATA : p_0105 TYPE TABLE OF p0105 WITH HEADER LINE.
    DATA : od TYPE p0001-zzod.
    DATA : new_pernr type p0001-pernr.
    DATA : pernr_s type p0001-pernr.
    DATA : email_s type p0105-USRID_LONG.
    DATA : email type p0105-USRID_LONG.
    DATA : tc_name type string.
    DATA : tc_num type string.
    DATA : emails type string.
    DATA : sel_all type string.
    DATA: REF_GRID TYPE REF TO CL_GUI_ALV_GRID.
    DATA : flag type i.
    DATA : title TYPE string.
    DATA : pernr_temp tYPE p0001-pernr.
    DATA : rel type string.
    DATA : stat type string.
    DATA : count type i.
    DATA :   v_dynnr type sy-dynnr.
    DATA : g_grid  type ref to cl_gui_alv_grid.
    DATA : g_custom_container type ref to cl_gui_custom_container,
          g_container type scrfname value 'CC'.
    *************field cat********************************
    DATA:  fieldcat TYPE  lvc_t_fcat,
           wa_fieldcat LIKE LINE OF fieldcat.
    DATA:  gd_layout TYPE lvc_s_layo,
          gd_repid TYPE sy-repid.
    DATA:gt_events TYPE slis_t_event,
          gt_list_top_of_page TYPE slis_t_listheader.
    DATA rec_fetched TYPE sy-tabix.
    CONSTANTS g_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
    SELECTION-SCREEN BEGIN OF  BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS:   s_zzod    FOR   zsbutab-zod       NO INTERVALS ,
                      s_btrtl  FOR   pa0001-btrtl     NO INTERVALS.
    SELECTION-SCREEN END OF BLOCK b1.
    start-of-selection.
      if pn-begda is initial.
        pn-begda = '18000101'.
      endif.
      if pn-endda is initial.
        pn-begda = '99991230'.
      endif.
      clear : it_conf,it_conf[].
    get pernr.
      clear new_pernr.
      move pernr-pernr to new_pernr.
    **************checking whether employee has booked or prebooked for any event****************
      clear: p_1001,p_1001[].
      perform read_info tables p_1001 using  new_pernr '1' 'B027' .
      IF SY-SUBRC <> 0.
        clear: p_1001,p_1001[].
        perform read_info tables p_1001 using  new_pernr '1' 'B023' .
        IF SY-SUBRC <> 0.
          clear: p_1001,p_1001[].
          perform read_info tables p_1001 using  new_pernr '2' 'B027' .
          IF SY-SUBRC <> 0.
            clear: p_1001,p_1001[].
            perform read_info tables p_1001 using  new_pernr '2' 'B023' .
            IF SY-SUBRC <> 0.
              clear : p_0001,p_0001[].
              CALL FUNCTION 'HR_READ_INFOTYPE'
                EXPORTING
                  pernr           = new_pernr
                  infty           = '0001'
                  BEGDA           = pn-begda
                  ENDDA           = pn-endda
                TABLES
                  infty_tab       = p_0001
                EXCEPTIONS
                  infty_not_found = 1
                  OTHERS          = 2.
              sort p_0001 descending by begda.
              read table p_0001 index 1.
              move p_0001-pernr to wa_conf-pernr.
              move p_0001-ename to wa_conf-ename.
              move p_0001-zzbtc to wa_conf-zzbtc.
              move p_0001-btrtl to wa_conf-btrtl.
              move p_0001-werks to wa_conf-werks.
              move p_0001-zzsbu to wa_conf-sbu.
              move p_0001-orgeh to wa_conf-orgeh.
              move p_0001-zzbloc to wa_conf-zzbloc.
              move p_0001-zztc to wa_conf-zztc.
              move p_0001-zzod to wa_conf-zzod.
              move p_0001-endda to wa_conf-endda.
              move p_0001-btrtl to wa_conf-btrtl.
    ***************clustor txt**********************
              select single zcstxt into wa_conf-zzcs from zcstab
                                                    where  zcs = p_0001-zzcs
                                                    and zod = p_0001-zzod.
    ***********operating division*******************************
              select single ZODLTXT into  wa_conf-zzod_txt from zodtab
                                                 where zod = wa_conf-zzod.
    ***********sbu txt***************************************************************
              select single zsbutxt into wa_conf-sbutxt from zsbutab
                                            where zsbu = wa_conf-sbu.
    ***********location**************************************
              select single btext into wa_conf-location from t001p
                                                 where  btrtl = wa_conf-btrtl
                                                 and werks = wa_conf-werks.
    ***********Dept*********************************************
              select single orgtx into wa_conf-org_text from t527x
                                                  where sprsl = 'EN'
                                                  and orgeh = wa_conf-orgeh
                                                  and  begda <= p_0001-begda
                                                  and endda >= p_0001-begda.
    ***************grade******************************************
              SELECT SINGLE ptext FROM t503t INTO  wa_conf-persk
                                              WHERE sprsl = 'EN'
                                              AND persk = p_0001-persk .
    ********************vertical*****************************
    select single zverttxt into wa_conf-vertical from zvtab
                                 where zvert = p_0001-zzvert.
    ********deputation location******************
      if p_0001-ZZDEPFLG = 'X'.
         select single zdltxt into wa_conf-dept_loc from zdltab where zdl = p_0001-zzdploc.
    endif.
    ***get imm superior
              CALL FUNCTION 'ZHR_GET_IMMMED_SUPERIOR'
               EXPORTING
                 pernr     =  new_pernr
    *          begda     = '18000101'
    *          endda     = '99991231'
               IMPORTING
                 v_pernr   = pernr_s
               EXCEPTIONS
                 not_found = 1
                 OTHERS    = 2.
              if sy-subrc = 0.
    ** find the email of the immed. superiors personal number..
                clear : p_0001,p_0001[].
                CALL FUNCTION 'HR_READ_INFOTYPE'
                  EXPORTING
                    pernr           = pernr_s
                    infty           = '0001'
                    BEGDA           = pn-begda
                    ENDDA           = pn-endda
                  TABLES
                    infty_tab       = p_0001
                  EXCEPTIONS
                    infty_not_found = 1
                    OTHERS          = 2.
                read table p_0001 index 1.
                move p_0001-ename to wa_conf-ename_s.
              endif.
              if wa_conf-btrtl in s_btrtl and wa_conf-zzod in s_zzod .
                append wa_conf to it_conf.
              endif.
            endif.
          endif.
        endif.
      endif.
      clear wa_conf.
    end-of-selection.
       if it_conf[] is initial.
          MESSAGE i501(zmod).
          exit.
          endif.
      CALL SCREEN 100.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'USER'.
    *  SET TITLEBAR 'xxx'.
      if g_custom_container is  initial.
        data: lt_exclude type ui_functions.
        create object g_custom_container
          EXPORTING
            container_name = g_container.
        create object g_grid
          EXPORTING
            i_parent = g_custom_container.
        perform fieldcat_build .
    * Exclude all edit functions in this example since we do not need them:
        perform exclude_tb_functions changing lt_exclude.
    *  perform build_data.
    *§ B3.Use the layout structure to aquaint additional field to ALV.
        gd_layout-stylefname = 'CELLTAB'.
        PERFORM build_layout.
        if it_conf[] is initial.
    *      MESSAGE i501(zmod).                    "No data exists
        else.
          call method g_grid->set_table_for_first_display
            EXPORTING
              is_layout            = gd_layout
              it_toolbar_excluding = lt_exclude
            CHANGING
              it_fieldcatalog      = fieldcat
              it_outtab            = it_conf[].
    *  create object g_event_receiver.
    *  set handler g_event_receiver->catch_doubleclick for g_grid.
    * Set editable cells to ready for input initially
          call method g_grid->set_ready_for_input
            EXPORTING
              i_ready_for_input = 1.
        endif.
      endif.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *call screen 100.
    *&      Form  build_layout
    FORM build_layout.
      CLEAR gd_layout.
      v_dynnr = 100.
      gd_layout-cwidth_opt = 'X'.
    *  gd_layout-zebra      = 'X'.
    *  gd_layout-grid_title = text-002.
    ENDFORM.                    "build_layout
    *&      Form  exclude_tb_functions
    *       text
    *      -->PT_EXCLUDE text
    form exclude_tb_functions changing pt_exclude type ui_functions.
      data ls_exclude type ui_func.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
      append ls_exclude to pt_exclude.
    endform.                    "exclude_tb_functions
    *&      Form  field_cat
    *       text
    FORM fieldcat_build .
      wa_fieldcat-fieldname  = 'CHECKBOX'.
      wa_fieldcat-tabname   = 'IT_CONF'.
      wa_fieldcat-checkbox   = 'X'.
      wa_fieldcat-edit   = 'X'.
      APPEND wa_fieldcat TO fieldcat.
      clear wa_fieldcat.
      wa_fieldcat-fieldname  = 'PERNR'.
      wa_fieldcat-coltext = 'P.S. No'.
      wa_fieldcat-tabname   = 'IT_CONF'.
      APPEND wa_fieldcat TO fieldcat.
      clear wa_fieldcat.
      wa_fieldcat-fieldname  = 'ENAME'.
      wa_fieldcat-coltext = 'Employee Name'.
      wa_fieldcat-tabname   = 'IT_CONF'.
      APPEND wa_fieldcat TO fieldcat.
      clear wa_fieldcat.
      wa_fieldcat-fieldname  = 'ZZBTC'.
      wa_fieldcat-coltext = 'Band'.
      wa_fieldcat-tabname   = 'IT_CONF'.
      APPEND wa_fieldcat TO fieldcat.
      clear wa_fieldcat.
      wa_fieldcat-fieldname  = 'PERSK'.
      wa_fieldcat-coltext = 'Grade'.
      wa_fieldcat-tabname   = 'IT_CONF'.
      APPEND wa_fieldcat TO fieldcat.
      clear wa_fieldcat.
      wa_fieldcat-fieldname  = 'ZZOD'.
      wa_fieldcat-coltext = 'OD Name'.
      wa_fieldcat-tabname   = 'IT_CONF'.
      APPEND wa_fieldcat TO fieldcat.
      clear wa_fieldcat.
      wa_fieldcat-fieldname  = 'ZZCS'.
      wa_fieldcat-coltext = 'Cluster / Sector '.
      wa_fieldcat-tabname   = 'IT_CONF'.
      APPEND wa_fieldcat TO fieldcat.
      clear wa_fieldcat.
       wa_fieldcat-fieldname  = 'VERTICAL'.
      wa_fieldcat-coltext = 'Vertical'.
      wa_fieldcat-tabname   = 'IT_CONF'.
      APPEND wa_fieldcat TO fieldcat.
      clear wa_fieldcat.
      wa_fieldcat-fieldname  = 'SBUTXT'.
      wa_fieldcat-coltext = 'SBU'.
      wa_fieldcat-tabname   = 'IT_CONF'.
      APPEND wa_fieldcat TO fieldcat.
      clear wa_fieldcat.
      wa_fieldcat-fieldname  = 'ORG_TEXT'.
      wa_fieldcat-coltext = 'Dept.'.
      wa_fieldcat-tabname   = 'IT_CONF'.
      APPEND wa_fieldcat TO fieldcat.
      clear wa_fieldcat.
      wa_fieldcat-fieldname  = 'LOCATION'.
      wa_fieldcat-coltext = 'Empl. Base Location '.
      wa_fieldcat-tabname   = 'IT_CONF'.
      APPEND wa_fieldcat TO fieldcat.
      clear wa_fieldcat.
       wa_fieldcat-fieldname  = 'DEPT_LOC'.
      wa_fieldcat-coltext = 'Empl. Deputation Location '.
      wa_fieldcat-tabname   = 'IT_CONF'.
      APPEND wa_fieldcat TO fieldcat.
      clear wa_fieldcat.
      wa_fieldcat-fieldname  = 'ENAME_S'.
      wa_fieldcat-coltext = 'IS Name '.
      wa_fieldcat-tabname   = 'IT_CONF'.
      APPEND wa_fieldcat TO fieldcat.
      clear wa_fieldcat.
    endform.                    "field_cat
    *&      Form  check_lock
    *       text
    *      -->PS_OUTTAB  text
    *      -->P_LOCKED   text
    form check_lock using    ps_outtab type i_conf
                    changing p_locked.
      data ls_celltab type lvc_s_styl.
      loop at ps_outtab-celltab into ls_celltab.
        if ls_celltab-fieldname = 'CHECKBOX'.
          if ls_celltab-style eq cl_gui_alv_grid=>mc_style_disabled.
            p_locked = 'X'.
          else.
            p_locked = space.
          endif.
        endif.
      endloop.
    endform.                    "check_lock
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE USER_COMMAND_0100 INPUT.
      IF sy-ucomm = 'EMAIL'.
        clear it_conf.
    *    CALL METHOD g_grid->refresh_table_display.
        data: ls_outtab type i_conf.
        data: l_valid type c,
              l_locked type c.
    *§A4ad. Before you (a)set, reset or (d)evaluate checkboxes,
    *       you must check the input cells.
    * If all entries are ok, ALV transferes new values to the output
    * table which you then can modify.
        call method g_grid->check_changed_data
          IMPORTING
            e_valid = l_valid.
        if l_valid eq 'X'.
          loop at it_conf  into ls_outtab.
            if     not ls_outtab-checkbox is initial
               and not ls_outtab-checkbox eq '-'.
    ***************************sending mail to employee and his/her superior************************************
              select single  sachn  telnr  into (tc_name , tc_num) from t526
             where SACHX = it_conf-zztc
             and werks = it_conf-werks .
    *   ******find the emil of employee.
              clear : p_0105,p_0105[].
              CALL FUNCTION 'HR_READ_INFOTYPE'
                EXPORTING
                  pernr           = ls_outtab-pernr
                  infty           = '0105'
                  BEGDA           = pn-begda
                  ENDDA           = pn-endda
                TABLES
                  infty_tab       = p_0105
                EXCEPTIONS
                  infty_not_found = 1
                  OTHERS          = 2.
              if sy-subrc = 0.
                read table p_0105 with key subty = '0010'.
                move p_0105-USRID_LONG to email.
              endif.
    ** find immediate superior by Z FM.
              clear pernr_s.
              CALL FUNCTION 'ZHR_GET_IMMMED_SUPERIOR'
                EXPORTING
                  pernr     = ls_outtab-pernr
                IMPORTING
                  v_pernr   = pernr_s
                EXCEPTIONS
                  not_found = 1
                  OTHERS    = 2.
              if sy-subrc = 0.
    ** find the email of the immed. superiors personal number..
                clear : p_0105,p_0105[].
                CALL FUNCTION 'HR_READ_INFOTYPE'
                  EXPORTING
                    pernr           = pernr_s
                    infty           = '0105'
                    BEGDA           = pn-begda
                    ENDDA           = pn-endda
                  TABLES
                    infty_tab       = p_0105
                  EXCEPTIONS
                    infty_not_found = 1
                    OTHERS          = 2.
                read table p_0105 with key subty = '0010'.
                move p_0105-USRID_LONG to email_s.
              endif.
              if email <> ' '.
                count = 1.
                perform send_mail using ls_outtab-ename email email_s tc_name tc_num count .
              endif.
              if email_s <> ' '.
                count = 2.
                perform send_mail using ls_outtab-ename email email_s tc_name tc_num count.
              endif.
              call method g_grid->refresh_table_display.
              modify it_conf  from ls_outtab.
            endif.
          endloop.
          call method g_grid->refresh_table_display.
        endif.
        set screen 100.
      endif.
    ***************************end of sending mail*****************************************************
      IF sy-ucomm = 'SELECT'.
    * CALL METHOD g_grid->refresh_table_display.
    *§A4ad. Before you (a)set, reset or (d)evaluate checkboxes,
    *       you must check the input cells.
    * If all entries are ok, ALV transferes new values to the output
    * table which you then can modify.
        call method g_grid->check_changed_data
          IMPORTING
            e_valid = l_valid.
        if l_valid eq 'X'.
          loop at it_conf into ls_outtab.
            perform check_lock using    ls_outtab
                               changing l_locked.
            if l_locked is initial
               and not ls_outtab-checkbox eq '-'.
              ls_outtab-checkbox = 'X'.
            endif.
            modify it_conf from ls_outtab.
          endloop.
          call method g_grid->refresh_table_display.
        endif.
        set screen 100.
      endif.
      IF sy-ucomm = 'BCK'  and v_dynnr = 100.
        clear v_dynnr.
        set screen 1000.
        leave screen.                                           " 0."1000.
    **call selection-screen 1000.
    *call screen 1000.
      endif.
      IF sy-ucomm = 'EXIT'  and v_dynnr = 100.
        clear v_dynnr.
        leave program.
      endif.
      IF sy-ucomm = 'CANC'  and v_dynnr = 100.
        clear v_dynnr.
        leave program.
      endif.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  send_mail
    *       text
    *      -->EMAIL_S    text
    *      -->EMAIL      text
    *      -->TC_NAME    text
    *      -->TC_NUM     text
    form send_mail using  ename email email_s tc_name tc_num count.
    *  *Body of mail
      CLEAR objtxt.
      CLEAR objtxt[].
      objtxt = text-005.
      concatenate objtxt ename into objtxt separated by space.
      append objtxt.
      clear objtxt.
      objtxt = text-006.
      concatenate objtxt email_s into objtxt separated by space.
      append objtxt.
      clear objtxt.
      append objtxt.
      objtxt = text-002.
      append objtxt.
      clear objtxt.
      objtxt = text-003.
      append objtxt.
      clear objtxt.
      append objtxt.
      objtxt = text-004.
      concatenate objtxt tc_name 'at' tc_num into objtxt separated by space.
      append objtxt.
      clear objtxt.
      DESCRIBE TABLE objtxt LINES tab_lines.
      READ TABLE objtxt INDEX tab_lines.
    *Mail description
      CLEAR docdata.
      docdata-doc_size  = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
      docdata-obj_name  = 'Reminder'.
      docdata-obj_descr = 'REMINDER TO DO PRE-BOOKING'.
      docdata-obj_langu = sy-langu.
    *Packing list for main document
      CLEAR objpack.
      CLEAR objpack[].
      objpack-head_start = 1.
      objpack-head_num   = 0.
      objpack-body_start = 1.
      objpack-body_num   = tab_lines.
      objpack-doc_type   = 'RAW'.
      APPEND objpack.
    *Email receiver's list
      CLEAR reclist.
      CLEAR reclist[].
      if count = 1.
    *  reclist-receiver = 'email address'."put email add here
        reclist-receiver = email.
      else.
        reclist-receiver = email_s.
      endif.
      reclist-rec_type = 'U'.
      APPEND reclist.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
        EXPORTING
          document_data              = docdata
          document_type              = 'RAW'
          put_in_outbox              = 'X'
          commit_work                = 'X'
        TABLES
          object_content             = objtxt
          receivers                  = reclist
        EXCEPTIONS
          TOO_MANY_RECEIVERS         = 1
          DOCUMENT_NOT_SENT          = 2
          DOCUMENT_TYPE_NOT_EXIST    = 3
          OPERATION_NO_AUTHORIZATION = 4
          PARAMETER_ERROR            = 5
          X_ERROR                    = 6
          ENQUEUE_ERROR              = 7
          OTHERS                     = 8.
      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.                    "send_mail
    *&      Form  eventtab_build
    FORM eventtab_build USING rt_events TYPE slis_t_event.
    *Registration of events to happen during list display
      DATA: ls_event TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = rt_events.
      READ TABLE rt_events WITH KEY name = slis_ev_top_of_page INTO ls_event.
      IF sy-subrc = 0.
        MOVE g_top_of_page TO ls_event-form.
        APPEND ls_event TO rt_events.
      ENDIF.
    ENDFORM.                    "eventtab_build
    *&      Form  top_of_page
    FORM top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = gt_list_top_of_page.
    ENDFORM.                    "top_of_page
    *&      Form  COMMENT_BUILD
    FORM comment_build USING lt_top_of_page TYPE slis_t_listheader.
      DATA: ls_line TYPE slis_listheader,
              rp_date TYPE string.              "report date
    * LIST HEADING LINE: TYPE H
      CLEAR ls_line.
      ls_line-typ  = 'H'.
      ls_line-info = text-007.
      APPEND ls_line TO lt_top_of_page.
      CONCATENATE sy-datum+6(2) sy-datum+4(2) sy-datum(4) INTO rp_date SEPARATED BY '.'.
    * STATUS LINE: TYPE S
      CLEAR ls_line.
      ls_line-typ  = 'S'.
      ls_line-key  = text-008.
      ls_line-info = rp_date.
      APPEND ls_line TO lt_top_of_page.
    ENDFORM.                    "comment_build
    *&      Form  read_info
    *       text
    *      -->P_1001     text
    *      -->PERNR      text
    *      -->STAT       text
    *      -->REL        text
    form read_info tables p_1001 using  pernr stat rel.
      CALL FUNCTION 'RH_READ_INFTY_1001'
        EXPORTING
          AUTHORITY        = 'DISP'
          WITH_STRU_AUTH   = 'X'
          PLVAR            = '01'
          OTYPE            = 'P'
          OBJID            = pernr
          ISTAT            = stat
          SUBTY            = rel
          BEGDA            = pn-begda
          ENDDA            = pn-endda
        TABLES
          I1001            = p_1001
        EXCEPTIONS
          NOTHING_FOUND    = 1
          WRONG_CONDITION  = 2
          WRONG_PARAMETERS = 3
          OTHERS           = 4.
    endform.                    "read_info
    *&      Module  BACK  INPUT
    *       text
    MODULE BACK INPUT.
      IF SY-UCOMM = 'E'.
        leave program.
      endif.
      IF SY-UCOMM = 'ENDE'.
        leave program.
      endif.
      IF SY-UCOMM = 'ECAN'.
        leave program.
      endif.
    ENDMODULE.                 " BACK  INPUT
    regards
    vivek

  • Problem with check Box in ALV list

    Hi All,
    In my alv list  I am using Check box and if I enabled the check box after pressing that pushbutton its not reflecting in the internal table how can I  resolve it. 
    Please find below the piece of codes
    FORM user_command USING ucomm    LIKE sy-ucomm
                                                 selfield TYPE slis_selfield.      
    sy-ucomm = ucomm.
      CASE ucomm.
      When 'SAVE'.
                I am checking my internal table value here.
               my logic....
      When others.
      Endcase.
    FORM FIELD_CATLOGUE  USING   VALUE(P_tname) "Int.table name
                                  VALUE(P_fname) "Field name
                                  VALUE(P_title) "Column name
                                  VALUE(P_sum)   "Sum
                                  VALUE(P_edit)  "Edit
                                  VALUE(P_Check). " Check box
      CLEAR wa_fcat.
      wa_fcat-tabname = p_tname.
      wa_fcat-fieldname = p_fname.
      wa_fcat-seltext_l = p_title.
      wa_fcat-do_sum    = P_Sum.
      Wa_Fcat-edit      = P_Edit.
      Wa_Fcat-checkbox  = P_Check.
      Append wa_fcat to i_fcat.
      gs_user_command     type slis_formname value 'USER_COMMAND'.
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            i_callback_program = sy-repid
            it_fieldcat        = i_fcat
            is_layout          = ilay
            I_DEFAULT          = 'X'
            I_SAVE             = 'A'
            I_CALLBACK_PF_STATUS_SET  = gs_user_status
            i_callback_user_command  = gs_user_command
          TABLES
            t_outtab           = it_data
          EXCEPTIONS
            program_error      = 1
            others             = 2.

    Hi,
    Refer this program:-
    *  internal table and alv declarations
    *   with one field in internal table as
    *   flag(1) type c (for checkbox in alv)
    *          START-OF-SELECTION
    START-OF-SELECTION.
      "your select query to populate data in internal table
    *          END-OF-SELECTION
    END-OF-SELECTION.
    *          FIELD CATALOG FOR FIRST GRID DISPLAY
      PERFORM field_catalog.
    *          SORT W.R.T. WORK ORDER NUMBER FOR FIRST GRID DISPLAY
      PERFORM sort_field.
    *          FOR LAYOUT FOR FIRST GRID DISPLAY
      PERFORM set_layout.
    *          DISPLAY RECORDS IN ALV GRID FOR FIRST GRID DISPLAY
      PERFORM alv_display.
    *&      SUBROUTINE DEFINITIONS
    *&      Form  FIELD_CATALOG
    *       SUB-ROUTINE FIELD_CATALOG USED TO SET THE COLUMNS FOR
    *       THE ALV GRID (OUTPUT FORMAT)
    *       SETS THE COLUMN NAME AND THE OUTPUT LENGTH FOR THE FIELDS
    FORM field_catalog .
      wa_field-fieldname = 'FLAG'.   " name of field from internal table
      wa_field-tabname = 'IT_FINAL'. " internal table name
      wa_field-outputlen = 2.        " output length on screen
      wa_field-checkbox = c_check.   " print as checkbox
      wa_field-edit = c_check.       " make field open for input
      wa_field-seltext_l = ' '.      " header information
      APPEND wa_field TO it_field.   " append field catalog internal table
      CLEAR wa_field.                " clear field catalog work area
      wa_field-fieldname = 'AUFNR'.  " name of field from internal table
      wa_field-tabname = 'IT_FINAL'. " internal table name
      wa_field-outputlen = 20.       " output length on screen
      wa_field-seltext_l = text-003. " header information
      APPEND wa_field TO it_field.   " append field catalog internal table
      CLEAR wa_field.                " clear field catalog work area
    ENDFORM.                    " FIELD_CATALOG
    *&      Form  SORT_FIELD
    *       SUB-ROUTINE SORT_FIELD IS USED TO SORT THE RECORDS IN THE
    *       INTERNAL TABLE BASED ON THE GIVEN FIELD AND NATURE OF
    *       SORTING TO BE DONE (ASCENDING OR DESCENDING)
    FORM sort_field .
      wa_sort-spos = 1.             " sort priority
      wa_sort-fieldname = 'AUFNR'.  " field on which records sorted
      wa_sort-tabname = 'IT_FINAL'. " internal table name
      wa_sort-up = c_check.         " sort ascending
      APPEND wa_sort TO it_sort.    " append sort info internal table
      CLEAR wa_sort.                " clear sort info work area
    ENDFORM.                    " SORT_FIELD
    *&      Form  SET_LAYOUT
    *       SUB-ROUTINE SET_LAYOUT IS USED TO SET THE DISPLAY OF THE
    *       ALV GRID LINES IN ALTERNATIVE COLOURS
    FORM set_layout .
      wa_layout-zebra = c_check.    " so set colors of line alternatively
    ENDFORM.                    " SET_LAYOUT
    *&      Form  ALV_DISPLAY
    *       SUB-ROUTINE ALV_DISPLAY IS USED TO SET THE PARAMETERS
    *       FOR THE FUNCTION MODULE REUSE_ALV_GRID_DISPLAY
    *       AND PASS THE INTERNAL TABLE EXISTING THE RECORDS TO BE
    *       DISPLAYED IN THE GRID FORMAT
    FORM alv_display .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         i_callback_program                = v_rep_id       " report id
         i_callback_pf_status_set          = 'PF'           " for PF-STATUS
         i_callback_user_command           = 'USER_COMMAND' " for User-Command
         is_layout                         = wa_layout      " for layout
         it_fieldcat                       = it_field       " field catalog
         it_sort                           = it_sort        " sort info
        TABLES
          t_outtab                          = it_final      " internal table
       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.                    " ALV_DISPLAY
    *&      Form  pf
    *       SUB-ROUTINE PF IS USED TO SET THE PF-STATUS OF THE SCREEN
    *       ON WHICH THE ALV GRID IS DISPLAYED
    *       -->RT_EXTAB
    FORM pf USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZTG_STAT'.
    ENDFORM.                    "pf
    *&      Form  USER_COMMAND
    *       SUB-ROUTINE USER_COMMAND IS USED TO HANDLE THE USER ACTION
    *       AND EXECUTE THE APPROPIATE CODE
    *      -->LV_OKCODE   used to capture the function code
    *                     of the user-defined push-buttons
    *      -->L_SELFIELD   text
    FORM user_command USING lv_okcode LIKE sy-ucomm l_selfield TYPE slis_selfield.
    * assign the function code to variable v_okcode
      lv_okcode = sy-ucomm.
    * handle the code execution based on the function code encountered
      CASE lv_okcode.
    * when the function code is EXECUTE then process the selected records
        WHEN 'EXECUTE'.
    * refresh it_process when user processes selected records
          REFRESH it_process.
    * to reflect the data changed into internal table
          DATA : ref_grid TYPE REF TO cl_gui_alv_grid. "new
          IF ref_grid IS INITIAL.
            CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
              IMPORTING
                e_grid = ref_grid.
          ENDIF.
          IF NOT ref_grid IS INITIAL.
            CALL METHOD ref_grid->check_changed_data.
          ENDIF.
    * refresh the ALV Grid output from internal table
          l_selfield-refresh = c_check.
        WHEN 'SEL_ALL'.
    * to select all the records displayed in ALV Grid
          LOOP AT it_final INTO wa_final.
            wa_final-flag = 'X'.
            MODIFY it_final FROM wa_final.
          ENDLOOP.
    * refresh the ALV Grid output from internal table
          l_selfield-refresh = c_check.
        WHEN 'DESEL_ALL'.
    * to deselect all the records displayed in ALV Grid
          LOOP AT it_final INTO wa_final.
            wa_final-flag = ' '.
            MODIFY it_final FROM wa_final.
          ENDLOOP.
    * refresh the ALV Grid output from internal table
          l_selfield-refresh = c_check.
      ENDCASE.
    ENDFORM.                    "USER_COMMAND
    Hope this helps you.
    Regards,
    Tarun.

  • Check box with alv

    hi
    i am displaying  list alv with check boxes, now i want to select few check boxes and doing some operation, after this operation i need to disable thoese check box.
    can u pls guide me.
    thanks.

    Hi,
    using styles it is possible.
    first you need to declare the one extra field in the internal table..
    1. HANDLE_STYLE TYPE LVC_T_STYL.
    DECLARE work area,and table
    2.  DATA: LS_EDIT TYPE LVC_S_STYL,
            LT_EDIT TYPE LVC_T_STYL.
    changing the style...
    3.
    LOOP AT IT_FINAL INTO LS_OUTTAB WHERE FLAG = 'X'.
        V_INDEX = SY-TABIX.
        LS_EDIT-FIELDNAME = 'MATNR'.
        LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED.
        LS_EDIT-STYLE2 = SPACE.
        LS_EDIT-STYLE3 = SPACE.
        LS_EDIT-STYLE4 = SPACE.
        LS_EDIT-MAXLEN = 8.
        INSERT LS_EDIT INTO TABLE LT_EDIT.
        LS_EDIT-FIELDNAME = 'VBELN'.
        LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENAABLED.
        LS_EDIT-STYLE2 = SPACE.
        LS_EDIT-STYLE3 = SPACE.
        LS_EDIT-STYLE4 = SPACE.
        LS_EDIT-MAXLEN = 8.
        INSERT LS_EDIT INTO TABLE LT_EDIT.
        LS_EDIT-FIELDNAME = 'POSNR'.
        LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED.
        LS_EDIT-STYLE2 = SPACE.
        LS_EDIT-STYLE3 = SPACE.
        LS_EDIT-STYLE4 = SPACE.
        LS_EDIT-MAXLEN = 8.
        INSERT LS_EDIT INTO TABLE LT_EDIT.
        INSERT LINES OF LT_EDIT INTO TABLE LS_OUTTAB-HANDLE_STYLE.
        MODIFY IT_FINAL INDEX V_INDEX FROM LS_OUTTAB  TRANSPORTING
                                          HANDLE_STYLE .
      ENDLOOP.
    assigning the style to Layout..
    4.   GS_LAYOUT-STYLEFNAME = 'HANDLE_STYLE'.
    REUSE_ALV_GRID_DISPLAY_LVC. you can do the same with CL_GUI_ALV_GRID also.
    REPORT ZTESTALV.
    TYPE-POOLS: SLIS.
    *- Fieldcatalog
    DATA: IT_FIELDCAT  TYPE LVC_T_FCAT,
          IT_FIELDCAT1  TYPE SLIS_T_FIELDCAT_ALV..
    *- For Events
    DATA:IT_EVENTS TYPE SLIS_T_EVENT.
    DATA:  X_FIELDCAT  TYPE LVC_S_FCAT,
            X_FIELDCAT1  TYPE SLIS_FIELDCAT_ALV.
    DATA:X_LAYOUT TYPE LVC_S_LAYO.
    "{ FOR DISABLE
    DATA: LS_EDIT TYPE LVC_S_STYL,
          LT_EDIT TYPE LVC_T_STYL.
    "} FOR DISABLE
    DATA: BEGIN OF IT_VBAP OCCURS 0,
          VBELN LIKE VBAP-VBELN,
          POSNR LIKE VBAP-POSNR,
          HANDLE_STYLE TYPE LVC_T_STYL, "FOR DISABLE
          BUTTON(10),
         END OF IT_VBAP.
    DATA: LS_OUTTAB LIKE LINE OF IT_VBAP.
    SELECT VBELN
           POSNR
           UP TO 10 ROWS
          INTO CORRESPONDING FIELDS OF TABLE IT_VBAP
          FROM VBAP.
    DATA:L_POS TYPE I VALUE 1.
    CLEAR: L_POS.
    L_POS = L_POS + 1.
    X_FIELDCAT-SELTEXT = 'VBELN'.
    X_FIELDCAT-FIELDNAME = 'VBELN'.
    X_FIELDCAT-TABNAME = 'ITAB'.
    X_FIELDCAT-COL_POS    = L_POS.
    *X_FIELDCAT-EDIT = 'X'.
    X_FIELDCAT-OUTPUTLEN = '10'.
    x_fieldcat-ref_field = 'VBELN'.
    x_fieldcat-ref_table = 'VBAK'.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR X_FIELDCAT.
    L_POS = L_POS + 1.
    X_FIELDCAT-SELTEXT = 'POSNR'.
    X_FIELDCAT-FIELDNAME = 'POSNR'.
    X_FIELDCAT-TABNAME = 'ITAB'.
    X_FIELDCAT-COL_POS    = L_POS.
    *X_FIELDCAT-EDIT = 'X'.
    X_FIELDCAT-OUTPUTLEN = '5'.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR X_FIELDCAT.
    L_POS = L_POS + 1.
    "{FOR DISABLE HERE 6ROW IS DISABLED
    SY-TABIX = 6.
    LS_EDIT-FIELDNAME = 'VBELN'.
    LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
    LS_EDIT-STYLE2 = SPACE.
    LS_EDIT-STYLE3 = SPACE.
    LS_EDIT-STYLE4 = SPACE.
    LS_EDIT-MAXLEN = 10.
    INSERT LS_EDIT INTO TABLE LT_EDIT.
    LS_EDIT-FIELDNAME = 'POSNR'.
    LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
    LS_EDIT-STYLE2 = SPACE.
    LS_EDIT-STYLE3 = SPACE.
    LS_EDIT-STYLE4 = SPACE.
    LS_EDIT-MAXLEN = 6.
    INSERT LS_EDIT INTO TABLE LT_EDIT.
    INSERT LINES OF LT_EDIT INTO TABLE LS_OUTTAB-HANDLE_STYLE.
    MODIFY IT_VBAP INDEX SY-TABIX FROM LS_OUTTAB  TRANSPORTING
                                      HANDLE_STYLE .
    X_LAYOUT-STYLEFNAME = 'HANDLE_STYLE'.
    "} UP TO HERE
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        I_CALLBACK_PROGRAM = SY-REPID
        IS_LAYOUT_LVC      = X_LAYOUT
        IT_FIELDCAT_LVC    = IT_FIELDCAT
      TABLES
        T_OUTTAB           = IT_VBAP[]
      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.
    The above code i am modifying the 6 record . you can place your condition.using loop and endloop. you can disable many records/check box also.
    Follow the next steps:
    1. Add the following fields in the internal table:
    checkbox TYPE c,
    celltab TYPE lvc_t_styl,
    2. Define a table and a work-area:
    DATA: wa_celltab TYPE lvc_s_styl,
    ta_celltab TYPE lvc_t_styl.
    3. Update the internal table BEFORE display :
    LOOP AT ta_data INTO wa_data.
    h_tabix = sy-tabix.
    Update field CHECKBOX (enable/disable INPUT)
    REFRESH ta_celltab.
    wa_celltab-fieldname = 'CHECKBOX'.
    IF NOT wa_data-xxxxx IS INITIAL.
    wa_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
    ELSE.
    wa_celltab-style = cl_gui_alv_grid=>mc_style_enabled.
    ENDIF.
    INSERT wa_celltab INTO TABLE ta_celltab.
    INSERT LINES OF ta_celltab INTO TABLE wa_data-celltab.
    Update internal table
    MODIFY ta_data FROM wa_data INDEX h_tabix.
    ENDLOOP.
    4. Define CHECKBOX in fieldcatalog
    CLEAR wa_catalog.
    wa_catalog-fieldname = 'CHECKBOX'.
    wa_catalog-col_pos = 9.
    wa_catalog-coltext = 'Checkbox'.
    wa_catalog-checkbox = 'X'.
    wa_catalog-edit = 'X'.
    APPEND wa_catalog TO ta_catalog.
    5. Call ALV
    CREATE OBJECT h_custom_container
    EXPORTING container_name = h_container.
    CREATE OBJECT h_grid
    EXPORTING i_parent = h_custom_container.
    CALL METHOD h_grid->set_table_for_first_display
    EXPORTING
    it_toolbar_excluding = wa_toolbar
    is_layout = wa_layout
    CHANGING
    it_outtab = ta_kntkn
    it_fieldcatalog = ta_catalog
    it_sort = ta_sort.
    CALL METHOD h_grid->set_ready_for_input
    EXPORTING i_ready_for_input = 1.
    Regards
    vasu

  • Clearing Check box

    Hi,
    I have to create the credit memo based on user selected records. My program is doing it, but I am having two problems,
    1)After creating the credit memo it is not clearing those records, if I choose next set it is adding 2nd time selected records to the first time selected records and adding to previous credit memo number.
    2)If the credit memo number is already there to a record, it should not allow the same record to create another CM.
    Please help me to solve these.
    Thanks,
    Neelu.
    REPORT zsd_creditmemo  NO STANDARD PAGE HEADING.
    TABLES: zppprice, kna1.
    TYPES: BEGIN OF ty_zprice,
              mandt  TYPE mandt,
              vkorg  TYPE vkorg,
              vtweg  TYPE vtweg,
              spart  TYPE spart,
              kunnr  TYPE kunnr,
              matnr  TYPE matnr,
              crdate TYPE zcrdate,
              efdate TYPE zefdate,
              sprice TYPE zprice3,
              eprice TYPE zprice4,
              eohqty TYPE zquantity1,
              aohqty TYPE zquantity2,
              auart  TYPE auart,
              bstkd  TYPE bstkd,
              werks  TYPE werks_d,
              augru  TYPE augru,
              xblnr  TYPE xblnr,
              crmemo TYPE vbeln,
              index  TYPE sy-index,
         END OF ty_zprice.
    DATA: it_ztable TYPE TABLE OF zppprice WITH HEADER LINE,
          gt_zprice TYPE TABLE OF zppprice  WITH HEADER LINE,
          gt1_zprice TYPE TABLE OF zppprice,
          gt2_zprice TYPE TABLE OF ty_zprice,
          gt3_zprice TYPE TABLE OF ty_zprice,
          gt4_zprice TYPE TABLE OF ty_zprice,
          gs_zprice TYPE zppprice,
          gs_zprice1 TYPE ty_zprice,
          ls_zprice TYPE ty_zprice,
          wa LIKE zppprice.
    DATA: salesdocument      TYPE bapivbeln-vbeln.
    DATA: header             LIKE bapisdhd1.
    DATA: headerx            LIKE bapisdhd1x.
    DATA: item               LIKE bapisditm  OCCURS 0 WITH HEADER LINE.
    DATA: itemx              LIKE bapisditmx OCCURS 0 WITH HEADER LINE.
    DATA: partner            LIKE bapiparnr  OCCURS 0 WITH HEADER LINE.
    DATA: return1            LIKE bapiret2    OCCURS 0 WITH HEADER LINE.
    DATA: lt_schedules_in    TYPE STANDARD TABLE OF bapischdl
                                  WITH HEADER LINE.
    DATA: lt_schedules_inx   TYPE STANDARD TABLE OF bapischdlx
                                  WITH HEADER LINE.
    DATA: conditions1        LIKE bapicond OCCURS 0 WITH HEADER LINE.
    DATA: order_text         LIKE bapisdtext OCCURS 0 WITH HEADER LINE.
    DATA: lv_index TYPE sy-index,
          v_tabix TYPE sytabix,
          chbox(1)  TYPE c VALUE ' ',
          repid     TYPE sy-repid,
          lv_itemno TYPE i VALUE 10,
          lv_pprice TYPE zprice3,
          lv_lines  TYPE i,
          lv_flg     TYPE c,
          lv_cnt TYPE i.
    repid = sy-repid.
    PERFORM displaydata.
    AT USER-COMMAND.
      CASE sy-ucomm.
        WHEN 'CMEMO'.
          DESCRIBE TABLE gt_zprice LINES lv_cnt.
    *      lv_index = 1.
          DO lv_cnt TIMES.
            lv_index = sy-index + 1.
            READ LINE lv_index FIELD VALUE chbox.
            IF chbox = 'X'.
              READ TABLE gt_zprice INTO gs_zprice1 INDEX sy-index.
              IF sy-subrc EQ 0.
                gs_zprice1-index = sy-index.
                APPEND gs_zprice1 TO gt2_zprice.
                CLEAR gs_zprice1.
              ENDIF.
    *          ELSE.
    *          WRITE: /01(253) 'Please Select At least One Record'.
            ENDIF.
            clear chbox.
          ENDDO.
          gt4_zprice[] = gt2_zprice[].
          SORT gt2_zprice BY vkorg vtweg spart kunnr.
          DELETE ADJACENT DUPLICATES FROM gt2_zprice
                          COMPARING vkorg vtweg spart kunnr.
          DESCRIBE TABLE gt2_zprice LINES lv_lines.
          IF lv_lines = 1.
            LOOP AT gt4_zprice INTO gs_zprice1.
              AT NEW kunnr.
                MOVE 'Y' TO lv_flg.
              ENDAT.
              IF lv_flg EQ 'Y'.
                PERFORM headerdata.
                PERFORM texts.
                CLEAR lv_flg.
              ENDIF.
              PERFORM itemdata.
              APPEND gs_zprice1 TO gt3_zprice.
            ENDLOOP.
            PERFORM call_function.
            PERFORM update_pricetable.
            PERFORM errorcheckandcommit.
            PERFORM displaydata.
    *   WRITE: /01(253) 'Please Select Again To Create Another Credit Memo'.
            REFRESH gt2_zprice.
            CLEAR chbox.
            CLEAR lv_lines.
          ELSE.
    *          WRITE: /01(253) 'Please Select Same Customer'.
            REFRESH gt2_zprice.
            CLEAR chbox.
            EXIT.
          ENDIF.
      ENDCASE.
    *&      Form  headerdata
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM headerdata.
    * header data
    * Sales document type
      header-doc_type = gs_zprice1-auart.
      headerx-doc_type = 'X'.
    * Sales organization
      header-sales_org = gs_zprice1-vkorg.
      headerx-sales_org = 'X'.
    * Distribution channel
      header-distr_chan  = gs_zprice1-vtweg.
      headerx-distr_chan = 'X'.
    * Division
      header-division = gs_zprice1-spart.
      headerx-division = 'X'.
    * Customer PO Number
      header-purch_no_c = gs_zprice1-bstkd.
      headerx-purch_no_c = 'X'.
    * Order Reason
      header-ord_reason = gs_zprice1-augru.
      headerx-ord_reason = 'X'.
    * Ref Doc Number
      header-ref_doc_l = gs_zprice1-xblnr.
      headerx-ref_doc_l = 'X'.
      headerx-updateflag = 'I'.
    ENDFORM.                    " headerdata
    *&      Form  Texts
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM texts.
    *Texts
      order_text-itm_number  = '000000'.
      order_text-text_id = '0001'.
      order_text-langu = sy-langu.
      order_text-text_line = gs_zprice1-xblnr.
      APPEND order_text.
    ENDFORM.                    " Texts
    *&      Form  itemdata
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM itemdata.
    * Partner data
    * Sold to
      partner-partn_role = 'AG'.
      partner-partn_numb = gs_zprice1-kunnr.
      APPEND partner.
    * ITEM DATA
      itemx-updateflag = 'I'.
    * Line item number.
      item-itm_number = lv_itemno.
      itemx-itm_number = 'X'.
    * Material
      item-material = gs_zprice1-matnr.
      itemx-material = 'X'.
    * Plant
      item-plant    = gs_zprice1-werks.
      itemx-plant   = 'X'.
    * Quantity
      item-target_qty = gs_zprice1-eohqty.
      itemx-target_qty = 'X'.
      APPEND item.
      APPEND itemx.
    *Fill schedule lines
      lt_schedules_in-itm_number = lv_itemno.
      lt_schedules_in-sched_line = '0001'.
      lt_schedules_in-req_qty    = gs_zprice1-eohqty.
      APPEND lt_schedules_in.
    *Fill schedule line flags
      lt_schedules_inx-itm_number  = lv_itemno.
      lt_schedules_inx-sched_line  = '0001'.
      lt_schedules_inx-updateflag  = 'I'.
      lt_schedules_inx-req_qty     = 'X'.
      APPEND lt_schedules_inx.
    *Conditions
      lv_pprice = gs_zprice1-sprice - gs_zprice1-eprice.
      conditions1-itm_number  = lv_itemno.
      conditions1-cond_type   = 'ZCPP'.
      conditions1-cond_value  = lv_pprice.
      conditions1-currency    = 'USD'.
      conditions1-cond_unit   = 'EA'.
      conditions1-cond_p_unt = 1.
      APPEND conditions1.
      lv_itemno = lv_itemno + 10.
    ENDFORM.                    " itemdata
    *&      Form  call_function
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM call_function.
      CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
           EXPORTING
                sales_header_in     = header
                sales_header_inx    = headerx
           IMPORTING
                salesdocument_ex    = salesdocument
           TABLES
                return              = return1
                sales_items_in      = item
                sales_items_inx     = itemx
                sales_partners      = partner
                sales_schedules_in  = lt_schedules_in
                sales_schedules_inx = lt_schedules_inx
                sales_conditions_in = conditions1
                sales_text          = order_text.
    ENDFORM.                    " call_function
    *&      Form  errorcheck
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM errorcheckandcommit.
    * Check the return table.
      LOOP AT return1 WHERE type = 'E' OR type = 'A'.
        EXIT.
      ENDLOOP.
      break singireddyn.
      IF sy-subrc = 0.
        WRITE: / 'Error in creating document'.
      ELSE.
    *Commit the work.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
             EXPORTING
                  wait = 'X'.
      ENDIF.
    ENDFORM.                    " errorcheckandcommit
    *&      Form  update_pricetable
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM update_pricetable.
      LOOP AT gt3_zprice INTO ls_zprice.
        READ TABLE gt_zprice INTO gs_zprice INDEX ls_zprice-index.
        IF sy-subrc EQ 0.
          v_tabix = sy-tabix.
          gs_zprice-crmemo = salesdocument.
          MODIFY gt_zprice
          FROM gs_zprice INDEX v_tabix TRANSPORTING crmemo.
        ENDIF.
      ENDLOOP.
    *  REFRESH:gt3_zprice.
      LOOP AT gt_zprice.
        wa-vkorg = gt_zprice-vkorg.
        wa-vtweg = gt_zprice-vtweg.
        wa-spart = gt_zprice-spart.
        wa-kunnr = gt_zprice-kunnr.
        wa-matnr = gt_zprice-matnr.
        wa-crdate = gt_zprice-crdate.
        wa-efdate = gt_zprice-efdate.
        wa-sprice = gt_zprice-sprice.
        wa-eprice = gt_zprice-eprice.
        wa-eohqty = gt_zprice-eohqty.
        wa-aohqty = gt_zprice-aohqty.
        wa-auart = gt_zprice-auart.
        wa-bstkd = gt_zprice-bstkd.
        wa-werks = gt_zprice-werks.
        wa-augru = gt_zprice-augru.
        wa-xblnr = gt_zprice-xblnr.
        wa-crmemo = gt_zprice-crmemo.
        MODIFY zppprice FROM wa.
        CLEAR: wa, zppprice.
      ENDLOOP.
    ENDFORM.
    *&      Form  Displaydata
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM displaydata.
      SET PF-STATUS 'LIST'.
      NEW-PAGE LINE-SIZE 253.
      SELECT * FROM zppprice
               INTO TABLE gt_zprice.
      WRITE: /01(253) sy-uline.
      LOOP AT gt_zprice INTO gs_zprice.
        SELECT SINGLE name1 FROM kna1 INTO kna1-name1
                       WHERE kunnr = gs_zprice-kunnr.
        WRITE: /01 sy-vline,
                02 chbox AS CHECKBOX,
                04 sy-vline,
                05 gs_zprice-vkorg,
                10 sy-vline,
                11 gs_zprice-vtweg,
                14 sy-vline,
                15 gs_zprice-spart,
                18 sy-vline,
                19 gs_zprice-kunnr,
                30 sy-vline,
                31 kna1-name1,
                67 sy-vline,
                68 gs_zprice-matnr,
                87 sy-vline,
                88 gs_zprice-crdate,
                98 sy-vline,
                99 gs_zprice-efdate,
                110 sy-vline,
                111 gs_zprice-sprice,
                127 sy-vline,
                128 gs_zprice-eprice,
                145 sy-vline,
                146 gs_zprice-eohqty,
                157 sy-vline,
                158 gs_zprice-aohqty,
                169 sy-vline,
                170 gs_zprice-auart,
                175 sy-vline,
                176 gs_zprice-bstkd,
                212 sy-vline,
                213 gs_zprice-werks,
                218 sy-vline,
                219 gs_zprice-augru,
                223 sy-vline,
                224 gs_zprice-xblnr,
                241 sy-vline,
                242 gs_zprice-crmemo,
                253 sy-vline.
    *    CLEAR zppprice.
      ENDLOOP.
      WRITE: /01(253) sy-uline.
    *  CLEAR zppprice.
    *  CLEAR chbox.
    ENDFORM.                    " Displaydata

    Hello Neelu,
    once user select check box and it will create credit memo,so selected records it contains one value would be 'X'.,
    After BAPI FM use delete command where field = 'X'. so it will delete those records. so now you have remaining records.
    do not use exit or someother command,here you are just deleting the internal table data  and so no worries.
    <b>it any of the selected records have CM number can I come out of the loop and exit.</b>
    look at real time requirement ,some time user will select one check box and create credit memo ,again he will select other check boxes too. so use simple delete command.
    Thanks
    Seshu

  • Check box creation

    Hi Experts,
    i hae to create a check box for account assaignment default value ticked, ifit is ticked out put should come other wise output should not come
    could any one help me, account assaignment field is ekpo-knttp.
    i am giving the code below
    REPORT zmmr_po_spendreport NO STANDARD PAGE HEADING
           MESSAGE-ID zs.
    Program ID   :                                                      *
    Version      : 1.0                                                  *
    SAP Version  : R/3 System Ver. 4.6C                                 *
    Program Name : ZMMR_PO_SPENDREPORT                                  *
    Created by   : Venu Goli                                            *
    Created on   : 6/1/2007                                             *
    Description  : A Report on Direct and Indirect spend to find out    *
                    the lead time in PO and Invoice creation             *
    Tables
    TABLES: ekko,   "Purchasing Document Header
            ekpo,   "Purchasing Document Item
            rbkp.   "Document Header: Invoice Receipt
    Type-Pools
    TYPE-POOLS : slis.   " Has to be declared to use ALVs
    To hold ALV field catgory data
    DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
           wa_fieldcat LIKE LINE OF it_fieldcat.
    Internal tables declarations
    Internal table to hold Report data
    DATA: BEGIN OF it_output OCCURS 0,
           dir_indir(9),
           bukrs LIKE ekko-bukrs,    "company code
           ebeln LIKE ekko-ebeln,    "Purchasing Document Number
           ebelp LIKE ekpo-ebelp,    "Item
           aedat LIKE ekko-aedat,    "Date on which the record was created
           belnr LIKE rseg-belnr,    "Accounting document number
           bldat LIKE rbkp-bldat,    "Document date in document
           budat LIKE rbkp-budat,    "Posting date in the document
           wrbtr LIKE rseg-wrbtr,    "Amount in document currency
           curr  LIKE t880-curr,     "Price unit (Local Curr)
           bednr LIKE ekpo-bednr,    "Requirement tracking number
           lifnr LIKE ekko-lifnr,    "Vendor's account number
           name1 LIKE lfa1-name1,                               "name1
           name2(30),                "preparer name
           name3(30),                "requester name
           gjahr LIKE rseg-gjahr,    "Fiscal year
           ernam LIKE ekko-ernam,    "Name of Person who Created the Object
           kursf LIKE rbkp-kursf,    "Exchange rate
           shkzg LIKE rseg-shkzg,    "Debit/credit indicator
           banfn LIKE ekpo-banfn,    "Purchase requisition number
           knttp LIKE ekpo-knttp,    "account assignment category
          END OF it_output.
    Selection Screen
    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS: p_bukrs LIKE ekko-bukrs OBLIGATORY,
                   kntpp AS CHECKBOX DEFAULT 'X'.
    SELECT-OPTIONS: s_invdat FOR rbkp-bldat,    "Document date in document
                    s_vendor FOR ekko-lifnr,    "Vendor's account number
                    s_purcdo FOR ekko-ebeln,    "Purchasing Document no
                    s_credat FOR ekko-aedat OBLIGATORY,"create date
                    s_plant  FOR ekpo-werks,    "Plant
                    s_doctyp FOR ekko-bsart,    "Purchasing document type
                    s_purorg FOR ekko-ekorg,    "Purchasing organization
                    s_trcnum FOR ekpo-bednr,    "Requirement tracking number
                    s_knttp  FOR ekpo-knttp.    "account assignment category
    SELECTION-SCREEN: END OF BLOCK b1.
    DATA: count TYPE i VALUE 0.            " Used to count records
              INITIALIZATION                                             *
    INITIALIZATION.
    At Selection Screen
    AT SELECTION-SCREEN.
    Checking for the input values of selection screen fields.
      PERFORM validate_params.
    Start Of Selection
    START-OF-SELECTION.
      PERFORM get_data.
    End Of Selection
    END-OF-SELECTION.
    SUBROUTINE TO CALL THE FUNCTION MERGE TO ENSURE PROPER DISPLAY.
      PERFORM merge_fieldcatalog.
      PERFORM modify_fieldcat.
      PERFORM alv_report.
          FORM validate_params                                          *
    FORM validate_params.
    Validate company code
      SELECT SINGLE COUNT(*) FROM t001 WHERE bukrs = p_bukrs.
      IF sy-subrc <> 0.
        MESSAGE e021 WITH 'Please enter a valid Company code'.
      ENDIF.
    *Validate Vendor.
      SELECT SINGLE COUNT(*) FROM lfa1 WHERE lifnr IN s_vendor.
      CASE sy-subrc.
        WHEN 0.
        WHEN OTHERS.
          MESSAGE e021 WITH 'Please enter a valid Vendor'.
      ENDCASE.
    *Validate PO doc type
      SELECT SINGLE COUNT(*) FROM t161 WHERE bsart IN s_doctyp.
      CASE sy-subrc.
        WHEN 0.
        WHEN OTHERS.
          MESSAGE e021 WITH 'Please enter a valid PO Doc. Type'.
      ENDCASE.
    *Validate plant
      SELECT SINGLE COUNT(*) FROM t001w WHERE werks IN s_plant.
      CASE sy-subrc.
        WHEN 0.
        WHEN OTHERS.
          MESSAGE e021 WITH 'Please enter a valid Plant. Type'.
      ENDCASE.
    *Validate Purch. Org
      SELECT SINGLE COUNT(*) FROM t024e WHERE ekorg IN s_purorg.
      CASE sy-subrc.
        WHEN 0.
        WHEN OTHERS.
          MESSAGE e021 WITH 'Please enter a valid Purch. Org.'.
      ENDCASE.
    ENDFORM.                               " PERFORM VALIDATE_PARAMS.
          FORM get_data                                                 *
    FORM get_data.
      DATA: l_persnumber LIKE usr21-persnumber.
    Get PO data
      SELECT a~bukrs a~ebeln b~ebelp a~aedat a~lifnr a~ernam
             b~knttp b~bednr b~banfn
             c~belnr c~wrbtr c~gjahr c~shkzg
             d~bldat d~budat d~kursf
             e~dir_indir
      INTO CORRESPONDING FIELDS OF TABLE it_output
      FROM ekko AS a
      JOIN ekpo AS b ON b~ebeln = a~ebeln
      JOIN rseg AS c ON c~ebeln = b~ebeln
                    AND c~ebelp = b~ebelp
                    AND c~bukrs = a~bukrs
      JOIN rbkp AS d ON d~belnr = c~belnr
                    AND d~gjahr = c~gjahr
      LEFT JOIN zpo_dirindir AS e ON e~knttp = b~knttp
      WHERE a~bukrs = p_bukrs
        AND a~lifnr IN s_vendor
        AND a~ebeln IN s_purcdo
        AND a~bsart IN s_doctyp
        AND a~ekorg IN s_purorg
        AND a~aedat IN s_credat
        AND b~knttp IN s_knttp
        AND b~werks IN s_plant
        AND b~bednr IN s_trcnum.
      LOOP AT it_output.
      Get posting date, Doc. date & Curr. Key
        IF it_output-kursf <> 0.
          it_output-wrbtr = it_output-wrbtr * it_output-kursf.
        ENDIF.
      get local currency
        SELECT SINGLE waers INTO it_output-curr FROM t001
                 WHERE bukrs = it_output-bukrs.
      Get vendor name.
        SELECT SINGLE name1 FROM lfa1 INTO it_output-name1
        WHERE lifnr = it_output-lifnr.
      Get PO created person name
        SELECT SINGLE persnumber INTO l_persnumber FROM usr21
         WHERE bname = it_output-ernam.
        IF sy-subrc = 0.
          SELECT SINGLE name_text FROM adrp INTO it_output-name2
           WHERE persnumber = l_persnumber.
        ELSE.
          it_output-name2 = it_output-ernam.
        ENDIF.
      Get get requested by from reciepent point in PO
      else PR created by (If PR exists)
        CASE it_output-dir_indir.
          WHEN 'I'.
          Take requested by from Reciepent point.
            SELECT SINGLE wempf INTO it_output-name3 FROM ekkn
             WHERE ebeln = it_output-ebeln
               AND ebelp = it_output-ebelp .
          WHEN 'D'.
            SELECT SINGLE ernam INTO it_output-name3 FROM eban
             WHERE banfn = it_output-banfn
               AND ebelp = it_output-ebelp.
            IF sy-subrc <> 0.
              MOVE it_output-ernam TO it_output-name3.
            ENDIF.
            SELECT SINGLE persnumber INTO l_persnumber FROM usr21
                WHERE bname = it_output-name3.
            IF sy-subrc = 0.
              SELECT SINGLE name_text FROM adrp INTO it_output-name3
               WHERE persnumber = l_persnumber.
            ENDIF.
        ENDCASE.
      translate direction indicator to Indirect or Direct
        CASE it_output-dir_indir.
          WHEN 'I'. it_output-dir_indir = 'Indirect'.
          WHEN 'D'. it_output-dir_indir = 'Direct'.
        ENDCASE.
        MODIFY it_output.
      ENDLOOP.
    ENDFORM.
    FORM MERGE_FIELDCATALOG                                             *
    FORM merge_fieldcatalog.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
           EXPORTING
                i_program_name         = sy-cprog
                i_internal_tabname     = 'IT_OUTPUT'
                i_inclname             = sy-cprog
           CHANGING
                ct_fieldcat            = it_fieldcat[]
           EXCEPTIONS
                inconsistent_interface = 1
                program_error          = 2
                OTHERS                 = 3.
    ENDFORM. " MERGE_FIELDCATALOG
          FORM modify_fieldcat                                          *
    FORM modify_fieldcat.
      DATA: wa_fieldcat TYPE slis_fieldcat_alv.
      LOOP AT it_fieldcat INTO wa_fieldcat.
        CASE wa_fieldcat-fieldname.
          WHEN 'DIR_INDIR'.
            wa_fieldcat-seltext_m = 'Direct/Indirect'.
          WHEN 'NAME2'.
            wa_fieldcat-seltext_m = 'PREPARER NAME'.
          WHEN 'NAME3'.
            wa_fieldcat-seltext_m = 'REQUESTER NAME'.
          WHEN 'BEDNR'.
            wa_fieldcat-seltext_m = 'SSP PO'.
          WHEN 'AEDAT'.
            wa_fieldcat-seltext_m = 'PO DOCUMENT DATE'.
          WHEN 'BLDAT'.
            wa_fieldcat-seltext_m = 'INVOICE DOCU DATE'.
          WHEN 'BUDAT'.
            wa_fieldcat-seltext_m = 'POSTAGE DATE'.
          WHEN 'WRBTR'.
            wa_fieldcat-seltext_m = 'LOCAL AMOUNT'.
            wa_fieldcat-cfieldname = 'CURR'.
            wa_fieldcat-ctabname   =  wa_fieldcat-tabname.
          WHEN 'CURR'.
            wa_fieldcat-seltext_m = 'LOCAL CURR'.
          WHEN 'NAME1'.
            wa_fieldcat-seltext_m = 'VENDOR NAME'.
        ENDCASE.
        MODIFY it_fieldcat FROM wa_fieldcat.
      ENDLOOP.
    ENDFORM.
          FORM ALV_REPORT                                               *
    FORM alv_report.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                i_callback_program = sy-cprog
                it_fieldcat        = it_fieldcat[]
           TABLES
                t_outtab           = it_output[].
      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.

    REPORT zmmr_po_spendreport NO STANDARD PAGE HEADING
    MESSAGE-ID zs.
    Program ID : *
    Version : 1.0 *
    SAP Version : R/3 System Ver. 4.6C *
    Program Name : ZMMR_PO_SPENDREPORT *
    Created by : Venu Goli *
    Created on : 6/1/2007 *
    Description : A Report on Direct and Indirect spend to find out *
    the lead time in PO and Invoice creation *
    Tables
    TABLES: ekko, "Purchasing Document Header
    ekpo, "Purchasing Document Item
    rbkp. "Document Header: Invoice Receipt
    Type-Pools
    TYPE-POOLS : slis. " Has to be declared to use ALVs
    To hold ALV field catgory data
    DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
    wa_fieldcat LIKE LINE OF it_fieldcat.
    Internal tables declarations
    Internal table to hold Report data
    DATA: BEGIN OF it_output OCCURS 0,
    dir_indir(9),
    bukrs LIKE ekko-bukrs, "company code
    ebeln LIKE ekko-ebeln, "Purchasing Document Number
    ebelp LIKE ekpo-ebelp, "Item
    aedat LIKE ekko-aedat, "Date on which the record was created
    belnr LIKE rseg-belnr, "Accounting document number
    bldat LIKE rbkp-bldat, "Document date in document
    budat LIKE rbkp-budat, "Posting date in the document
    wrbtr LIKE rseg-wrbtr, "Amount in document currency
    curr LIKE t880-curr, "Price unit (Local Curr)
    bednr LIKE ekpo-bednr, "Requirement tracking number
    lifnr LIKE ekko-lifnr, "Vendor's account number
    name1 LIKE lfa1-name1, "name1
    name2(30), "preparer name
    name3(30), "requester name
    gjahr LIKE rseg-gjahr, "Fiscal year
    ernam LIKE ekko-ernam, "Name of Person who Created the Object
    kursf LIKE rbkp-kursf, "Exchange rate
    shkzg LIKE rseg-shkzg, "Debit/credit indicator
    banfn LIKE ekpo-banfn, "Purchase requisition number
    knttp LIKE ekpo-knttp, "account assignment category
    END OF it_output.
    Selection Screen
    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS: p_bukrs LIKE ekko-bukrs OBLIGATORY,
    kntpp AS CHECKBOX DEFAULT 'X'.
    SELECT-OPTIONS: s_invdat FOR rbkp-bldat, "Document date in document
    s_vendor FOR ekko-lifnr, "Vendor's account number
    s_purcdo FOR ekko-ebeln, "Purchasing Document no
    s_credat FOR ekko-aedat OBLIGATORY,"create date
    s_plant FOR ekpo-werks, "Plant
    s_doctyp FOR ekko-bsart, "Purchasing document type
    s_purorg FOR ekko-ekorg, "Purchasing organization
    s_trcnum FOR ekpo-bednr, "Requirement tracking number
    s_knttp FOR ekpo-knttp. "account assignment category
    parameters : p_knntp as checkbox default 'X'.
    SELECTION-SCREEN: END OF BLOCK b1.
    DATA: count TYPE i VALUE 0. " Used to count records
    INITIALIZATION *
    INITIALIZATION.
    At Selection Screen
    AT SELECTION-SCREEN.
    Checking for the input values of selection screen fields.
    PERFORM validate_params.
    Start Of Selection
    START-OF-SELECTION.
    if p_knttp = 'X'.
    PERFORM get_data.
    else.
    message 'no output'.
    endif.
    End Of Selection
    END-OF-SELECTION.
    SUBROUTINE TO CALL THE FUNCTION MERGE TO ENSURE PROPER DISPLAY.
    PERFORM merge_fieldcatalog.
    PERFORM modify_fieldcat.
    PERFORM alv_report.
    FORM validate_params *
    FORM validate_params.
    Validate company code
    SELECT SINGLE COUNT(*) FROM t001 WHERE bukrs = p_bukrs.
    IF sy-subrc <> 0.
    MESSAGE e021 WITH 'Please enter a valid Company code'.
    ENDIF.
    *Validate Vendor.
    SELECT SINGLE COUNT(*) FROM lfa1 WHERE lifnr IN s_vendor.
    CASE sy-subrc.
    WHEN 0.
    WHEN OTHERS.
    MESSAGE e021 WITH 'Please enter a valid Vendor'.
    ENDCASE.
    *Validate PO doc type
    SELECT SINGLE COUNT(*) FROM t161 WHERE bsart IN s_doctyp.
    CASE sy-subrc.
    WHEN 0.
    WHEN OTHERS.
    MESSAGE e021 WITH 'Please enter a valid PO Doc. Type'.
    ENDCASE.
    *Validate plant
    SELECT SINGLE COUNT(*) FROM t001w WHERE werks IN s_plant.
    CASE sy-subrc.
    WHEN 0.
    WHEN OTHERS.
    MESSAGE e021 WITH 'Please enter a valid Plant. Type'.
    ENDCASE.
    *Validate Purch. Org
    SELECT SINGLE COUNT(*) FROM t024e WHERE ekorg IN s_purorg.
    CASE sy-subrc.
    WHEN 0.
    WHEN OTHERS.
    MESSAGE e021 WITH 'Please enter a valid Purch. Org.'.
    ENDCASE.
    ENDFORM. " PERFORM VALIDATE_PARAMS.
    FORM get_data *
    FORM get_data.
    DATA: l_persnumber LIKE usr21-persnumber.
    Get PO data
    SELECT a~bukrs a~ebeln b~ebelp a~aedat a~lifnr a~ernam
    b~knttp b~bednr b~banfn
    c~belnr c~wrbtr c~gjahr c~shkzg
    d~bldat d~budat d~kursf
    e~dir_indir
    INTO CORRESPONDING FIELDS OF TABLE it_output
    FROM ekko AS a
    JOIN ekpo AS b ON b~ebeln = a~ebeln
    JOIN rseg AS c ON c~ebeln = b~ebeln
    AND c~ebelp = b~ebelp
    AND c~bukrs = a~bukrs
    JOIN rbkp AS d ON d~belnr = c~belnr
    AND d~gjahr = c~gjahr
    LEFT JOIN zpo_dirindir AS e ON e~knttp = b~knttp
    WHERE a~bukrs = p_bukrs
    AND a~lifnr IN s_vendor
    AND a~ebeln IN s_purcdo
    AND a~bsart IN s_doctyp
    AND a~ekorg IN s_purorg
    AND a~aedat IN s_credat
    AND b~knttp IN s_knttp
    AND b~werks IN s_plant
    AND b~bednr IN s_trcnum.
    LOOP AT it_output.
    Get posting date, Doc. date & Curr. Key
    IF it_output-kursf <> 0.
    it_output-wrbtr = it_output-wrbtr * it_output-kursf.
    ENDIF.
    get local currency
    SELECT SINGLE waers INTO it_output-curr FROM t001
    WHERE bukrs = it_output-bukrs.
    Get vendor name.
    SELECT SINGLE name1 FROM lfa1 INTO it_output-name1
    WHERE lifnr = it_output-lifnr.
    Get PO created person name
    SELECT SINGLE persnumber INTO l_persnumber FROM usr21
    WHERE bname = it_output-ernam.
    IF sy-subrc = 0.
    SELECT SINGLE name_text FROM adrp INTO it_output-name2
    WHERE persnumber = l_persnumber.
    ELSE.
    it_output-name2 = it_output-ernam.
    ENDIF.
    Get get requested by from reciepent point in PO
    else PR created by (If PR exists)
    CASE it_output-dir_indir.
    WHEN 'I'.
    Take requested by from Reciepent point.
    SELECT SINGLE wempf INTO it_output-name3 FROM ekkn
    WHERE ebeln = it_output-ebeln
    AND ebelp = it_output-ebelp .
    WHEN 'D'.
    SELECT SINGLE ernam INTO it_output-name3 FROM eban
    WHERE banfn = it_output-banfn
    AND ebelp = it_output-ebelp.
    IF sy-subrc <> 0.
    MOVE it_output-ernam TO it_output-name3.
    ENDIF.
    SELECT SINGLE persnumber INTO l_persnumber FROM usr21
    WHERE bname = it_output-name3.
    IF sy-subrc = 0.
    SELECT SINGLE name_text FROM adrp INTO it_output-name3
    WHERE persnumber = l_persnumber.
    ENDIF.
    ENDCASE.
    translate direction indicator to Indirect or Direct
    CASE it_output-dir_indir.
    WHEN 'I'. it_output-dir_indir = 'Indirect'.
    WHEN 'D'. it_output-dir_indir = 'Direct'.
    ENDCASE.
    MODIFY it_output.
    ENDLOOP.
    ENDFORM.
    FORM MERGE_FIELDCATALOG *
    FORM merge_fieldcatalog.
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
    i_program_name = sy-cprog
    i_internal_tabname = 'IT_OUTPUT'
    i_inclname = sy-cprog
    CHANGING
    ct_fieldcat = it_fieldcat[]
    EXCEPTIONS
    inconsistent_interface = 1
    program_error = 2
    OTHERS = 3.
    ENDFORM. " MERGE_FIELDCATALOG
    FORM modify_fieldcat *
    FORM modify_fieldcat.
    DATA: wa_fieldcat TYPE slis_fieldcat_alv.
    LOOP AT it_fieldcat INTO wa_fieldcat.
    CASE wa_fieldcat-fieldname.
    WHEN 'DIR_INDIR'.
    wa_fieldcat-seltext_m = 'Direct/Indirect'.
    WHEN 'NAME2'.
    wa_fieldcat-seltext_m = 'PREPARER NAME'.
    WHEN 'NAME3'.
    wa_fieldcat-seltext_m = 'REQUESTER NAME'.
    WHEN 'BEDNR'.
    wa_fieldcat-seltext_m = 'SSP PO'.
    WHEN 'AEDAT'.
    wa_fieldcat-seltext_m = 'PO DOCUMENT DATE'.
    WHEN 'BLDAT'.
    wa_fieldcat-seltext_m = 'INVOICE DOCU DATE'.
    WHEN 'BUDAT'.
    wa_fieldcat-seltext_m = 'POSTAGE DATE'.
    WHEN 'WRBTR'.
    wa_fieldcat-seltext_m = 'LOCAL AMOUNT'.
    wa_fieldcat-cfieldname = 'CURR'.
    wa_fieldcat-ctabname = wa_fieldcat-tabname.
    WHEN 'CURR'.
    wa_fieldcat-seltext_m = 'LOCAL CURR'.
    WHEN 'NAME1'.
    wa_fieldcat-seltext_m = 'VENDOR NAME'.
    ENDCASE.
    MODIFY it_fieldcat FROM wa_fieldcat.
    ENDLOOP.
    ENDFORM.
    FORM ALV_REPORT *
    FORM alv_report.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = sy-cprog
    it_fieldcat = it_fieldcat[]
    TABLES
    t_outtab = it_output[].
    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.

  • Check box.

    Hello Frnds,
             i need  check box in my hierarchial alv list display.
    i am produing my  code.pls specify the changes.
    *& Report  ZCASE9_ORDERSLISTREPORT
    REPORT  ZCASE9_ORDERSLISTREPORT.
    TYPE-POOLS: VRM,SLIS.
    TABLES:VBAK,
           VBAP,
           VBKD,
           VBEP,
           KNA1,
           VBPA,
           MAKT,
           VBUP,
           TVBST.
    TYPES:BEGIN OF ST_VBAK,
            VBELN TYPE VBAK-VBELN,
            ERDAT TYPE VBAK-ERDAT,
            ERZET TYPE VBAK-ERZET,
            ERNAM TYPE VBAK-ERNAM,
            AUDAT TYPE VBAK-AUDAT,
            LIFSK TYPE VBAK-LIFSK,
            VDATU TYPE VBAK-VDATU,
            VSBED TYPE VBAK-VSBED,
            BSTNK TYPE VBAK-BSTNK,
            BNAME TYPE VBAK-BNAME,
            AEDAT TYPE VBAK-AEDAT,
          END OF ST_VBAK,
          BEGIN OF ST_VBAP,
            VBELN1 TYPE VBAP-VBELN,
            MATNR TYPE VBAP-MATNR,
            CHARG TYPE VBAP-CHARG,
            PSTYV TYPE VBAP-PSTYV,
            ABGRU TYPE VBAP-ABGRU,
            MEINS TYPE VBAP-MEINS,
            VKAUS TYPE VBAP-VKAUS,
            KWMENG TYPE VBAP-KWMENG,
            LPRIO TYPE VBAP-LPRIO,
            WERKS TYPE VBAP-WERKS,
            LGORT TYPE VBAP-LGORT,
            VSTEL TYPE VBAP-VSTEL,
            ROUTE TYPE VBAP-ROUTE,
            MVGR5 TYPE VBAP-MVGR5,
          END OF ST_VBAP,
          BEGIN OF ST_VBPA,
            VBELN TYPE VBPA-VBELN,
            KUNNR TYPE VBPA-KUNNR,
          END OF ST_VBPA,
          BEGIN OF ST_KNA1,
            KUNNR TYPE KNA1-KUNNR,
            NAME1 TYPE KNA1-NAME1,
            TELF1 TYPE KNA1-TELF1,
          END OF ST_KNA1,
          BEGIN OF ST_MAKT,
            MATNR TYPE MAKT-MATNR,
            MAKTX TYPE MAKT-MAKTX,
          END OF ST_MAKT,
          BEGIN OF ST_VBEP,
            VBELN TYPE VBEP-VBELN,
            ETENR TYPE VBEP-ETENR,
            WADAT TYPE VBEP-WADAT,
          END OF ST_VBEP,
          BEGIN OF ST_VBUP,
            VBELN TYPE VBUP-VBELN,
            LFSTA TYPE VBUP-LFSTA,
            GBSTA TYPE VBUP-GBSTA,
          END OF ST_VBUP,
          begin of st_finalHDR,
            VBELN TYPE VBAK-VBELN,
            ERDAT TYPE VBAK-ERDAT,
            ERZET TYPE VBAK-ERZET,
            ERNAM TYPE VBAK-ERNAM,
            AUDAT TYPE VBAK-AUDAT,
            LIFSK TYPE VBAK-LIFSK,
            VDATU TYPE VBAK-VDATU,
            VSBED TYPE VBAK-VSBED,
            BSTNK TYPE VBAK-BSTNK,
            BNAME TYPE VBAK-BNAME,
            AEDAT TYPE VBAK-AEDAT,
            KUNNR TYPE VBPA-KUNNR,
            NAME1 TYPE KNA1-NAME1,
            TELF1 TYPE KNA1-TELF1,
          end of st_finalHDR,
          BEGIN OF ST_FINALTEM,
            VBELN1 TYPE VBAP-VBELN,
            LPRIO TYPE VBAP-LPRIO,
            WERKS TYPE VBAP-WERKS,
            LGORT TYPE VBAP-LGORT,
            VSTEL TYPE VBAP-VSTEL,
            ROUTE TYPE VBAP-ROUTE,
            MVGR5 TYPE VBAP-MVGR5,
            MATNR TYPE VBAP-MATNR,
            CHARG TYPE VBAP-CHARG,
            PSTYV TYPE VBAP-PSTYV,
            ABGRU TYPE VBAP-ABGRU,
            MEINS TYPE VBAP-MEINS,
            VKAUS TYPE VBAP-VKAUS,
            KWMENG TYPE VBAP-KWMENG,
            MAKTX TYPE MAKT-MAKTX,
            ETENR TYPE VBEP-ETENR,
            WADAT TYPE VBEP-WADAT,
            LFSTA TYPE VBUP-LFSTA,
            GBSTA TYPE VBUP-GBSTA,
          END OF ST_FINALTEM.
    DATA:IT_VBAK TYPE STANDARD TABLE OF ST_VBAK,
         IT_VBAP TYPE STANDARD TABLE OF ST_VBAP,
         IT_VBPA TYPE STANDARD TABLE OF ST_VBPA,
         IT_KNA1 TYPE STANDARD TABLE OF ST_KNA1,
         IT_MAKT TYPE STANDARD TABLE OF ST_MAKT,
         IT_VBEP TYPE STANDARD TABLE OF ST_VBEP,
         IT_VBUP TYPE STANDARD TABLE OF ST_VBUP,
         IT_FINALHDR TYPE STANDARD TABLE OF ST_FINALHDR,
         IT_FINALTEM TYPE STANDARD TABLE OF ST_FINALTEM,
         WA_VBAK TYPE ST_VBAK,
         WA_VBAP TYPE ST_VBAP,
         WA_VBPA TYPE ST_VBPA,
         WA_KNA1 TYPE ST_KNA1,
         WA_MAKT TYPE ST_MAKT,
         WA_VBEP TYPE ST_VBEP,
         WA_VBUP TYPE ST_VBUP,
         WA_FINALHDR TYPE ST_FINALHDR,
         WA_FINALTEM TYPE ST_FINALTEM.
    DATA: NAME TYPE VRM_ID,
          LIST TYPE VRM_VALUES,
          VALUE LIKE LINE OF LIST,
          REPID TYPE SY-REPID,
         TY_KEYINFO TYPE SLIS_KEYINFO_ALV, " key information type.
         IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
         WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,    " field catalog type
         IT_HEADER TYPE SLIS_TABNAME,    " table to store header data
         IT_ITEM TYPE SLIS_TABNAME. " table to store item data
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    PARAMETERS:OPEN_ORD RADIOBUTTON GROUP g1 DEFAULT 'X',                  " DOWNLOAD TO APPLICATION SERVER
               ALL_ORD RADIOBUTTON GROUP g1,
               MY_ORD AS CHECKBOX.
    SELECTION-SCREEN END OF BLOCK B1.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
    PARAMETERS:PF(25) AS LISTBOX VISIBLE LENGTH 20,  P_KUNNR TYPE VBAK-KUNNR,
               P_MATNR TYPE VBAP-MATNR,
               P_BSTNK TYPE VBAK-BSTNK.
    SELECTION-SCREEN END OF BLOCK B2.
    SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.
    SELECT-OPTIONS:S_AUDAT FOR VBAK-AUDAT,
                   S_VBELN FOR VBAK-VBELN,
                   S_AUART FOR VBAK-AUART,
                   S_LPRIO FOR VBAP-LPRIO,
                   S_PRSDT FOR VBKD-PRSDT,
                   S_WADAT FOR VBEP-WADAT,
                   S_VSBED FOR VBAK-VSBED,
                   S_EDATU FOR VBEP-EDATU,
                   S_LIFSK FOR VBAK-LIFSK,
                   S_ERNAM FOR VBAK-ERNAM.
    SELECTION-SCREEN END OF BLOCK B3.
    SELECTION-SCREEN BEGIN OF BLOCK B4 WITH FRAME TITLE TEXT-004.
    SELECT-OPTIONS:S_VKORG FOR VBAK-VKORG,
                   S_VTWEG FOR VBAK-VTWEG,
                   S_SPART FOR VBAP-SPART,
                   S_VKGRP FOR VBAK-VKGRP,
                   S_VKBUR FOR VBAK-VKBUR,
                   S_WERKS FOR VBAP-WERKS.
    SELECTION-SCREEN END OF BLOCK B4.
    INITIALIZATION.
    NAME = 'PF'.
    VALUE-KEY = '1'.
    VALUE-TEXT = 'SHIP TO'.
    APPEND VALUE TO LIST.
    NAME = 'PF'.
    VALUE-KEY = '2'.
    VALUE-TEXT = 'SOLD TO'.
    APPEND VALUE TO LIST.
    NAME = 'PF'.
    VALUE-KEY = '3'.
    VALUE-TEXT = 'BILL TO'.
    APPEND VALUE TO LIST.
    CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
    ID = NAME
    VALUES = LIST.
    REPID = SY-REPID.            " variable having the program name
    IT_HEADER = 'IT_FINALHDR'.
    IT_ITEM = 'IT_FINALTEM'.
    CLEAR TY_KEYINFO.
    TY_KEYINFO-HEADER01 = 'VBELN'." comparing the keys and relating the header and item internal tables
    TY_KEYINFO-ITEM01 = 'VBELN1'.
    START-OF-SELECTION.
    IF OPEN_ORD ='X'.
          PERFORM RETRIEVE_VBAK.
          PERFORM RETRIEVE_VBAP.
          PERFORM RETRIEVE_VBPA.
          PERFORM RETRIEVE_KNA1.
          PERFORM RETRIEVE_MAKT.
          PERFORM RETRIEVE_VBEP.
          PERFORM RETRIEVE_VBUP1.
    ELSE.
         PERFORM RETRIEVE_VBAK.
         PERFORM RETRIEVE_VBAP.
         PERFORM RETRIEVE_VBPA.
         PERFORM RETRIEVE_KNA1.
         PERFORM RETRIEVE_MAKT.
         PERFORM RETRIEVE_VBEP.
         PERFORM RETRIEVE_VBUP.
    ENDIF.
    IF IT_VBAK IS NOT INITIAL.
       LOOP AT IT_VBAK INTO WA_VBAK.
            READ TABLE IT_VBAP INTO WA_VBAP WITH KEY VBELN1 = WA_VBAK-VBELN.
                 CHECK SY-SUBRC EQ 0.
            READ TABLE IT_VBPA INTO WA_VBPA WITH KEY VBELN = WA_VBAP-VBELN1.
                 CHECK SY-SUBRC EQ 0.
            READ TABLE IT_KNA1 INTO WA_KNA1 WITH KEY KUNNR = WA_VBPA-KUNNR.
                 CHECK SY-SUBRC EQ 0.
            READ TABLE IT_MAKT INTO WA_MAKT WITH KEY MATNR = WA_VBAP-MATNR.
                 CHECK SY-SUBRC EQ 0.
            READ TABLE IT_VBEP INTO WA_VBEP WITH KEY VBELN = WA_VBAP-VBELN1.
                 CHECK SY-SUBRC EQ 0.
            READ TABLE IT_VBUP INTO WA_VBUP WITH KEY VBELN = WA_VBAP-VBELN1.
                 CHECK SY-SUBRC EQ 0.
                 WA_FINALHDR-VBELN = WA_VBAK-VBELN.
                 WA_FINALHDR-ERNAM = WA_VBAK-ERNAM.
                 WA_FINALHDR-ERDAT = WA_VBAK-ERDAT.
                 WA_FINALHDR-ERZET = WA_VBAK-ERZET.
                 WA_FINALHDR-AEDAT = WA_VBAK-AEDAT.
                 WA_FINALHDR-AUDAT = WA_VBAK-AUDAT.
                 WA_FINALHDR-LIFSK = WA_VBAK-LIFSK.
                 WA_FINALHDR-VDATU = WA_VBAK-VDATU.
                 WA_FINALHDR-VSBED = WA_VBAK-VSBED.
                 WA_FINALHDR-BNAME = WA_VBAK-BNAME.
                 WA_FINALHDR-BSTNK = WA_VBAK-BSTNK.
                 WA_FINALHDR-TELF1 = WA_KNA1-TELF1.
                 WA_FINALHDR-NAME1 = WA_KNA1-NAME1.
                 WA_FINALHDR-KUNNR = WA_VBPA-KUNNR.
                 WA_FINALTEM-VBELN1 = WA_VBAP-VBELN1.
                 WA_FINALTEM-LPRIO = WA_VBAP-LPRIO.
                 WA_FINALTEM-MATNR = WA_VBAP-MATNR.
                 WA_FINALTEM-CHARG = WA_VBAP-CHARG.
                 WA_FINALTEM-MAKTX = WA_MAKT-MAKTX.
                 WA_FINALTEM-LGORT = WA_VBAP-LGORT.
                 WA_FINALTEM-MVGR5 = WA_VBAP-MVGR5.
                 WA_FINALTEM-ETENR = WA_VBEP-ETENR.
                 WA_FINALTEM-KWMENG = WA_VBAP-KWMENG.
                 WA_FINALTEM-GBSTA = WA_VBUP-GBSTA.
                 WA_FINALTEM-LFSTA = WA_VBUP-LFSTA.
                 WA_FINALTEM-VSTEL = WA_VBAP-VSTEL.
                 WA_FINALTEM-PSTYV = WA_VBAP-PSTYV.
                 WA_FINALTEM-ABGRU = WA_VBAP-ABGRU.
                 WA_FINALTEM-MEINS = WA_VBAP-MEINS.
                 WA_FINALTEM-VKAUS = WA_VBAP-VKAUS.
                 WA_FINALTEM-WERKS = WA_VBAP-WERKS.
                 WA_FINALTEM-ROUTE = WA_VBAP-ROUTE.
                 WA_FINALTEM-WADAT = WA_VBEP-WADAT.
                 APPEND WA_FINALHDR TO IT_FINALHDR.
                 APPEND WA_FINALTEM TO IT_FINALTEM.
       ENDLOOP.
    ENDIF.
      SORT iT_FINALHDR.
      DELETE ADJACENT DUPLICATES FROM iT_FINALHDR COMPARING ALL FIELDS.
      SORT iT_FINALTEM.
      DELETE ADJACENT DUPLICATES FROM iT_FINALTEM COMPARING ALL FIELDS.
    *wa_fieldcat-d = 'X'.
    WA_FIELDCAT-TABNAME = 'IT_FINALHDR'.
    WA_FIELDCAT-FIELDNAME = 'VBELN'.
    WA_FIELDCAT-SELTEXT_L = 'SALES DOC NO'.
    WA_FIELDCAT-COL_POS = 1.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALHDR'.
    WA_FIELDCAT-FIELDNAME = 'ERNAM'.
    WA_FIELDCAT-SELTEXT_L = 'CREATED BY'.
    WA_FIELDCAT-COL_POS = 2.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALHDR'.
    WA_FIELDCAT-FIELDNAME = 'ERDAT'.
    WA_FIELDCAT-SELTEXT_L = 'CREATED ON'.
    WA_FIELDCAT-COL_POS = 3.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALHDR'.
    WA_FIELDCAT-FIELDNAME = 'ERZET'.
    WA_FIELDCAT-SELTEXT_L = 'CREATED TIME'.
    WA_FIELDCAT-COL_POS = 4.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALHDR'.
    WA_FIELDCAT-FIELDNAME = 'AEDAT'.
    WA_FIELDCAT-SELTEXT_L = 'CHANGED ON'.
    WA_FIELDCAT-COL_POS = 5.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALHDR'.
    WA_FIELDCAT-FIELDNAME = 'AUDAT'.
    WA_FIELDCAT-SELTEXT_L = 'DOCUMENT DATE'.
    WA_FIELDCAT-COL_POS = 6.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALHDR'.
    WA_FIELDCAT-FIELDNAME = 'LIFSK'.
    WA_FIELDCAT-SELTEXT_L = 'DELIVERY BLOCK'.
    WA_FIELDCAT-COL_POS = 7.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALHDR'.
    WA_FIELDCAT-FIELDNAME = 'VDATU'.
    WA_FIELDCAT-SELTEXT_L = 'REQ DEL. DATE'.
    WA_FIELDCAT-COL_POS = 8.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALHDR'.
    WA_FIELDCAT-FIELDNAME = 'VSBED'.
    WA_FIELDCAT-SELTEXT_L = 'SHIPPING CONDITION'.
    WA_FIELDCAT-COL_POS = 9.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALHDR'.
    WA_FIELDCAT-FIELDNAME = 'BNAME'.
    WA_FIELDCAT-SELTEXT_L = 'NAME OF THE ORDERER'.
    WA_FIELDCAT-COL_POS = 10.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALHDR'.
    WA_FIELDCAT-FIELDNAME = 'TELF1'.
    WA_FIELDCAT-SELTEXT_L = 'SHIP 2 PARTY TELEPHONE'.
    WA_FIELDCAT-COL_POS = 11.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALHDR'.
    WA_FIELDCAT-FIELDNAME = 'BSTNK'.
    WA_FIELDCAT-SELTEXT_L = 'PURCHASE ORDER NO'.
    WA_FIELDCAT-COL_POS = 12.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALHDR'.
    WA_FIELDCAT-FIELDNAME = 'KUNNR'.
    WA_FIELDCAT-SELTEXT_L = 'SHIP 2 PARTY'.
    WA_FIELDCAT-COL_POS = 13.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALHDR'.
    WA_FIELDCAT-FIELDNAME = 'NAME1'.
    WA_FIELDCAT-SELTEXT_L = 'SHIP 2 PARTY NAME'.
    WA_FIELDCAT-COL_POS = 14.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'VBELN1'.
    WA_FIELDCAT-SELTEXT_L = 'SALES DOC'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'LPRIO'.
    WA_FIELDCAT-SELTEXT_L = 'DEL. PRIORITY'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'MATNR'.
    WA_FIELDCAT-SELTEXT_L = 'MATERIAL'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'CHARG'.
    WA_FIELDCAT-SELTEXT_L = 'BATCH'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'MAKTX'.
    WA_FIELDCAT-SELTEXT_L = 'MAT DESC'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'LGORT'.
    WA_FIELDCAT-SELTEXT_L = 'STORAGE LOC'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'MVGR5'.
    WA_FIELDCAT-SELTEXT_L = 'MAT GROUP'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'ETENR'.
    WA_FIELDCAT-SELTEXT_L = 'SCHED LINE NO'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'KWMENG'.
    WA_FIELDCAT-SELTEXT_L = 'ORD QUANTITY'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'GBSTA'.
    WA_FIELDCAT-SELTEXT_L = 'OVERALL STATUS'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'LFSTA'.
    WA_FIELDCAT-SELTEXT_L = 'DEL. STATUS'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'VSTEL'.
    WA_FIELDCAT-SELTEXT_L = 'SHIPPING POINT'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'PSTYV'.
    WA_FIELDCAT-SELTEXT_L = 'ITEM CATEGORY'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'ABGRU'.
    WA_FIELDCAT-SELTEXT_L = 'REASON 4 REJECTION'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'MEINS'.
    WA_FIELDCAT-SELTEXT_L = 'BASE UOM'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'VKAUS'.
    WA_FIELDCAT-SELTEXT_L = 'USAGE'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'WERKS'.
    WA_FIELDCAT-SELTEXT_L = 'PLANT'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'ROUTE'.
    WA_FIELDCAT-SELTEXT_L = 'ROUTE'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_FINALTEM'.
    WA_FIELDCAT-FIELDNAME = 'WADAT'.
    WA_FIELDCAT-SELTEXT_L = 'GOODS ISSUE DATE'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    *CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
      I_CALLBACK_PROGRAM                = REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
      I_CALLBACK_TOP_OF_PAGE            = ' '
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      =
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         =
      IT_FIELDCAT                       = IT_FIELDCAT
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
      IT_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
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
    TABLES
       t_outtab                          = IT_FINALHDR
    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.
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
      EXPORTING
      I_INTERFACE_CHECK              = ' '
       I_CALLBACK_PROGRAM             = REPID
      I_CALLBACK_PF_STATUS_SET       = ' '
      I_CALLBACK_USER_COMMAND        = ' '
      IS_LAYOUT                      =
       IT_FIELDCAT                    = IT_FIELDCAT
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
      IT_SORT                        =
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
      I_DEFAULT                      = 'X'
      I_SAVE                         = ' '
      IS_VARIANT                     =
      IT_EVENTS                      =
      IT_EVENT_EXIT                  =
        i_tabname_header               = IT_HEADER
        i_tabname_item                 = IT_ITEM
      I_STRUCTURE_NAME_HEADER        =
      I_STRUCTURE_NAME_ITEM          =
        is_keyinfo                     = TY_KEYINFO
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                =
      IR_SALV_HIERSEQ_ADAPTER        =
      IT_EXCEPT_QINFO                =
      I_SUPPRESS_EMPTY_DATA          = ABAP_FALSE
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
      tables
        t_outtab_header                = IT_FINALHDR
        t_outtab_item                  = IT_FINALTEM.
    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.
    *&      Form  RETRIEVE_VBAK
          text
    -->  p1        text
    <--  p2        text
    form RETRIEVE_VBAK .
    SELECT VBELN
           ERDAT
           ERZET
           ERNAM
           AUDAT
           LIFSK
           VDATU
           VSBED
           BSTNK
           BNAME
           AEDAT INTO TABLE IT_VBAK FROM VBAK WHERE VBELN IN S_VBELN AND
                                                    ERNAM IN S_ERNAM AND
                                                    AUDAT IN S_AUDAT AND
                                                    AUART IN S_AUART AND
                                                    LIFSK IN S_LIFSK AND
                                                    VKORG IN S_VKORG AND
                                                    VTWEG IN S_VTWEG AND
                                                    VSBED IN S_VSBED AND
                                                    VKGRP IN S_VKGRP AND
                                                    VKBUR IN S_VKBUR.
    IF SY-SUBRC NE 0.
       MESSAGE E099(ZMMCASE) WITH 'NO VBAK HDR DATA FOUND'.
    ENDIF.
    endform.                    " RETRIEVE_VBAK
    *&      Form  RETRIEVE_VBAP
          text
    -->  p1        text
    <--  p2        text
    form RETRIEVE_VBAP .
    SELECT VBELN
           MATNR
           CHARG
           PSTYV
           ABGRU
           MEINS
           VKAUS
           KWMENG
           LPRIO
           WERKS
           LGORT
           VSTEL
           ROUTE
           MVGR5 INTO TABLE IT_VBAP FROM VBAP
                      FOR ALL ENTRIES IN IT_VBAK
                      WHERE VBELN = IT_VBAK-VBELN AND
                            SPART IN S_SPART AND
                            LPRIO IN S_LPRIO.
    IF SY-SUBRC NE 0.
       MESSAGE E098(ZMMCASE) WITH 'NO DATA FOUND IN TABLE VBAP'.
    ENDIF.
    endform.                    " RETRIEVE_VBAP
    *&      Form  RETRIEVE_VBPA
          text
    -->  p1        text
    <--  p2        text
    form RETRIEVE_VBPA .
    SELECT VBELN
           KUNNR INTO TABLE IT_VBPA FROM VBPA
                      FOR ALL ENTRIES IN IT_VBAP
                      WHERE VBELN = IT_VBAP-VBELN1.
    IF SY-SUBRC NE 0.
       MESSAGE E097(ZMMCASE) WITH 'NO DATA FOUND IN TABLE VBPA'.
    ENDIF.
    endform.                    " RETRIEVE_VBPA
    *&      Form  RETRIEVE_KNA1
          text
    -->  p1        text
    <--  p2        text
    form RETRIEVE_KNA1 .
    SELECT KUNNR
           NAME1
           TELF1 INTO TABLE IT_KNA1 FROM KNA1
                      FOR ALL ENTRIES IN IT_VBPA
                      WHERE KUNNR = IT_VBPA-KUNNR.
    IF SY-SUBRC NE 0.
       MESSAGE E096(ZMMCASE) WITH 'NO DATA FOUND IN TABLE KNA1'.
    ENDIF.
    endform.                    " RETRIEVE_KNA1
    *&      Form  RETRIEVE_MAKT
          text
    -->  p1        text
    <--  p2        text
    form RETRIEVE_MAKT .
    SELECT MATNR
           MAKTX INTO TABLE IT_MAKT FROM MAKT
                      FOR ALL ENTRIES IN IT_VBAP
                      WHERE MATNR = IT_VBAP-MATNR.
    IF SY-SUBRC NE 0.
       MESSAGE E095(ZMMCASE) WITH 'NO DATA FOUND IN TABLE MAKT'.
    ENDIF.
    endform.                    " RETRIEVE_MAKT
    *&      Form  RETRIEVE_VBEP
          text
    -->  p1        text
    <--  p2        text
    form RETRIEVE_VBEP .
    SELECT VBELN
           ETENR
           WADAT INTO TABLE IT_VBEP FROM VBEP
                 FOR ALL ENTRIES IN IT_VBAP
                 WHERE VBELN = IT_VBAP-VBELN1 AND
                       EDATU IN S_EDATU AND
                       WADAT IN S_WADAT.
    IF SY-SUBRC NE 0.
       MESSAGE E094(ZMMCASE) WITH 'NO DATA FOUND IN TABLE VBEP'.
    ENDIF.
    endform.                    " RETRIEVE_VBEP
    *&      Form  RETRIEVE_VBUP
          text
    -->  p1        text
    <--  p2        text
    form RETRIEVE_VBUP .
    SELECT VBELN
           LFSTA
           GBSTA INTO TABLE IT_VBUP FROM VBUP
                 FOR ALL ENTRIES IN IT_VBAP
                 WHERE VBELN = IT_VBAP-VBELN1.
    IF SY-SUBRC NE 0.
       MESSAGE E093(ZMMCASE) WITH 'NO DATA FOUND IN TABLE VBUP'.
    ENDIF.
    endform.                    " RETRIEVE_VBUP
    *&      Form  RETRIEVE_VBUP1
          text
    -->  p1        text
    <--  p2        text
    form RETRIEVE_VBUP1 .
    SELECT A~VBELN
           A~LFSTA
           AGBSTA FROM VBUP AS A INNER JOIN VBAP AS B ON AVBELN = B~VBELN INTO TABLE IT_VBUP
                 FOR ALL ENTRIES IN IT_VBAP
                 WHERE A~VBELN = IT_VBAP-VBELN1 AND
                 GBSTA IN ('A','B').
    IF SY-SUBRC NE 0.
       MESSAGE E093(ZMMCASE) WITH 'NO DATA FOUND IN TABLE VBUP'.
    ENDIF.
    endform.                    " RETRIEVE_VBUP1

    Hi yes you can perform some action on that by useing that check boxes
    by creating some pushbuttons in SE41 PF-STATUS
    In order modify PF_STATUS of ALV grid report you need to perform the following steps:
    1. Update 'REUSE_ALV_GRID_DISPLAY' FM call to include:
    i_callback_pf_status_set = 'SET_PF_STATUS' statement.
    2. Create 'SET_PF_STATUS' FORM
    3. Create pf_status (i.e. 'ZNEWSTATUS').
    - It is recommend that you copy standard status'STANDARD' from function group SALV and modify it accordingly. ALV standard function codes always start with '&'.
    call function 'REUSE_ALV_GRID_DISPLAY'
    exporting
    i_callback_program = gd_repid
    i_callback_top_of_page = 'TOP-OF-PAGE'
    i_callback_pf_status_set = 'SET_PF_STATUS' "see FORM
    is_layout = gd_layout
    it_fieldcat = fieldcatalog[]
    i_save = 'X'
    tables
    t_outtab = it_ekko
    exceptions
    program_error = 1
    others = 2.
    FORM SET_PF_STATUS *
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
    SET PF-STATUS 'ZNEWSTATUS'.
    "Copy of 'STANDARD' pf_status from fgroup SALV
    ENDFORM.
    exmple2
    This example shows how to use checkboxes within an ALV Grid Control. You learn:
    (1) how to define a column for editable checkboxes for an attribute of your list
    (2) how to evaluate the checked checkboxes
    (3) how to switch between editable and non-editable checkboxes
    program bcalv_edit_05.
    Purpose:
    ~~~~~~~~
    This example shows how to use checkboxes within an ALV Grid Control.
    You learn:
    o how to define a column for editable checkboxes for an attribute
       of your list (see also remark below)
    o how to evaluate the checked checkboxes
    o how to switch between editable and non-editable checkboxes
    Important Remark
    ~~~~~~~~~~~~~~~~
    The checkbox functionality has been replaced by selection buttons
    in front of each row (field SEL_MODE of the layout structure
    set to 'A' or 'D'; when using the editable ALV Grid Control,
    these selection buttons are always visible).
    Class methods like GET_SELECTED_ROWS work only for this new
    functionality and not for checkboxes.
    Thus checkboxes should not be used for line selection but for
    a column as an additional or for an already existing attribute
    (like field SMOKER in SBOOK).
    To check program behavior
    ~~~~~~~~~~~~~~~~~~~~~~~~~
    Try out the functions displayed in the application toolbar:
    o The first sets all checked lines to initial values.
      (see form reset_selected_entries)
    o The seconds marks all checkboxes that are input enabled
    o The third unmarks all checkboxes that are input enabled
    o To try the forth, you have to select a line first using
      the selection buttons on the left.
      The function deactivates/activates a checkbox.
    Checkboxes may be locked/unlocked using a double click on the
    checkbox cell.
    Essential steps (search for '§')
    ~~~~~~~~~~~~~~~
    This example focusses on two aspects of checkboxes in an
    editable ALV Grid Control:
    A How to integrate, set, reset and evaluate checkboxes
    B What you must do to lock particular checkboxes against input
    A) Integrate, set, reset and evaluate checkboxes
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    A1.Extend your output table by a checkbox field.
    A2.Add an entry for the checkbox in the fieldcatalog
    A3.Optionally, check checkboxes initially after selecting data.
    A4.Before you (a)set, (b)reset, (c)(de)activate or
       (d)evaluate checkboxes, you must check the input cells.
    B) Lock particular checkboxes against input
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    B1.Extend your output table by a field to dis- or enable
        cells for input.
    B2.After selecting data,
        assign a style for each row of your checkbox column.
    B3.Use the layout structure to aquaint additional field to ALV.
    B4.Switch the style to dis- or enable a cell for input
    class lcl_event_receiver definition deferred.  "for event handling
    data: ok_code like sy-ucomm,
          save_ok like sy-ucomm,
          g_container type scrfname value 'BCALV_GRID_DEMO_0100_CONT1',
          g_grid  type ref to cl_gui_alv_grid,
          g_custom_container type ref to cl_gui_custom_container,
          g_event_receiver type ref to lcl_event_receiver,
          gt_fieldcat type lvc_t_fcat,
          gs_layout type lvc_s_layo,
          g_max type i value 100.
    *§A1.Extend your output table by a checkbox field.
        If you do not want to lock sole checkboxes against input
        you do not need field 'celltab'.
    types: begin of gs_outtab.
    types: checkbox type c.                "field for checkbox
    §B1.Extend your output table by a field to dis- or enable
        cells for input.
    types: celltab type lvc_t_styl.        "field to switch editability
            include structure sflight.
    types: end of gs_outtab.
    data: gt_outtab type gs_outtab occurs 0 with header line.
    LOCAL CLASSES
    This local class only handles event DOUBLE_CLICK.
    Wenn the user double clicks on a checkbox cell the status of
    this cell is switched from editable to not editable and vice versa.
    class lcl_event_receiver definition.
    public section.
    methods: catch_doubleclick
             for event double_click of cl_gui_alv_grid
             importing
                e_column
                es_row_no
                sender.
    endclass.
    class lcl_event_receiver implementation.
    method catch_doubleclick.
      data: ls_outtab type gs_outtab,
            ls_celltab type lvc_s_styl.
    Function:
    Switch between 'editable' and 'not editable' checkbox.
    If the user clicked on another column there is
    nothing to do.
      if e_column-fieldname ne 'CHECKBOX'.
        exit.
      endif.
      read table gt_outtab into ls_outtab index es_row_no-row_id.
    The loop is only needed if there are other columns that
    use checkboxes. At this point the loop could be
    replaced by a READ of the first line of CELLTAB.
          loop at ls_outtab-celltab into ls_celltab.
            if ls_celltab-fieldname eq 'CHECKBOX'.
    §B4.Switch the style to dis- or enable a cell for input
             if ls_celltab-style = cl_gui_alv_grid=>mc_style_enabled.
              ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
             else.
              ls_celltab-style = cl_gui_alv_grid=>mc_style_enabled.
             endif.
             modify ls_outtab-celltab from ls_celltab.
            endif.
          endloop.
          modify gt_outtab from ls_outtab index es_row_no-row_id.
        call method sender->refresh_table_display.
    endmethod.
    endclass.
          MAIN                                                          *
    end-of-selection.
      call screen 100.
          MODULE PBO OUTPUT                                             *
    module pbo output.
      set pf-status 'MAIN100'.
      set titlebar 'MAIN100'.
      if g_custom_container is initial.
        perform create_and_init_alv.
      endif.
    endmodule.
          MODULE PAI INPUT                                              *
    module pai input.
      save_ok = ok_code.
      clear ok_code.
      case save_ok.
        when 'EXIT'.
          perform exit_program.
        when 'SELECT'.
          perform select_all_entries changing gt_outtab[].
        when 'DESELECT'.
          perform deselect_all_entries changing gt_outtab[].
        when 'RESET'.
          perform reset_selected_entries changing gt_outtab[].
        when 'SWITCH'.
          perform switch_activation changing gt_outtab[].
      endcase.
    endmodule.
          FORM EXIT_PROGRAM                                             *
    form exit_program.
      leave program.
    endform.
    *&      Form  BUILD_FIELDCAT
          text
         <--P_GT_FIELDCAT  text
    form build_fieldcat changing pt_fieldcat type lvc_t_fcat.
      data ls_fcat type lvc_s_fcat.
      call function 'LVC_FIELDCATALOG_MERGE'
           exporting
                i_structure_name = 'SFLIGHT'
           changing
                ct_fieldcat      = pt_fieldcat.
    *§A2.Add an entry for the checkbox in the fieldcatalog
      clear ls_fcat.
      ls_fcat-fieldname = 'CHECKBOX'.
    Essential: declare field as checkbox and
               mark it as editable field:
      ls_fcat-checkbox = 'X'.
      ls_fcat-edit = 'X'.
    do not forget to provide texts for this extra field
      ls_fcat-coltext = text-f01.
      ls_fcat-tooltip = text-f02.
      ls_fcat-seltext = text-f03.
    optional: set column width
      ls_fcat-outputlen = 10.
      append ls_fcat to pt_fieldcat.
    endform.
    *&      Form  CREATE_AND_INIT_ALV
          text
         <--P_GT_OUTTAB  text
         <--P_GT_FIELDCAT  text
         <--P_GS_LAYOUT  text
    form create_and_init_alv.
      data: lt_exclude type ui_functions.
      create object g_custom_container
             exporting container_name = g_container.
      create object g_grid
             exporting i_parent = g_custom_container.
      perform build_fieldcat changing gt_fieldcat.
    Exclude all edit functions in this example since we do not need them:
      perform exclude_tb_functions changing lt_exclude.
      perform build_data.
    *§ B3.Use the layout structure to aquaint additional field to ALV.
      gs_layout-stylefname = 'CELLTAB'.
      call method g_grid->set_table_for_first_display
           exporting is_layout             = gs_layout
                     it_toolbar_excluding  = lt_exclude
           changing  it_fieldcatalog       = gt_fieldcat
                     it_outtab             = gt_outtab[].
      create object g_event_receiver.
      set handler g_event_receiver->catch_doubleclick for g_grid.
    Set editable cells to ready for input initially
      call method g_grid->set_ready_for_input
       exporting
        i_ready_for_input = 1.
    endform.                               "CREATE_AND_INIT_ALV
    *&      Form  EXCLUDE_TB_FUNCTIONS
          text
         <--P_LT_EXCLUDE  text
    form exclude_tb_functions changing pt_exclude type ui_functions.
      data ls_exclude type ui_func.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
      append ls_exclude to pt_exclude.
    endform.                               " EXCLUDE_TB_FUNCTIONS
    *&      Form  build_data
          text
    -->  p1        text
    <--  p2        text
    form build_data.
      data: lt_sflight type table of sflight,
            ls_sflight type sflight,
            ls_celltab type lvc_s_styl,
            lt_celltab type lvc_t_styl,
            l_index type i.
      select * from sflight into table lt_sflight up to g_max rows.
      if sy-subrc ne 0.
    generate own entries if db-table is empty so that this example
    still works
        perform generate_entries changing lt_sflight.
      endif.
    *§A3.Optionally, check checkboxes initially after selecting data.
    (Omitted in this example)
      loop at lt_sflight into ls_sflight.
        move-corresponding ls_sflight to gt_outtab.
      if gt_outtab-connid eq '400'.
        gt_outtab-checkbox = 'X'.
      endif.
        append gt_outtab.
      endloop.
    §B2.After selecting data,
       assign a style for each row of your checkbox column.
    Initially, set all checkbox cells editable.
      ls_celltab-fieldname = 'CHECKBOX'.
      ls_celltab-style = cl_gui_alv_grid=>mc_style_enabled.
      loop at gt_outtab.
        l_index = sy-tabix.
        refresh lt_celltab.
        ls_celltab-fieldname = 'CHECKBOX'.
        ls_celltab-style = cl_gui_alv_grid=>mc_style_enabled.
        insert ls_celltab into table lt_celltab.
        insert lines of lt_celltab into table gt_outtab-celltab.
        modify gt_outtab index l_index.
      endloop.
    endform.                               " build_data
    *&      Form  generate_entries
          text
         <--P_LT_SLFIGHT  text
    form generate_entries changing pt_slfight type standard table.
    This form is only needed for the case that there is no
    data in database table SFLIGHT.
      data: ls_sflight type sflight,
            l_month(2) type c,
            l_day(2) type c,
            l_date(8) type c.
      ls_sflight-carrid = 'LH'.
      ls_sflight-connid = '0400'.
      ls_sflight-currency = 'DEM'.
      ls_sflight-planetype = '747-400'.
      ls_sflight-seatsmax = 660.
      do 110 times.
        ls_sflight-price = sy-index * 100.
        ls_sflight-seatsocc = 660 - sy-index * 6.
        ls_sflight-paymentsum = ls_sflight-seatsocc * ls_sflight-price.
        l_month = sy-index / 10 + 1.
        do 2 times.
          l_day = l_month + sy-index * 2.
          l_date+0(4) = '2000'.
          l_date4(2) = l_month0(2).
          l_date6(2) = l_day0(2).
          ls_sflight-fldate = l_date.
          append ls_sflight to pt_slfight.
        enddo.
      enddo.
    endform.                               " generate_entries
    *&      Form  select_all_entries
          text
         <--P_GT_OUTTAB  text
    form select_all_entries changing pt_outtab type standard table.
      data: ls_outtab type gs_outtab.
      data: l_valid type c,
            l_locked type c.
    *§A4ad. Before you (a)set, reset or (d)evaluate checkboxes,
          you must check the input cells.
    If all entries are ok, ALV transferes new values to the output
    table which you then can modify.
      call method g_grid->check_changed_data
                  importing
                     e_valid = l_valid.
      if l_valid eq 'X'.
        loop at pt_outtab into ls_outtab.
          perform check_lock using    ls_outtab
                             changing l_locked.
          if l_locked is initial
             and not ls_outtab-checkbox eq '-'.
            ls_outtab-checkbox = 'X'.
          endif.
          modify pt_outtab from ls_outtab.
        endloop.
        call method g_grid->refresh_table_display.
      endif.
    endform.                               " select_all_entries
    *&      Form  deselect_all_entries
          text
         <--P_GT_OUTTAB[]  text
    form deselect_all_entries changing pt_outtab type standard table.
      data: ls_outtab type gs_outtab.
      data: l_valid type c,
            l_locked type c.
    *§A4ad. Before you (a)set, reset or (d)evaluate checkboxes,
          you must check the input cells.
    If all entries are ok, ALV transferes new values to the output
    table which you then can modify.
      call method g_grid->check_changed_data
                  importing
                     e_valid = l_valid.
      if l_valid eq 'X'.
        loop at pt_outtab into ls_outtab.
          perform check_lock using    ls_outtab
                           changing l_locked.
          if l_locked is initial
             and not ls_outtab-checkbox eq '-'.
            ls_outtab-checkbox = ' '.
          endif.
          modify pt_outtab from ls_outtab.
        endloop.
        call method g_grid->refresh_table_display.
      endif.
    endform.                               " deselect_all_entries
    *&      Form  reset_selected_entries
          text
         <--P_GT_OUTTAB[]  text
    form reset_selected_entries changing pt_outtab type standard table.
      data: ls_outtab type gs_outtab.
      data: l_valid type c.
    *§A4b. Before you set, (b)reset or evaluate checkboxes,
         you must check the input cells.
    If all entries are ok, ALV transferes new values to the output
    table which you then can modify.
      call method g_grid->check_changed_data
                  importing
                     e_valid = l_valid.
      if l_valid eq 'X'.
        loop at pt_outtab into ls_outtab.
          if     not ls_outtab-checkbox is initial
             and not ls_outtab-checkbox eq '-'.
            clear ls_outtab.
            modify pt_outtab from ls_outtab.
          endif.
        endloop.
        call method g_grid->refresh_table_display.
      endif.
    endform.                               " reset_selected_entries
    form switch_activation changing pt_outtab type standard table.
      data: ls_outtab type gs_outtab.
      data: l_valid type c,
            lt_row_no type lvc_t_roid with header line.
    *§A4c. Before you set, reset, (c)(de)activate
         or evaluate checkboxes, you must check the input cells.
    If all entries are ok, ALV transferes new values to the output
    table which you then can modify.
      call method g_grid->check_changed_data
                  importing
                     e_valid = l_valid.
      if l_valid eq 'X'.
        call method g_grid->get_selected_rows
          importing
             et_row_no     = lt_row_no[].
        loop at lt_row_no.
           read table pt_outtab into ls_outtab index lt_row_no-row_id.
           if ls_outtab-checkbox ne '-'.
             ls_outtab-checkbox = '-'.
           else.
             ls_outtab-checkbox = ' '.
           endif.
           modify pt_outtab from ls_outtab index lt_row_no-row_id.
        endloop.
        call method g_grid->refresh_table_display.
      endif.
    endform.                               " switch_activation
    *&      Form  check_lock
          text
         -->P_LS_OUTTAB  text
         <--P_L_LOCKED  text
    form check_lock using    ps_outtab type gs_outtab
                    changing p_locked.
      data ls_celltab type lvc_s_styl.
      loop at ps_outtab-celltab into ls_celltab.
        if ls_celltab-fieldname = 'CHECKBOX'.
          if ls_celltab-style eq cl_gui_alv_grid=>mc_style_disabled.
            p_locked = 'X'.
          else.
            p_locked = space.
          endif.
        endif.
      endloop.
    endform.                               " check_lock

  • How to create command button called 'Remarks' and Check box in ALV GRID?

    Hi, Experts,
    Requirement is: in the ALVE GRID report output, user select a record by clicking the check box and pressing the button 'Remarks' it will take me into other transaction from the output list.
    Please help me out.
    Reward points.
    Sekhar

    Hi Chandra Shekar,
    Check the following sample program. 2 things to remember.
    1. Check the callback subroutine PF_STATUS_SET and create PF status for the program.and also ur REMARKS button in the application tool. Comments are made every where wherever those are needed. After creating Pf status execute the report.
    2.Once you select records by selecting checkboxes, u have to press on Refresh button( that is there on application toolbar), then only for selected records, CHECK field in the internal is updated. After that press on REMARKS button .
      REPORT zvenkat_alv_grid.
      TABLES:t001.
      "Types
      TYPES:
            BEGIN OF t_1001,
              check TYPE c,
              bukrs TYPE t001-bukrs,
              butxt TYPE t001-butxt,
              ort01 TYPE t001-ort01,
              land1 TYPE t001-land1,
            END OF t_1001.
      "Work area
      DATA:
            w_t001 TYPE t_1001.
      "Internal table
      DATA:
            i_t001 TYPE STANDARD TABLE OF t_1001.
      " ALV Declarations
    * Types Pools
      TYPE-POOLS:
         slis.
    * Types
      TYPES:
         t_fieldcat         TYPE slis_fieldcat_alv,
         t_events           TYPE slis_alv_event,
         t_layout           TYPE slis_layout_alv.
    * Workareas
      DATA:
         w_fieldcat         TYPE t_fieldcat,
         w_events           TYPE t_events,
         w_layout           TYPE t_layout.
    * Internal Tables
      DATA:
         i_fieldcat         TYPE STANDARD TABLE OF t_fieldcat,
         i_events           TYPE STANDARD TABLE OF t_events.
    *&    start of selection
      START-OF-SELECTION.
        PERFORM get_data.
    *&    end-of-selection.
      END-OF-SELECTION.
        PERFORM build_fieldcatlog.
        PERFORM build_events.
        PERFORM build_layout.
        PERFORM list_display.
    *&      Form  get_data
      FORM get_data .
        SELECT bukrs
               butxt
               ort01
               land1
          FROM t001
          INTO CORRESPONDING FIELDS OF TABLE i_t001
          UP TO 30 ROWS.
      ENDFORM.                    " get_data
    *&      Form  build_fieldcatlog
      FORM build_fieldcatlog .
        CLEAR:w_fieldcat,i_fieldcat[].
        PERFORM build_fcatalog USING:
                 'CHECK' 'I_T001' ' ',
                 'BUKRS' 'I_T001' 'BUKRS',
                 'BUTXT' 'I_T001' 'BUTXT',
                 'ORT01' 'I_T001' 'ORT01',
                 'LAND1' 'I_T001' 'LAND1'.
      ENDFORM.                    "BUILD_FIELDCATLOG
    *&      Form  BUILD_FCATALOG
      FORM build_fcatalog USING l_field l_tab l_text.
        w_fieldcat-fieldname      = l_field.
        w_fieldcat-tabname        = l_tab.
        w_fieldcat-seltext_m      = l_text.
        IF  l_field = 'CHECK'..
          w_fieldcat-checkbox = 'X'.
          w_fieldcat-edit     = 'X'.
        ENDIF.
        APPEND w_fieldcat TO i_fieldcat.
        CLEAR w_fieldcat.
      ENDFORM.                    " build_fieldcatlog
    *&      Form  build_events
    *       text
      FORM build_events.
        CLEAR :
              w_events, i_events[].
        w_events-name = 'TOP_OF_PAGE'."Event Name
        w_events-form = 'TOP_OF_PAGE'."Callback event subroutine
        APPEND w_events TO i_events.
        CLEAR  w_events.
        w_events-name = 'USER_COMMAND' .
        w_events-form = 'USER_COMMAND' .
        APPEND w_events TO i_events.
        CLEAR w_events.
        w_events-name = 'PF_STATUS_SET' .
        w_events-form = 'PF_STATUS_SET' .
        APPEND w_events TO i_events.
        CLEAR w_events.
      ENDFORM.                    "build_events
    *&      Form  build_layout
      FORM build_layout .
        w_layout-colwidth_optimize = 'X'.
        w_layout-zebra             = 'X'.
      ENDFORM.                    " build_layout
    *&      Form  list_display
      FORM list_display .
        DATA:
              l_program TYPE sy-repid.
        l_program = sy-repid.
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            i_callback_program = l_program
            is_layout          = w_layout
            it_fieldcat        = i_fieldcat
            it_events          = i_events
          TABLES
            t_outtab           = i_t001
          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
    *&      Form  top_of_page
      FORM top_of_page.
        DATA :
         li_header TYPE slis_t_listheader,
         w_header  LIKE LINE OF li_header.
        DATA:
              l_date TYPE char10.
        WRITE sy-datum TO l_date.
        w_header-typ  = 'H'.
        CONCATENATE sy-repid ':' 'From Date' l_date INTO w_header-info SEPARATED BY space.
        APPEND w_header TO li_header.
        CLEAR w_header.
        w_header-typ  = 'S'.
        w_header-info = sy-title.
        APPEND w_header TO li_header.
        CLEAR w_header.
        w_header-typ  = 'A'.
        w_header-info = sy-uname.
        APPEND w_header TO li_header.
        CLEAR w_header.
        CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
          EXPORTING
            it_list_commentary = li_header.
      ENDFORM.                    "top_of_page
    *&      Form  pf_status_set
      FORM pf_status_set    USING extab TYPE slis_t_extab.
        "Procedure to set own pf-status.
        "1.Goto Transaction code SE41
        "2.give program = SAPLKKBL and status = STANDARD_FULLSCREEN.
        "3.Click on Application toolbar STATUS button
        "4.Give ur program name Status name that is to be used in the program using SET pf-status statement
        "5.Create ur button REMARKS.
        SET PF-STATUS 'STATUS1' EXCLUDING extab.
      ENDFORM.                    "pf_status_set
    *&      Form  user_command
      FORM user_command USING ucomm LIKE sy-ucomm
                        selfield TYPE slis_selfield.
        CASE ucomm .
          WHEN 'REMARKS'."When u click on remarks button.
            LOOP AT i_t001 INTO w_t001 WHERE check = 'X'.
              WRITE :/ w_t001-bukrs, 'Checked'.
            ENDLOOP.
        ENDCASE.
      ENDFORM.                    "user_command
    I hope that it helps u .
    Regards,
    Venkat.O

Maybe you are looking for