Creating dynamic ALV with dynamic editable columns and dynamic colors to the columns based on condition

By Saikumar Bonakurthi, HCL Technologies

This Program will help to create dynamic ALV with dynamic editable columns and dynamic colors to the columns based on condition.

*&---------------------------------------------------------------------*
*& Report  YSHU_SAI_ALV_DYNAMIC
*&---------------------------------------------------------------------*
REPORT  YSHU_SAI_ALV_DYNAMIC.
TYPE-POOLS : ABAP.
FIELD-SYMBOLS: <LINE> TYPE STANDARD TABLE,
               <WA>   
TYPE ANY.
DATA: DYN_TABLE     TYPE REF TO DATA,
      DYN_LINE      
TYPE REF TO DATA,
      WA_FIELDCAT   
TYPE LVC_S_FCAT,
      IT_FIELDCAT   
TYPE LVC_T_FCAT,
      IT_FIELDCAT_1 
TYPE LVC_T_FCAT,
      OK_CODE       
TYPE SY-UCOMM.
TYPESBEGIN OF TY_1,
       
TIME    TYPE T,
       REMARKS 
TYPE CHAR50,
       
END OF TY_1.
DATA: LV_FLD_1 TYPE TY_1.

START-
OF-SELECTION.
* Create dynamic table stricture..
  
PERFORM GET_TABLE_STRUCTURE.
*Create dynamic internale table..
  
PERFORM CREATE_ITAB_DYNAMICALLY.
* filling the data into dynamic internal table..
  
PERFORM GET_DATA.
END-OF-SELECTION.
* display dynamic interal data.
  
PERFORM DISPLAY_ALV_REPORT.

  
CALL SCREEN 2000.


*&---------------------------------------------------------------------*
*&      Form  get_table_structure
*&---------------------------------------------------------------------*
*       Get structure of an SAP table
*----------------------------------------------------------------------*
FORM GET_TABLE_STRUCTURE.
  
DATA : REF_TABLE_DESCR TYPE REF TO CL_ABAP_STRUCTDESCR,
         IT_TABDESCR 
TYPE ABAP_COMPDESCR_TAB,
         WA_TABDESCR 
TYPE ABAP_COMPDESCR,
         LV_NO_DAYS  
TYPE P,
         LV_DATE     
TYPE SY-DATUM,
         LV_DATUM    
TYPE SY-DATUM,
         LV_DAY      
TYPE TEXT40,
         LV_WEEK_DAY 
TYPE TEXT10,
         LIN         
TYPE SY-TFILL,
         C_REM       
TYPE STRING VALUE 'Remarks' .
* fill the data into fieldcatlog of static field
  
PERFORM BUILD_FIELDCATALOG USING IT_FIELDCAT.
* Return structure of the table.
  REF_TABLE_DESCR ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( LV_FLD_1 ).
  IT_TABDESCR[] = REF_TABLE_DESCR->COMPONENTS[].

* Get no of days in a month..
  
CALL FUNCTION 'HR_E_NUM_OF_DAYS_OF_MONTH'
    
EXPORTING
      P_FECHA        = SY-DATUM
    
IMPORTING
      NUMBER_OF_DAYS = LV_NO_DAYS.

* get no of lines..
  
DESCRIBE TABLE IT_FIELDCAT LINES LIN .

  LV_DATUM            = SY-DATUM.
  LV_DATUM+
6(2)       = 1.
  WA_FIELDCAT-COL_POS = LIN.
* fill dynamic field into fields cate..
  
DO LV_NO_DAYS TIMES.
    LV_DATE = LV_DATUM  + SY-
INDEX - 1.
    
CALL FUNCTION 'DATE_TO_DAY'
      
EXPORTING
        
DATE    = LV_DATE
      
IMPORTING
        WEEKDAY = LV_WEEK_DAY.

    
CONCATENATE LV_DATE+6(2',' LV_WEEK_DAY INTO LV_DAY.

    
LOOP AT IT_TABDESCR INTO WA_TABDESCR.
      WA_FIELDCAT-COL_POS   = WA_FIELDCAT-COL_POS + 
1   .
      
IF SY-TABIX = 1.
        WA_FIELDCAT-FIELDNAME = LV_DATE .
        WA_FIELDCAT-COLTEXT   = LV_DAY.
      
ELSE.
        
CONCATENATE LV_DATE  '_R'  INTO WA_FIELDCAT-FIELDNAME.
        WA_FIELDCAT-COLTEXT   = C_REM.
"'Remarks'.
      
ENDIF.
      WA_FIELDCAT-INTTYPE   = WA_TABDESCR-TYPE_KIND.
      WA_FIELDCAT-INTLEN    = WA_TABDESCR-LENGTH / 
2.
      
APPEND  WA_FIELDCAT TO  IT_FIELDCAT.
    
ENDLOOP.
  
ENDDO.

ENDFORM.                    "get_table_structure

*&---------------------------------------------------------------------*
*&      Form  create_itab_dynamically
*&---------------------------------------------------------------------*
*       Create internal table dynamically
*----------------------------------------------------------------------*
FORM CREATE_ITAB_DYNAMICALLY.
* Create dynamic internal table and assign to Field-Symbol
  
CLEAR WA_FIELDCAT.
*move fields from IT_FIELDCAT into IT_FIELDCAT_1.
  IT_FIELDCAT_1 = IT_FIELDCAT.
* Use ref table CALENDAR_TYPE and ref field 'COLTAB'

  WA_FIELDCAT-FIELDNAME = 'CELLCOLOR'.
  WA_FIELDCAT-REF_TABLE = 
'CALENDAR_TYPE'.
  WA_FIELDCAT-REF_FIELD = 
'COLTAB'.
  
APPEND WA_FIELDCAT TO IT_FIELDCAT.
  
CLEAR WA_FIELDCAT.

Click here to continue...

 

Please send us your feedback/suggestions at webmaster@SAPTechnical.COM 

HomeContribute About Us Privacy Terms Of Use • Disclaimer • SafeCompanies: Advertise on SAPTechnical.COM | Post JobContact Us  

Graphic Design by Round the Bend Wizards

footer image footer image