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

popualting data into dynamic internal table

Former Member
0 Likes
983

Hi all,

I am working on Dynamic internal tables.I have created the structure of internal table but i am unable to populate data into it.Though i have seen some of the forums but those didn't help me. please provide me the solution. Here is my code what i did.I have the data in itab and itab1.

My requirement is meinh fileds are dynamic.thie meinh and umren are two fileds in mvke table.for one record ihave to populate umren value for that particular meinh value.Pls help me.

mtart vkorg werks mtanr Meinh(kg) Meinh(gl)

fert 0353 0303 3231 Umren value Umren value

REPORT z123.

----


  • T Y P E - P O O L S

----


TYPE-POOLS :slis,abap.

----


  • T A B L E S

----


*Tables

TABLES: mara,marm,mvke,marc.

----


  • F I E L D - S Y M B O L S

----


FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,

<dyn_wa> ,

<dyn_field>.

----


  • I N T E R N A L T A B L E S

----


  • Internal Tables declaration for ALV GRID/LIST

DATA: ls_fieldcat TYPE slis_fieldcat_alv, "FIELD CATALOG LIST

tb_uom_cat TYPE slis_t_fieldcat_alv, "FIELD CATALOG

ls_fieldcat1 TYPE lvc_s_fcat,

tb_dy_cat TYPE lvc_t_fcat, "FIELD CATALOG

tb_outputcat TYPE slis_t_fieldcat_alv,

tb_events TYPE slis_t_event,

ref_grid TYPE REF TO cl_gui_alv_grid,

t_events LIKE LINE OF tb_events.

DATA: BEGIN OF itab OCCURS 0,

mtart LIKE mara-mtart,

vkorg LIKE mvke-vkorg,

werks LIKE marc-werks,

matnr TYPE mara-matnr,

END OF itab.

DATA: BEGIN OF itab1 OCCURS 0,

matnr TYPE marm-matnr,

umren TYPE marm-umren,

meinh TYPE marm-meinh,

END OF itab1.

----


  • V A R I A B L E S

----


  • Global Variables

DATA: g_repid LIKE sy-repid. "Report ID

DATA: dy_table TYPE REF TO data,

dy_line TYPE REF TO data.

----


  • S E L E C T I O N S C R E E N

----


  • For User Input(Selection Criteria)

SELECTION-SCREEN BEGIN OF BLOCK b0 WITH FRAME TITLE text-001.

SELECT-OPTIONS :

s_mtart FOR mara-mtart OBLIGATORY, " Material type

s_vkorg FOR mvke-vkorg OBLIGATORY, " Sales Organization

s_plant FOR marc-werks, " Plant

s_meinh FOR marm-meinh. " Unit of Measure

SELECTION-SCREEN END OF BLOCK b0.

----


  • I N I T I A L I Z A T I O N

----


INITIALIZATION.

  • Program ID

g_repid = sy-repid. " Prog ID

----


  • A T S E L E C T I O N - S C R E E N

----


AT SELECTION-SCREEN.

  • Validate Material Type

PERFORM check_mtart.

  • Validate Sales Organization

PERFORM check_vkorg.

  • Validate Plant

PERFORM check_werks.

  • Validate Unit of Measure (UOM)

PERFORM check_meinh.

----


  • S T A R T - O F - S E L E C T I O N

----


START-OF-SELECTION.

  • Get Data

PERFORM get_data.

  • FIELD CATALOG FOR ALV

PERFORM fill_field_catalog_uom USING tb_uom_cat.

  • FIELD CATALOG FOR CREATING DYNAMIC INTERNAL TABLE

PERFORM fill_field_catalog_dy USING tb_dy_cat.

  • CREATING DYNAMIC INTERNAL TABLE

PERFORM dy_tab_create.

----


  • End of selection *

----


----


  • F O R M S

----


&----


*& Form CHECK_MTART

&----


  • Validate Material Type

----


FORM check_mtart .

  • Material Type

DATA :l_mtart LIKE t134-mtart.

CHECK NOT s_mtart IS INITIAL.

SELECT mtart UP TO 1 ROWS

INTO l_mtart

FROM t134

WHERE mtart IN s_mtart.

ENDSELECT.

IF sy-subrc <> 0.

MESSAGE e899(mm) WITH 'Invalid Material Type'(002).

ENDIF.

ENDFORM. " CHECK_MTART

&----


