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

Dynamic internal table

former_member463678
Participant
0 Likes
1,042

Hello Experts,

I need to create a dynamic internal table.

I have one internal table with 3 fields. Now I need to add fields dynamically to this internal table based on the number of records in database table.

for ex: My database table contains 5 records then my internal should contains 8 fields ( 3 of the fields already contains).

Any suggestions pls.........

Thnaks in advance.

Zak.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
952

Hi,

Did you search the forum before putting your query ? There is ample materila on this already.

regards,

Advait

7 REPLIES 7
Read only

Former Member
0 Likes
953

Hi,

Did you search the forum before putting your query ? There is ample materila on this already.

regards,

Advait

Read only

uwe_schieferstein
Active Contributor
0 Likes
952

Hello Zak

You may have a look at my Wiki posting

[Creating Flat and Complex Internal Tables Dynamically using RTTI |https://wiki.sdn.sap.com/wiki/display/Snippets/CreatingFlatandComplexInternalTablesDynamicallyusingRTTI]

Regards

Uwe

Read only

Former Member
0 Likes
952

Hello,

Please chk the following code.

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = it_int_tab

IMPORTING

ep_table = it_new_tab

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 it_new_tab->* TO <it_dyn>.

*Create dynamic work area and assign to FS

CREATE DATA g_new_line LIKE LINE OF <it_dyn>.

ASSIGN g_new_line->* TO <wa_dyn>.

IF sy-subrc NE 0.

MESSAGE e002(sy) WITH 'Failed to create dynamic table'.

ENDIF.

Thanks.

Read only

0 Likes
952

Follow this code:

FUNCTION z_bspl_grid_create1 .

*"----


""Global Interface:

*" IMPORTING

*" VALUE(IS_SETTINGS) LIKE RFBILA_ALV_SETTINGS STRUCTURE

*" RFBILA_ALV_SETTINGS

*" VALUE(IT_LIST_COMMENTARY) TYPE SLIS_T_LISTHEADER OPTIONAL

*" REFERENCE(I_GRID_TITLE) TYPE LVC_TITLE OPTIONAL

*" REFERENCE(IS_GRID_SETTINGS) TYPE LVC_S_GLAY OPTIONAL

*"----


PERFORM bspl_grid_totals_calculate TABLES gt_rsthie

gt_bspldata

gt_gridtotals

USING is_settings.

PERFORM bspl_grid_outtab_fill TABLES gt_rsthie

gt_bspldata

gt_gridtotals

gt_ergsl_text

gt_edit_settings

gt_gridouttab

USING is_settings.

*Modifications by Anitha-----

DATA z_gridouttab LIKE gt_gridouttab OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF itab OCCURS 0,

racct LIKE gt_gridouttab-racct,

ergsl LIKE gt_gridouttab-ergsl,

text LIKE gt_gridouttab-text,

rbukrs LIKE gt_gridouttab-rbukrs,

repval LIKE gt_gridouttab-repval,

END OF itab.

*modifications by anitha

DATA: BEGIN OF itab1 OCCURS 0,

ergsl LIKE gt_gridouttab-ergsl,

rbukrs LIKE gt_gridouttab-rbukrs,

racct LIKE gt_gridouttab-racct,

text LIKE gt_gridouttab-text,

repval LIKE gt_gridouttab-repval,

END OF itab1.

DATA: BEGIN OF itab2 OCCURS 0,

ergsl LIKE gt_gridouttab-ergsl,

text LIKE gt_gridouttab-text,

END OF itab2.

DATA : BEGIN OF comp_itab OCCURS 0,

rbukrs LIKE gt_gridouttab-rbukrs,

END OF comp_itab.

DATA num_cols TYPE i.

*Second time modifications

TYPE-POOLS: slis,abap.

DATA: dy_table TYPE REF TO data,

dy_line TYPE REF TO data,

xfc TYPE lvc_s_fcat,

ifc TYPE lvc_t_fcat,

it_alvfc TYPE slis_t_fieldcat_alv,

wa_alvfc TYPE slis_fieldcat_alv.

*local data declarations

*DATA: L_CB_PROGRAM LIKE SY-REPID VALUE 'SAPLBSPL'.

DATA: l_cb_program LIKE sy-repid VALUE 'SAPLZFUNC_FI'.

DATA: ls_variant LIKE disvariant.

DATA: ls_layout TYPE slis_layout_alv.

DATA: lt_fieldcat TYPE slis_t_fieldcat_alv.

DATA: lt_sort TYPE slis_t_sortinfo_alv .

DATA: ls_print TYPE slis_print_alv.

*data:FS_LAYOUT TYPE LVC_S_LAYO.

TYPES: BEGIN OF res_itab,

racct LIKE gt_gridouttab-racct, "Account Number

ergsl LIKE gt_gridouttab-ergsl, "Financial Statement Item

text LIKE gt_gridouttab-text, "Text field

END OF res_itab.

********************

*modifications by anitha

DATA: i TYPE i,

total TYPE umsav VALUE 0,

total1 TYPE umsav VALUE 0,

sub_tot TYPE umsav VALUE 0,

sub_tot1 TYPE umsav VALUE 0,

sub_tot2 TYPE umsav VALUE 0,

co_subtot1000(13) TYPE c,

co_subtot1005(13) TYPE c,

co_subtot1006(13) TYPE c,

co_subtot1007(13) TYPE c,

co_subtot1008(13) TYPE c,

co_subtot1201(13) TYPE c,

co_subtot1202(13) TYPE c,

co_subtot1301(13) TYPE c,

co_subtot1302(13) TYPE c,

co_subtot1401(13) TYPE c,

co_subtot1501(13) TYPE c,

*declaration of grand totals

gr_tot1000(13) TYPE c,

gr_tot1005(13) TYPE c,

gr_tot1006(13) TYPE c,

gr_tot1007(13) TYPE c,

gr_tot1008(13) TYPE c,

gr_tot1201(13) TYPE c,

gr_tot1202(13) TYPE c,

gr_tot1301(13) TYPE c,

gr_tot1302(13) TYPE c,

gr_tot1401(13) TYPE c,

gr_tot1501(13) TYPE c,

*declaration of super grand totals

ggr_tot1000(13) TYPE c,

ggr_tot1005(13) TYPE c,

ggr_tot1006(13) TYPE c,

ggr_tot1007(13) TYPE c,

ggr_tot1008(13) TYPE c,

ggr_tot1201(13) TYPE c,

ggr_tot1202(13) TYPE c,

ggr_tot1301(13) TYPE c,

ggr_tot1302(13) TYPE c,

ggr_tot1401(13) TYPE c,

ggr_tot1501(13) TYPE c.

FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,

<dyn_table1> TYPE STANDARD TABLE,

<dyn_wa>,

<dyn_wa1>,

<dyn_field>,

<DYN_WA2>,

<dyn_field1>.

PERFORM bspl_grid_alv_interface_set

TABLES lt_fieldcat

USING is_settings

CHANGING l_cb_program

ls_variant

ls_layout.

PERFORM bspl_grid_sortinfos_set TABLES lt_sort[].

PERFORM bspl_grid_newpage_set TABLES gt_gridouttab.

PERFORM bspl_grid_printinfos_set USING ls_print.

z_gridouttab[] = gt_gridouttab[].

LOOP AT z_gridouttab.

itab-racct = z_gridouttab-racct. " G/L Account

itab-ergsl = z_gridouttab-ergsl. " FS item

itab-text = z_gridouttab-text. " Test for P/L item

itab-rbukrs = z_gridouttab-rbukrs." Company code

comp_itab-rbukrs = z_gridouttab-rbukrs.

itab-repval = z_gridouttab-repval.

  • APPEND itab.

COLLECT itab.

APPEND comp_itab.

CLEAR itab.

CLEAR comp_itab.

ENDLOOP.

SORT comp_itab BY rbukrs.

DELETE ADJACENT DUPLICATES FROM comp_itab.

LOOP AT comp_itab.

IF comp_itab-rbukrs EQ ''.

DELETE comp_itab.

ENDIF.

ENDLOOP.

DESCRIBE TABLE comp_itab LINES num_cols.

*modifications by shanker

  • ITAB1[] = ITAB[].

DATA: lv_ergsl LIKE itab-ergsl,

lv_text LIKE itab-text.

LOOP AT itab.

  • IF SY-TABIX = '1'.

  • LV_ERGSL = ITAB-ERGSL.

  • LV_text = ITAB-text.

MOVE itab-ergsl TO itab2-ergsl.

MOVE itab-text TO itab2-text.

APPEND itab2.

  • ENDIF.

*IF ITAB-ERGSL NE LV_ERGSL.

  • MOVE ITAB-ERGSL TO ITAB2-ERGSL.

  • APPEND ITAB2.

  • LV_ERGSL = ITAB-ERGSL.

  • ENDIF.

MOVE-CORRESPONDING itab TO itab1.

APPEND itab1.

ENDLOOP.

DELETE ADJACENT DUPLICATES FROM itab2 COMPARING ergsl .

***************************************

  • SORT ITAB1 BY RACCT RBUKRS.

  • DELETE ADJACENT DUPLICATES FROM ITAB1 COMPARING RACCT .

*ENDFORM. "GET_NUM_OF_COMPANY_CODES

*Get table structure

*FORM GET_STRUCTURE.

DATA : idetails TYPE abap_compdescr_tab,

xdetails TYPE abap_compdescr.

DATA : ref_table_des TYPE REF TO cl_abap_structdescr.

DATA fld_pos TYPE i VALUE 1.

  • Get the structure of the table.

ref_table_des ?=

cl_abap_typedescr=>describe_by_name( 'RES_ITAB' ).

idetails[] = ref_table_des->components[].

LOOP AT idetails INTO xdetails.

CLEAR xfc.

xfc-col_pos = fld_pos.

xfc-fieldname = xdetails-name .

IF sy-tabix = 1.

xfc-seltext = 'Account Number'.

ELSEIF sy-tabix = 2.

xfc-seltext = 'FS Item'.

xfc-key = 'X'.

ELSE.

  • xfc-seltext = 'Text for B/S P&L item'.

xfc-seltext = 'Text item'.

xfc-outputlen = 25.

ENDIF.

xfc-datatype = xdetails-type_kind.

xfc-inttype = xdetails-type_kind.

xfc-intlen = xdetails-length.

  • xfc-decimals = xdetails-decimals.

APPEND xfc TO ifc.

fld_pos = fld_pos + 1.

ENDLOOP.

DO num_cols TIMES.

CLEAR xfc.

READ TABLE comp_itab INDEX sy-index.

xfc-fieldname = comp_itab-rbukrs .

xfc-seltext = comp_itab-rbukrs .

xfc-col_pos = fld_pos.

xfc-outputlen = 15.

*modifications by shanker

xfc-do_sum = 'X'.

XFC-DATATYPE = 'CURR'.

  • xfc-datatype = 'CHAR'.

xfc-just = 'R'.

APPEND xfc TO ifc.

fld_pos = fld_pos + 1.

ENDDO.

CLEAR xfc.

xfc-fieldname = 'RECORD_TOTAL' .

xfc-seltext = 'Record_total'.

xfc-col_pos = fld_pos.

xfc-outputlen = 15.

  • XFC-DO_SUM = 'X'. "Display column total

XFC-DATATYPE = 'CURR'.

  • xfc-datatype = 'CHAR'.

xfc-just = 'R'.

APPEND xfc TO ifc.

*ENDFORM. "get_structure

&----


*& Form create_dynamic_itab

&----


  • text

----


*FORM CREATE_DYNAMIC_ITAB.

*Create dynamic internal table and assign to FS

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = ifc

IMPORTING

ep_table = dy_table.

ASSIGN dy_table->* TO <dyn_table>.

  • Create dynamic work area and assign to FS

CREATE DATA dy_line LIKE LINE OF <dyn_table>.

ASSIGN dy_line->* TO <dyn_wa>.

*modifications by shanker

*----


*Create dynamic internal table and assign to FS

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = ifc

IMPORTING

ep_table = dy_table.

ASSIGN dy_table->* TO <dyn_table1>.

  • Create dynamic work area and assign to FS

CREATE DATA dy_line LIKE LINE OF <dyn_table1>.

ASSIGN dy_line->* TO <dyn_wa1>.

*****************************************

*ENDFORM. "create_dynamic_itab

&----


*& Form get_data

&----


  • text

----


*FORM GET_DATA.

*data:itab3 like itab1 occurs 0 with header line.

  • loop at itab1.

  • if itab1-ergsl eq '51 - 59' and itab1-racct eq ''.

  • itab1-ergsl = ''.

  • itab1-racct = ' '.

  • endif.

*append itab1.

*endloop.

LOOP AT itab1. " assigning <fs_itab1>.

ASSIGN COMPONENT 'RACCT' OF STRUCTURE <dyn_wa> TO <dyn_field>.

<dyn_field> = itab1-racct.

ASSIGN COMPONENT 'ERGSL' OF STRUCTURE <dyn_wa> TO <dyn_field>.

<dyn_field> = itab1-ergsl.

ASSIGN COMPONENT 'TEXT' OF STRUCTURE <dyn_wa> TO <dyn_field>.

<dyn_field> = itab1-text.

i = 4.

CLEAR comp_itab.

LOOP AT comp_itab.

ASSIGN COMPONENT i OF STRUCTURE <dyn_wa> TO <dyn_field>.

IF itab1-rbukrs EQ comp_itab-rbukrs.

<dyn_field> = itab1-repval.

sub_tot = itab1-repval.

IF itab1-rbukrs EQ '1000'.

co_subtot1000 = co_subtot1000 + itab1-repval.

ELSEIF itab1-rbukrs EQ '1005'.

co_subtot1005 = co_subtot1005 + itab1-repval.

ELSEIF itab1-rbukrs EQ '1006'.

co_subtot1006 = co_subtot1006 + itab1-repval.

ELSEIF itab1-rbukrs EQ '1007'.

co_subtot1007 = co_subtot1007 + itab1-repval.

ELSEIF itab1-rbukrs EQ '1008'.

co_subtot1008 = co_subtot1008 + itab1-repval.

ELSEIF itab1-rbukrs EQ '1201'.

co_subtot1201 = co_subtot1201 + itab1-repval.

ELSEIF itab1-rbukrs EQ '1202'.

co_subtot1202 = co_subtot1202 + itab1-repval.

ELSEIF itab1-rbukrs EQ '1301'.

co_subtot1301 = co_subtot1301 + itab1-repval.

ELSEIF itab1-rbukrs EQ '1302'.

co_subtot1302 = co_subtot1302 + itab1-repval.

ELSEIF itab1-rbukrs EQ '1401'.

co_subtot1401 = co_subtot1401 + itab1-repval.

ELSEIF itab1-rbukrs EQ '1501'.

co_subtot1501 = co_subtot1501 + itab1-repval.

ENDIF.

  • ENDIF.

ELSEIF itab1-ergsl = '10 - 29'

OR itab1-ergsl = '10 - 22'

OR itab1-ergsl = '28 - 289'

OR itab1-ergsl = '311 - 399'

OR itab1-ergsl = '3410'

OR itab1-ergsl = '3499'

OR itab1-ergsl = '51 - 59'

OR itab1-ergsl = '610 - 619'. ") AND itab1-racct NE space.

<dyn_field> = space.

sub_tot = 0.

*subtot assignment

ELSEIF itab1-racct EQ space AND itab1-ergsl NE space." AND itab1-text EQ space." AND I = 4.

IF '1000' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1000.

gr_tot1000 = gr_tot1000 + co_subtot1000.

co_subtot1000 = 0.

ENDIF.

IF '1005' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1005 .

gr_tot1005 = gr_tot1005 + co_subtot1005.

co_subtot1005 = 0.

ENDIF.

IF '1006' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1006 .

gr_tot1006 = gr_tot1006 + co_subtot1006.

co_subtot1006 = 0.

ENDIF.

IF '1007' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1007.

gr_tot1007 = gr_tot1007 + co_subtot1007.

co_subtot1007 = 0.

ENDIF.

IF '1008' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1008.

gr_tot1008 = gr_tot1008 + co_subtot1008.

co_subtot1008 = 0.

ENDIF.

IF '1201' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1201 .

gr_tot1201 = gr_tot1201 + co_subtot1201.

co_subtot1201 = 0.

ENDIF.

IF '1202' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1202 .

gr_tot1202 = gr_tot1202 + co_subtot1202.

co_subtot1202 = 0.

ENDIF.

IF '1301' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1301 .

gr_tot1301 = gr_tot1301 + co_subtot1301.

co_subtot1301 = 0.

ENDIF.

IF '1302' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1302 .

gr_tot1302 = gr_tot1302 + co_subtot1302.

co_subtot1302 = 0.

ENDIF.

IF '1401' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1401 .

gr_tot1401 = gr_tot1401 + co_subtot1401.

co_subtot1401 = 0.

ENDIF.

IF '1501' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1501 .

gr_tot1501 = gr_tot1501 + co_subtot1501.

co_subtot1501 = 0.

ENDIF.

ELSE.

<dyn_field> = 0.

sub_tot = 0.

ENDIF.

*start shan

IF itab1-ergsl eq '331 - 349'.

IF '1000' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1000.

gr_tot1000 = gr_tot1000 + co_subtot1000.

co_subtot1000 = 0.

ENDIF.

IF '1005' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1005 .

gr_tot1005 = gr_tot1005 + co_subtot1005.

co_subtot1005 = 0.

ENDIF.

IF '1006' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1006 .

gr_tot1006 = gr_tot1006 + co_subtot1006.

co_subtot1006 = 0.

ENDIF.

IF '1007' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1007.

gr_tot1007 = gr_tot1007 + co_subtot1007.

co_subtot1007 = 0.

ENDIF.

IF '1008' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1008.

gr_tot1008 = gr_tot1008 + co_subtot1008.

co_subtot1008 = 0.

ENDIF.

IF '1201' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1201 .

gr_tot1201 = gr_tot1201 + co_subtot1201.

co_subtot1201 = 0.

ENDIF.

IF '1202' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1202 .

gr_tot1202 = gr_tot1202 + co_subtot1202.

co_subtot1202 = 0.

ENDIF.

IF '1301' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1301 .

gr_tot1301 = gr_tot1301 + co_subtot1301.

co_subtot1301 = 0.

ENDIF.

IF '1302' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1302 .

gr_tot1302 = gr_tot1302 + co_subtot1302.

co_subtot1302 = 0.

ENDIF.

IF '1401' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1401 .

gr_tot1401 = gr_tot1401 + co_subtot1401.

co_subtot1401 = 0.

ENDIF.

IF '1501' EQ comp_itab-rbukrs.

<dyn_field> = co_subtot1501 .

gr_tot1501 = gr_tot1501 + co_subtot1501.

co_subtot1501 = 0.

ENDIF.

endif.

*endshank

*Grand total assignment

IF itab1-racct EQ space AND itab1-ergsl eq '10 - 19' "ASSETS

or itab1-ergsl eq '211 - 223'

or itab1-ergsl eq '10 - 22'

or itab1-ergsl eq '231 - 241'

or itab1-ergsl eq '311 - 324' "LIABILITIES & EQUITY

or itab1-ergsl eq '331 - 349'

or itab1-ergsl eq '3410'

or itab1-ergsl eq '3499'

or itab1-ergsl eq '221 - 223'.

IF '1000' EQ comp_itab-rbukrs.

<dyn_field> = gr_tot1000.

ggr_tot1000 = ggr_tot1000 + gr_tot1000.

gr_tot1000 = 0.

ENDIF.

IF '1005' EQ comp_itab-rbukrs.

<dyn_field> = gr_tot1005.

ggr_tot1005 = ggr_tot1005 + gr_tot1005.

gr_tot1005 = 0.

ENDIF.

IF '1006' EQ comp_itab-rbukrs.

<dyn_field> = gr_tot1006.

ggr_tot1006 = ggr_tot1006 + gr_tot1006.

gr_tot1006 = 0.

ENDIF.

IF '1007' EQ comp_itab-rbukrs.

<dyn_field> = gr_tot1007.

ggr_tot1007 = ggr_tot1007 + gr_tot1007.

gr_tot1007 = 0.

ENDIF.

IF '1008' EQ comp_itab-rbukrs.

<dyn_field> = gr_tot1008.

ggr_tot1008 = ggr_tot1008 + gr_tot1008.

gr_tot1008 = 0.

ENDIF.

IF '1201' EQ comp_itab-rbukrs.

<dyn_field> = gr_tot1201.

ggr_tot1201 = ggr_tot1201 + gr_tot1201.

gr_tot1201 = 0.

ENDIF.

IF '1202' EQ comp_itab-rbukrs.

<dyn_field> = gr_tot1202.

ggr_tot1202 = ggr_tot1202 + gr_tot1202.

gr_tot1202 = 0.

ENDIF.

IF '1301' EQ comp_itab-rbukrs.

<dyn_field> = gr_tot1301.

ggr_tot1301 = ggr_tot1301 + gr_tot1301.

gr_tot1301 = 0.

ENDIF.

IF '1302' EQ comp_itab-rbukrs.

<dyn_field> = gr_tot1302.

ggr_tot1302 = ggr_tot1302 + gr_tot1302.

gr_tot1302 = 0.

ENDIF.

IF '1401' EQ comp_itab-rbukrs.

<dyn_field> = gr_tot1401.

ggr_tot1401 = ggr_tot1401 + gr_tot1401.

gr_tot1401 = 0.

ENDIF.

IF '1501' EQ comp_itab-rbukrs.

<dyn_field> = gr_tot1501.

ggr_tot1501 = ggr_tot1501 + gr_tot1501.

gr_tot1501 = 0.

ENDIF.

endif.

*Super grand total assignment

IF itab1-racct EQ space AND itab1-ergsl eq '10 - 29' "ASSETS

or itab1-ergsl eq '311 - 399'. "LIABILITIES & EQUITY

IF '1000' EQ comp_itab-rbukrs.

<dyn_field> = ggr_tot1000.

ggr_tot1000 = 0.

ENDIF.

IF '1005' EQ comp_itab-rbukrs.

<dyn_field> = ggr_tot1005.

ggr_tot1005 = 0.

ENDIF.

IF '1006' EQ comp_itab-rbukrs.

<dyn_field> = ggr_tot1006.

ggr_tot1006 = 0.

ENDIF.

IF '1007' EQ comp_itab-rbukrs.

<dyn_field> = ggr_tot1007.

ggr_tot1007 = 0.

ENDIF.

IF '1008' EQ comp_itab-rbukrs.

<dyn_field> = ggr_tot1008.

ggr_tot1008 = 0.

ENDIF.

IF '1201' EQ comp_itab-rbukrs.

<dyn_field> = ggr_tot1201.

ggr_tot1201 = 0.

ENDIF.

IF '1202' EQ comp_itab-rbukrs.

<dyn_field> = ggr_tot1202.

ggr_tot1202 = 0.

ENDIF.

IF '1301' EQ comp_itab-rbukrs.

<dyn_field> = ggr_tot1301.

ggr_tot1301 = 0.

ENDIF.

IF '1302' EQ comp_itab-rbukrs.

<dyn_field> = ggr_tot1302.

ggr_tot1302 = 0.

ENDIF.

IF '1401' EQ comp_itab-rbukrs.

<dyn_field> = ggr_tot1401.

ggr_tot1401 = 0.

ENDIF.

IF '1501' EQ comp_itab-rbukrs.

<dyn_field> = gr_tot1501.

ggr_tot1501 = 0.

ENDIF.

endif.

*shanker

if itab1-ergsl eq '51 - 59' and itab1-text eq 'SALES'.

itab1-ergsl = '610 - 619'.

itab1-text = 'PROJECT COST'.

endif.

*end shanker

if itab1-ergsl eq '10 - 29' and itab1-text eq 'A S S E T S'.

<dyn_field> = space.

endif.

IF itab1-text eq '= = = = = ='

or itab1-text eq '= = = = = ='

or itab1-text eq '================='

or itab1-text eq '= = = = = = = = = = = = ='.

<dyn_field> = space.

endif.

i = i + 1.

total = total + sub_tot.

ENDLOOP.

  • Record total field assignment

ASSIGN COMPONENT i OF STRUCTURE <dyn_wa> TO <dyn_field>.

IF total NE space.

<dyn_field> = total.

ELSE.

<dyn_field> = space.

ENDIF.

  • APPEND <dyn_wa> TO <dyn_table>.

COLLECT <dyn_wa> INTO <dyn_table>.

CLEAR <dyn_wa>.

total = 0.

ENDLOOP.

*----


*shanker commented begin

  • SORT ITAB1 BY ergsl .

  • DATA: FLAG1 TYPE C,

  • FLAG2 TYPE C,

  • LV_RACCT LIKE ITAB1-RACCT.

*

    • DELETE ADJACENT DUPLICATES FROM ITAB1 COMPARING text .

*

*LOOP AT ITAB2.

  • LOOP AT ITAB1 WHERE ERGSL = ITAB2-ERGSL. " assigning <fs_itab1>.

  • LV_RACCT = ITAB1-RACCT.

    • CHECK ITAB1-RBUKRS IS NOT INITIAL.

*IF ITAB1-RACCT IS NOT INITIAL.

  • ASSIGN COMPONENT 'RACCT' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.

  • <DYN_FIELD> = ITAB1-RACCT.

  • ASSIGN COMPONENT 'ERGSL' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.

  • <DYN_FIELD> = ITAB1-ERGSL.

*

  • ASSIGN COMPONENT 'TEXT' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.

  • <DYN_FIELD> = ITAB1-TEXT.

*

  • FLAG2 = 'X'.

*ELSE.

  • ASSIGN COMPONENT 'ERGSL' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.

  • <DYN_FIELD> = ITAB1-ERGSL.

*

  • ASSIGN COMPONENT 'TEXT' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.

  • <DYN_FIELD> = ITAB1-TEXT.

*ENDIF.

    • ASSIGN COMPONENT 'RACCT' OF STRUCTURE <DYN_WA1> TO <DYN_FIELD1>.

    • <DYN_FIELD1> = ITAB1-RACCT.

*IF FLAG2 IS NOT INITIAL.

  • ASSIGN COMPONENT 'ERGSL' OF STRUCTURE <DYN_WA1> TO <DYN_FIELD1>.

  • <DYN_FIELD1> = ITAB1-ERGSL.

*

  • ASSIGN COMPONENT 'TEXT' OF STRUCTURE <DYN_WA1> TO <DYN_FIELD1>.

  • <DYN_FIELD1> = ' '.

*ENDIF.

  • AT END OF ERGSL.

  • IF ITAB1-RBUKRS IS NOT INITIAL AND LV_RACCT IS NOT INITIAL.

  • FLAG1 = 'X'.

  • ENDIF.

  • ENDAT.

*

    • IF FLAG1 = 'X'.

    • ASSIGN COMPONENT 'TEXT' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.

    • <DYN_FIELD> = 'SUB TOTAL'.

    • ENDIF.

**modifications by shanker

*IF ITAB1-RACCT IS NOT INITIAL.

  • I = 4.

  • CLEAR COMP_ITAB.

  • LOOP AT COMP_ITAB.

  • ASSIGN COMPONENT I OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.

*

  • IF ITAB1-RBUKRS EQ COMP_ITAB-RBUKRS.

  • <DYN_FIELD> = ITAB1-REPVAL.

  • SUB_TOT1 = ITAB1-REPVAL.

  • ELSE.

  • <DYN_FIELD> = 0.

  • SUB_TOT1 = 0.

  • ENDIF.

*

  • I = I + 1.

  • TOTAL = TOTAL + SUB_TOT1.

  • ENDLOOP.

*

  • ASSIGN COMPONENT I OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.

  • <DYN_FIELD> = TOTAL.

*

  • APPEND <DYN_WA> TO <DYN_TABLE>.

  • CLEAR <DYN_WA>.

  • ELSE.

  • I = 4.

  • CLEAR COMP_ITAB.

  • LOOP AT COMP_ITAB.

  • ASSIGN COMPONENT I OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.

*

  • IF ITAB1-RBUKRS EQ COMP_ITAB-RBUKRS.

  • <DYN_FIELD> = SPACE.

  • ELSE.

  • <DYN_FIELD> = SPACE.

  • ENDIF.

*

  • I = I + 1.

  • ASSIGN COMPONENT I OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.

  • <DYN_FIELD> = SPACE.

  • ENDLOOP.

*

  • APPEND <DYN_WA> TO <DYN_TABLE>.

  • CLEAR <DYN_WA>.

  • ENDIF.

*

  • CLEAR TOTAL.

  • SUB_TOT = SUB_TOT + ITAB1-REPVAL.

  • I = 4.

  • AT END OF RBUKRS.

  • IF ITAB1-RBUKRS IS NOT INITIAL.

  • CLEAR COMP_ITAB.

  • LOOP AT COMP_ITAB.

  • ASSIGN COMPONENT I OF STRUCTURE <DYN_WA1> TO <DYN_FIELD1>.

*

  • IF ITAB1-RBUKRS EQ COMP_ITAB-RBUKRS.

  • <DYN_FIELD1> = SUB_TOT.

  • SUB_TOT2 = SUB_TOT.

  • CLEAR SUB_TOT.

  • ELSE.

**********************************************

    • <DYN_FIELD> = 0.

  • ENDIF.

  • I = I + 1.

  • ENDLOOP.

  • TOTAL1 = TOTAL1 + SUB_TOT2.

  • ENDIF.

  • IF FLAG1 = 'X' AND FLAG2 = 'X'.

  • ASSIGN COMPONENT I OF STRUCTURE <DYN_WA1> TO <DYN_FIELD>.

  • <DYN_FIELD> = TOTAL1.

  • APPEND <DYN_WA1> TO <DYN_TABLE>.

  • CLEAR <DYN_WA1>.

  • CLEAR: TOTAL1, SUB_TOT2.

*

  • CLEAR FLAG1. CLEAR FLAG2.

  • ENDIF.

  • ENDAT.

  • ENDLOOP.

*ENDLOOP.

*shanker comment end

*****************************************************

LOOP AT ifc INTO xfc.

wa_alvfc-fieldname = xfc-fieldname.

wa_alvfc-seltext_s = xfc-seltext.

wa_alvfc-col_pos = xfc-col_pos.

wa_alvfc-outputlen = xfc-outputlen.

  • wa_alvfc-do_sum = xfc-do_sum.

wa_alvfc-datatype = xfc-datatype.

APPEND wa_alvfc TO it_alvfc.

ENDLOOP.

  • u2022 Call ABAP List Viewer (ALV)

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = l_cb_program

i_callback_pf_status_set = 'BSPL_GRID_PF_STATUS_SET'

i_callback_user_command = 'BSPL_GRID_USER_COMMAND'

i_callback_top_of_page = 'BSPL_GRID_TOP'

i_callback_html_top_of_page = 'BSPL_GRID_TOP_HTML'

i_grid_title = i_grid_title

i_grid_settings = is_grid_settings

is_layout = ls_layout

it_fieldcat = it_alvfc

i_default = 'X'

i_save = 'A'

is_variant = ls_variant

is_print = ls_print

  • IT_SORT = LT_SORT

TABLES

t_outtab = <dyn_table>.

*<dyn_table>

  • CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

  • EXPORTING

    • I_INTERFACE_CHECK = ' '

    • I_BUFFER_ACTIVE = ' '

  • I_CALLBACK_PROGRAM = L_CB_PROGRAM

  • I_CALLBACK_PF_STATUS_SET = 'BSPL_GRID_PF_STATUS_SET'

  • I_CALLBACK_USER_COMMAND = 'BSPL_GRID_USER_COMMAND'

  • I_CALLBACK_TOP_OF_PAGE = 'BSPL_GRID_TOP'

  • I_CALLBACK_HTML_TOP_OF_PAGE = 'BSPL_GRID_TOP_HTML'

    • I_CALLBACK_HTML_END_OF_LIST = ' '

    • I_STRUCTURE_NAME = 'BSPL_GRID_FIELDCAT'

    • I_BACKGROUND_ID = ' '

    • I_GRID_TITLE = T011T-VSTXT

  • I_GRID_TITLE = I_GRID_TITLE

  • I_GRID_SETTINGS = IS_GRID_SETTINGS

  • IS_LAYOUT = LS_LAYOUT

  • IT_FIELDCAT = it_alvfc

    • IT_FIELDCAT = LT_FIELDCAT

    • IT_EXCLUDING =

    • IT_SPECIAL_GROUPS =

  • IT_SORT = LT_SORT

    • IT_FILTER =

    • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = 'A'

  • IS_VARIANT = LS_VARIANT

    • IT_EVENTS =

    • IT_EVENT_EXIT =

  • IS_PRINT = LS_PRINT

    • IS_REPREP_ID =

    • I_SCREEN_START_COLUMN = 0

    • I_SCREEN_START_LINE = 0

    • I_SCREEN_END_COLUMN = 0

    • I_SCREEN_END_LINE = 0

    • IMPORTING

    • E_EXIT_CAUSED_BY_CALLER =

    • ES_EXIT_CAUSED_BY_USER =

  • TABLES

  • T_OUTTAB = <dyn_table>

  • T_OUTTAB = GT_GRIDOUTTAB

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

*Modification.----


end

PERFORM call_badi_exit TABLES gt_gridouttab

it_list_commentary.

ENDFUNCTION.

&----


*& Form BSPL_GRID_OUTTAB_FILL1

&----


  • text

----


  • -->PT_NODE text

  • -->PT_DATA text

  • -->PT_TOTALS text

  • -->PT_TEXT text

  • -->PT_EDIT text

  • -->PT_OUTTAB text

  • -->VALUE(PS_SETTINGS) text

----


FORM bspl_grid_outtab_fill1

TABLES pt_node TYPE tt_rsthie

pt_data TYPE tt_bspl_data

pt_totals TYPE tt_grid_totals

pt_text TYPE tt_ergsl_text

pt_edit TYPE tt_edit_settings

pt_outtab TYPE tt_grid_outtab

USING value(ps_settings) LIKE rfbila_alv_settings.

  • local data declaration

DATA: lt_predecessor TYPE tt_grid_predecessor WITH HEADER LINE.

DATA: l_id LIKE rsthie-id.

DATA: l_fberflg LIKE con_x.

DATA: l_fber_tlevel LIKE rsthie-tlevel.

DATA: ls_node_saknr TYPE ts_node_saknr.

LOOP AT pt_node ASSIGNING <rsthie>.

CASE <rsthie>-type.

WHEN con_top.

WHEN con_bpos.

CLEAR: l_fberflg.

PERFORM bspl_grid_bpos_to_outtab TABLES pt_totals

pt_text

pt_edit

pt_outtab

lt_predecessor

USING <rsthie>

ps_settings

CHANGING l_id.

WHEN con_acct.

ls_node_saknr = <rsthie>-name.

CHECK: g_list_state = con_acct.

CHECK: l_fberflg IS INITIAL

OR l_fber_tlevel = <rsthie>-tlevel.

PERFORM bspl_grid_acct_to_outtab TABLES pt_totals

pt_outtab

pt_data

USING <rsthie>

ps_settings

CHANGING l_id.

WHEN con_fber.

l_fberflg = con_x.

l_fber_tlevel = <rsthie>-tlevel.

PERFORM bspl_grid_fber_to_outtab TABLES pt_totals

pt_outtab

pt_data

USING <rsthie>

ps_settings

CHANGING l_id.

Read only

Former Member
0 Likes
952

DATA : G_TABLE(30) TYPE C,

g_flen(6).

DATA : IDETAILS TYPE ABAP_COMPDESCR_TAB,

XDETAILS TYPE ABAP_COMPDESCR.

DATA : REF_TABLE_DES TYPE REF TO CL_ABAP_STRUCTDESCR,

XFC TYPE LVC_S_FCAT,

IFC TYPE LVC_T_FCAT.

DATA: ig_newtable TYPE REF TO data,

ig_fldcat1 TYPE lvc_t_fcat,

wg_fldcat TYPE lvc_s_fcat,

wg_newline TYPE REF TO data.

FIELD-SYMBOLS: <fs_t_dyntable> TYPE STANDARD TABLE,

<fs_dyntable>,

<fs_fldval> TYPE ANY.

..............................

PERFORM fieldcatalog_build USING c_matnr c_char c_18. " suppose u r internal table contains 3 fields

" say matnr , gstrp and maktx

PERFORM fieldcatalog_build USING c_gstrp c_dats c_8.

PERFORM fieldcatalog_build USING c_maktx c_char c_40.

  • Get the structure of the database table.

REF_TABLE_DES ?=

CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( G_TABLE ). " G_TABLE data base table name

IDETAILS[] = REF_TABLE_DES->COMPONENTS[].

LOOP AT IDETAILS INTO XDETAILS.

CLEAR XFC.

XFC-FIELDNAME = XDETAILS-NAME .

XFC-DATATYPE = XDETAILS-TYPE_KIND.

XFC-INTTYPE = XDETAILS-TYPE_KIND.

XFC-INTLEN = XDETAILS-LENGTH.

XFC-DECIMALS = XDETAILS-DECIMALS.

APPEND XFC TO IFC.

ENDLOOP.

loop at IFC into XFC.

clear g_flen.

g_flen = XFC-INTLEN.

PERFORM fieldcatalog_build USING XFC-FIELDNAME XFC-DATATYPE g_flen.

clear XFC.

endloop.

  • Create dynamic internal table and assign to FS

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = ig_fldcat1

IMPORTING

ep_table = ig_newtable.

ASSIGN ig_newtable->* TO <fs_t_dyntable>.

  • Create dynamic work area and assign to FS

CREATE DATA wg_newline LIKE LINE OF <fs_t_dyntable>.

ASSIGN wg_newline->* TO <fs_dyntable>.

  • To fill data into dynamic internal table ig_material is internal table containing data

LOOP AT ig_material INTO wg_material.

PERFORM fill_dyn_int_table USING c_matnr wg_material-matnr .

PERFORM fill_dyn_int_table USING c_gstrp wg_material-gstrp .

PERFORM fill_dyn_int_table USING c_maktx wg_material-maktx .

*simliarly fill the data of database table which is stored in some internal table

.............

ENDLOOP.

.............................

&----


*& Form fieldcatalog_build

&----


FORM fieldcatalog_build USING fp_fieldname TYPE c

fp_datatype TYPE c

fp_intlen TYPE any.

wg_fldcat-fieldname = fp_fieldname.

wg_fldcat-datatype = fp_datatype.

wg_fldcat-intlen = fp_intlen.

APPEND wg_fldcat TO ig_fldcat1.

ENDFORM. " fieldcatalog_build

&----


*& Form fill_dyn_int_table

&----


FORM fill_dyn_int_table USING fp_fldname TYPE c

fp_fldvalue TYPE any.

ASSIGN COMPONENT fp_fldname

OF STRUCTURE <fs_dyntable> TO <fs_fldval>.

<fs_fldval> = fp_fldvalue.

ENDFORM. " fill_dyn_int_table

Read only

Former Member
0 Likes
952

Hi ,

Go through this

REPORT yusmm_text .

TYPE-POOLS : slis.

TABLES: mara,

makt.

DATA:

gt_makt TYPE STANDARD TABLE OF makt, "Materialkurztexte,

gt_thead TYPE STANDARD TABLE OF thead, "SAPscript: Text-Header,

gt_linetab TYPE STANDARD TABLE OF tline. " SAPscript: Text-Zeilen.

DATA : BEGIN OF gv_text_output_line,

matnr LIKE mara-matnr,

begru LIKE mara-begru,

maktx_en LIKE makt-maktx,

maktx_de LIKE makt-maktx,

maktx_fr LIKE makt-maktx,

maktx_es LIKE makt-maktx,

ltxt40_en LIKE tline-tdline,

ltxt40_de LIKE tline-tdline,

ltxt40_fr LIKE tline-tdline,

ltxt40_es LIKE tline-tdline,

END OF gv_text_output_line.

DATA:

gt_text_output_line LIKE STANDARD TABLE OF gv_text_output_line,

gt_fieldcat TYPE slis_t_fieldcat_alv,

gv_fieldcat LIKE LINE OF gt_fieldcat,

gs_layout TYPE slis_layout_alv,

gv_repid TYPE sy-repid.

DATA: gv_makt TYPE makt.

CONSTANTS:

BEGIN OF gc,

de TYPE thead-tdspras VALUE 'D',

en TYPE thead-tdspras VALUE 'E',

fr TYPE thead-tdspras VALUE 'F',

es TYPE thead-tdspras VALUE 'S',

tdid_grun TYPE thead-tdid VALUE 'GRUN',

tdobject_mat TYPE thead-tdobject VALUE 'MATERIAL',

on(01) TYPE c VALUE 'X',

yes(01) TYPE c VALUE 'X',

found TYPE sy-subrc VALUE '00', " Return-Code

rc_ok TYPE sy-subrc VALUE '00', " Return-Code

off TYPE sy-subrc VALUE '00', " return code

false TYPE sy-subrc VALUE '00', " boolean

true TYPE sy-subrc VALUE '01', " boolean

END OF gc.

DATA: BEGIN OF gv,

former_error LIKE sy-marky, " Fehlermeldung bereits

file_open(1), " Flag open file

rec_length TYPE i, " record length

matnr TYPE mara-matnr, " material

repid TYPE syst-repid,

retco TYPE sy-subrc,

END OF gv.

SELECTION-SCREEN: BEGIN OF BLOCK a1 WITH FRAME TITLE text-002.

SELECT-OPTIONS:

s_matnr FOR mara-matnr,

s_mtart FOR mara-mtart.

PARAMETER: gp_size TYPE i DEFAULT 200.

SELECTION-SCREEN: END OF BLOCK a1.

AT SELECTION-SCREEN.

IF gp_size < 0.

MESSAGE e002(00).

ENDIF.

IF gp_size > 50000.

MESSAGE w130(26) WITH text-004.

SET CURSOR FIELD 'gp_size'.

ENDIF.

START-OF-SELECTION.

gv-repid = sy-repid.

PERFORM get_mara_data

TABLES

gt_text_output_line

USING

s_matnr[]

s_mtart[]

gp_size

CHANGING

gv-retco

.

PERFORM get_mat_text

TABLES

gt_makt

gt_text_output_line

gt_thead

gt_linetab

USING

gc

gv-retco

CHANGING

gv_text_output_line

gv_makt

.

PERFORM data_output

TABLES

gt_fieldcat

gt_text_output_line

USING

gs_layout

gc

CHANGING

gv_repid

gv_fieldcat

gv

.

END-OF-SELECTION.

*&----


*

*& Form get_mara_data

*&----


*

  • Materialdaten lesen

*----


*

  • <->ct_gt_text_output_line Ausgabetabelle

  • -->it_s_matnr Parameter Materialnummer

  • -->it_s_mtart Parameter Materialart

  • -->if_gp_size Parameter Anzahl Materialnummern

*----


*

FORM get_mara_data TABLES ct_gt_text_output_line STRUCTURE

gv_text_output_line

USING it_s_matnr LIKE s_matnr[]

it_s_mtart LIKE s_mtart[]

if_gp_size

CHANGING if_gv-retco. "#EC *

  • MARA in die Übergabestruktur einlesen

SELECT matnr begru

FROM mara UP TO if_gp_size ROWS

APPENDING CORRESPONDING FIELDS OF TABLE ct_gt_text_output_line

WHERE matnr IN it_s_matnr

AND mtart IN it_s_mtart.

if_gv-retco = sy-subrc.

ENDFORM. " get_mara_data

*&----


*

*& Form get_mat_text

*&----


*

  • Kurz- und Langtexte zum Material lesen

*----


*

  • <->ct_gt_makt Materialkurztexte

  • <->ct_gt_text_output_line Ausgabetabelle

  • <->ct_gt_thead Kopftabelle für ALV

  • <->ct_gt_linetab Zeilentabelle für ALV

  • -->if_gc Globale Konstanten

  • <--cf_gv_text_output_line Struktur Ausgabetabelle

  • <--cf_gv_makt Struktru Materialkurztexte

*----


*

FORM get_mat_text TABLES ct_gt_makt STRUCTURE makt

ct_gt_text_output_line STRUCTURE

gv_text_output_line

ct_gt_thead STRUCTURE thead

ct_gt_linetab STRUCTURE tline

USING if_gc LIKE gc

if_gv-retco

CHANGING cf_gv_text_output_line LIKE

gv_text_output_line

cf_gv_makt LIKE gv_makt

.

IF if_gv-retco = if_gc-found.

  • Materialkurztexte in alles Sprachen einlesen

SELECT * FROM makt APPENDING TABLE ct_gt_makt

FOR ALL ENTRIES IN ct_gt_text_output_line

WHERE matnr = ct_gt_text_output_line-matnr.

  • Kurztexte in die sprachabhängigen Felder bringen

LOOP AT ct_gt_text_output_line INTO cf_gv_text_output_line.

LOOP AT ct_gt_makt INTO cf_gv_makt

WHERE matnr = cf_gv_text_output_line-matnr.

CASE cf_gv_makt-spras.

WHEN if_gc-de.

cf_gv_text_output_line-maktx_de = cf_gv_makt-maktx.

WHEN if_gc-en.

cf_gv_text_output_line-maktx_en = cf_gv_makt-maktx.

WHEN if_gc-fr.

cf_gv_text_output_line-maktx_fr = cf_gv_makt-maktx.

WHEN if_gc-es.

cf_gv_text_output_line-maktx_es = cf_gv_makt-maktx.

WHEN OTHERS.

ENDCASE.

ENDLOOP.

  • Langtexte mit einem Funktionsbaustein holen und die Ausgabetabelle

  • bringen

  • LANGTEXT DE

CLEAR ct_gt_thead[].

ct_gt_thead-tdobject = if_gc-tdobject_mat.

ct_gt_thead-tdname = cf_gv_text_output_line-matnr.

ct_gt_thead-tdid = if_gc-tdid_grun.

ct_gt_thead-tdspras = if_gc-de.

CALL FUNCTION 'TEXT_READ'

EXPORTING

i_header = ct_gt_thead

i_readonly = if_gc-on

IMPORTING

e_header = ct_gt_thead

TABLES

t_lines = ct_gt_linetab[]

EXCEPTIONS

notfound = 1.

IF sy-subrc = if_gc-found.

READ TABLE ct_gt_linetab INDEX 1.

cf_gv_text_output_line-ltxt40_de =

ct_gt_linetab-tdline.

ENDIF.

  • LANGTEXT EN

CLEAR ct_gt_thead[].

ct_gt_thead-tdobject = if_gc-tdobject_mat.

ct_gt_thead-tdname = cf_gv_text_output_line-matnr.

ct_gt_thead-tdid = if_gc-tdid_grun.

ct_gt_thead-tdspras = if_gc-en.

CALL FUNCTION 'TEXT_READ'

EXPORTING

i_header = ct_gt_thead

i_readonly = if_gc-on

IMPORTING

e_header = ct_gt_thead

TABLES

t_lines = ct_gt_linetab[]

EXCEPTIONS

notfound = 1.

IF sy-subrc = if_gc-found.

READ TABLE ct_gt_linetab INDEX 1.

cf_gv_text_output_line-ltxt40_en =

ct_gt_linetab-tdline.

ENDIF.

  • LANGTEXT FR

CLEAR ct_gt_thead[].

ct_gt_thead-tdobject = if_gc-tdobject_mat.

ct_gt_thead-tdname = cf_gv_text_output_line-matnr.

ct_gt_thead-tdid = if_gc-tdid_grun.

ct_gt_thead-tdspras = if_gc-fr.

CALL FUNCTION 'TEXT_READ'

EXPORTING

i_header = ct_gt_thead

i_readonly = if_gc-on

IMPORTING

e_header = ct_gt_thead

TABLES

t_lines = ct_gt_linetab[]

EXCEPTIONS

notfound = 1.

IF sy-subrc = if_gc-found.

READ TABLE ct_gt_linetab INDEX 1.

cf_gv_text_output_line-ltxt40_fr =

ct_gt_linetab-tdline.

ENDIF.

  • LANGTEXT ES

CLEAR ct_gt_thead[].

ct_gt_thead-tdobject = if_gc-tdobject_mat.

ct_gt_thead-tdname = cf_gv_text_output_line-matnr.

ct_gt_thead-tdid = if_gc-tdid_grun.

ct_gt_thead-tdspras = if_gc-es.

CALL FUNCTION 'TEXT_READ'

EXPORTING

i_header = ct_gt_thead

i_readonly = if_gc-on

IMPORTING

e_header = ct_gt_thead

TABLES

t_lines = ct_gt_linetab[]

EXCEPTIONS

notfound = 1.

IF sy-subrc = if_gc-found.

READ TABLE ct_gt_linetab INDEX 1.

cf_gv_text_output_line-ltxt40_es =

ct_gt_linetab-tdline.

ENDIF.

MODIFY ct_gt_text_output_line FROM cf_gv_text_output_line.

ENDLOOP.

ENDIF.

ENDFORM. " get_mat_text

*&----


*

*& Form data_output

*&----


*

  • Daten mit ALV ausgeben

*----


*

  • <->ct_GT_FIELDCAT Feldkatalog für ALV

  • <->ct_gt_text_output_line Ausgabetabelle

  • -->P_GS_LAYOUT Layout für ALV

  • -->if_gc Globale Konstanten

  • <--cf_GV_REPID Zur Zeit aufgerufener Reportname

  • <--cf_gv_fieldcat Struktur Feldkatalog

  • <--cf_gv Globale Variablen

*----


*

FORM data_output TABLES ct_gt_fieldcat STRUCTURE gv_fieldcat

ct_gt_text_output_line STRUCTURE

gv_text_output_line

USING if_gs_layout LIKE gs_layout

if_gc LIKE gc

CHANGING cf_gv_repid LIKE gv_repid

cf_gv_fieldcat LIKE gv_fieldcat

cf_gv LIKE gv.

  • CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

  • EXPORTING

  • I_PROGRAM_NAME = GV-REPID

  • I_STRUCTURE_NAME = 'CT_GT_TEXT_OUTPUT_LINE'

  • CHANGING

  • CT_FIELDCAT = CT_GT_FIELDCAT[]

  • EXCEPTIONS

  • INCONSISTENT_INTERFACE = 1

  • PROGRAM_ERROR = 2

  • . "#EC *

PERFORM fieldcatbuild TABLES ct_gt_fieldcat.

gs_layout-colwidth_optimize = if_gc-on.

LOOP AT ct_gt_fieldcat INTO cf_gv_fieldcat

WHERE fieldname = 'CHANGE_IND'.

cf_gv_fieldcat-no_out = 'X'.

MODIFY ct_gt_fieldcat FROM cf_gv_fieldcat.

ENDLOOP.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

it_fieldcat = ct_gt_fieldcat[]

is_layout = if_gs_layout

TABLES

t_outtab = ct_gt_text_output_line

EXCEPTIONS

program_error = 1

OTHERS = 2.

cf_gv-retco = sy-subrc.

IF sy-subrc <> if_gc-found.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDFORM. " data_output

*&----


*

*& Form fieldcatbuild

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM fieldcatbuild TABLES ct_gt_fieldcat_in STRUCTURE gv_fieldcat.

DATA: wa_fieldcat_in TYPE slis_fieldcat_alv.

CLEAR wa_fieldcat_in.

wa_fieldcat_in-fieldname = 'MATNR'.

wa_fieldcat_in-seltext_m = 'Material No'.

wa_fieldcat_in-outputlen = 18.

APPEND wa_fieldcat_in TO ct_gt_fieldcat_in.

CLEAR wa_fieldcat_in.

wa_fieldcat_in-fieldname = 'BEGRU'.

wa_fieldcat_in-seltext_m = 'Authorization Group'.

wa_fieldcat_in-outputlen = 4.

APPEND wa_fieldcat_in TO ct_gt_fieldcat_in.

CLEAR wa_fieldcat_in.

wa_fieldcat_in-fieldname = 'MAKTX_EN'.

wa_fieldcat_in-seltext_m = 'Material Desc - E'.

wa_fieldcat_in-outputlen = 40.

APPEND wa_fieldcat_in TO ct_gt_fieldcat_in.

CLEAR wa_fieldcat_in.

wa_fieldcat_in-fieldname = 'MAKTX_DE'.

wa_fieldcat_in-seltext_m = 'Material Desc - D'.

wa_fieldcat_in-outputlen = 40.

APPEND wa_fieldcat_in TO ct_gt_fieldcat_in.

CLEAR wa_fieldcat_in.

wa_fieldcat_in-fieldname = 'MAKTX_FR'.

wa_fieldcat_in-seltext_m = 'Material Desc - F'.

wa_fieldcat_in-outputlen = 40.

APPEND wa_fieldcat_in TO ct_gt_fieldcat_in.

CLEAR wa_fieldcat_in.

wa_fieldcat_in-fieldname = 'MAKTX_ES'.

wa_fieldcat_in-seltext_m = 'Material Desc - S'.

wa_fieldcat_in-outputlen = 40.

APPEND wa_fieldcat_in TO ct_gt_fieldcat_in.

CLEAR wa_fieldcat_in.

wa_fieldcat_in-fieldname = 'LTXT40_EN'.

wa_fieldcat_in-seltext_m = 'Basic data text - E'.

APPEND wa_fieldcat_in TO ct_gt_fieldcat_in.

CLEAR wa_fieldcat_in.

wa_fieldcat_in-fieldname = 'LTXT40_DE'.

wa_fieldcat_in-seltext_m = 'Basic data text - D'.

APPEND wa_fieldcat_in TO ct_gt_fieldcat_in.

CLEAR wa_fieldcat_in.

wa_fieldcat_in-fieldname = 'LTXT40_FR'.

wa_fieldcat_in-seltext_m = 'Basic data text - F'.

APPEND wa_fieldcat_in TO ct_gt_fieldcat_in.

CLEAR wa_fieldcat_in.

wa_fieldcat_in-fieldname = 'LTXT40_ES'.

wa_fieldcat_in-seltext_m = 'Basic data text - S'.

APPEND wa_fieldcat_in TO ct_gt_fieldcat_in.

ENDFORM. " fieldcatbuild

Thanks

Ankur Sharma

Read only

Former Member
0 Likes
952

Hi zakir ,

below i am pasting a samll code ...you can just try .

TYPE-POOLS : abap.

TABLES: pa0001 , pa0003 .

FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,<dyn_wa>,<dyn_field>.

DATA: dy_table TYPE REF TO data,

dy_line TYPE REF TO data .

DATA : xfc TYPE lvc_s_fcat,

ifc TYPE lvc_t_fcat.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-s11 .

SELECT-OPTIONS:s_pernr FOR pa0003-pernr .

SELECT-OPTIONS:s_orgeh FOR pa0001-orgeh .

SELECT-OPTIONS:s_date FOR sy-datum .

SELECTION-SCREEN END OF BLOCK b1.

DATA: BEGIN OF it_itab OCCURS 0 ,

depid LIKE pa0001-orgeh ,

pernr LIKE pa0003-pernr,

subty LIKE pa9260-subty,

date LIKE sy-datum,

END OF it_itab .

DATA: BEGIN OF it_date OCCURS 0,

date TYPE sy-datum ,

len TYPE i,

ty TYPE c,

END OF it_date .

SELECT a~orgeh

b~pernr

b~subty

b~begda

FROM pa0001 AS a INNER JOIN pa9260 AS b

ON apernr = bpernr

INTO TABLE it_itab

WHERE a~orgeh IN s_orgeh AND

a~pernr IN s_pernr AND

b~begda IN s_date.

WHILE s_date-low <= s_date-high.

it_date-date = s_date-low .

it_date-len = 8 .

it_date-ty = 'c'.

APPEND it_date.

s_date-low = s_date-low + 1.

ENDWHILE.

PERFORM get_structure.

PERFORM create_dynamic_itab.

PERFORM proc_data .

FORM get_structure.

DATA : idetails TYPE abap_compdescr_tab,

xdetails TYPE abap_compdescr.

xfc-fieldname = 'pernr' . " XDETAILS-NAME .

xfc-datatype = 'c'. "XDETAILS-TYPE_KIND.

xfc-inttype = 'c'. "XDETAILS-TYPE_KIND.

xfc-intlen = 8 . "XDETAILS-LENGTH.

APPEND xfc TO ifc.

xfc-fieldname = 'empname' . " XDETAILS-NAME .

xfc-datatype = 'c'. "XDETAILS-TYPE_KIND.

xfc-inttype = 'c'. "XDETAILS-TYPE_KIND.

xfc-intlen = 30 . "XDETAILS-LENGTH.

APPEND xfc TO ifc.

LOOP AT it_date .

CLEAR xfc.

xfc-fieldname = it_date-date . " XDETAILS-NAME .

xfc-datatype = it_date-ty. "XDETAILS-TYPE_KIND.

xfc-inttype = it_date-ty. "XDETAILS-TYPE_KIND.

xfc-intlen = it_date-len . "XDETAILS-LENGTH.

APPEND xfc TO ifc.

ENDLOOP.

ENDFORM. "get_structure

FORM create_dynamic_itab.

  • Create dynamic internal table and assign to FS

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = ifc

IMPORTING

ep_table = dy_table.

ASSIGN dy_table->* TO <dyn_table>.

  • Create dynamic work area and assign to FS

CREATE DATA dy_line LIKE LINE OF <dyn_table>.

ASSIGN dy_line->* TO <dyn_wa>.

ENDFORM. "create_dynamic_itab

FORM proc_data .

DATA: l_tabix TYPE sy-tabix .

SORT it_itab BY depid .

LOOP AT it_itab .

READ TABLE it_date WITH KEY date = it_itab-date .

l_tabix = sy-tabix.

IF sy-subrc = 0 .

ASSIGN COMPONENT l_tabix OF STRUCTURE dy_table TO <dyn_field>.

ENDIF.

ENDLOOP.

ENDFORM. " PROC_DATA

Thanks and Regards

Priyank dixit