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

adding column dynamically in alv

Former Member
0 Likes
603

*&---------------------------------------------------------------------*

*& Report  ZSP_BSID

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  ZSP_BSID.

TYPE-POOLS:SLIS.

"type-pools:abap.

TABLES: BSID.

   "CONSTANTS : lc_structure TYPE tabname VALUE  'ZSXX'.

TYPES: BEGIN OF TY_bsid," OCCURS 0,

         bukrs TYPE bsid-bukrs,

         kunnr TYPE bsid-kunnr,

         monat TYPE bsid-monat,

         TEXT TYPE C,

        total type n,

    END OF TY_bsid.

       "monat like bsid-monat,

*      jan  TYPE  bsid-monat,

*       feb  TYPE  bsid-monat,

*       mar  TYPE  bsid-monat,

*       apr  TYPE bsid-monat,

*       may  TYPE  bsid-monat,

*       jun  TYPE  bsid-monat,

*       jul  TYPE  bsid-monat,

*       aug  TYPE  bsid-monat,

*       sep  TYPE  bsid-monat,

*      oct  TYPE  bsid-monat,

*      nov  TYPE  bsid-monat,

*      dec  TYPE bsid-monat,

DATA: FCAT TYPE SLIS_FIELDCAT_ALV,

       IT_FCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA:  T_EVENT TYPE SLIS_T_EVENT,

   W_EVENT TYPE SLIS_ALV_EVENT.

DATA: SORT TYPE SLIS_SORTINFO_ALV,

       IT_SORT TYPE SLIS_T_SORTINFO_ALV.

DATA:  MONAT(2) TYPE c.

"CALL SCREEN 2000.

"DATA: FLAG.

"data: lv_pos type i.

DATA: IT_BSID TYPE TY_BSID OCCURS 0 with header line.

"data: it_color TYPE TABLE OF lvc_s_scol.

DATA: WA_BSID TYPE TY_bsid.

  SELECTION-SCREEN: BEGIN OF BLOCK A WITH FRAME TITLE B.

    SELECT-OPTIONS: CMP_CODE FOR BSID-BUKRS." OBLIGATORY.

    SELECT-OPTIONS: CUST_NME FOR BSID-KUNNR." OBLIGATORY.

    SELECT-OPTIONS: MONTH FOR BSID-MONAT.

    SELECTION-SCREEN: END OF BLOCK A.

data: num1(2) type c,

       num2(2) type c.

       "monat type n.

*

     num1 = MONTH-low.

     num2 = MONTH-high.

  monat = num2 - num1(01) + 1.

field-symbols: <it_bsid> type STANDARD TABLE.

    START-OF-SELECTION.

    PERFORM SELECT.

    PERFORM FIELDCAT.

    PERFORM DISPLAY.

    "PERFORM DISPLAY1.

   "perform format_field_catolog.

"   PERFORM DISPLAY1.

*&---------------------------------------------------------------------*

*&      Form  SELECT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM SELECT.

   SELECT bukrs kunnr monat FROM BSID INTO TABLE IT_BSID

*    WHERE BUKRS IN CMP_CODE AND

*         kunnr IN CUST_NME and

          where monat eq MONTH.

ENDFORM.

                    " SELECT

  "create DATA w_dref TYPE STANDARD TABLE OF (month).

*ASSIGN w_dref->* to <it_bsid>.

*

*

*SELECT * FROM (month) into table <it_bsid>.

*&---------------------------------------------------------------------*

*&      Form  FIELDCAT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

form FIELDCAT .

"do 12 times.

  " result = sy-index ** 12.

fcat-col_pos       = '1'.

   fcat-tabname       = 'IT_BSID'.

   fcat-fieldname     = 'BUKRS'.

   fcat-seltext_m     = 'CUSTOMER NAME'.

   fcat-hotspot       =   'X'.

   fcat-emphasize    = 'C666'.

   APPEND FCAT TO it_fcat.

   CLEAR fcat.

   fcat-COL_POS = '2'.

fcat-SELTEXT_L = 'COMPANY CODE'.