*& Form CHECK_VKORG

&----


  • Validate Sales Organization

----


FORM check_vkorg .

  • Sales Oraganization

DATA :l_vkorg LIKE tvko-vkorg.

CHECK NOT s_vkorg IS INITIAL.

SELECT vkorg UP TO 1 ROWS

INTO l_vkorg

FROM tvko

WHERE vkorg IN s_vkorg.

ENDSELECT.

IF sy-subrc <> 0.

MESSAGE e899(mm) WITH 'Invalid Sales Organization'(003).

ENDIF.

ENDFORM. " CHECK_VKORG

&----


*& Form CHECK_WERKS

&----


  • Validate Plant

----


FORM check_werks .

  • Plant

DATA :l_werks LIKE t001w-werks.

CHECK NOT s_plant IS INITIAL.

SELECT werks UP TO 1 ROWS

INTO l_werks

FROM t001w

WHERE werks IN s_plant.

ENDSELECT.

IF sy-subrc <> 0.

MESSAGE e899(mm) WITH 'Invalid Plant'(004).

ENDIF.

ENDFORM. " CHECK_WERKS

&----


*& Form CHECK_MEINH

&----


  • Validate Unit of Measure (UOM)

----


FORM check_meinh .

  • Unit of Measure (UOM)

DATA :l_meinh LIKE t006-msehi.

CHECK NOT s_meinh IS INITIAL.

SELECT msehi UP TO 1 ROWS

INTO l_meinh

FROM t006

WHERE msehi IN s_meinh.

ENDSELECT.

IF sy-subrc <> 0.

MESSAGE e899(mm) WITH 'Invalid Unit of Measure'(005).

ENDIF.

ENDFORM. " CHECK_MEINH

&----


*& Form FILL_FIELD_CATALOG_UOM

&----


  • text

----


  • FIELD CATALOG FOR ALV

----


FORM fill_field_catalog_uom USING l_fieldcat TYPE slis_t_fieldcat_alv.

DATA: BEGIN OF l_itab OCCURS 0,

meinh TYPE marm-meinh,

END OF l_itab.

  • DATA: l_count TYPE i.

DATA: l_fieldcat_col_pos TYPE i.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'MTART'.

ls_fieldcat-key = ''.

ls_fieldcat-col_pos = 1.

ls_fieldcat-ref_fieldname = 'MTART'.

ls_fieldcat-ref_tabname = 'MARA'.

APPEND ls_fieldcat TO l_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'VKORG'.

ls_fieldcat-key = ''.

ls_fieldcat-col_pos = 2.

ls_fieldcat-ref_fieldname = 'VKORG'.

ls_fieldcat-ref_tabname = 'MVKE'.

APPEND ls_fieldcat TO l_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'WERKS'.

ls_fieldcat-key = ''.

ls_fieldcat-col_pos = 3.

ls_fieldcat-ref_fieldname = 'WERKS'.

ls_fieldcat-ref_tabname = 'MARC'.

APPEND ls_fieldcat TO l_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'MATNR'.

ls_fieldcat-key = 'x'.

ls_fieldcat-col_pos = 4.

ls_fieldcat-ref_fieldname = 'MATNR'.

ls_fieldcat-ref_tabname = 'MARA'.

APPEND ls_fieldcat TO l_fieldcat.

CLEAR ls_fieldcat.

l_fieldcat_col_pos = 5.

  • Getting the UOM as per user selection

SELECT msehi FROM t006

INTO TABLE l_itab

WHERE msehi IN s_meinh.

LOOP AT l_itab.

ls_fieldcat-fieldname = l_itab-meinh.

ls_fieldcat-key = ''.

ls_fieldcat-col_pos = l_fieldcat_col_pos.

ls_fieldcat-ref_fieldname = 'MSEHI'.

ls_fieldcat-ref_tabname = 'T006'.

APPEND ls_fieldcat TO l_fieldcat.

CLEAR ls_fieldcat.

l_fieldcat_col_pos = l_fieldcat_col_pos + 1.

ENDLOOP.

ENDFORM. " FILL_FIELD_CATALOG_UOM

&----


*& Form DISPLAY_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_data .

ENDFORM. " DISPLAY_DATAENDFORM. " FILL_FIELD_CATALOG_UOM

&----


*& Form DY_TAB_CREATE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM dy_tab_create .

  • CREATE DYNAMIC INTERNAL TABLE AND ASSIGN TO FS

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = tb_dy_cat

