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

ALV help needed

Former Member
0 Likes
748

Hi ,

I am trying to develop a pricing report with the respective changes between a certain period .

My issue is ...there should be a seperate heading everytime a new purchase org. is starting in the output and then the materials list.

I know how to make a simple report using one heading and then the list .

REUSE_ALV_COMMENTARY_WRITE

REUSE_ALV_GRID_DISPLAY

I have used these several time for simple reports.But this time I have to make it with seperate headings ...when there are many purchase orgs in the output.

Anyone please help me with a sample program or appropriate function module name with structure of code....

Thanks in advance,

Edited by: ramana peddu on Feb 22, 2008 11:16 PM

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
687

Why don't you use OO ALV Tree???

It's better for that kind of reports...

Greetings,

Blag.

5 REPLIES 5
Read only

former_member393151
Participant
0 Likes
687

Have you tried setting the ALV to sub-total based on the p.org? This should give you a heading line for each group.

Read only

Former Member
0 Likes
688

Why don't you use OO ALV Tree???

It's better for that kind of reports...

Greetings,

Blag.

Read only

0 Likes
687

Hi ,

I don't know how to use both the methods can you send me the sample code for it ?

Thanks

Read only

0 Likes
687

*&---------------------------------------------------------------------*
*& Report  ZDUMMY_ATG_2
*&
*&---------------------------------------------------------------------*
REPORT zdummy_atg_2.

TYPES: BEGIN OF ty_header,
       carrid TYPE spfli-carrid,
       END OF ty_header.

TYPES: BEGIN OF ty_scarr,
       carrid TYPE scarr-carrid,
       carrname TYPE scarr-carrname,
       END OF ty_scarr.

TYPES: BEGIN OF ty_tree,
       carrid TYPE spfli-carrid,
       connid TYPE spfli-connid,
       countryfr TYPE spfli-countryfr,
       cityfrom TYPE spfli-cityfrom,
       airpfrom TYPE spfli-airpfrom,
       countryto TYPE spfli-countryto,
       cityto TYPE spfli-cityto,
       END OF ty_tree.

DATA: t_spfli TYPE STANDARD TABLE OF spfli,
      w_spfli LIKE LINE OF t_spfli,
      lt_f4 TYPE lvc_t_f4 WITH HEADER LINE,
      return_tab TYPE STANDARD TABLE OF ddshretval WITH HEADER LINE,
      t_stable TYPE STANDARD TABLE OF lvc_s_stbl WITH HEADER LINE,
      t_header TYPE STANDARD TABLE OF ty_header,
      t_scarr TYPE STANDARD TABLE OF ty_scarr,
      t_tree TYPE STANDARD TABLE OF ty_tree WITH HEADER LINE.

DATA: g_alv_tree TYPE REF TO cl_gui_alv_tree,
      g_custom_container TYPE REF TO cl_gui_custom_container,
      gs_fieldcat TYPE lvc_s_fcat,
      gt_fieldcat_tree TYPE lvc_t_fcat,
      l_hierarchy_header TYPE treev_hhdr,
      it_node_key TYPE lvc_t_nkey,
      w_index TYPE sy-tabix.

DATA: ok_code LIKE sy-ucomm,
      gt_fieldcat TYPE lvc_t_fcat.

FIELD-SYMBOLS: <fs_spfli> LIKE LINE OF t_spfli,
               <fs_header> LIKE LINE OF t_header,
               <fs_scarr> LIKE LINE OF t_scarr.

*&---------------------------------------------------------------------*
*&      START-OF-SELECTION                                             *
*&---------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM cargar_datos.
  PERFORM init_tree.

  CALL SCREEN 0100.

*&---------------------------------------------------------------------*
*&      Form  CARGAR_DATOS                                             *
*&---------------------------------------------------------------------*
FORM cargar_datos.

  SELECT mandt carrid connid countryfr cityfrom
         airpfrom countryto cityto airpto
         fltime deptime arrtime distance
         distid fltype period
  INTO TABLE t_spfli
  FROM spfli.

  SELECT carrid carrname
  INTO TABLE t_scarr
  FROM scarr
  FOR ALL ENTRIES IN t_spfli
  WHERE carrid EQ t_spfli-carrid.

  DELETE ADJACENT DUPLICATES FROM t_scarr
  COMPARING carrid.

  LOOP AT t_scarr ASSIGNING <fs_scarr>.
    APPEND INITIAL LINE TO t_header
    ASSIGNING <fs_header>.
    MOVE <fs_scarr> TO <fs_header>.
  ENDLOOP.

