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

Dynamic Internal Table using row colored OO ALV

Former Member
0 Likes
2,024

Hi friends,

I need a complex alv grid example. It is contain Dynamic Internal table, OO ALV and colored rows.

Does anybody have like this example? I have searched it on SDN but couldn't find an answer like that.

Thank you

Ps. Useful help Point will be rewarded

9 REPLIES 9
Read only

Former Member
0 Likes
1,340

Hi,

Refer this:

BCALV_VERI_FULLSCREEN_OF01

Regards,

Shiva Kumar

Read only

Former Member
0 Likes
1,340

Check the sample coding...

REPORT  ztest_dynamic_code.

DATA: BEGIN OF it_tab OCCURS 0,
       abc(3),
       xyz(3),
       pqr(3),
       item,
     END OF it_tab.

DATA: it_fieldcatalog  TYPE lvc_t_fcat,
wa_fieldcat TYPE lvc_s_fcat.


DATA:  i_dyntab  TYPE REF TO data. " To create dyn.Itab
DATA:
       w_dref TYPE REF TO data,
       ind(2) TYPE n,
       w_data TYPE REF TO data,
       w_text(5),
       w_grid TYPE REF TO cl_gui_alv_grid.
DATA: grid TYPE REF TO cl_gui_alv_grid,
      cont TYPE REF TO cl_gui_custom_container.

FIELD-SYMBOLS: <t_itab> TYPE STANDARD TABLE,
               <fs_wa> TYPE ANY,<fs> TYPE ANY.
DATA: in TYPE i.


*Data population

it_tab-abc = 'ABC'.
it_tab-xyz = 'XYZ'.
it_tab-pqr = 'PQR'.
DO 9 TIMES.
  in = in + 1.
  it_tab-item = in.
  APPEND it_tab.
ENDDO.

*Field cat population.
wa_fieldcat-fieldname = 'ABC'.
wa_fieldcat-outputlen = 3.
wa_fieldcat-coltext = 'abc'.
APPEND wa_fieldcat TO it_fieldcatalog.

wa_fieldcat-fieldname = 'XYZ'.
wa_fieldcat-outputlen = 3.
wa_fieldcat-coltext = 'XYZ'.
APPEND wa_fieldcat TO it_fieldcatalog.

wa_fieldcat-fieldname = 'PQR'.
wa_fieldcat-outputlen = 3.
wa_fieldcat-coltext = 'pqr'.
APPEND wa_fieldcat TO it_fieldcatalog.

wa_fieldcat-fieldname = 'COLOR'.
wa_fieldcat-outputlen = 4.
wa_fieldcat-coltext = 'col'.
APPEND wa_fieldcat TO it_fieldcatalog.

ind = 1.
DO 9 TIMES.
  CONCATENATE 'ITEM' ind INTO wa_fieldcat-fieldname.
  CONCATENATE 'ITEM' ind INTO wa_fieldcat-coltext.
  wa_fieldcat-outputlen = 1.
  APPEND wa_fieldcat TO it_fieldcatalog.
  CLEAR wa_fieldcat .
  ind  = ind + 1.
ENDDO.


*-Dynamic Table creation
CALL METHOD cl_alv_table_create=>create_dynamic_table
  EXPORTING
    it_fieldcatalog = it_fieldcatalog
  IMPORTING
    ep_table        = i_dyntab.

ASSIGN i_dyntab->* TO <t_itab>.
CREATE DATA w_data LIKE LINE OF <t_itab>.
ASSIGN w_data->* TO <fs_wa>.

SORT it_tab BY abc xyz pqr.
CLEAR ind.
ind = 4.

*-Final Internal table as per Requirement
do 10 times.
LOOP AT it_tab.

  ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.
  <fs> = it_tab-abc.
  ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.
  <fs> = it_tab-xyz.
  UNASSIGN <fs>.
  ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.
  <fs> = it_tab-pqr.
  UNASSIGN <fs>.

  ASSIGN COMPONENT 4 OF STRUCTURE <fs_wa> TO <fs>.
*-You can assign the color conditionally also..
  <fs> = 'C400'.
  UNASSIGN <fs>.


  ASSIGN COMPONENT ind OF STRUCTURE <fs_wa> TO <fs>.

  <fs> = it_tab-item.
  UNASSIGN <fs>.
  ind = ind + 1.

  AT END OF pqr.

    APPEND <fs_wa> TO <t_itab>.
*    <fs_wa>-color = 'C600'.
    ind = 4.
    CLEAR <fs_wa>.

  ENDAT.

ENDLOOP.
enddo.
*-Display

CALL SCREEN 100.


*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  DATA: layout TYPE lvc_s_layo.

  CREATE OBJECT cont
     EXPORTING
       container_name              = 'CONT'
     EXCEPTIONS
       cntl_error                  = 1
       cntl_system_error           = 2
       create_error                = 3
       lifetime_error              = 4
       lifetime_dynpro_dynpro_link = 5
       OTHERS                      = 6
       .
  IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CREATE OBJECT grid
    EXPORTING
      i_parent          = cont
    EXCEPTIONS
      error_cntl_create = 1
      error_cntl_init   = 2
      error_cntl_link   = 3
      error_dp_create   = 4
      OTHERS            = 5
      .
  IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  layout-INFO_FNAME = 'COLOR'.
  grid->set_table_for_first_display(
     EXPORTING
       is_layout                      =  layout
     CHANGING
       it_outtab                     = <t_itab>
       it_fieldcatalog               = it_fieldcatalog
   EXCEPTIONS
     invalid_parameter_combination = 1
     program_error                 = 2
     too_many_lines                = 3
          ).
  IF sy-subrc  NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.


ENDMODULE.                 " STATUS_0100  OUTPUT

Read only

0 Likes
1,340

I have created Screen 100 and its flow logic is

PROCESS BEFORE OUTPUT.

MODULE STATUS_0100.

*

PROCESS AFTER INPUT.

  • MODULE USER_COMMAND_0100.

But I couldn't see any result. I have seen only blank screen? What is wrong I am doing?

Read only

0 Likes
1,340

in the screen create the Custom control. and

name it 'CONT'

then check it, create pf-status also in PBO module

Read only

0 Likes
1,340

Ok I can see result now but I want to draw one of row with different color but it couldn't paint different colors

my piece of code

 ASSIGN COMPONENT 4 OF STRUCTURE <fs_wa> TO <fs>.
*-You can assign the color conditionally also..
  if sy-tabix = '3'.
  <fs> = 'C400'.
  else.
    <fs> = 'C300'.
  endif.
  UNASSIGN <fs>.

Read only

0 Likes
1,340

the program which i am doing is having different logic. so don;t confuse with that.

use sy-index instead of sy-tabix.

ASSIGN COMPONENT 4 OF STRUCTURE <fs_wa> TO <fs>.
*-You can assign the color conditionally also..
  if sy-index = 3.
  <fs> = 'C400'.
  else.
    <fs> = 'C300'.
  endif.
  UNASSIGN <fs>.

Read only

0 Likes
1,340

Thanks you for this example, it's working perfectly....

Read only

Former Member
0 Likes
1,340

This message was moderated.