IMPORTING

ep_table = dy_table.

ASSIGN dy_table->* TO <dyn_table>.

*CREATE DYNAMIC WORK AREA AND AASIGN TO FS

CREATE DATA dy_line LIKE LINE OF <dyn_table>.

ASSIGN dy_line->* TO <dyn_wa>.

ENDFORM. " DY_TAB_CREATE

&----


*& Form FILL_FIELD_CATALOG_DY

&----


  • text

----


  • FIELD CATALOG FOR CREATING A DYNAMIC TABLE

----


FORM fill_field_catalog_dy USING l_fieldcat TYPE lvc_t_fcat.

DATA: BEGIN OF l_itab OCCURS 0,

meinh TYPE marm-meinh,

END OF l_itab.

DATA: l_count TYPE i.

DATA: l_fieldcat_col_pos TYPE i.

DATA: l_umren TYPE string.

DATA: l_var TYPE string.

CLEAR ls_fieldcat.

ls_fieldcat1-fieldname = 'MTART'.

ls_fieldcat1-key = ''.

ls_fieldcat1-col_pos = 1.

ls_fieldcat1-datatype = 'char'.

ls_fieldcat1-intlen = 4.

APPEND ls_fieldcat1 TO l_fieldcat.

CLEAR ls_fieldcat1.

ls_fieldcat1-fieldname = 'VKORG'.

ls_fieldcat1-key = ''.

ls_fieldcat1-col_pos = 2.

ls_fieldcat1-datatype = 'char'.

ls_fieldcat1-intlen = 4.

APPEND ls_fieldcat1 TO l_fieldcat.

CLEAR ls_fieldcat1.

ls_fieldcat1-fieldname = 'WERKS'.

ls_fieldcat1-key = ''.

ls_fieldcat1-col_pos = 3.

ls_fieldcat1-datatype = 'char'.

ls_fieldcat1-intlen = 4.

APPEND ls_fieldcat1 TO l_fieldcat.

CLEAR ls_fieldcat1.

ls_fieldcat1-fieldname = 'MATNR'.

ls_fieldcat1-key = 'x'.

ls_fieldcat1-col_pos = 4.

ls_fieldcat1-datatype = 'char'.

ls_fieldcat1-intlen = 18.

APPEND ls_fieldcat1 TO l_fieldcat.

CLEAR ls_fieldcat1.

l_fieldcat_col_pos = 5.

  • Getting the UOM as per user selection

SELECT msehi FROM t006

INTO TABLE l_itab

WHERE msehi IN s_meinh.

SORT l_itab ASCENDING.

DESCRIBE TABLE l_itab LINES l_count.

LOOP AT l_itab.

ls_fieldcat1-fieldname = l_itab-meinh.

ls_fieldcat1-key = ''.

ls_fieldcat1-col_pos = l_fieldcat_col_pos.

ls_fieldcat1-datatype = 'dec'.

ls_fieldcat1-intlen = 5.

APPEND ls_fieldcat1 TO l_fieldcat.

CLEAR ls_fieldcat1.

l_fieldcat_col_pos = l_fieldcat_col_pos + 1.

ENDLOOP.

ENDFORM. " FILL_FIELD_CATALOG_DY

&----


*& Form GET_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_data .

SELECT

amtart bvkorg cwerks amatnr

INTO TABLE itab

FROM mara AS a

JOIN mvke AS b ON bmatnr = amatnr

JOIN marc AS c ON cmatnr = bmatnr

JOIN marm AS d ON dmatnr = cmatnr

WHERE a~mtart IN s_mtart

AND b~vkorg IN s_vkorg

AND c~werks IN s_plant.

SORT itab ASCENDING.

DELETE ADJACENT DUPLICATES FROM itab.

SELECT matnr umren meinh FROM marm

APPENDING TABLE itab1

FOR ALL ENTRIES IN itab

WHERE matnr = itab-matnr

AND meinh IN s_meinh .

ENDFORM. " GET_DATA

Hi all,

I am working on Dynamic internal tables.I have created the structure of internal table but i am unable to populate data into it.Though i have seen some of the forums but those didn't help me. please provide me the solution. Here is my code what i did.I have the data in itab and itab1.

My requirement is meinh fileds are dynamic.thie meinh and umren are two fileds in mvke table.for one record ihave to populate umren value for that particular meinh value.Pls help me.

