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: 

Is it possible to create ALV grid for dynamic column but same internal table?

sivakumar_mobility
Active Participant
0 Kudos


Dear scn members,

I am stucking to create alv report  for dynamic column.

I tried below way, but its not working.can anyone help me on this.

   CLEAR LS_FIELDCAT.
   if it_FINAL-W_4015 eq '0.00'.


  LS_FIELDCAT-ROW_POS     = '1'.
  LS_FIELDCAT-COL_POS     = '9'.

  LS_FIELDCAT-FIELDNAME   = 'W_4016'.
  LS_FIELDCAT-KEY         = ''.
  LS_FIELDCAT-OUTPUTLEN   = '15'.
  LS_FIELDCAT-DO_SUM       = 'X'.
  LS_FIELDCAT-SELTEXT_L 'HRA'.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.
  CLEAR LS_FIELDCAT .

else.
  LS_FIELDCAT-ROW_POS     = '1'.
  LS_FIELDCAT-COL_POS     = '9'.
   LS_FIELDCAT-FIELDNAME   = 'W_4027'.
  LS_FIELDCAT-KEY         = ''.
  LS_FIELDCAT-OUTPUTLEN   = '15'.
  LS_FIELDCAT-DO_SUM       = 'X'.
  LS_FIELDCAT-SELTEXT_L 'HRA'.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.
  CLEAR LS_FIELDCAT .
  endif.

  CLEAR LS_FIELDCAT.

Note:

I am using static internal table but field only dynamic which means one field is null then i am picking another field from same internal table.

with regards,

siva.

5 REPLIES 5

nishantbansal91
Active Contributor
0 Kudos

Hi Siva,

Yes it works.


What the error message? can you please share the same.

Thanks

Nishant

0 Kudos

    Hi nishant,

i tried below code. ITs not shownig any error.But while display output that alternate field is not coming . can u explain to me?

below is my alv code.

PERFORM CREATE_FIELDCAT1.
  DATA: SORT1 TYPE SLIS_SORTINFO_ALV,
        IT_SORT1 TYPE  SLIS_T_SORTINFO_ALV.


  L_LAYOUT-TOTALS_TEXT = 'TOTAL'.
*l_layout-SUBTOTALS_TEXT = 'SUBTOTAL'.


  PERFORM F029_EVENTTAB_BUILD USING IT_EVENTS[].
  PERFORM F029_COMMENT_BUILD  USING IT_TOP_OF_PAGE[].
  WA_LAYOUT-ZEBRA = 'X'.
  WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_BACKGROUND_ID    = 'ALV_BACKGROUND'
      I_CALLBACK_PROGRAM = SY-REPID
*     i_callback_program = sy-cprog
      I_GRID_TITLE       = 'Pay Register Report'
      IS_LAYOUT          = L_LAYOUT
      IT_FIELDCAT        = GT_FIELDCAT[]
      IT_EVENTS          = IT_EVENTS
      IT_SORT            = IT_SORT1
      I_SAVE             = 'X'
      I_DEFAULT          = 'X'
      IS_VARIANT         = WK_VARIANT
    TABLES
      T_OUTTAB           = IT_FINAL
    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 ALV  USING VALUE(P_0994) VALUE(P_0995) VALUE(P_0996)
VALUE(P_0997)
VALUE(P_0998) VALUE(P_0999).
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       P_0994.
  WA_FIELDCAT-FIELDNAME     P_0995.
  WA_FIELDCAT-TABNAME       P_0996.
  WA_FIELDCAT-REPTEXT_DDIC  P_0997.
  WA_FIELDCAT-OUTPUTLEN     P_0998.
  WA_FIELDCAT-DO_SUM        P_0999.
  APPEND WA_FIELDCAT TO  GT_FIELDCAT.
ENDFORM.                    "ALV

* To Set the Title for the ALV Grid Display
FORM TEST.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY = IT_TOP_OF_PAGE[]
      I_LOGO             = 'BRITANNIA_LOGO'.
ENDFORM.                    "**** TOP_OF_PAGE ****

*      Form  F029_EVENTTAB_BUILD

