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

Build default ALV Layout

Former Member
0 Likes
815

Hi,

I've a selection screen field to select the output ALV layout. Instead of someone manually saving a default layout, i need to write coding to create this default layout and display this default layout name in the selection-screen layout field. Can somebody help me with this? Helpful answers will be honestly rewarded

thanks,

Venky

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
635

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = g_repid

I_STRUCTURE_NAME = 'sflight'

IT_FIELDCAT = gt_fieldcat

I_DEFAULT = 'X'

I_SAVE = 'A'

IS_VARIANT = GX_VARIANT "<<<< pass variant

TABLES

T_OUTTAB = lt_sflight

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

FORM DOWNLOAD_FILE TABLES P_T_LISTE STRUCTURE G_T_LISTE.

G_R_DISP_VARIANT-REPORT = SY-REPID.

G_R_DISP_VARIANT-VARIANT = PA_VAR.

CALL FUNCTION 'REUSE_ALV_VARIANT_SELECT'

EXPORTING

I_DIALOG = 'N'

I_USER_SPECIFIC = 'A'

I_DEFAULT = 'X'

IT_DEFAULT_FIELDCAT = G_T_FIELDCAT

I_LAYOUT = G_R_LAYOUT

IMPORTING

ET_FIELDCAT = G_T_FIELDCAT

ES_LAYOUT = G_R_LAYOUT

CHANGING

CS_VARIANT = G_R_DISP_VARIANT

EXCEPTIONS

ERROR_MESSAGE = 4

OTHERS = 4.

LOOP AT G_T_FIELDCAT INTO G_R_FIELDCAT WHERE NO_OUT NE 'X'

AND TECH IS INITIAL

AND FIELDNAME NE 'ICON'.

MOVE-CORRESPONDING G_R_FIELDCAT TO IS_FIELDCAT.

IS_FIELDCAT-FIELDNAME = G_R_FIELDCAT-FIELDNAME.

IS_FIELDCAT-INTTYPE = G_R_FIELDCAT-INTTYPE.

IS_FIELDCAT-OUTPUTLEN = G_R_FIELDCAT-OUTPUTLEN.

IS_FIELDCAT-REF_FIELD = G_R_FIELDCAT-FIELDNAME.

IS_FIELDCAT-REF_TABLE = G_R_FIELDCAT-REF_TABNAME.

APPEND IS_FIELDCAT TO IT_FIELDCAT.

ENDLOOP.

DATA: WA_LISTE LIKE P_T_LISTE.

CLEAR:IT_OUTTAB.

REFRESH: IT_OUTTAB.

LOOP AT P_T_LISTE INTO WA_LISTE.

WA_OUTTAB-PSPID = WA_LISTE-PSPID .

WA_OUTTAB-POSID = WA_LISTE-POSID.

WA_OUTTAB-POST1 = WA_LISTE-POST1.

WA_OUTTAB-STTXT_INT = WA_LISTE-STTXT_INT.

WA_OUTTAB-STTXT_EXT = WA_LISTE-STTXT_EXT.

APPEND WA_OUTTAB TO IT_OUTTAB.

ENDLOOP.

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

ENDFORM. " download_file

  • 002 vsm1kor 13.06.06 - en

3 REPLIES 3
Read only

Former Member
0 Likes
636

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = g_repid

I_STRUCTURE_NAME = 'sflight'

IT_FIELDCAT = gt_fieldcat

I_DEFAULT = 'X'

I_SAVE = 'A'

IS_VARIANT = GX_VARIANT "<<<< pass variant

TABLES

T_OUTTAB = lt_sflight

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

FORM DOWNLOAD_FILE TABLES P_T_LISTE STRUCTURE G_T_LISTE.

G_R_DISP_VARIANT-REPORT = SY-REPID.

G_R_DISP_VARIANT-VARIANT = PA_VAR.

CALL FUNCTION 'REUSE_ALV_VARIANT_SELECT'

EXPORTING

I_DIALOG = 'N'

I_USER_SPECIFIC = 'A'

I_DEFAULT = 'X'

IT_DEFAULT_FIELDCAT = G_T_FIELDCAT

I_LAYOUT = G_R_LAYOUT

IMPORTING

ET_FIELDCAT = G_T_FIELDCAT

ES_LAYOUT = G_R_LAYOUT

CHANGING

CS_VARIANT = G_R_DISP_VARIANT

EXCEPTIONS

ERROR_MESSAGE = 4

OTHERS = 4.

LOOP AT G_T_FIELDCAT INTO G_R_FIELDCAT WHERE NO_OUT NE 'X'

AND TECH IS INITIAL

AND FIELDNAME NE 'ICON'.

MOVE-CORRESPONDING G_R_FIELDCAT TO IS_FIELDCAT.

IS_FIELDCAT-FIELDNAME = G_R_FIELDCAT-FIELDNAME.

IS_FIELDCAT-INTTYPE = G_R_FIELDCAT-INTTYPE.

IS_FIELDCAT-OUTPUTLEN = G_R_FIELDCAT-OUTPUTLEN.

IS_FIELDCAT-REF_FIELD = G_R_FIELDCAT-FIELDNAME.

IS_FIELDCAT-REF_TABLE = G_R_FIELDCAT-REF_TABNAME.

APPEND IS_FIELDCAT TO IT_FIELDCAT.

ENDLOOP.

DATA: WA_LISTE LIKE P_T_LISTE.

CLEAR:IT_OUTTAB.

REFRESH: IT_OUTTAB.

LOOP AT P_T_LISTE INTO WA_LISTE.

WA_OUTTAB-PSPID = WA_LISTE-PSPID .

WA_OUTTAB-POSID = WA_LISTE-POSID.

WA_OUTTAB-POST1 = WA_LISTE-POST1.

WA_OUTTAB-STTXT_INT = WA_LISTE-STTXT_INT.

WA_OUTTAB-STTXT_EXT = WA_LISTE-STTXT_EXT.

APPEND WA_OUTTAB TO IT_OUTTAB.

ENDLOOP.

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

ENDFORM. " download_file

  • 002 vsm1kor 13.06.06 - en

Read only

Former Member
0 Likes
635

Hey Karthik,

Thanks for the quick reply. If i understood your code right, you are reading an existing display variant and displaying the output according to the variant. But i want to generate the variant in my code itself. Say we put a check, create the default layout if doesn't already exist and display the output from the variant. If i understood your program wrong, can you please explaing me it's working in a little detail. Appreciate your patience

thanks,

Venky

Read only

0 Likes
635

What is the structure of G_T_LISTE in the below statement?.

FORM DOWNLOAD_FILE TABLES P_T_LISTE STRUCTURE G_T_LISTE.