mtart vkorg werks mtanr Meinh(kg) Meinh(gl)

fert 0353 0303 3231 Umren value Umren value

REPORT z123.

----


  • T Y P E - P O O L S

----


TYPE-POOLS :slis,abap.

----


  • T A B L E S

----


*Tables

TABLES: mara,marm,mvke,marc.

----


  • F I E L D - S Y M B O L S

----


FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,

<dyn_wa> ,

<dyn_field>.

----


  • I N T E R N A L T A B L E S

----


  • Internal Tables declaration for ALV GRID/LIST

DATA: ls_fieldcat TYPE slis_fieldcat_alv, "FIELD CATALOG LIST

tb_uom_cat TYPE slis_t_fieldcat_alv, "FIELD CATALOG

ls_fieldcat1 TYPE lvc_s_fcat,

tb_dy_cat TYPE lvc_t_fcat, "FIELD CATALOG

tb_outputcat TYPE slis_t_fieldcat_alv,

tb_events TYPE slis_t_event,

ref_grid TYPE REF TO cl_gui_alv_grid,

t_events LIKE LINE OF tb_events.

DATA: BEGIN OF itab OCCURS 0,

mtart LIKE mara-mtart,

vkorg LIKE mvke-vkorg,

werks LIKE marc-werks,

matnr TYPE mara-matnr,

END OF itab.

DATA: BEGIN OF itab1 OCCURS 0,

matnr TYPE marm-matnr,

umren TYPE marm-umren,

meinh TYPE marm-meinh,

END OF itab1.

----


  • V A R I A B L E S

----


  • Global Variables

DATA: g_repid LIKE sy-repid. "Report ID

DATA: dy_table TYPE REF TO data,

dy_line TYPE REF TO data.

----


  • S E L E C T I O N S C R E E N

----


  • For User Input(Selection Criteria)

SELECTION-SCREEN BEGIN OF BLOCK b0 WITH FRAME TITLE text-001.

SELECT-OPTIONS :

s_mtart FOR mara-mtart OBLIGATORY, " Material type

s_vkorg FOR mvke-vkorg OBLIGATORY, " Sales Organization

s_plant FOR marc-werks, " Plant

s_meinh FOR marm-meinh. " Unit of Measure

SELECTION-SCREEN END OF BLOCK b0.

----


  • I N I T I A L I Z A T I O N

----


INITIALIZATION.

  • Program ID

g_repid = sy-repid. " Prog ID

----


  • A T S E L E C T I O N - S C R E E N

----


AT SELECTION-SCREEN.

  • Validate Material Type

PERFORM check_mtart.

  • Validate Sales Organization

PERFORM check_vkorg.

  • Validate Plant

PERFORM check_werks.

  • Validate Unit of Measure (UOM)

PERFORM check_meinh.

----


  • S T A R T - O F - S E L E C T I O N

----


START-OF-SELECTION.

  • Get Data

PERFORM get_data.

  • FIELD CATALOG FOR ALV

PERFORM fill_field_catalog_uom USING tb_uom_cat.

  • FIELD CATALOG FOR CREATING DYNAMIC INTERNAL TABLE

PERFORM fill_field_catalog_dy USING tb_dy_cat.

  • CREATING DYNAMIC INTERNAL TABLE

PERFORM dy_tab_create.

----


  • End of selection *

----


----


  • F O R M S

----


&----


*& Form CHECK_MTART

&----


  • Validate Material Type

----


FORM check_mtart .

  • Material Type

DATA :l_mtart LIKE t134-mtart.

CHECK NOT s_mtart IS INITIAL.

SELECT mtart UP TO 1 ROWS

INTO l_mtart

FROM t134

WHERE mtart IN s_mtart.

ENDSELECT.

IF sy-subrc <> 0.

MESSAGE e899(mm) WITH 'Invalid Material Type'(002).

ENDIF.

ENDFORM. " CHECK_MTART

&----


*& Form CHECK_VKORG

&----


  • Validate Sales Organization

----


FORM check_vkorg .

  • Sales Oraganization

DATA :l_vkorg LIKE tvko-vkorg.

CHECK NOT s_vkorg IS INITIAL.

SELECT vkorg UP TO 1 ROWS

INTO l_vkorg

FROM tvko

WHERE vkorg IN s_vkorg.

