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

how to reduce the code while passing.

Former Member
0 Likes
955

hi,

I am passing the below statemnt to pass the field name and description to the sub_fieldcat.

since the report has got 100 fields i need to write for all the 100 fields like this, is there any possiblity to pass the field name and the description with less coding

PERFORM SUB_FIELDCAT USING '' 'BUDAT' 'Posting Date' G_COL 'X'.

ADD 1 TO G_COL.

.

.

.

.

FORM SUB_FIELDCAT USING L_TABNAME TYPE SLIS_TABNAME

L_FNAME TYPE SLIS_FIELDNAME

L_SEL TYPE DD03P-SCRTEXT_L

L_COL TYPE I

L_KEY TYPE C.

I_FIELDCATTAB_WA-REF_TABNAME = L_TABNAME.

I_FIELDCATTAB_WA-FIELDNAME = L_FNAME.

I_FIELDCATTAB_WA-SELTEXT_L = L_SEL.

I_FIELDCATTAB_WA-COL_POS = L_COL.

I_FIELDCATTAB_WA-KEY = L_KEY.

APPEND I_FIELDCATTAB_WA TO I_FIELDCATTAB.

ENDFORM. " SUB_FIELDCAT

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
927

Hi ,

Use function : REUSE_ALV_FIELDCATALOG_MERGE

Please note that your own logic required only if you want to changes the field description or length.

Lanka

10 REPLIES 10
Read only

Former Member
0 Likes
927

HI Anitha,

1. REUSE_ALV_FIELDCATALOG_MERGE

why don't u use this standard FM

to build field catalogue.

2. Ur logic will be required

only for those fields, which

are different from abap dictionary !

regards,

amit m.

Read only

0 Likes
927

thanks for the reply, i am using 3 table fields . Can u show me a small example of passing 3 tables to the REUSE_ALV_FIELDCATALOG_MERGE.

I need to display all the fields from the 3 tables, these are the 3 tables RBKP_V, RSEG and RBCO.

It will be good if u provide me with the coding.

Read only

0 Likes
927

Hi Anitha,

use this :

DATA: ITAB_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,

'TAB_DATA' = your internal table . you have to pass this value in Quotes .

G_REPID : Sy-program

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = G_REPID

I_INTERNAL_TABNAME = 'TAB_DATA'

I_INCLNAME = G_REPID

CHANGING

CT_FIELDCAT = ITAB_FLDCAT

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3.

Lanka

Read only

0 Likes
927

Hi Anitha,

1. To the FM

we just need to pass the

internal table Name

( There is no need to use the parameter

I_STRUCTURE_NAME )

I_INTERNAL_TABNAME Is very important.

2. While declaring the internal table,

u can use any number of fields.

But make sure they are

declare using LIKE

eg.

bukrs like t001-bukrs

(do not use type)

3. Rest the FM will take care !

PS:

Important parameters are:

i_program_name,

i_internal_tabname = 'ITAB'

i_inclname = prg

where prg is sy-repid

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = prg

i_internal_tabname = 'ITAB'

i_inclname = prg

CHANGING

ct_fieldcat = alvfc

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

regards,

amit m.

Message was edited by: Amit Mittal

Message was edited by: Amit Mittal

Read only

0 Likes
927

What is the structure of your internal table that is passed to the ALV grid function module? Is it simply


data: begin of itab occurs 0.
        include structure RBKP_V.
        include structure RSEG.
        include structure RBCO.
data: end of itab.

?

If so, then this should help.


  data l_repid like sy-repid.
  l_repid = sy-repid.
  call function 'REUSE_ALV_FIELDCATALOG_MERGE'
   exporting
     i_program_name               = l_repid
     i_internal_tabname           = 'ITAB'
*    I_STRUCTURE_NAME             =
*    I_CLIENT_NEVER_DISPLAY       = 'X'
     i_inclname                   = l_repid
     i_bypassing_buffer           = 'X'
*    I_BUFFER_ACTIVE              =
   changing
     ct_fieldcat                  = fieldcat
   exceptions
     inconsistent_interface       = 1
     program_error                = 2
     others                       = 3.

Read only

0 Likes
927

thanks a lot for ur reply, i am able to do but since i am using alv grid display only few fields i am able to display the result of the fields are gone what can be the soluyion to display maore than 200 fields

Read only

0 Likes
927

Hi anitha,

1. At a time there is a limit

how many columns can be displayed.

2. It is better that

a Layout is selected/saved

to display REQUIERD fields

from the all 200 fields.

3. I mean,

all 200 fileds will be there in alv.

But the user can SAVE HIS OWN Layout

where he can CHOOSE from these 200 fields,

and display required fields only !

regards,

amit m.

Read only

Former Member
0 Likes
928

Hi ,

Use function : REUSE_ALV_FIELDCATALOG_MERGE

Please note that your own logic required only if you want to changes the field description or length.

Lanka

Read only

Former Member
0 Likes
927

u can do something like this using macros, this will also reduce ur code

*declare this before ur selection screen code

DEFINE add_catalog.

clear wa_fieldcat.

wa_fieldcat-fieldname = &1.

wa_fieldcat-seltext_l = &2.

append wa_fieldcat to it_fieldcat.

clear wa_fieldcat.

END-OF-DEFINITION.

*u can write this code in start of selection

CLEAR it_fieldcat.

REFRESH it_fieldcat.

add_catalog:

'FIELD1' 'field 1',

'FIELD2' 'field 2'.

u can exted this to how many attributes of fieldcatalog u want

Read only

Clemenss
Active Contributor
0 Likes
927

if you don't use function fieldcat_merge or any other of the suggested automatic ways, you could still simplofy your SUB_FIELDCAT a little: G_COL is not necessary if you append the fields in the desired sequence. Then use

PERFORM USING:

'' 'BUDAT' 'Posting Date' 'X',

'' 'FIELD' 'what ever' ' ',

...

'' 'LAST' 'last field' ' '.

The method of passing program name and table name to the ALV display function did not work too good for me: Declaration must be LIKE, TYPE is not recognized and it works for global tables only.

I developed a routine generating a complete fieldcatalog using DDIC or tech information of all fields in the internal table ragrdless of their declaration. The routine uses the DESCRIBE statement - I wonder why SAP is unable to do that. I used it the last 3 years - no problems.

Sorry I won't post her because it's about 150 lines of code. I use it in every ALV report.

regards,

Clemens