ENDFORM.                    " CARGAR_DATOS

*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT                                    *
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'MAIN_STATUS'.
*  SET TITLEBAR 'xxx'.

ENDMODULE.                 " STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT                               *
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.

  ok_code = sy-ucomm.

  CASE ok_code.
    WHEN 'BACK' OR 'STOP' OR 'CANCEL'.
      SET SCREEN 0.
      LEAVE SCREEN.
  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

*---------------------------------------------------------------------*
*       FORM init_tree                                                *
*---------------------------------------------------------------------*
FORM init_tree.

  DATA: l_tree_container_name(30) TYPE c.

  l_tree_container_name = 'CUSTOM_ALV'.

  CREATE OBJECT g_custom_container
    EXPORTING
      container_name              = l_tree_container_name
    EXCEPTIONS
      cntl_error                  = 1
      cntl_system_error           = 2
      create_error                = 3
      lifetime_error              = 4
      lifetime_dynpro_dynpro_link = 5.

  CREATE OBJECT g_alv_tree
    EXPORTING
      parent                      = g_custom_container
      node_selection_mode         = cl_gui_column_tree=>node_sel_mode_single
      item_selection              = ''
      no_html_header              = 'X'
      no_toolbar                  = ''
    EXCEPTIONS
      cntl_error                  = 1
      cntl_system_error           = 2
      create_error                = 3
      lifetime_error              = 4
      illegal_node_selection_mode = 5
      failed                      = 6
      illegal_column_name         = 7.

  PERFORM fill_catalog_tree.
  PERFORM build_hierarchy_header CHANGING l_hierarchy_header.

  CALL METHOD g_alv_tree->set_table_for_first_display
    EXPORTING
      is_hierarchy_header = l_hierarchy_header
    CHANGING
      it_outtab           = t_tree[]
      it_fieldcatalog     = gt_fieldcat_tree.

  PERFORM create_hierarchy.

ENDFORM.                    "INIT_TREE

*&---------------------------------------------------------------------*
*&      Form  FILL_CATALOG_TREE                                        *
*&---------------------------------------------------------------------*
FORM fill_catalog_tree.

  DATA: gs_fieldcat TYPE lvc_s_fcat.

  CLEAR gs_fieldcat.
  gs_fieldcat-col_pos   = 1.
  gs_fieldcat-fieldname = 'CARRID'.
  gs_fieldcat-scrtext_s = 'Compañía'.
  gs_fieldcat-tabname   = 'T_SPFLI'.
  gs_fieldcat-edit      = 'X'.
  gs_fieldcat-f4availabl = 'X'.
  gs_fieldcat-outputlen = '8'.
  APPEND gs_fieldcat TO gt_fieldcat_tree.

  CLEAR gs_fieldcat.
  gs_fieldcat-col_pos   = 2.
  gs_fieldcat-fieldname = 'CONNID'.
  gs_fieldcat-scrtext_s = 'Conexión'.
  gs_fieldcat-tabname   = 'T_SPFLI'.
  gs_fieldcat-edit      = 'X'.
  gs_fieldcat-outputlen = '8'.
  APPEND gs_fieldcat TO gt_fieldcat_tree.

  CLEAR gs_fieldcat.
  gs_fieldcat-col_pos   = 3.
  gs_fieldcat-fieldname = 'COUNTRYFR'.
  gs_fieldcat-scrtext_s = 'País'.
  gs_fieldcat-tabname   = 'T_SPFLI'.
  gs_fieldcat-edit      = 'X'.
  gs_fieldcat-outputlen = '4'.
  APPEND gs_fieldcat TO gt_fieldcat_tree.

  CLEAR gs_fieldcat.
  gs_fieldcat-col_pos   = 4.
  gs_fieldcat-fieldname = 'CITYFROM'.
  gs_fieldcat-scrtext_s = 'Ciudad Salida'.
  gs_fieldcat-tabname   = 'T_SPFLI'.
  gs_fieldcat-edit      = space.
  gs_fieldcat-outputlen = '20'.
  APPEND gs_fieldcat TO gt_fieldcat_tree.

  CLEAR gs_fieldcat.
  gs_fieldcat-col_pos   = 5.
  gs_fieldcat-fieldname = 'AIRPFROM'.
  gs_fieldcat-scrtext_s = 'Arp. Salida'.
  gs_fieldcat-tabname   = 'T_SPFLI'.
  gs_fieldcat-edit      = 'X'.
  gs_fieldcat-outputlen = '10'.
  APPEND gs_fieldcat TO gt_fieldcat_tree.

  CLEAR gs_fieldcat.
  gs_fieldcat-col_pos   = 6.
  gs_fieldcat-fieldname = 'COUNTRYTO'.
  gs_fieldcat-scrtext_s = 'País'.
  gs_fieldcat-tabname   = 'T_SPFLI'.
  gs_fieldcat-edit      = 'X'.
  gs_fieldcat-outputlen = '4'.
  APPEND gs_fieldcat TO gt_fieldcat_tree.

  CLEAR gs_fieldcat.
  gs_fieldcat-col_pos   = 7.
  gs_fieldcat-fieldname = 'CITYTO'.
  gs_fieldcat-scrtext_s = 'Ciudad Llegada'.
  gs_fieldcat-tabname   = 'T_SPFLI'.
  gs_fieldcat-edit      = space.
  gs_fieldcat-outputlen = '20'.
  APPEND gs_fieldcat TO gt_fieldcat_tree.