ENDSELECT.

IF sy-subrc <> 0.

MESSAGE e899(mm) WITH 'Invalid Sales Organization'(003).

ENDIF.

ENDFORM. " CHECK_VKORG

&----


*& Form CHECK_WERKS

&----


  • Validate Plant

----


FORM check_werks .

  • Plant

DATA :l_werks LIKE t001w-werks.

CHECK NOT s_plant IS INITIAL.

SELECT werks UP TO 1 ROWS

INTO l_werks

FROM t001w

WHERE werks IN s_plant.

ENDSELECT.

IF sy-subrc <> 0.

MESSAGE e899(mm) WITH 'Invalid Plant'(004).

ENDIF.

ENDFORM. " CHECK_WERKS

&----


*& Form CHECK_MEINH

&----


  • Validate Unit of Measure (UOM)

----


FORM check_meinh .

  • Unit of Measure (UOM)

DATA :l_meinh LIKE t006-msehi.

CHECK NOT s_meinh IS INITIAL.

SELECT msehi UP TO 1 ROWS

INTO l_meinh

FROM t006

WHERE msehi IN s_meinh.

ENDSELECT.

IF sy-subrc <> 0.

MESSAGE e899(mm) WITH 'Invalid Unit of Measure'(005).

ENDIF.

ENDFORM. " CHECK_MEINH

&----


*& Form FILL_FIELD_CATALOG_UOM

&----


  • text

----


  • FIELD CATALOG FOR ALV

----


FORM fill_field_catalog_uom USING l_fieldcat TYPE slis_t_fieldcat_alv.

DATA: BEGIN OF l_itab OCCURS 0,

meinh TYPE marm-meinh,

END OF l_itab.

  • DATA: l_count TYPE i.

DATA: l_fieldcat_col_pos TYPE i.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'MTART'.

ls_fieldcat-key = ''.

ls_fieldcat-col_pos = 1.

ls_fieldcat-ref_fieldname = 'MTART'.

ls_fieldcat-ref_tabname = 'MARA'.

APPEND ls_fieldcat TO l_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'VKORG'.

ls_fieldcat-key = ''.

ls_fieldcat-col_pos = 2.

ls_fieldcat-ref_fieldname = 'VKORG'.

ls_fieldcat-ref_tabname = 'MVKE'.

APPEND ls_fieldcat TO l_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'WERKS'.

ls_fieldcat-key = ''.

ls_fieldcat-col_pos = 3.

ls_fieldcat-ref_fieldname = 'WERKS'.

ls_fieldcat-ref_tabname = 'MARC'.

APPEND ls_fieldcat TO l_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'MATNR'.

ls_fieldcat-key = 'x'.

ls_fieldcat-col_pos = 4.

ls_fieldcat-ref_fieldname = 'MATNR'.

ls_fieldcat-ref_tabname = 'MARA'.

APPEND ls_fieldcat TO l_fieldcat.

CLEAR ls_fieldcat.

l_fieldcat_col_pos = 5.

  • Getting the UOM as per user selection

SELECT msehi FROM t006

INTO TABLE l_itab

WHERE msehi IN s_meinh.

LOOP AT l_itab.

ls_fieldcat-fieldname = l_itab-meinh.

ls_fieldcat-key = ''.

ls_fieldcat-col_pos = l_fieldcat_col_pos.

ls_fieldcat-ref_fieldname = 'MSEHI'.

ls_fieldcat-ref_tabname = 'T006'.

APPEND ls_fieldcat TO l_fieldcat.

CLEAR ls_fieldcat.

l_fieldcat_col_pos = l_fieldcat_col_pos + 1.

ENDLOOP.

ENDFORM. " FILL_FIELD_CATALOG_UOM

&----


*& Form DISPLAY_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_data .

ENDFORM. " DISPLAY_DATAENDFORM. " FILL_FIELD_CATALOG_UOM

&----


*& Form DY_TAB_CREATE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM dy_tab_create .

  • CREATE DYNAMIC INTERNAL TABLE AND ASSIGN TO FS

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = tb_dy_cat

IMPORTING

ep_table = dy_table.

ASSIGN dy_table->* TO <dyn_table>.

*CREATE DYNAMIC WORK AREA AND AASIGN TO FS

CREATE DATA dy_line LIKE LINE OF <dyn_table>.

ASSIGN dy_line->* TO <dyn_wa>.

