10-15-2007 6:02 AM
how to download a file on to application server using interactive reports
10-15-2007 12:44 PM
Hi,
DATA: wl_ex_fileopen TYPE REF TO cx_sy_file_open_mode."Exception
OPEN DATASET pw_file FOR <b>OUTPUT</b> IN TEXT MODE ENCODING DEFAULT.
if sy-subrc = 0.
*--Transfering data to application server
LOOP AT pt_dtl ASSIGNING <l_dtl>.
*--Transfering the header information to the file
TRY.
<b> TRANSFER <l_dtl> TO pw_file</b>. "Complete file path on app server
CATCH cx_sy_file_open_mode INTO wl_ex_fileopen.
IF wl_ex_fileopen IS NOT INITIAL.
*-- Error occured while writting to the file
MESSAGE e019 WITH text-004 pw_file .
ENDIF.
ENDTRY.
endloop.
<b>CLOSE DATASET pw_file.</b>
endif.
10-15-2007 6:35 AM
<b>Interactive list and upload file on Application server.
&----
*& Report ZGILL_IT *
*& *
&----
*& *
*& *
&----
REPORT zgill_it message-id rp .
INCLUDE <icon> .
TABLES : zgill_main,zgill_details.
selection-screen:
pushbutton 1(20) gocfg user-command amit,
skip 1.
*parameters: p_file default ' '
data d_flag value 'X'.
parameters fpath like rlgrap-filename default 'C:\Temp\ABC.xls' MODIF id 1.
parameters fpath1 like DXFIELDS-LONGPATH default 'D:\usr\sap\D47\DVEBMGS00\data\KISS' .
SELECT-OPTIONS l_pernr FOR zgill_main-pernr OBLIGATORY NO INTERVALS.
data: cursorfield(20).
DATA : BEGIN OF itab OCCURS 0,
pernr like zgill_main-pernr,
name like zgill_main-name,
dob like zgill_main-dob,
org like zgill_main-org,
INCLUDE STRUCTURE zgill_main.
*DATA : fname LIKE zgill_details-fname,
fname LIKE zgill_details-fname,
lname LIKE zgill_details-lname,
dname LIKE zgill_details-dname,
plans LIKE zgill_details-plans,
salary LIKE zgill_details-salary,
hdate LIKE zgill_details-hdate.
DATA: END OF itab.
AT SELECTION-SCREEN OUTPUT.
write icon_configuration as icon to gocfg.
concatenate gocfg 'Feilds for selection/delection' into gocfg.
perform modify_screen.
at selection-screen.
if sy-ucomm = 'AMIT' .
perform toggle_flag.
endif.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR fpath1.
CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION'
EXPORTING
I_LOCATION_FLAG = 'A'
I_SERVER = '?'
I_PATH =
FILEMASK = '.'
FILEOPERATION = 'R'
IMPORTING
O_LOCATION_FLAG =
O_SERVER =
O_PATH = fpath1
ABEND_FLAG =
EXCEPTIONS
RFC_ERROR = 1
ERROR_WITH_GUI = 2
OTHERS = 3.
START-OF-SELECTION.
PERFORM get_main_data.
********************ki
perform appplication.
if d_flag = 'X'.
PERFORM write_main.
else .
perform download_itab.
endif.
*
END-OF-SELECTION.
AT LINE-SELECTION.
PERFORM get_other_details.
GET CURSOR FIELD CURSORFIELD.
case cursorfield.
when 'ITAB-PERNR' .
PERFORM get_other_details.
when 'ZGILL_DETAILS-FNAME'.
submit ZGILL_CALLREPORT
with P_RNAME EQ SY-REPID .
*submit ZGILL_CALLREPORT exporting list to memory and return.
endcase.
if cursorfield = 'ITAB-PERNR'.
PERFORM get_other_details.
endif.
if cursorfield = 'ZGILL_DETAILS-DNAME'.
submit ZGILL_CALLREPORT
with P_RNAME EQ SY-REPID .
endif.
&----
*& Form get_main_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_main_data .
LOOP AT l_pernr.
SELECT SINGLE * FROM zgill_main WHERE pernr = l_pernr-low.
MOVE-CORRESPONDING zgill_main TO itab.
APPEND itab.
ENDLOOP.
ENDFORM. " get_main_data
&----
*& Form write_main
&----
text
----
--> p1 text
<-- p2 text
----
FORM write_main .
FORMAT INTENSIFIED ON COLOR 1.
WRITE: 5'PERNR' ,15 'NAME' ,40 'BirthDate',55 'Org Unit'.
*write: 5'PERNR' color 1 ,15 'NAME' color 1,40 'BirthDate' color 1,55 'Org Unit' color 1 .
SKIP 1.
FORMAT INTENSIFIED OFF COLOR OFF..
LOOP AT itab.
WRITE: 5 itab-pernr HOTSPOT ON COLOR 3 ,15 itab-name COLOR 2,40 itab-dob COLOR 2,55 itab-org COLOR 2.
HIDE itab-pernr.
SKIP 1.
write: 5 'also transfer to application server just look at it open AL11' COLOR 5.
ENDLOOP.
ENDFORM. " write_main
&----
*& Form get_other_details
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_other_details .
SELECT SINGLE * FROM zgill_details WHERE pernr = itab-pernr .
MOVE-CORRESPONDING zgill_details TO itab.
FORMAT INTENSIFIED ON COLOR 1.
WRITE: 5'FNAME' ,20 'LNAME' ,35 'DNAME',50 'Position' ,65 'Salary',85 'HireDate'.
SKIP 1.
FORMAT INTENSIFIED OFF COLOR OFF.
WRITE: 5 zgill_details-fname HOTSPOT ON COLOR 3,20 zgill_details-lname COLOR 2,35 zgill_details-dname COLOR 2,
50 zgill_details-plans COLOR 2,65 zgill_details-salary LEFT-JUSTIFIED COLOR 2,85 zgill_details-hdate COLOR 2.
ENDFORM. " get_other_details
&----
*& Form modify_screen
&----
text
----
--> p1 text
<-- p2 text
----
form modify_screen .
LOOP AT SCREEN.
IF SCREEN-GROUP1 = '1'.
OR SCREEN-GROUP1 = '4'.
IF d_FLAG EQ 'X'.
SCREEN-ACTIVE = 0.
ELSE.
SCREEN-ACTIVE = 1.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
endform. " modify_screen
&----
*& Form toggle_flag
&----
text
----
--> p1 text
<-- p2 text
----
form toggle_flag .
IF d_FLAG = 'X'.
CLEAR d_FLAG.
ELSE.
d_FLAG = 'X'.
ENDIF.
endform. " toggle_flag
&----
*& Form download_itab
&----
text
----
--> p1 text
<-- p2 text
----
form download_itab .
DATA: full_file_name TYPE string.
full_file_name = fpath.
*CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = full_file_name
filetype = 'ASC'
NO_AUTH_CHECK = c_x
codepage = '1160'
IMPORTING
FILELENGTH = z_akt_filesize
CHANGING
data_tab = itab[]
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
not_supported_by_gui = 22
error_no_gui = 23
OTHERS = 24.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
filename = full_file_name
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = ','
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = '1160'
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
IMPORTING
FILELENGTH =
tables
data_tab = itab[].
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
*
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
MESSAGE i016 WITH 'Download-Error; RC:' sy-subrc.
else.
write 'successfull'.
ENDIF.
endform. " download_itab
&----
*& Form appplication
&----
text
----
--> p1 text
<-- p2 text
----
FORM appplication .
data:c_tab type c
value CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,
v_text type string.
open dataset fpath1 for output IN TEXT MODE ENCODING DEFAULT .
if sy-subrc = 0.
loop at itab.
concatenate itab-pernr itab-name itab-dob itab-org into v_text
separated by c_tab.
transfer v_text to fpath1.
endloop.
endif.
close dataset fpath1.
ENDFORM. " appplication</b>
10-15-2007 6:42 AM
Hi
What I would do is to generate the data per customer and use the following code to download
For example say you have some orders
Create an empty screen 100 in your application program with a single element (custom container called CCONTAINER1) with a PBO MODULE status_0100 and a PAI
MODULE user_command_0100 .
Build your data on the above code and dispay it in an ALV GRID using code similar to this shown below.
Then use the EXCEL button to save to spreadsheet.
Finally merge / copy all the worksheets to a single workbook.
Program ZZORDERDISP.
INCLUDE ZZJIMBOXX_INCL.
TABLES : VAPMA.
TYPES: BEGIN OF s_elements,
vbeln TYPE vapma-vbeln,
posnr TYPE vapma-posnr,
matnr TYPE vapma-matnr,
kunnr TYPE vapma-kunnr,
werks TYPE vapma-werks,
vkorg TYPE vapma-vkorg,
vkbur TYPE vapma-vkbur,
status TYPE c,
END OF s_elements.
DATA: t_elements TYPE TABLE OF s_elements, "refers to our ITAB
my_line TYPE s_elements.
START-OF-SELECTION.
CALL SCREEN 100.
END-OF-SELECTION.
MODULE status_0100 OUTPUT.
CREATE OBJECT z_object EXPORTING z_object = z_object.
CALL METHOD z_object->build_dynamic_structures
EXPORTING
my_line = my_line
calling_program = sy-repid
IMPORTING
dy_table = dy_table
CHANGING
it_fldcat = it_fldcat.
Here before displaying you can change the field catalog to
adjust your own names
Method call just uses the names in the table structure.
col_name 1 'Order Nr' 10.
col_name 2 'Item' 6 .
col_name 3 'Material' 10.
col_name 4 'Customer' 10.
col_name 5 'Plant' 6.
col_name 6 'Sales Org' 6.
col_name 7 'Sales Office' 8.
col_name 8 'Status' 9.
PERFORM populate_dynamic_itab.
CALL METHOD z_object->display_grid
EXPORTING
g_outtab = <dyn_table>
g_fldcat = it_fldcat
CHANGING
it_fldcat = it_fldcat
gt_outtab = <dyn_table>.
SET PF-STATUS '0001'.
SET TITLEBAR '000'.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE PROGRAM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'RETURN'.
LEAVE PROGRAM.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
FORM populate_dynamic_itab.
ASSIGN dy_table->* TO <dyn_table>.
CREATE DATA dy_line LIKE LINE OF <dyn_table>.
ASSIGN dy_line->* TO <dyn_wa>.
SELECT vbeln posnr matnr kunnr werks vkorg vkbur
UP TO 200 rows
FROM vapma
INTO CORRESPONDING FIELDS OF TABLE <dyn_table>.
Populate Dynamic table and save a copy
create 2nd Dyn table to hold original data (optional)
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fldcat
IMPORTING
ep_table = dy_table.
ASSIGN dy_table->* TO <orig_table>.
CREATE DATA dy_line LIKE LINE OF <orig_table>.
ASSIGN dy_line->* TO <dyn_wa>.
<orig_table> = <dyn_table>.
ENDFORM.
FORM DATA_CHANGED
USING
changed_tab
inserted_tab
deleted_tab
modified_cells_tab.
ENDFORM.
FORM process.
Orig table is in dynamic table <orig_table>
ALV GRID changed table is in <dyn_table>.
Loop AT <orig_table> INTO <dyn_wa>.
Do what you want
end
ENDLOOP.
ENDFORM.
FORM refresh.
CALL METHOD z_object->refresh_grid.
ENDFORM.
form dubbelklik using
e_row type LVC_S_ROW
e_column type LVC_S_col
es_row_no type lvc_s_roid.
break-point 1.
field-symbols: <row_nr> type any.
assign e_row to <row_nr>.
READ TABLE <dyn_table> index <row_nr> into my_line.
set parameter id 'AUN' field my_line-vbeln.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
my_line-status = 'C'.
modify <dyn_table> from my_line index <row_nr>.
SET TITLEBAR '001'.
i_gridtitle = 'Grid Title Changed'.
CALL METHOD z_object->change_title
EXPORTING i_gridtitle = i_gridtitle.
PERFORM refresh.
ENDFORM.
Here's the INCLUDE you need for the above program
DEFINE col_name.
READ TABLE it_fldcat INTO wa_it_fldcat INDEX &1.
wa_it_fldcat-coltext = &2.
wa_it_fldcat-outputlen = &3.
modify it_fldcat from wa_it_fldcat index &1.
END-OF-DEFINITION.
Jimbo 2007.
INCLUDE <icon>.
FIELD-SYMBOLS :
<fs1> TYPE STANDARD TABLE,
<fs0> TYPE STANDARD TABLE,
<dyn_table> TYPE STANDARD TABLE,
<orig_table> TYPE STANDARD TABLE,
<dyn_wa> TYPE ANY.
CLASS zcl_alv_test DEFINITION DEFERRED.
DATA:
z_object TYPE REF TO zcl_alv_test. "Instantiate our class
Attributes
DATA:
it_fldcat TYPE lvc_t_fcat,
i_gridtitle TYPE lvc_title,
wa_it_fldcat TYPE lvc_s_fcat,
new_table TYPE REF TO DATA,
dy_table TYPE REF TO DATA,
inserted_tab TYPE lvc_t_moce,
deleted_tab TYPE LVC_T_MOCE,
changed_tab TYPE REF TO DATA,
is_layout TYPE LVC_S_LAYO,
modified_cells_tab TYPE LVC_T_MODI,
dy_line TYPE REF TO DATA.
CLASS zcl_alv_test DEFINITION.
PUBLIC SECTION.
METHODS:
constructor
IMPORTING
z_object TYPE REF TO zcl_alv_test,
display_grid
IMPORTING
g_outtab TYPE STANDARD TABLE
g_fldcat TYPE lvc_t_fcat
CHANGING
it_fldcat TYPE lvc_t_fcat
GT_OUTTAB TYPE STANDARD TABLE,
change_title
IMPORTING
i_gridtitle TYPE lvc_title,
refresh_grid,
build_dynamic_structures
IMPORTING
my_line TYPE ANY
calling_program TYPE sy-repid
EXPORTING
dy_table TYPE REF TO DATA
CHANGING
it_fldcat TYPE lvc_t_fcat .
PRIVATE SECTION.
*
Attributes
*
DATA:
lr_rtti_struc TYPE REF TO cl_abap_structdescr,
zog LIKE LINE OF lr_rtti_struc->components,
zogt LIKE table of zog,
struct_grid_lset TYPE lvc_s_layo,
e_row TYPE lvc_s_row,
e1_row TYPE i,
e_value TYPE c,
e1_col TYPE i,
e_column TYPE lvc_s_col,
es_rowid TYPE lvc_s_roid,
es_row_id TYPE LVC_S_ROW,
es_col_id TYPE LVC_S_COL,
es_row_no TYPE lvc_s_roid,
grid_container1 TYPE REF TO cl_gui_custom_container,
grid1 TYPE REF TO cl_gui_alv_grid,
ls_layout TYPE kkblo_layout,
lt_fieldcat_wa TYPE kkblo_fieldcat,
gt_outtab TYPE REF TO DATA,
l_mode TYPE raw4,
celltab TYPE lvc_t_styl,
wa_celltab TYPE lvc_s_styl,
lt_fieldcat TYPE kkblo_t_fieldcat,
l_tabname TYPE slis_tabname,
ls_toolbar TYPE stb_button,
caller TYPE sy-repid,
g_outtab1 TYPE REF TO DATA,
g_fldcat1 TYPE REF TO DATA.
*
Event Receivers - These methods are entered
when the specified event occurs
*
EVENTS: before_user_command.
METHODS:
on_user_command
FOR EVENT before_user_command OF cl_gui_alv_grid
IMPORTING
e_ucomm
sender,
on_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING
e_object
e_interactive,
on_dubbelklik
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING
e_row
e_column
es_row_no,
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING
er_data_changed,
handle_data_changed_finished
FOR EVENT data_changed_finished OF cl_gui_alv_grid
IMPORTING
e_modified
et_good_cells,
*
Rest of the methods
*
process,
dubbelklik
IMPORTING
e_row TYPE lvc_s_row
e_column TYPE lvc_s_col
es_row_no TYPE lvc_s_roid,
return_structure
IMPORTING
my_line TYPE ANY,
create_dynamic_fcat
EXPORTING
it_fldcat TYPE lvc_t_fcat,
create_dynamic_table
IMPORTING
it_fldcat TYPE lvc_t_fcat
EXPORTING
dy_table TYPE REF TO DATA,
download_to_excel,
refresh.
ENDCLASS. "zcl_alv_test DEFINITION
*
Implementation definition
*
CLASS zcl_alv_test IMPLEMENTATION.
*
Constructor
create our reference / instance to cl_gui_alv_grid
*
METHOD constructor.
CREATE OBJECT grid_container1
EXPORTING
container_name = 'CCONTAINER1'.
CREATE OBJECT grid1
EXPORTING
i_parent = grid_container1.
*
Set event handlers
*
SET HANDLER z_object->on_user_command for grid1.
SET HANDLER z_object->on_toolbar for grid1.
SET HANDLER Z_OBJECT->handle_data_changed FOR grid1.
SET HANDLER Z_OBJECT->handle_data_changed_finished FOR grid1.
SET HANDLER Z_OBJECT->on_dubbelklik FOR grid1.
CALL METHOD grid1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
ENDMETHOD. "constructor
*
Rest of the methods
*
METHOD on_dubbelklik.
CALL METHOD me->dubbelklik
EXPORTING
e_row = e_row
e_column = e_column
es_row_no = es_row_no.
ENDMETHOD. "on_dubbelklik
METHOD handle_data_changed.
call method grid1->get_current_cell
IMPORTING
e_row = e1_row
e_value = e_value
e_col = e1_col
es_row_id = es_row_id
es_col_id = es_col_id
es_row_no = es_row_no.
changed_tab = er_data_changed->mp_mod_rows.
inserted_tab = er_data_changed->mt_inserted_rows.
deleted_tab = er_data_changed->mt_deleted_rows.
modified_cells_tab = er_data_changed->mt_mod_cells.
PERFORM data_changed IN PROGRAM (caller) IF FOUND
USING changed_tab
inserted_tab
deleted_tab
modified_cells_tab.
ENDMETHOD. "handle_data_changed
METHOD handle_data_changed_finished.
ENDMETHOD. "handle_data_changed_finished
METHOD return_structure.
lr_rtti_struc ?= cl_abap_structdescr=>DESCRIBE_BY_DATA( my_line ).
zogt[] = lr_rtti_struc->components.
ENDMETHOD. "return_structure
METHOD create_dynamic_fcat.
LOOP AT zogt INTO zog.
CLEAR wa_it_fldcat.
wa_it_fldcat-fieldname = zog-name .
wa_it_fldcat-dataTYPE = zog-TYPE_kind.
wa_it_fldcat-intTYPE = zog-TYPE_kind.
wa_it_fldcat-intlen = zog-length.
wa_it_fldcat-decimals = zog-decimals.
wa_it_fldcat-coltext = zog-name.
wa_it_fldcat-lowercase = 'X'.
APPEND wa_it_fldcat TO it_fldcat .
ENDLOOP.
ENDMETHOD. "create_dynamic_fcat
METHOD download_to_excel.
assign g_outtab1->* to <fs0>.
assign g_fldcat1->* to <fs1>.
CALL FUNCTION 'LVC_TRANSFER_TO_KKBLO'
EXPORTING
it_fieldcat_lvc = <fs1>
is_layout_lvc = m_cl_variant->ms_layout
is_tech_complete = ' '
IMPORTING
es_layout_kkblo = ls_layout
et_fieldcat_kkblo = lt_fieldcat.
LOOP AT lt_fieldcat INTO lt_fieldcat_wa.
CLEAR lt_fieldcat_wa-tech_complete.
IF lt_fieldcat_wa-tabname IS initial.
lt_fieldcat_wa-tabname = '1'.
MODIFY lt_fieldcat FROM lt_fieldcat_wa.
ENDIF.
l_tabname = lt_fieldcat_wa-tabname.
ENDLOOP.
CALL FUNCTION 'ALV_XXL_CALL'
EXPORTING
i_tabname = l_tabname
is_layout = ls_layout
it_fieldcat = lt_fieldcat
i_title = sy-title
TABLES
it_outtab = <fs0>
EXCEPTIONS
fatal_error = 1
no_display_possible = 2
others = 3.
IF sy-subrc <> 0.
message id sy-msgid TYPE 'S' number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDMETHOD. "download_to_excel
METHOD change_title.
CALL METHOD grid1->set_gridtitle
EXPORTING
i_gridtitle = i_gridtitle.
ENDMETHOD. "CHANGE_TITLE
METHOD create_dynamic_table.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fldcat
IMPORTING
ep_table = dy_table.
ENDMETHOD. "create_dynamic_table
METHOD build_dynamic_structures.
caller = calling_program.
CALL METHOD me->return_structure
EXPORTING
my_line = my_line.
CALL METHOD me->create_dynamic_fcat
IMPORTING
it_fldcat = it_fldcat.
CALL METHOD me->create_dynamic_table
EXPORTING
it_fldcat = it_fldcat
IMPORTING
dy_table = dy_table.
ENDMETHOD. "build_dynamic_structures
METHOD display_grid.
GET REFERENCE OF g_outtab INTO g_outtab1.
GET REFERENCE OF g_fldcat INTO g_fldcat1.
struct_grid_lset-edit = 'X'. "To enable editing in ALV
struct_grid_lset-grid_title = 'TEST ALV USE generic class'.
struct_grid_lset-ctab_fname = 'T_CELLCOLORS'.
struct_grid_lset-stylefname = 'CELLTAB'.
CALL METHOD grid1->set_ready_for_input
EXPORTING
i_ready_for_input = '1'.
CALL METHOD grid1->set_table_for_first_display
EXPORTING
is_layout = struct_grid_lset
CHANGING
it_outtab = gt_outtab
it_fieldcatalog = it_fldcat.
ENDMETHOD. "display_grid
METHOD on_user_command.
CASE e_ucomm.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'EXCEL'.
CALL METHOD me->download_to_excel.
WHEN 'SAVE'.
WHEN 'PROC'.
CALL METHOD me->process.
WHEN 'REFR'.
CALL METHOD me->refresh.
ENDCASE.
ENDMETHOD. "on_user_command
METHOD on_toolbar.
customize this section with your own Buttons
When a button is pressed method ON_USER_COMMAND is entered
CLEAR ls_toolbar.
MOVE 0 TO ls_toolbar-butn_TYPE.
MOVE 'EXIT' TO ls_toolbar-function.
MOVE SPACE TO ls_toolbar-disabled.
MOVE icon_system_end TO ls_toolbar-icon.
MOVE 'Click2Exit' TO ls_toolbar-quickinfo.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE 0 TO ls_toolbar-butn_TYPE.
MOVE 'SAVE' TO ls_toolbar-function.
MOVE SPACE TO ls_toolbar-disabled.
MOVE icon_system_save TO ls_toolbar-icon.
MOVE 'Save data' TO ls_toolbar-quickinfo.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE 0 TO ls_toolbar-butn_TYPE.
MOVE 'EDIT' TO ls_toolbar-function.
MOVE SPACE TO ls_toolbar-disabled.
MOVE icon_toggle_display_change TO ls_toolbar-icon.
MOVE 'Edit data' TO ls_toolbar-quickinfo.
MOVE 'EDIT' TO ls_toolbar-text.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE 0 TO ls_toolbar-butn_TYPE.
MOVE 'PROC' TO ls_toolbar-function.
MOVE SPACE TO ls_toolbar-disabled.
MOVE icon_businav_process to ls_toolbar-icon.
MOVE 'Process.' TO ls_toolbar-quickinfo.
MOVE 'PROC' TO ls_toolbar-text.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE 0 TO ls_toolbar-butn_TYPE.
MOVE 'EXCEL' TO ls_toolbar-function.
MOVE SPACE TO ls_toolbar-disabled.
MOVE icon_xxl TO ls_toolbar-icon.
MOVE 'Excel' TO ls_toolbar-quickinfo.
MOVE 'EXCEL' TO ls_toolbar-text.
APPEND ls_toolbar TO e_object->mt_toolbar.
MOVE 0 TO ls_toolbar-butn_TYPE.
MOVE 'REFR' TO ls_toolbar-function.
MOVE SPACE TO ls_toolbar-disabled.
MOVE icon_refresh TO ls_toolbar-icon.
MOVE 'Refresh' TO ls_toolbar-quickinfo.
MOVE 'REFR' TO ls_toolbar-text.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. "on_toolbar
METHOD refresh_grid.
CALL METHOD cl_gui_cfw=>flush.
CALL METHOD grid1->refresh_table_display.
ENDMETHOD. "refresh_grid
METHOD refresh.
PERFORM refresh IN PROGRAM (caller) IF FOUND.
ENDMETHOD. "refresh
METHOD process.
PERFORM process IN PROGRAM (caller) IF FOUND.
ENDMETHOD. "process
METHOD dubbelklik.
perform dubbelklik IN PROGRAM (caller) IF FOUND
USING e_row
e_column
es_row_no.
ENDMETHOD. "dubbelklik
ENDCLASS. "zcl_alv_test IMPLEMENTATION
Reward if usefull
10-15-2007 12:44 PM
Hi,
DATA: wl_ex_fileopen TYPE REF TO cx_sy_file_open_mode."Exception
OPEN DATASET pw_file FOR <b>OUTPUT</b> IN TEXT MODE ENCODING DEFAULT.
if sy-subrc = 0.
*--Transfering data to application server
LOOP AT pt_dtl ASSIGNING <l_dtl>.
*--Transfering the header information to the file
TRY.
<b> TRANSFER <l_dtl> TO pw_file</b>. "Complete file path on app server
CATCH cx_sy_file_open_mode INTO wl_ex_fileopen.
IF wl_ex_fileopen IS NOT INITIAL.
*-- Error occured while writting to the file
MESSAGE e019 WITH text-004 pw_file .
ENDIF.
ENDTRY.
endloop.
<b>CLOSE DATASET pw_file.</b>
endif.
11-14-2007 11:10 AM