ENDFORM.                    " FILL_CATALOG_TREE

*---------------------------------------------------------------------*
*       FORM build_hierarchy_header                                   *
*---------------------------------------------------------------------*
FORM build_hierarchy_header CHANGING
                               p_hierarchy_header TYPE treev_hhdr.

  CLEAR p_hierarchy_header.
  p_hierarchy_header-heading = 'Código'(300).
  p_hierarchy_header-width = 60.
  p_hierarchy_header-width_pix = ' '.

ENDFORM.                    "BUILD_HIERARCHY_HEADER

*---------------------------------------------------------------------*
*       FORM create_hierarchy                                         *
*---------------------------------------------------------------------*
FORM create_hierarchy.

  DATA: l_root_key TYPE lvc_nkey,
        l_next_key TYPE lvc_nkey,
        l_last_key TYPE lvc_nkey,
        header TYPE string,
        w_menge_text(13) TYPE c.

  CLEAR l_root_key.

  LOOP AT t_header ASSIGNING <fs_header>.
    READ TABLE t_scarr WITH KEY carrid = <fs_header>-carrid
    ASSIGNING <fs_scarr>.
    IF sy-subrc EQ 0.
      header = <fs_scarr>-carrname.
    ENDIF.
    CLEAR l_root_key.
    CLEAR l_next_key.
    PERFORM add_node USING header l_root_key
                     CHANGING l_next_key.
    LOOP AT t_spfli ASSIGNING <fs_spfli>
    WHERE carrid EQ <fs_header>-carrid.

      MOVE-CORRESPONDING <fs_spfli> TO t_tree.

      PERFORM add_leaf USING t_tree l_next_key
                       CHANGING l_last_key.
    ENDLOOP.
  ENDLOOP.

  CALL METHOD g_alv_tree->frontend_update.

ENDFORM.                    "CREATE_HIERARCHY

*---------------------------------------------------------------------*
*       FORM ADD_NODE                                                 *
*---------------------------------------------------------------------*
FORM add_node USING l_name l_root_key
              CHANGING l_next_key.

  DATA: l_node_text TYPE lvc_value,
        ls_tree TYPE ty_tree.

  l_node_text =  l_name.
  CALL METHOD g_alv_tree->add_node
    EXPORTING
      i_relat_node_key = l_root_key
      i_relationship   = cl_gui_column_tree=>relat_last_child
      i_node_text      = l_node_text
      is_outtab_line   = ls_tree
    IMPORTING
      e_new_node_key   = l_next_key.

ENDFORM.                    "ADD_NODE

*---------------------------------------------------------------------*
*       FORM ADD_LEAF                                                 *
*---------------------------------------------------------------------*
FORM add_leaf USING l_tree TYPE ty_tree
                    l_next_key
              CHANGING l_last_key.

  CALL METHOD g_alv_tree->add_node
    EXPORTING
      i_relat_node_key = l_next_key
      i_relationship   = cl_gui_column_tree=>relat_last_child
      is_outtab_line   = t_tree
    IMPORTING
      e_new_node_key   = l_last_key.

ENDFORM.                    "ADD_LEAF

Greetings,

Blag.

Read only

0 Likes
687

Thank you very much