ENDFORM. " DY_TAB_CREATE

&----


*& Form FILL_FIELD_CATALOG_DY

&----


  • text

----


  • FIELD CATALOG FOR CREATING A DYNAMIC TABLE

----


FORM fill_field_catalog_dy USING l_fieldcat TYPE lvc_t_fcat.

DATA: BEGIN OF l_itab OCCURS 0,

meinh TYPE marm-meinh,

END OF l_itab.

DATA: l_count TYPE i.

DATA: l_fieldcat_col_pos TYPE i.

DATA: l_umren TYPE string.

DATA: l_var TYPE string.

CLEAR ls_fieldcat.

ls_fieldcat1-fieldname = 'MTART'.

ls_fieldcat1-key = ''.

ls_fieldcat1-col_pos = 1.

ls_fieldcat1-datatype = 'char'.

ls_fieldcat1-intlen = 4.

APPEND ls_fieldcat1 TO l_fieldcat.

CLEAR ls_fieldcat1.

ls_fieldcat1-fieldname = 'VKORG'.

ls_fieldcat1-key = ''.

ls_fieldcat1-col_pos = 2.

ls_fieldcat1-datatype = 'char'.

ls_fieldcat1-intlen = 4.

APPEND ls_fieldcat1 TO l_fieldcat.

CLEAR ls_fieldcat1.

ls_fieldcat1-fieldname = 'WERKS'.

ls_fieldcat1-key = ''.

ls_fieldcat1-col_pos = 3.

ls_fieldcat1-datatype = 'char'.

ls_fieldcat1-intlen = 4.

APPEND ls_fieldcat1 TO l_fieldcat.

CLEAR ls_fieldcat1.

ls_fieldcat1-fieldname = 'MATNR'.

ls_fieldcat1-key = 'x'.

ls_fieldcat1-col_pos = 4.

ls_fieldcat1-datatype = 'char'.

ls_fieldcat1-intlen = 18.

APPEND ls_fieldcat1 TO l_fieldcat.

CLEAR ls_fieldcat1.

l_fieldcat_col_pos = 5.

  • Getting the UOM as per user selection

SELECT msehi FROM t006

INTO TABLE l_itab

WHERE msehi IN s_meinh.

SORT l_itab ASCENDING.

DESCRIBE TABLE l_itab LINES l_count.

LOOP AT l_itab.

ls_fieldcat1-fieldname = l_itab-meinh.

ls_fieldcat1-key = ''.

ls_fieldcat1-col_pos = l_fieldcat_col_pos.

ls_fieldcat1-datatype = 'dec'.

ls_fieldcat1-intlen = 5.

APPEND ls_fieldcat1 TO l_fieldcat.

CLEAR ls_fieldcat1.

l_fieldcat_col_pos = l_fieldcat_col_pos + 1.

ENDLOOP.

ENDFORM. " FILL_FIELD_CATALOG_DY

&----


*& Form GET_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_data .

SELECT

amtart bvkorg cwerks amatnr

INTO TABLE itab

FROM mara AS a

JOIN mvke AS b ON bmatnr = amatnr

JOIN marc AS c ON cmatnr = bmatnr

JOIN marm AS d ON dmatnr = cmatnr

WHERE a~mtart IN s_mtart

AND b~vkorg IN s_vkorg

AND c~werks IN s_plant.

SORT itab ASCENDING.

DELETE ADJACENT DUPLICATES FROM itab.

SELECT matnr umren meinh FROM marm

APPENDING TABLE itab1

FOR ALL ENTRIES IN itab

WHERE matnr = itab-matnr

AND meinh IN s_meinh .

ENDFORM. " GET_DATA

3 REPLIES 3
Read only

Former Member
0 Likes
617
can you check this for creation of dynamic table

******DATA DECLARATION*****************************

FIELD-SYMBOLS : <it_final> TYPE STANDARD TABLE,
                <wa_final> TYPE ANY,
                <w_field> TYPE ANY.


***DYNAMIC CREATION OF FIELDCATALOG****************

