on 03-08-2007 7:55 AM
Hi ,
The list setting or the <b><b>Print Preview format of an ALV Grid</b></b> in our Production system does not default the column length to that in the ALV Report output .
A particular column of length 18 in the ALV Grid defaults to 15 in the Print Preview /
Because the ALV Grid output goes to a spool ( when run through Background Job ) which displays the same result as obtained in the Print Preview , we need to configure the Print Preview such that it picks the same column length as obtained in the ALV Grid Output .
Kindly note that we have already tried to assign a layout in the Print Preview , but that needs to be manually done , while we will need to automate this .
Any suggestion will be rewarded .
Thanks
Soumyadip
Hi Sreevani ,
Your reply is irrelevant to the question , I wasnt expecting a big code on OOPs based ALV Implementation as I am not using one .
When the ALV output is obtained , you have a PRINT PREVIEW Option under LIST
and when u click it displays how the ALV output would look on the paper .
In that preview , the column width is gettin changed.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Check this:
REPORT ZTEST_REP1 .
TABLES : MARA,
BHDGD,
zstr.
TYPES: BEGIN OF T_MARA,
MATNR LIKE MARA-MATNR,
ERNAM LIKE MARA-ERNAM,
END OF T_MARA.
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
*Constants for ALV Implementation
CONSTANTS: C_SET VALUE 'X',
C_RESET VALUE '0',
C_SAVE VALUE 'A',
C_EXIT(4) VALUE 'EXIT',
C_BACK(4) VALUE 'BACK',
C_CANC(4) VALUE 'CANC',
C_PGTOP(5) VALUE 'PGTOP',
C_PGUP(4) VALUE 'PGUP',
C_PGDN(4) VALUE 'PGDN',
C_PGEND(5) VALUE 'PGEND'.
DATA : I_MARA TYPE STANDARD TABLE OF T_MARA WITH HEADER LINE,
Internal table for fields catalouge
I_FIELDCAT TYPE LVC_T_FCAT WITH HEADER LINE,
i_fieldcat2 type lvc_t_fcat with header line,
Internal table for cursor position
I_GT_SELROWS TYPE LVC_T_ROW .
DATA : WA_MARA LIKE I_MARA,
WA_GRIDROW LIKE LVC_S_ROW,
WA_GRIDCOL LIKE LVC_S_COL.
*Data for ALV Implementation.
DATA: OK_CODE LIKE SY-UCOMM,
W_OK_CODE LIKE SY-UCOMM,
W_CALL TYPE I VALUE 1,
W_TAB LIKE SY-UCOMM VALUE 'TAB1',
W_SAVE, "For Parameter I_SAVE
W_VARIANT TYPE DISVARIANT, "For parameter IS_VARIANT
W_GRID TYPE REF TO CL_GUI_ALV_GRID,
w_grid1 type ref to cl_gui_alv_grid,
W_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
w_container1 type ref to cl_gui_custom_container,
W_REPID LIKE SY-REPID,
W_GS_PRINT TYPE LVC_S_PRNT,
W_GS_LAYOUT TYPE LVC_S_LAYO,
W_EVENT_REC TYPE REF TO LCL_EVENT_RECEIVER,
W_CONT_MAIN TYPE SCRFNAME VALUE 'CCCONTAINER',
W_LN TYPE I, "line number
W_INDEX LIKE SY-TABIX,
W_FLAG,
W_TEMP_VAL TYPE I.
----
Definition:
----
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
HANDLE_TOP_OF_PAGE
FOR EVENT PRINT_TOP_OF_PAGE OF CL_GUI_ALV_GRID,
HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN.
ENDCLASS.
----
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION
----
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_TOP_OF_PAGE.
PERFORM F_GET_HEADER.
ENDMETHOD. "handle_top_of_page
METHOD HANDLE_DOUBLE_CLICK.
The event DOUBLE_CLICK provides parameters for row and column
of the click. We use row parameter to select a line of the
corresponding internal table.
read selected row from internal table
READ TABLE I_MARA INDEX E_ROW-INDEX INTO WA_MARA.
IF SY-SUBRC <> 0.
message i001. " Cursor position not correct.
ELSE.
call dialog screen and display the details
call screen 200 starting at 10 5.
ENDIF.
ENDMETHOD. "handle_double_click
ENDCLASS.
*----
start-of-selection.
*----
START-OF-SELECTION.
SELECT MATNR ERNAM FROM MARA INTO TABLE I_MARA.
*----
End-of-Selection.
*----
END-OF-SELECTION.
Start of ALV part.
W_REPID = SY-REPID.
W_VARIANT-REPORT = W_REPID.
W_SAVE = C_SAVE.
W_CONT_MAIN = W_CONT_MAIN.
W_GS_LAYOUT = W_GS_LAYOUT.
W_GS_PRINT = W_GS_PRINT.
I_FIELDCAT = I_FIELDCAT.
CALL SCREEN 100.
&----
*& Form f_get_header
&----
text
----
--> p1 text
<-- p2 text
----
FORM F_GET_HEADER.
DATA: L_LINE1 LIKE BHDGD-LINE1,
L_LINE2 LIKE BHDGD-LINE2.
CONSTANTS LC_SPACE VALUE ' '.
DATA: L_F1(7), L_F2(11), L_F3(9), L_F4(6), L_F5(11), L_F6(4), L_F7(8),
L_F8(4),L_F9(10), L_F11(11), L_F12(24), L_F13(4),
L_F14(3).
take the values of line1 and line2 into two new variables, otherwise
after coming back to the first screen from the print preview, the
header shows the condensed lines
L_LINE1 = BHDGD-LINE1.
L_LINE2 = BHDGD-LINE2.
CONDENSE L_LINE1.
CONDENSE L_LINE2.
*split the lines to display the whole lines within the
*stipulated report-width
SPLIT L_LINE1 AT LC_SPACE INTO L_F1 L_F2 L_F3 L_F4 L_F5 L_F6 L_F7 L_F8
L_F9 .
SPLIT L_LINE2 AT LC_SPACE INTO L_F11 L_F12 L_F13 L_F14.
L_F14 = SY-PAGNO.
WRITE:/1 L_F1, 9 L_F2, 40 L_F3, 50 L_F4, 57 L_F5, 88 L_F6, 93 L_F7 ,
103 L_F8 , 108 L_F9 .
WRITE:/1 L_F11, 40 TEXT-012, 78 L_F12, 103 L_F13, 108 L_F14.
ENDFORM. " f_get_header
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STAT'.
SET TITLEBAR 'TITL'.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM .
WHEN C_EXIT OR C_BACK OR C_CANC.
IF NOT W_CONTAINER IS INITIAL.
CALL METHOD W_CONTAINER->FREE.
ENDIF.
LEAVE TO SCREEN 0.
WHEN C_PGTOP.
WA_GRIDROW-INDEX = 1.
WHEN C_PGUP.
IF WA_GRIDROW-INDEX <= 15.
WA_GRIDROW-INDEX = 1.
ELSE.
WA_GRIDROW-INDEX = WA_GRIDROW-INDEX - 15.
ENDIF.
WHEN C_PGDN.
PERFORM F_GET_NO_ROWS.
W_TEMP_VAL = W_LN - WA_GRIDROW-INDEX.
IF W_TEMP_VAL < 15.
WA_GRIDROW-INDEX = W_LN.
ELSE.
WA_GRIDROW-INDEX = WA_GRIDROW-INDEX + 15.
ENDIF.
WHEN C_PGEND.
PERFORM F_GET_NO_ROWS.
WA_GRIDROW-INDEX = W_LN.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Form f_get_no_rows
&----
text
----
--> p1 text
<-- p2 text
----
FORM F_GET_NO_ROWS.
DESCRIBE TABLE I_MARA LINES W_LN.
ENDFORM. " f_get_no_rows
&----
*& Module DISPLAY_0100 OUTPUT
&----
text
----
MODULE DISPLAY_0100 OUTPUT.
IF NOT WA_GRIDROW IS INITIAL
AND NOT WA_GRIDCOL IS INITIAL.
CALL METHOD W_GRID->SET_SCROLL_INFO_VIA_ID
EXPORTING
IS_ROW_INFO = WA_GRIDROW
IS_COL_INFO = WA_GRIDCOL .
CALL METHOD W_GRID->SET_CURRENT_CELL_VIA_ID
EXPORTING
IS_ROW_ID = WA_GRIDROW
IS_COLUMN_ID = WA_GRIDCOL .
ENDIF.
CALL METHOD W_GRID->GET_SCROLL_INFO_VIA_ID
IMPORTING
ES_ROW_INFO = WA_GRIDROW
ES_COL_INFO = WA_GRIDCOL .
CALL METHOD W_GRID->GET_SELECTED_ROWS
IMPORTING
ET_INDEX_ROWS = I_GT_SELROWS[].
Build the fieldcat according to structure
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = 'ZSTR'
CHANGING
CT_FIELDCAT = I_FIELDCAT[].
LOOP AT I_FIELDCAT.
W_INDEX = SY-TABIX.
CASE I_FIELDCAT-FIELDNAME.
WHEN 'MATNR'.
I_FIELDCAT-SCRTEXT_S = 'MATNR'.
I_FIELDCAT-KEY = ' '.
I_FIELDCAT-COL_POS = '1'.
WHEN 'ERNAM'.
I_FIELDCAT-SCRTEXT_S = 'ERDAT'.
I_FIELDCAT-OUTPUTLEN = '18'.
I_FIELDCAT-COL_POS = '2'.
ENDCASE.
MODIFY I_FIELDCAT INDEX W_INDEX.
ENDLOOP.
READ TABLE I_FIELDCAT INDEX 1 .
IF W_CALL = 1.
PERFORM F_STD_HEADER.
CALL METHOD W_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_VARIANT = W_VARIANT
I_SAVE = W_SAVE
CHANGING
IT_OUTTAB = I_MARA[]
IT_FIELDCATALOG = I_FIELDCAT[]
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
EXIT.
ENDIF.
CREATE OBJECT W_EVENT_REC.
SET HANDLER W_EVENT_REC->HANDLE_TOP_OF_PAGE FOR W_GRID.
CREATE OBJECT W_EVENT_REC.
SET HANDLER W_EVENT_REC->HANDLE_DOUBLE_CLICK FOR W_GRID.
W_FLAG = C_RESET.
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS EXPORTING CONTROL = W_GRID.
W_CALL = 0.
ENDIF.
ENDMODULE. " DISPLAY_0100 OUTPUT
&----
*& Form f_std_header
&----
text
----
--> p1 text
<-- p2 text
----
FORM F_STD_HEADER.
ENDFORM. " f_std_header
&----
*& Module DYNPRONR_CHECK_500 OUTPUT
&----
text
----
MODULE DYNPRONR_CHECK_500 OUTPUT.
if w_dynpronr is initial.
w_dynpronr = '0100'.
endif.
ENDMODULE. " DYNPRONR_CHECK_500 OUTPUT
&----
*& Module create_objects_0100 OUTPUT
&----
text
----
MODULE create_objects_0100 OUTPUT.
check w_container is initial .
create object w_container
exporting
container_name = 'CC'.
create object w_grid
exporting
i_parent = w_container.
w_flag = c_set.
w_flag = w_flag.
ENDMODULE. " create_objects_0100 OUTPUT
&----
*& Module STATUS_0200 OUTPUT
&----
text
----
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS 'ST20'.
SET TITLEBAR '200'.
zstr-matnr = wa_mara-matnr.
zstr-ernam = wa_mara-ernam.
ENDMODULE. " STATUS_0200 OUTPUT
&----
*& Module USER_COMMAND_0200 INPUT
&----
text
----
MODULE USER_COMMAND_0200 INPUT.
move ok_code to w_ok_code.
clear ok_code.
case w_ok_code.
when c_back or c_exit or c_canc.
leave to screen 0.
endcase.
clear w_ok_code.
ENDMODULE. " USER_COMMAND_0200 INPUT
Regards,
Sreevani
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
87 | |
23 | |
11 | |
9 | |
8 | |
5 | |
5 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.