Application Development and Automation 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: 
Read only

program to generate ALV (using 3 tables)

Former Member
0 Likes
864

Hello ppl,

I need a good and complete example of ALV, which follows good amount of standard conventions.

the details of fields and tables are as follows:-

table: KNA1

fields: KUNNR (Customer Number 1)

ORT01 (City)

PSTLZ (Postal Code)

REGIO (Region (State, Province, County)

table: KNB1

fields:BUKRS(Company Code)

ZTERM(Terms of payment key)

table: KNVP

fields:VKORG(Sales Organization)

VTWEG(Distribution Channel)

SPART(Division)

KUNN2(Customer number of business partner)

LIFNR(Account Number of Vendor or Creditor)

1 ACCEPTED SOLUTION
Read only

RaymondGiuseppi
Active Contributor
0 Likes
735

Go to this site [ALVrobot|http://www.alvrobot.com.ar/home.php]

Regards

4 REPLIES 4
Read only

RaymondGiuseppi
Active Contributor
0 Likes
736

Go to this site [ALVrobot|http://www.alvrobot.com.ar/home.php]

Regards

Read only

uwe_schieferstein
Active Contributor
0 Likes
735

Hello Faisal

Have a look at my sample reports ZUS_SDN_TWO_ALV_GRIDS and ZUS_SDN_THREE_ALV_GRIDS in threads:

Regards

Uwe

Read only

Former Member
0 Likes
735

Hi friend! You can take as a sample the standard program BCALV_GRID_01. Take a look on it's code, it'll surely help you!


program bcalvc_print.
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
* Purpose:
* ~~~~~~~~
* This program illustrates how the events for print processing
*   - PRINT_TOP_OF_PAGE
*   - PRINT_END_OF_PAGE
*   - PRINT_TOP_OF_LIST
*   - PRINT_END_OF_LIST
*
* are handled. The corresponding handler methods control the
* appearance of the list printed.
*-----------------------------------------------------------------
* To check program behavior
* ~~~~~~~~~~~~~~~~~~~~~~~~~
* Print the list shown (It has got only three pages).
* Remark: If you choose "Druckansicht" (preview?!) before printing,
*         the output for event PRINT_END_OF_PAGE is left out due
*         to scrolling.
*         Create a spool entry and preview your printout by calling
*         TA sp01 to reduce paper output please.
*-----------------------------------------------------------------
* Essential steps (Search for '§')
* ~~~~~~~~~~~~~~~
* 1. Define a (local) class for event handling
* 2. Define a method for each print event you need.
* 3. Implement your event handler methods. Use WRITE to provide output.
* 4. Link used print events and event handler methods.
* 5. In case of PRINT_END_OF_PAGE, you must set 'reservelns' to
*    the number of reserved lines at the end of a page.
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

*********
* Predefine a local class for event handling to allow the
* declaration of a reference variable.
class lcl_event_receiver definition deferred.
*
*********


data: ok_code like sy-ucomm,
      g_max type i value 100,
      gt_sflight type table of sflight,
      g_repid like sy-repid,
      gs_print    type lvc_s_prnt,
      gs_layout   type lvc_s_layo,
      mycontainer type scrfname value 'BCALVC_EVENT1_CONT1',
* reference to custom container: neccessary to bind ALV Control
  custom_container type ref to cl_gui_custom_container,
      grid1  type ref to cl_gui_alv_grid,
      event_receiver type ref to lcl_event_receiver.


* § Step 1. Define a (local) class for event handling
****************************************************************
* LOCAL CLASSES: Definition
****************************************************************
*===============================================================
* class c_event_receiver: local class to handle print events...
*    - PRINT_TOP_OF_PAGE (page header)
*    - PRINT_END_OF_PAGE (page footer)
*    - PRINT_TOP_OF_LIST (list header)
*    - PRINT_END_OF_LIST (list footer)
*
* Definition:
* ~~~~~~~~~~~
class lcl_event_receiver definition.

  public section.
* § 2. Define a method for each print event you need.
    methods:
    handle_top_of_page
        for event print_top_of_page of cl_gui_alv_grid,

    handle_end_of_page
        for event print_end_of_page of cl_gui_alv_grid,

    handle_top_of_list
        for event print_top_of_list of cl_gui_alv_grid,

    handle_end_of_list
        for event print_end_of_list of cl_gui_alv_grid.

  private section.
    data: pagenum type i.

endclass.
*
* c_event_receiver (Definition)
*===============================================================


****************************************************************
* LOCAL CLASSES: Implementation
****************************************************************
*===============================================================
* class c_event_receiver (Implementation)
*
class lcl_event_receiver implementation.
*§ 3. Implement your event handler methods. Use WRITE to provide output.
  method handle_top_of_page.
    data: tablename(30) type c.
    perform get_tablename changing tablename.
    write: /,'Event: PRINT_TOP_OF_PAGE'(001),
             'Table: '(002),tablename.

  endmethod.                           "handle_top_of_page
*-------------------------------------------
  method handle_end_of_page.
    data: tablename(30) type c.

    perform get_tablename changing tablename.
    add 1 to pagenum.
    write: /,'Event: PRINT_END_OF_PAGE'(003),
             text-002,tablename,
             'Number of pages so far: '(004), pagenum.

  endmethod.                           "handle_end_of_page
*-------------------------------------------
  method handle_top_of_list.
    data: tablename(30) type c.
    clear pagenum.
    perform get_tablename changing tablename.
    write: /,'Event: PRINT_TOP_OF_LIST'(005),
             text-002,tablename.

  endmethod.                           "handle_top_of_list
*-------------------------------------------
  method handle_end_of_list.
    data: tablename(30) type c.
    perform get_tablename changing tablename.
    write: /,'Event: PRINT_END_OF_LIST'(006),
             text-002,tablename.

  endmethod.                           "handle_end_of_list
*-------------------------------------------
endclass.
*
* c_event_receiver (Implementation)
*===================================================================

start-of-selection.
  select * from sflight into table gt_sflight up to g_max rows.
*
end-of-selection.
  g_repid = sy-repid.
  call screen 100.

*---------------------------------------------------------------------*
*       MODULE PBO OUTPUT                                             *
*---------------------------------------------------------------------*
module pbo output.
  set pf-status 'MAIN100'.
  set titlebar 'MAIN100'.
  if custom_container is initial.
* create a custom container control for our ALV Control
    create object custom_container
        exporting
            container_name = mycontainer
        exceptions
            cntl_error = 1
            cntl_system_error = 2
            create_error = 3
            lifetime_error = 4
            lifetime_dynpro_dynpro_link = 5.
    if sy-subrc ne 0.
* add your handling, for example
      call function 'POPUP_TO_INFORM'
           exporting
                titel = g_repid
                txt2  = sy-subrc
                txt1  = 'The control could not be created'(010).
    endif.
* create an instance of alv control
    create object grid1
          exporting i_parent = custom_container.
*
* Set a titlebar for the grid control
*
    gs_layout-grid_title = 'Flights'(100).

* § 5. In case of PRINT_END_OF_PAGE, you must set 'reservelns' to
*      the number of reserved lines at the end of a page.
*
* reserve two lines for the PRINT_END_OF_PAGE event
*
    gs_print-reservelns = 2.


********
* ->Create Object to receive events and link them to handler methods.
* When the ALV Control raises the event for the specified instance
* the corresponding method is automatically called.
*

********

* § 4. Link used print events and event handler methods.
    create object event_receiver.
    set handler event_receiver->handle_top_of_list for grid1.
    set handler event_receiver->handle_top_of_page for grid1.
    set handler event_receiver->handle_end_of_list for grid1.
    set handler event_receiver->handle_end_of_page for grid1.
*
  call method grid1->set_table_for_first_display
         exporting i_structure_name = 'SFLIGHT'
                   is_print         = gs_print
                   is_layout        = gs_layout
         changing  it_outtab        = gt_sflight.

  endif.
* Controls are not integrated into the TAB-Order
* Call "set_focus" if you want to make sure that 'the cursor'
* is active in your control.
  call method cl_gui_control=>set_focus exporting control = grid1.

* Control Framework flushes at the end of PBO automatically!
endmodule.
*---------------------------------------------------------------------*
*       MODULE PAI INPUT                                              *
*---------------------------------------------------------------------*
module pai input.
  case ok_code.
    when 'EXIT'.
      perform exit_program.
  endcase.
  clear ok_code.
endmodule.
*---------------------------------------------------------------------*
*       FORM EXIT_PROGRAM                                             *
*---------------------------------------------------------------------*
form exit_program.
  call method custom_container->free.
  call method cl_gui_cfw=>flush.
  if sy-subrc ne 0.
* add your handling, for example
    call function 'POPUP_TO_INFORM'
         exporting
              titel = g_repid
              txt2  = sy-subrc
              txt1  = 'Error in Flush'(009).
  endif.
  leave program.
endform.
*&---------------------------------------------------------------------*
*&      Form  GET_TABLENAME
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_TABLENAME  text
*----------------------------------------------------------------------*
form get_tablename changing p_tablename.
  data: lt_fieldcat type standard table of lvc_s_fcat,
        ls_fieldcat type lvc_s_fcat.

  call method grid1->get_frontend_fieldcatalog
                importing et_fieldcatalog = lt_fieldcat.


  call method cl_gui_cfw=>flush.
  if sy-subrc <> 0.
    p_tablename = 'No tablename in fieldcatalog!'(008).
    call function 'POPUP_TO_INFORM'
         exporting
              titel = g_repid
              txt2  = p_tablename
              txt1  = 'Error in Flush'(011).
  else.
    read table lt_fieldcat index 1 into ls_fieldcat.
    p_tablename = ls_fieldcat-ref_table.
  endif.

endform.                               " GET_TABLENAME

Read only

Former Member
0 Likes
735