*FIRST 2 FIELDS FIELDS FIELD1 AND FIELD2 ARE CONSTANT, FIELDS OBTAINED IN THE LOOP ENDLOOP ARE DYNAMIC,
*LIKEWISE DYNAMIC FIELDCATALOG IS CREATED

  wa_fieldcatalog-fieldname  = 'FIELD1'.
  wa_fieldcatalog-ref_table  = 'E070'.
  wa_fieldcatalog-outputlen  = '13'.
  wa_fieldcatalog-reptext    = 'Created On'.
  wa_fieldcatalog-seltext    = 'Created On'.
  APPEND wa_fieldcatalog TO it_fieldcatalog.
  CLEAR wa_fieldcatalog.
  
  wa_fieldcatalog-fieldname  = 'FIELD1'.
  wa_fieldcatalog-ref_table  = 'E070'.
  wa_fieldcatalog-outputlen  = '13'.
  wa_fieldcatalog-reptext    = 'Created On'.
  wa_fieldcatalog-seltext    = 'Created On'.
  APPEND wa_fieldcatalog TO it_fieldcatalog.
  CLEAR wa_fieldcatalog.


  LOOP AT it_mandt WHERE mandt IN s_mandt.
    CONCATENATE 'CLNT' it_mandt INTO wa_fieldcatalog-fieldname.
    wa_fieldcatalog-inttype    = 'NUMC'.
    wa_fieldcatalog-outputlen  = '14'.
    wa_fieldcatalog-reptext    = it_mandt.
    wa_fieldcatalog-seltext    = it_mandt.

    APPEND wa_fieldcatalog TO it_fieldcatalog.
    CLEAR :wa_fieldcatalog ,it_mandt.
  ENDLOOP.


********CREATE DYNAMIC TABLE************************

  CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog           = it_fieldcatalog
    IMPORTING
      ep_table                  = new_table
    EXCEPTIONS
      generate_subpool_dir_full = 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.

  ASSIGN new_table->* TO <it_final>.

*********CREATE WORK AREA****************************

CREATE DATA new_line LIKE LINE OF <it_final>.
  ASSIGN new_line->* TO <wa_final>.

*********INSERTTING WORK AREAR TO INTERNAL TABLE******

    INSERT <wa_final> INTO TABLE <it_final>.

*******POPULATING DATA*******************************  
  LOOP.
   
   ASSIGN COMPONENT 'FIELD1' OF STRUCTURE <wa_final> TO <w_field>.
   <w_field> = '12345'.

    ASSIGN COMPONENT 'FIELD2' OF STRUCTURE <wa_final> TO <w_field>.
   <w_field> = '21453DD'.

   FIELD1 AND FIELD2 ARE COMPONENTS OF FIELDCATALOG.
    
ENDLOOP.      

  ENDLOOP.
Read only

Former Member
0 Likes
617

Hi

U need to use the field-symbols:

LOOP AT TB_DY_CAT.
   ASSIGN COMPONENT TB_DY_CAT-FIELDNAME OF STRUCTURE <DYN_WA> TO <VALUE>.
    
   CASE TB_DY_CAT-FIELDNAME.
       WHEN ....... <VALUE> = .....
       WHEN ....... <VALUE> = .....
       WHEN ....... <VALUE> = .....
   ENDCASE.
ENDLOOP.
IF NOT <DYN_WA> IS INITIAL.
 APPEND <DYN_WA> TO <DYN_TABLE>.
ENDIF.

Max

Read only

Former Member
0 Likes
617

Sri,

Follow below logic .

have used classes for dynamic internal table, SO i here give you my sample code for your help.

DATA : new_table TYPE REF TO data,

new_line TYPE REF TO data.

FIELD-SYMBOLS : <TAB1> type standard table,

<l_table> TYPE ANY TABLE,

<l_line> TYPE ANY,

<l_field> TYPE ANY.

count = count + 1.

clear wa_fieldcat.

wa_fieldcat-col_pos = count.

wa_fieldcat-fieldname = 'CONDITION'.

wa_fieldcat-coltext = 'Condition Value'.

wa_fieldcat-ref_field = 'KWERT'.

wa_fieldcat-ref_table = 'KONV'.

wa_fieldcat-outputlen = 13.

append wa_fieldcat to it_fieldcat.

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = it_fieldcat

IMPORTING

ep_table = new_table.

ASSIGN new_table->* TO <l_table>.

CREATE DATA new_line LIKE LINE OF <l_table>.

ASSIGN new_line->* TO <l_line>.

ASSIGN COMPONENT KWERT OF STRUCTURE <l_line> TO <l_field>.

<l_field> = t_kschlkonv-vtext.

  • NOw u append internal table

Pls. Mark if useful