fcat-FIELDNAME = 'KUNNR'.

  APPEND FCAT TO IT_FCAT.

   CLEAR  FCAT.

"do 12 times.

  " result = sy-index ** 12.

.

  DO MONAT times.

   "RESULT = SY-INDEX ** 12.

"WRITE:/ sy-index EQ RESULT.

   fcat-col_pos       = '3'.

   fcat-tabname       = 'IT_BSID'.

   fcat-fieldname     = 'MONAT'.

   fcat-seltext_m     = 'MONTH'.

     APPEND FCAT TO it_fcat.

   CLEAR fcat.

enddo.

*

*fcat-col_pos       = '4'.

*  "fcat-tabname       = 'IT_BSID'.

*  fcat-fieldname     = 'MONAT'.

*  "FCAT-no_totalline  = 'X'.

*  fcat-seltext_m     = 'TOTAL'.

*  FCAT-DO_SUM        =  'X'.

*  FCAT-NO_OUT       =  'X'.

*"  fcat-hotspot       =   'X'.

* " fcat-emphasize    = 'C666'.

*  APPEND FCAT TO it_fcat.

*  CLEAR fcat.

*fcat-col_pos       = '4'.

*  "fcat-tabname       = 'IT_BSID'.

*  fcat-fieldname     = 'MONAT'.

*  "FCAT-no_totalline  = 'X'.

*  fcat-seltext_m     = 'TOTAL'.

*  FCAT-DO_SUM        =  'X'.

*  "FCAT-NO_OUT       =  'X'.

*"  fcat-hotspot       =   'X'.

* " fcat-emphasize    = 'C666'.

*  APPEND FCAT TO it_fcat.

*  CLEAR fcat.

*

*SORT-fieldname = 'MONAT'.

*SORT-SUBTOT  = 'X'.

*APPEND SORT TO IT_SORT.

*CLEAR SORT.

endform.

                   " FIELDCAT

*&---------------------------------------------------------------------*

*&      Form  DISPLAY

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

form DISPLAY .

   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

*     I_INTERFACE_CHECK                 = ' '

*     I_BYPASSING_BUFFER                = ' '

*     I_BUFFER_ACTIVE                   = ' '

      I_CALLBACK_PROGRAM                = SY-REPID

*     I_CALLBACK_PF_STATUS_SET          = ' '

*     I_CALLBACK_USER_COMMAND           = ' '

*     I_CALLBACK_TOP_OF_PAGE            = ' '

*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '

*     I_CALLBACK_HTML_END_OF_LIST       = ' '

*     I_STRUCTURE_NAME                  =

*     I_BACKGROUND_ID                   = ' '

*     I_GRID_TITLE                      =

*     I_GRID_SETTINGS                   =

*     IS_LAYOUT                         =

      IT_FIELDCAT                       = IT_FCAT

*     IT_EXCLUDING                      =

*     IT_SPECIAL_GROUPS                 =

      IT_SORT                           = IT_SORT

*     IT_FILTER                         =

*     IS_SEL_HIDE                       =

"     I_DEFAULT                         = 'X'

*     I_SAVE                            = ' '

*     IS_VARIANT                        =

"     IT_EVENTS                         = T_EVENT

*     IT_EVENT_EXIT                     =

*     IS_PRINT                          =

*     IS_REPREP_ID                      =

*     I_SCREEN_START_COLUMN             = 0

*     I_SCREEN_START_LINE               = 0

*     I_SCREEN_END_COLUMN               = 0

*     I_SCREEN_END_LINE                 = 0

*     I_HTML_HEIGHT_TOP                 = 0

*     I_HTML_HEIGHT_END                 = 0

*     IT_ALV_GRAPHICS                   =

*     IT_HYPERLINK                      =

*     IT_ADD_FIELDCAT                   =

*     IT_EXCEPT_QINFO                   =

*     IR_SALV_FULLSCREEN_ADAPTER        =

*   IMPORTING

*     E_EXIT_CAUSED_BY_CALLER           =

*     ES_EXIT_CAUSED_BY_USER            =

     TABLES

       t_outtab                          = IT_BSID

*   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.

endform.                    " DISPLAY

