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: 

Field size of dynamic internal Table

Former Member
0 Kudos

Hi experts,

i had created one Dynamic internal table which is type of any table by using following code.

*... Create the dynamic internal table

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = it_fieldcat

IMPORTING

ep_table = new_table.

*... Create a new line

ASSIGN new_table->* TO <l_table>.

CREATE DATA new_line LIKE LINE OF <l_table>.

ASSIGN new_line->* TO <l_line>.

when it is created dynamically the size of fields for table <l_table> are char 10.

Do anyone have any idea how to change the size of that fields.

Regards,

Seema.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hello Seema,

Chekc this code:


FIELD-SYMBOLS: <FS_DATA> TYPE REF TO DATA,
               <FS_1> TYPE TABLE,
               <FS_2> TYPE ANY,
               <FS_3> TYPE ANY,
               <FS_5> TYPE ANY.
DATA: NEW_LINE TYPE REF TO DATA.
DATA: LT_DATA TYPE REF TO DATA.
**dynamic table creation for data
  ASSIGN LT_DATA TO <FS_DATA>.

* Create a new Table
  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
  EXPORTING
        IT_FIELDCATALOG = IT_FIELDCAT
  IMPORTING
        EP_TABLE = <FS_DATA>
  EXCEPTIONS
      GENERATE_SUBPOOL_DIR_FULL = 1
      OTHERS                    = 2.

  IF SY-SUBRC = 0.
    ASSIGN <FS_DATA>->* TO <FS_1>.
    CREATE DATA NEW_LINE LIKE LINE OF <FS_1>.
*** A field-symbol to access that work area
    ASSIGN NEW_LINE->*  TO <FS_2>.
**MOVE DATA
    LOOP AT IT_OUTTAB INTO WA_OUTTAB.

      CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT'
           EXPORTING
                INPUT  = WA_OUTTAB-PSPID
           IMPORTING
                OUTPUT = WA_OUTTAB-PSPID.

      CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT'
           EXPORTING
                INPUT  = WA_OUTTAB-POSID
           IMPORTING
                OUTPUT = WA_OUTTAB-POSID.

      LOOP AT G_T_FIELDCAT INTO G_R_FIELDCAT
                          WHERE NO_OUT IS INITIAL
                            AND TECH IS INITIAL.
        ASSIGN COMPONENT G_R_FIELDCAT-FIELDNAME OF STRUCTURE
                                                WA_OUTTAB TO <FS_5>.
        ASSIGN COMPONENT G_R_FIELDCAT-FIELDNAME OF STRUCTURE
                                                <FS_2> TO <FS_3>.
        <FS_3> = <FS_5>.
      ENDLOOP.
      INSERT <FS_2> INTO TABLE <FS_1>.
    ENDLOOP.
  ELSE.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  OPEN DATASET P_FILE FOR OUTPUT IN TEXT MODE.
  IF SY-SUBRC EQ 0.
    LOOP AT <FS_1> ASSIGNING <FS_2>.
      TRANSFER  <FS_2> TO P_FILE.
    ENDLOOP.
  ELSE.
    MESSAGE E041(S9) WITH P_FILE.
  ENDIF.
  CLOSE DATASET P_FILE.

If useful reward.

Vasanth

2 REPLIES 2

Former Member
0 Kudos

Hello Seema,

Chekc this code:


FIELD-SYMBOLS: <FS_DATA> TYPE REF TO DATA,
               <FS_1> TYPE TABLE,
               <FS_2> TYPE ANY,
               <FS_3> TYPE ANY,
               <FS_5> TYPE ANY.
DATA: NEW_LINE TYPE REF TO DATA.
DATA: LT_DATA TYPE REF TO DATA.
**dynamic table creation for data
  ASSIGN LT_DATA TO <FS_DATA>.

* Create a new Table
  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
  EXPORTING
        IT_FIELDCATALOG = IT_FIELDCAT
  IMPORTING
        EP_TABLE = <FS_DATA>
  EXCEPTIONS
      GENERATE_SUBPOOL_DIR_FULL = 1
      OTHERS                    = 2.

  IF SY-SUBRC = 0.
    ASSIGN <FS_DATA>->* TO <FS_1>.
    CREATE DATA NEW_LINE LIKE LINE OF <FS_1>.
*** A field-symbol to access that work area
    ASSIGN NEW_LINE->*  TO <FS_2>.
**MOVE DATA
    LOOP AT IT_OUTTAB INTO WA_OUTTAB.

      CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT'
           EXPORTING
                INPUT  = WA_OUTTAB-PSPID
           IMPORTING
                OUTPUT = WA_OUTTAB-PSPID.

      CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT'
           EXPORTING
                INPUT  = WA_OUTTAB-POSID
           IMPORTING
                OUTPUT = WA_OUTTAB-POSID.

      LOOP AT G_T_FIELDCAT INTO G_R_FIELDCAT
                          WHERE NO_OUT IS INITIAL
                            AND TECH IS INITIAL.
        ASSIGN COMPONENT G_R_FIELDCAT-FIELDNAME OF STRUCTURE
                                                WA_OUTTAB TO <FS_5>.
        ASSIGN COMPONENT G_R_FIELDCAT-FIELDNAME OF STRUCTURE
                                                <FS_2> TO <FS_3>.
        <FS_3> = <FS_5>.
      ENDLOOP.
      INSERT <FS_2> INTO TABLE <FS_1>.
    ENDLOOP.
  ELSE.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  OPEN DATASET P_FILE FOR OUTPUT IN TEXT MODE.
  IF SY-SUBRC EQ 0.
    LOOP AT <FS_1> ASSIGNING <FS_2>.
      TRANSFER  <FS_2> TO P_FILE.
    ENDLOOP.
  ELSE.
    MESSAGE E041(S9) WITH P_FILE.
  ENDIF.
  CLOSE DATASET P_FILE.

If useful reward.

Vasanth

Former Member
0 Kudos

Hi khandelwal ,

Here the code the you are looking for.........

Understand this code of, how to " create Dynamic internal table ".

your question is answered.....

  • Creating Dynamic internal table

PARAMETERS : P_TABLE(10) TYPE C.

DATA: W_TABNAME TYPE W_TABNAME,

W_DREF TYPE REF TO DATA,

W_GRID TYPE REF TO CL_GUI_ALV_GRID.

FIELD-SYMBOLS: <T_ITAB> TYPE ANY TABLE.

W_TABNAME = P_TABLE.

CREATE DATA W_DREF TYPE TABLE OF (W_TABNAME).

ASSIGN W_DREF->* TO <T_ITAB>.

  • Populating Dynamic internal table

SELECT *

FROM (W_TABNAME) UP TO 20 ROWS

INTO TABLE <T_ITAB>.

  • Displaying dynamic internal table using Grid.

CREATE OBJECT W_GRID

EXPORTING I_PARENT = CL_GUI_CONTAINER=>SCREEN0.

CALL METHOD W_GRID->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING

I_STRUCTURE_NAME = W_TABNAME

CHANGING

IT_OUTTAB = <T_ITAB>.

CALL SCREEN 100.

Hope, this code is helpful to you ........

Reward,if helpful.

Regards,

V.Raghavender.