FORM F029_EVENTTAB_BUILD USING IT_EVENTS TYPE SLIS_T_EVENT.
  DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      I_LIST_TYPE = 0
    IMPORTING
      ET_EVENTS   = IT_EVENTS.

  READ TABLE IT_EVENTS WITH KEY NAME SLIS_EV_TOP_OF_PAGE
                     INTO LS_EVENT.
  IF SY-SUBRC = 0.
    MOVE SLIS_EV_TOP_OF_PAGE TO LS_EVENT-NAME.
    MOVE 'TEST' TO LS_EVENT-FORM.
    APPEND LS_EVENT TO IT_EVENTS.
  ENDIF.

ENDFORM.                    "**** F029_EVENTTAB_BUILD ****

*To Display the Title for the ALV Grid Display
FORM F029_COMMENT_BUILD USING IT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.

  DATA : I_T549T  TYPE STANDARD TABLE OF T549T ,
         WA_T549T TYPE T549T .
  DATA : L_I_HEADER  TYPE SLIS_T_LISTHEADER,
         L_WA_HEADER TYPE SLIS_LISTHEADER.
  DATA : VAR(45) TYPE C.
  DATA : D_DATE(40TYPE N.
  DATA : A_DATE(18) TYPE N,
         B_DATE(18) TYPE N.
  DATA : BUKRS    TYPE BUKRS.
  DATA : LV_BUKRS(70) TYPE C.
  DATA : BUKRS_TEXT TYPE BUTXT.

  SELECT SINGLE BUKRS
                FROM PA0001
                INTO BUKRS
                WHERE BUKRS = PNPBUKRS-LOW.

*_ Company Name
  CALL FUNCTION 'HRWPC_RFC_BUKRS_TEXT_GET'
    EXPORTING
      BUKRS      = BUKRS
    IMPORTING
      BUKRS_TEXT = BUKRS_TEXT.

  CLEAR LV_BUKRS.
  LV_BUKRS = BUKRS.


  SELECT *
          INTO CORRESPONDING FIELDS OF WA_T549T
                        FROM T549T
                     WHERE SPRSL = 'EN' AND
                           ABKRS IN PNPABKRS.
  ENDSELECT.


  SELECT SINGLE BTEXT
           FROM T001P
           INTO WA_FINAL-BTEXT
           WHERE BTRTL = WA_FINAL-BTRTL.


*Display Text of each Payrol Area
  CONCATENATE 'Payroll Area : ' WA_T549T-ATEXT INTO
  L_WA_HEADER-INFO SEPARATED BY SPACE.

  VAR = L_WA_HEADER-INFO.

  WRITE PN-BEGDA TO A_DATE MM/DD/YYYY.
  WRITE PN-ENDDA TO B_DATE MM/DD/YYYY.


  CONCATENATE 'PERIOD:' A_DATE 'TO' B_DATE INTO D_DATE
      SEPARATED BY ' '.

***convert inverted-date D_date into date e_date.

  DATA: LS_LINE    TYPE SLIS_LISTHEADER.
  CLEAR LS_LINE.
  LS_LINE-TYP  = 'H'.
  LS_LINE-INFO = BUKRS_TEXT.
  APPEND LS_LINE TO IT_TOP_OF_PAGE.

*  LS_LINE-TYP  = 'H'.
*  LS_LINE-INFO = 'Chennai'.
*  APPEND LS_LINE TO IT_TOP_OF_PAGE.

  LS_LINE-TYP  = 'S'.
  LS_LINE-INFO = D_DATE.
  APPEND LS_LINE TO IT_TOP_OF_PAGE.


*  LS_LINE-TYP  = 'H'.
*  LS_LINE-INFO = WA_FINAL-BTEXT.
*  APPEND LS_LINE TO IT_TOP_OF_PAGE.
ENDFORM.                    "F029_COMMENT_BUILD

FORM CREATE_FIELDCAT1 .
  DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '1'.
  LS_FIELDCAT-COL_POS     = '1'.
  LS_FIELDCAT-FIELDNAME   = 'PERNR'.
  LS_FIELDCAT-KEY         = ''.
  LS_FIELDCAT-OUTPUTLEN   = '12'.
*  ls_fieldcat-do_sum       = 'X'.
  LS_FIELDCAT-SELTEXT_L 'Employee No'.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.
  CLEAR LS_FIELDCAT .

  LS_FIELDCAT-ROW_POS     = '1'.
  LS_FIELDCAT-COL_POS     = '2'.
  LS_FIELDCAT-FIELDNAME   = 'NAME'.
  LS_FIELDCAT-KEY         = ''.
  LS_FIELDCAT-OUTPUTLEN   = '30'.
*  ls_fieldcat-do_sum       = 'X'.
  LS_FIELDCAT-SELTEXT_L 'Employee Name'.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.
  CLEAR LS_FIELDCAT .

CLEAR LS_FIELDCAT.
   if it_FINAL-W_4015 eq '0.00'.
 


  LS_FIELDCAT-ROW_POS     = '1'.
  LS_FIELDCAT-COL_POS     = '9'.

  LS_FIELDCAT-FIELDNAME   = 'W_4016'.
  LS_FIELDCAT-KEY         = ''.
  LS_FIELDCAT-OUTPUTLEN   = '15'.
  LS_FIELDCAT-DO_SUM       = 'X'.
  LS_FIELDCAT-SELTEXT_L 'HRA'.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.
  CLEAR LS_FIELDCAT .

else.
  LS_FIELDCAT-ROW_POS     = '1'.
  LS_FIELDCAT-COL_POS     = '9'.
   LS_FIELDCAT-FIELDNAME   = 'W_4027'.
  LS_FIELDCAT-KEY         = ''.
  LS_FIELDCAT-OUTPUTLEN   = '15'.
  LS_FIELDCAT-DO_SUM       = 'X'.
  LS_FIELDCAT-SELTEXT_L 'HRA'.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.
  CLEAR LS_FIELDCAT .
  endif.

  CLEAR LS_FIELDCAT.

endform.

0 Kudos

Dear Siva ,

have you checked the fieldcatalog table in debugging mode.???

Is the field catalog table is populating correct manner?

Please check it.

Instead of using this you can use the statement is not initial.

  if it_FINAL-W_4015 eq '0.00'.



Thanks and Regards,

Nishant

former_member187748
Active Contributor
0 Kudos

Hi Siva,

just check it, you may get your desired result.

add below code to your layout

wa_layout-stylefname =      'FIELD_STYLE' .



and then use (chage your code as shown below)


PERFORM set_specific_field_attributes.


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'



instead of CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'



in FORM set_specific_field_attributes.


you have to write use logic for displaying different columns based on conditions.




Regards

Sanjeev kumar

Former Member
0 Kudos

Hi,

PERFORM build_fieldcat     TABLES lt_fldcat           lt_spras.

FORM build_table TABLES    pt_spras TYPE tt_spras  CHANGING    pt_table TYPE REF TO data.

TABLES    pt_spras TYPE tt_spras  CHANGING    pt_table TYPE REF TO data.

lt_fldcat TYPE TABLE OF lvc_s_fcat,

lw_spras  LIKE LINE OF pt_spras.

lw_fldcat-datatype = 'CHAR'.

lw_fldcat-intlen = gc_type_length.

lw_fldcat-intlen = gc_type_length.

lw_fldcat-fieldname = gc_col_keyword.

  lw_fldcat-datatype = 'CHAR'.

  lw_fldcat-intlen = gc_keyword_length.

APPEND lw_fldcat TO lt_fldcat.

lw_fldcat-fieldname = gc_col_kben.

lw_fldcat-datatype = 'CHAR'.

lw_fldcat-intlen = gc_kben_length.

APPEND lw_fldcat TO lt_fldcat.

LOOP AT pt_spras INTO lw_spras.

CONCATENATE lw_spras-spras gc_col_desc INTO lw_fldcat-fieldname SEPARATED BY gc_col_separ.

lw_fldcat-datatype = 'CHAR'.

lw_fldcat-intlen = gc_desc_length.

APPEND lw_fldcat TO lt_fldcat.

ENDLOOP.

* Dynamische interne Tabelle aus dem Feldkatalog erstellen.

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog          = lt_fldcat

IMPORTING

ep_table                  = pt_table

EXCEPTIONS

generate_subpool_dir_full = 1

OTHERS                    = 2.

IF sy-subrc <> 0.

ENDIF.

its looks  like

here input this language

And Output will be

Thanks,

Mahipalsinh