*&---------------------------------------------------------------------*

*&      Form  FORMAT_FIELD_CATOLOG

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

*form FORMAT_FIELD_CATOLOG .

*

*  beg_month = listbox1.

*end_month = listbox2 .

*

*dO.

*if beg_month gt end_month.

*  exit.

*

*ENdif.

*

*

*enddo.

*

*endform.                    " FORMAT_FIELD_CATOLOG

*CALL FUNCTION 'HR_E_NUM_OF_DAYS_OF_MONTH'

*  EXPORTING

*    p_fecha              = SY-DATUM

** IMPORTING

**   NUMBER_OF_DAYS       =

*

*&---------------------------------------------------------------------*

*&      Form  DISPLAY1

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

*form DISPLAY1 .

*CALL FUNCTION 'MONTH_PLUS_DETERMINE'

*  EXPORTING

*    months        = 12

*    olddate       = SY-DATUM

* IMPORTING

*   NEWDATE       = RESULT.

*endform.                    " DISPLAY1

"DATA: T_OUTPUT TYPE REF TO DATA.

"FIELD-SYMBOLS: &LTT_OUTPUT&GT TYPE TABLE.

"Call Method CL_ALV_TABLE_CREATE->CREATE_DYNAMIC_TABLE

"Exporting

"IT_FIELDCATALOG = T_FIELDCAT

"Importing

"EP_TABLE = T_OUTPUT.

"ASSIGN T_OUTPUT->* TO &LT;T_OUTPUT&GT;.

"*&---------------------------------------------------------------------*

"*&      Form  DISPLAY1

"*&---------------------------------------------------------------------*

"*       text

"*----------------------------------------------------------------------*

"*  -->  p1        text

"*  <--  p2        text

"*----------------------------------------------------------------------*

"form DISPLAY1 .

"CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

" EXPORTING

"*   I_BUFFER_ACTIVE              =

"   I_STRUCTURE_NAME             = sy-repid

"*   I_CLIENT_NEVER_DISPLAY       = 'X'

"*   I_BYPASSING_BUFFER           =

"*   I_INTERNAL_TABNAME           =

"  CHANGING

"    ct_fieldcat                  = it_fcat

"* EXCEPTIONS

"*   INCONSISTENT_INTERFACE       = 1

"*   PROGRAM_ERROR                = 2

"*   OTHERS                       = 3

"          .

"IF sy-subrc <> 0.

"* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

"*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

"ENDIF.

"endform.                    " DISPLAY1

please check the code....

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
521

Hi Raj,

Check this document

https://scn.sap.com/docs/DOC-42525

Regards,

Susmitha

3 REPLIES 3
Read only

tolga_polat
Active Participant
0 Likes
521

Hi ,

First you need to create table with   CL_ALV_TABLE_CREATE->CREATE_DYNAMIC_TABLE to assign value to field.

Now logic is simple.

Create fieldcat, add aditional field to fieldcat ( in your case months ), now create table with this fieldcat. You need to add your dynamic field to fieldcat manualy.

select needed data to template table. now to assign field to created table you need to now fieldname.

Here is the example : http://scn.sap.com/message/14468651#14468651

and adding this example to assign sipecific field:

FIELD-SYMBOLS  : <field> TYPE any.

in your loop. assign your dynamic field like this : you need to know field name.

ASSIGN COMPONENT 'FIELDNAME' OF STRUCTURE <fs_line> TO <field>.

for example : fieldname = 'FEB'.

ASSIGN COMPONENT 'FEB' OF STRUCTURE <fs_line> TO <field>.

IF bsid-monat EQ '02'.

     <field> = bsid-wrbtr.

ENDIF.

Regards

Tolga

Read only

Former Member
0 Likes
522

Hi Raj,

Check this document

https://scn.sap.com/docs/DOC-42525

Regards,

Susmitha

Read only

Former Member
0 Likes
521

Hi

Please check the below link.. You can use RTTS concept for creating a Dynamic Internal Table and use the same for ALV

http://think2solve.blogspot.in/2013/08/dynamic-internal-table-creation-using.html

SKR