Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Check Boxes in ALV Grid

Former Member
0 Kudos

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

4 REPLIES 4

former_member188685
Active Contributor
0 Kudos

Check this sample code..it is using LVC function.not much difference when using the LVC or GRID function.

REPORT  ztest_lvc_fm.

TYPE-POOLS: slis.

DATA: x_fieldcat TYPE lvc_s_fcat,
it_fieldcat TYPE lvc_t_fcat.


DATA: BEGIN OF itab OCCURS 0,
vbeln LIKE vbak-vbeln,
posnr LIKE vbap-posnr,
chk(1),
color(4),
END OF itab.

SELECT vbeln
posnr
FROM vbap
UP TO 20 ROWS
INTO TABLE itab.

x_fieldcat-fieldname = 'CHK'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = 1.
x_fieldcat-edit = 'X'.
x_fieldcat-checkbox = 'X'.
APPEND x_fieldcat TO it_fieldcat.
CLEAR x_fieldcat.

x_fieldcat-fieldname = 'VBELN'.
x_fieldcat-coltext = 'VBELN'.
x_fieldcat-hotspot = 'X'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = 2.
APPEND x_fieldcat TO it_fieldcat.
CLEAR x_fieldcat.

x_fieldcat-fieldname = 'POSNR'.
x_fieldcat-coltext = 'POSNR'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-edit = 'X'.
x_fieldcat-col_pos = 3.
APPEND x_fieldcat TO it_fieldcat.
CLEAR x_fieldcat.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  EXPORTING
    i_callback_program      = sy-repid
    i_callback_user_command = 'USER_COMMAND'
    it_fieldcat_lvc         = it_fieldcat
  TABLES
    t_outtab                = itab
  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  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.

  DATA: gd_repid LIKE sy-repid, "Exists
  ref_grid TYPE REF TO cl_gui_alv_grid.
  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.

  "now check the entries in ALV table
  BREAK-POINT.

ENDFORM. "USER_COMMAND

Former Member
0 Kudos

hiii

refer to following link

regards

twinkal

Former Member
0 Kudos

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

Former Member
0 Kudos

REPORT Z_TEST7 .

type-pools: slis.

*Table declaration

tables: vbak,vbap.

*internal table

data: begin of i_sales occurs 0,

vbeln like vbak-vbeln,

erdat like vbak-erdat,

audat like vbak-audat,

kunnr like vbak-kunnr,

vkorg like vbak-vkorg,

matnr like vbap-matnr,

netpr like vbap-netpr,

check type c, "checkbox

end of i_sales.

data: begin of i_final occurs 0,

vbeln like vbak-vbeln,

erdat like vbak-erdat,

audat like vbak-audat,

kunnr like vbak-kunnr,

vkorg like vbak-vkorg,

matnr like vbap-matnr,

netpr like vbap-netpr,

end of i_final.

data: v_fieldcat type slis_fieldcat_alv,

gt_fieldcat type slis_t_fieldcat_alv,

gt_layout type slis_layout_alv,

gt_sort type slis_sortinfo_alv,

fieldcat like line of gt_fieldcat.

*Selection screen

parameters: p_vkorg like vbak-vkorg.

select-options: s_vbeln for vbak-vbeln.

*start of selection.

start-of-selection.

perform get_data.

perform fill_fieldcatalog.

perform write_data.

*----


  • get data

*----


FORM get_data .

select a~vbeln

a~erdat

a~audat

a~kunnr

a~vkorg

b~matnr

b~netpr

into corresponding fields of table i_sales

from vbak as a inner join vbap as b on avbeln = bvbeln

where a~vkorg = p_vkorg

and a~vbeln in s_vbeln.

ENDFORM. " get_data

*----


  • write_data

*----


FORM write_data .

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = sy-repid

I_CALLBACK_PF_STATUS_SET = 'GUI_SET'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

IS_LAYOUT = gt_layout

IT_FIELDCAT = gt_fieldcat

TABLES

T_OUTTAB = i_sales .

ENDFORM. " write_data

*----


  • fill catalog

*----


FORM fill_fieldcatalog .

sort i_sales by vbeln.

clear v_fieldcat.

*for check box

v_fieldcat-col_pos = 1.

v_fieldcat-fieldname = 'CHECK'.

v_fieldcat-seltext_m = 'chek'.

v_fieldcat-checkbox = 'X'.

v_fieldcat-input = 'X'.

v_fieldcat-edit = 'X'.

append v_fieldcat to gt_fieldcat.

clear v_fieldcat.

v_fieldcat-col_pos = 2.

v_fieldcat-fieldname = 'VBELN'.

v_fieldcat-seltext_m = 'Sales Document'.

append v_fieldcat to gt_fieldcat.

clear v_fieldcat.

v_fieldcat-col_pos = 3.

v_fieldcat-fieldname = 'ERDAT'.

v_fieldcat-seltext_m = 'Creation Date'.

append v_fieldcat to gt_fieldcat.

clear v_fieldcat.

v_fieldcat-col_pos = 4.

v_fieldcat-fieldname = 'AUDAT'.

v_fieldcat-seltext_m = 'Document Date'.

append v_fieldcat to gt_fieldcat.

clear v_fieldcat.

v_fieldcat-col_pos = 5.

v_fieldcat-fieldname = 'KUNNR'.

v_fieldcat-seltext_m = 'Customer'.

append v_fieldcat to gt_fieldcat.

clear v_fieldcat.

v_fieldcat-col_pos = 6.

v_fieldcat-fieldname = 'VKORG'.

v_fieldcat-seltext_m = 'Sales Organization'.

append v_fieldcat to gt_fieldcat.

clear v_fieldcat.

v_fieldcat-col_pos = 7.

v_fieldcat-fieldname = 'MATNR'.

v_fieldcat-seltext_m = 'Material'.

append v_fieldcat to gt_fieldcat.

clear v_fieldcat.

v_fieldcat-col_pos = 8.

v_fieldcat-fieldname = 'NETPR'.

v_fieldcat-seltext_m = 'Net Value'.

append v_fieldcat to gt_fieldcat.

clear v_fieldcat.

endform.

&----


*& Form GUI_SET

&----


FORM GUI_SET USING RT_EXTAB TYPE SLIS_T_EXTAB .

SET PF-STATUS 'GETDATA' .

ENDFORM. "GUI_SET

&----


*& Form USER_COMMAND

&----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

R_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN 'DATA'.

CLEAR I_FINAL.

CLEAR I_SALES.

REFRESH I_FINAL.

LOOP AT i_sales .

if i_sales-check = 'X'.

i_final-vbeln = i_sales-vbeln.

i_final-erdat = i_sales-erdat.

i_final-audat = i_sales-audat.

i_final-kunnr = i_sales-kunnr.

i_final-vkorg = i_sales-vkorg.

i_final-matnr = i_sales-matnr.

i_final-netpr = i_sales-netpr.

IF NOT I_FINAL-VBELN IS INITIAL.

append i_final .

ENDIF.

endif.

ENDLOOP.

PERFORM final_display.

endcase.

ENDFORM. "USER_COMMAND

&----


*& Form final_display

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form final_display .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = sy-repid

IS_LAYOUT = gt_LAYOUT

IT_FIELDCAT = gt_fieldcat

TABLES

t_outtab = i_final .

endform. " final_display