Regarding making ALV Online.
Dear SAP Gurus,
I am displaying an ALV Report fetching data from a Z-Table. Now my requirement is,
once the ALV output comes, it should automatically refresh for every 1 hour. ie, for every one hour data is to be checked from the Z-Table and updated in the list.
Please help.
Thanks & Regards
Pavan.
Some user(s) will have this report running continuously on their desktop, hour after hour? And, you're going to change the report they're looking at? I seriously doubt that.... In my case, I added a refresh button to my ALV function buttons, and allow the user to manually choose to refresh, once they have completed working the original list....At that time, I close my SALV screen, clear the underlying data table, then re-execute the data retrieval and SALV startup.
Edited by: BreakPoint on Mar 14, 2011 12:50 PM
Similar Messages
-
Regarding making hyperlink in OOPs ALV
Please see the following ALV Code. Its based on OOPs. There is no fieldcatalog defined in the program. In the output I want to make a hotspot on the filed VBELN & want to call T.code VA03 using SET PARAMETER ID. Please help. If I would have made it through Function Modules, It could have been easier as I can modify the fieldcatalog. Please help me urgently. Points will be rewarded.
*& Report ZTEST_OOPS_REPT1 *
REPORT ztest_oops_rept1 .
Type pool for icons - used in the toolbar
TYPE-POOLS: icon.
TYPE-POOLS: slis.
TABLES: vbak.
To allow the declaration of o_event_receiver before the
lcl_event_receiver class is defined, decale it as deferred in the
start of the program
CLASS lcl_event_receiver DEFINITION DEFERRED.
G L O B A L I N T E R N A L T A B L E S
*DATA: gi_sflight TYPE STANDARD TABLE OF sflight.
To include a traffic light and/or color a line the structure of the
table must include fields for the traffic light and/or the color
TYPES: BEGIN OF st_vbak.
INCLUDE STRUCTURE vbak.
TYPES: END OF st_vbak.
TYPES: tt_vbak TYPE STANDARD TABLE OF st_vbak.
DATA: gi_vbak TYPE tt_vbak.
*declaration for fieldcatalog
DATA: lit_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcat TYPE slis_fieldcat_alv.
G L O B A L D A T A
DATA: ok_code LIKE sy-ucomm,
Work area for internal table
g_wa_vbak TYPE st_vbak,
ALV control: Layout structure
gs_layout TYPE lvc_s_layo.
Declare reference variables to the ALV grid and the container
DATA:
go_grid TYPE REF TO cl_gui_alv_grid,
go_custom_container TYPE REF TO cl_gui_custom_container,
o_event_receiver TYPE REF TO lcl_event_receiver.
DATA:
Work area for screen 200
g_screen200 LIKE vbak.
Data for storing information about selected rows in the grid
DATA:
Internal table
gi_index_rows TYPE lvc_t_row,
Information about 1 row
g_selected_row LIKE lvc_s_row.
SELECTION-SCREEN *
SELECTION-SCREEN BEGIN OF BLOCK ch1 WITH FRAME.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln OBLIGATORY.
SELECTION-SCREEN END OF BLOCK ch1.
C L A S S E S
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING
e_object e_interactive,
handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS. "lcl_event_receiver DEFINITION
CLASS lcl_event_receiver IMPLEMENTATION
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
Event handler method for event toolbar.
CONSTANTS:
Constants for button type
c_button_normal TYPE i VALUE 0,
c_menu_and_default_button TYPE i VALUE 1,
c_menu TYPE i VALUE 2,
c_separator TYPE i VALUE 3,
c_radio_button TYPE i VALUE 4,
c_checkbox TYPE i VALUE 5,
c_menu_entry TYPE i VALUE 6.
DATA:
ls_toolbar TYPE stb_button.
Append seperator to the normal toolbar
CLEAR ls_toolbar.
MOVE c_separator TO ls_toolbar-butn_type..
APPEND ls_toolbar TO e_object->mt_toolbar.
Append a new button that to the toolbar. Use E_OBJECT of
event toolbar. E_OBJECT is of type CL_ALV_EVENT_TOOLBAR_SET.
This class has one attribute MT_TOOLBAR which is of table type
TTB_BUTTON. The structure is STB_BUTTON
CLEAR ls_toolbar.
MOVE 'CHANGE' TO ls_toolbar-function.
MOVE icon_change TO ls_toolbar-icon.
MOVE 'Change flight' TO ls_toolbar-quickinfo.
MOVE 'Change' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. "handle_toolbar
METHOD handle_user_command.
Handle own functions defined in the toolbar
CASE e_ucomm.
WHEN 'CHANGE'.
PERFORM change_flight.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMETHOD. "handle_user_command
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
S T A R T - O F - S E L E C T I O N.
START-OF-SELECTION.
SET SCREEN '100'.
*& Module USER_COMMAND_0100 INPUT
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Module STATUS_0100 OUTPUT
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ZTEST_ALV'.
SET TITLEBAR 'ZTEST_ALV'.
DATA:
For parameter IS_VARIANT that is sued to set up options for storing
the grid layout as a variant in method set_table_for_first_display
l_layout TYPE disvariant,
Utillity field
l_lines TYPE i.
After returning from screen 200 the line that was selected before
going to screen 200, should be selected again. The table gi_index_rows
was the output table from the GET_SELECTED_ROWS method in form
CHANGE_FLIGHT
DESCRIBE TABLE gi_index_rows LINES l_lines.
IF l_lines > 0.
CALL METHOD go_grid->set_selected_rows
EXPORTING
it_index_rows = gi_index_rows.
CALL METHOD cl_gui_cfw=>flush.
REFRESH gi_index_rows.
ENDIF.
Read data and create objects
IF go_custom_container IS INITIAL.
Read data from datbase table
PERFORM get_data.
Create objects for container and ALV grid
CREATE OBJECT go_custom_container
EXPORTING container_name = 'ALV_CONTAINER'.
CREATE OBJECT go_grid
EXPORTING
i_parent = go_custom_container.
Create object for event_receiver class
and set handlers
CREATE OBJECT o_event_receiver.
SET HANDLER o_event_receiver->handle_user_command FOR go_grid.
SET HANDLER o_event_receiver->handle_toolbar FOR go_grid.
Layout (Variant) for ALV grid
l_layout-report = sy-repid. "Layout fo report
Setup the grid layout using a variable of structure lvc_s_layo
Set grid title
gs_layout-grid_title = 'SALES ORDER'.
Selection mode - Single row without buttons
(This is the default mode
gs_layout-sel_mode = 'B'. "B for single selection.
Grid setup for first display
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'VBAK'
is_variant = l_layout
i_save = 'A'
is_layout = gs_layout
CHANGING
it_outtab = gi_vbak.
*-- End of grid setup -
Raise event toolbar to show the modified toolbar
CALL METHOD go_grid->set_toolbar_interactive.
Set focus to the grid. This is not necessary in this
example as there is only one control on the screen
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = go_grid.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0200 INPUT
text
MODULE user_command_0200 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 100.
WHEN'SAVE'.
PERFORM save_changes.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
*& Form get_data
text
FORM get_data.
Read data from table VBAK
SELECT *
FROM vbak
INTO TABLE gi_vbak
WHERE vbeln IN s_vbeln.
ENDFORM. " load_data_into_grid
*& Form change_flight
Reads the contents of the selected row in the grid, ans transfers
the data to screen 200, where it can be changed and saved.
FORM change_flight.
DATA:l_lines TYPE i.
REFRESH gi_index_rows.
CLEAR g_selected_row.
Read index of selected rows
CALL METHOD go_grid->get_selected_rows
IMPORTING
et_index_rows = gi_index_rows.
Check if any row are selected at all. If not
table gi_index_rows will be empty
DESCRIBE TABLE gi_index_rows LINES l_lines.
IF l_lines = 0.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
textline1 = 'You must choose a line'.
EXIT.
ENDIF.
Read indexes of selected rows. In this example only one
row can be selected as we are using gs_layout-sel_mode = 'B',
so it is only ncessary to read the first entry in
table gi_index_rows
LOOP AT gi_index_rows INTO g_selected_row.
IF sy-tabix = 1.
READ TABLE gi_vbak INDEX g_selected_row-index
INTO g_wa_vbak.
ENDIF.
ENDLOOP.
Transfer data from the selected row to screenm 200 and show
screen 200
CLEAR g_screen200.
MOVE-CORRESPONDING g_wa_vbak TO g_screen200.
LEAVE TO SCREEN '200'.
ENDFORM. " change_flight
*& Form save_changes
Changes made in screen 200 are written to the datbase table
zsflight, and to the grid table gi_sflight, and the grid is
updated with method refresh_table_display to display the changes
FORM save_changes.
Update traffic light field
Update database table
MODIFY vbak FROM g_screen200.
Refresh grid
CALL METHOD go_grid->refresh_table_display.
CALL METHOD cl_gui_cfw=>flush.
LEAVE TO SCREEN '100'.
ENDFORM. " save_changes
*& Module STATUS_0200 OUTPUT
text
MODULE status_0200 OUTPUT.
SET PF-STATUS 'ZTEST_ALV'.
SET TITLEBAR 'ZTEST_ALV'.
ENDMODULE. " STATUS_0200 OUTPUT
" lit_fieldcat_initUse FM -LVC_FIELDCATALOG_MERGE to derive the field catalog for table VBAK. It will give you the field catalog. You can modify the column VBELN by changing HOTSPOT = 'X".
and in your code - at the method SET_TABLE_FOR....DISPLAY , you comment out the structure name and pass the modified field catalog.
Hope it helps. -
Hi All,
I have one button and one alv.
Now my requirement is when i press the button on first time the entire table should be in deactive mode
( i got this ) and if i press the same button on second time the entire table should be in edit mode ( i got this also ).But if i press the same button on third time , am able to get non editable mode ,but here i want in deactive mode .
I want display/Change toggle button.
My code is as follows ...Chech it Once..
DATA:V_FLAG TYPE C.
DATA LO_ND_FLAG TYPE REF TO IF_WD_CONTEXT_NODE.
DATA LO_EL_FLAG TYPE REF TO IF_WD_CONTEXT_ELEMENT.
DATA LS_FLAG TYPE WD_THIS->ELEMENT_FLAG.
navigate from <CONTEXT> to <FLAG> via lead selection
LO_ND_FLAG = WD_CONTEXT->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_FLAG ).
get element via lead selection
LO_EL_FLAG = LO_ND_FLAG->GET_ELEMENT( ).
get all declared attributes
LO_EL_FLAG->GET_STATIC_ATTRIBUTES(
IMPORTING
STATIC_ATTRIBUTES = LS_FLAG ).
IF LS_FLAG-DIS_CHG EQ 'D'.
CALL METHOD LO_EL_FLAG->SET_ATTRIBUTE
EXPORTING
VALUE = 'C'
NAME = `DIS_CHG`.
V_FLAG = 'X'.
ELSEIF LS_FLAG-DIS_CHG EQ 'C'.
CALL METHOD LO_EL_FLAG->SET_ATTRIBUTE
EXPORTING
VALUE = 'D'
NAME = `DIS_CHG`.
CLEAR V_FLAG.
ENDIF.
*Instantiate used component
DATA LO_CMP_USAGE TYPE REF TO IF_WD_COMPONENT_USAGE.
LO_CMP_USAGE = WD_THIS->WD_CPUSE_ALV( ).
IF LO_CMP_USAGE->HAS_ACTIVE_COMPONENT( ) IS INITIAL.
LO_CMP_USAGE->CREATE_COMPONENT( ).
ENDIF.
*Get config model
DATA LO_INTERFACECONTROLLER TYPE REF TO IWCI_SALV_WD_TABLE .
LO_INTERFACECONTROLLER = WD_THIS->WD_CPIFC_ALV( ).
DATA LO_VALUE TYPE REF TO CL_SALV_WD_CONFIG_TABLE.
LO_VALUE = LO_INTERFACECONTROLLER->GET_MODEL(
DATA: LR_TABLE_SETTINGS TYPE REF TO IF_SALV_WD_TABLE_SETTINGS.
DATA: LR_COLUMN_SETTINGS TYPE REF TO IF_SALV_WD_COLUMN_SETTINGS,
LR_INPUT_FIELD TYPE REF TO CL_SALV_WD_UIE_INPUT_FIELD.
DATA: LR_COLUMN TYPE REF TO CL_SALV_WD_COLUMN.
IF V_FLAG = 'X'.
LO_VALUE->IF_SALV_WD_STD_FUNCTIONS~SET_EDIT_DELETE_ROW_ALLOWED( ABAP_TRUE ).
LO_VALUE->IF_SALV_WD_STD_FUNCTIONS~SET_EDIT_INSERT_ROW_ALLOWED( ABAP_FALSE ).
LO_VALUE->IF_SALV_WD_STD_FUNCTIONS~SET_EDIT_CHECK_AVAILABLE( ABAP_FALSE ).
LO_VALUE->IF_SALV_WD_STD_FUNCTIONS~SET_EDIT_APPEND_ROW_ALLOWED( ABAP_FALSE ).
LR_TABLE_SETTINGS ?= LO_VALUE.
LR_TABLE_SETTINGS->SET_READ_ONLY( ABAP_FALSE ).
Making the Fields Editable -
LR_COLUMN_SETTINGS ?= LO_VALUE.
LR_COLUMN = LR_COLUMN_SETTINGS->GET_COLUMN( 'NAME1' ).
CREATE OBJECT LR_INPUT_FIELD
EXPORTING
VALUE_FIELDNAME = 'NAME1'.
LR_COLUMN->SET_CELL_EDITOR( LR_INPUT_FIELD ).
LR_TABLE_SETTINGS ?= LO_VALUE.
LR_TABLE_SETTINGS->SET_READ_ONLY( ABAP_FALSE ).
LR_COLUMN_SETTINGS ?= LO_VALUE.
LR_COLUMN = LR_COLUMN_SETTINGS->GET_COLUMN( 'EMAIL_ID' ).
CREATE OBJECT LR_INPUT_FIELD
EXPORTING
VALUE_FIELDNAME = 'EMAIL_ID'.
LR_COLUMN->SET_CELL_EDITOR( LR_INPUT_FIELD ).
LR_TABLE_SETTINGS ?= LO_VALUE.
LR_TABLE_SETTINGS->SET_READ_ONLY( ABAP_FALSE ).
ELSE.
LR_TABLE_SETTINGS ?= LO_VALUE.
LR_TABLE_SETTINGS->SET_READ_ONLY( ABAP_TRUE ).
ENDIF.
Could any one help me in this regard.
Thanks in advance.
Regards,
sravan.Hi Sravan ,
Thats very easy .
Please follow the below steps.
I have seen ur code....plz make following changes in the ELSE PART .
ELSE.
LR_TABLE_SETTINGS ?= LO_VALUE.
LR_TABLE_SETTINGS->SET_READ_ONLY( ABAP_TRUE ).------>>>>>>>this is ur code .
now add this .
*make columns editable
DATA : l_column TYPE REF TO cl_salv_wd_column ,
l_column1 TYPE REF TO cl_salv_wd_column ,
lr_input TYPE REF TO cl_salv_wd_uie_input_field ,
l_input1 TYPE REF TO cl_salv_wd_uie_input_field .
l_column = lo_value->if_salv_wd_column_settings~get_column( 'NAME1' ).
CREATE OBJECT lr_input
EXPORTING
value_fieldname = 'NAME1'.
*MAKE COLUMN EDIATBLE
l_column->set_cell_editor( value = lr_input ) .
MAKE COULNMN NON EDITABLE i.e. read ony
CALL METHOD LR_INPUT->SET_READ_ONLY
EXPORTING
VALUE = ABAP_TRUE
*repaeat the same step for another field.
l_column = lo_value->if_salv_wd_column_settings~get_column( 'EMAIL_ID' ).
CREATE OBJECT lr_input
EXPORTING
value_fieldname = 'EMAIL_ID'.
*MAKE COLUMN EDIATBLE
l_column->set_cell_editor( value = lr_input ) .
MAKE COULNMN NON EDITABLE i.e. read ony
CALL METHOD LR_INPUT->SET_READ_ONLY
EXPORTING
VALUE = ABAP_TRUE
lo_value->IF_SALV_WD_TABLE_SETTINGS~set_read_only( abap_false ).
ENDIF.
hope this will solve ur problem...i have tested and its working perfectly
regards
Arjun . -
Hi all,
Frnds i am working in editable alv using function modules not object oriented abap.
i m trying to edit a Field(MATNR ) in my output list and finally update it with changed values in the DB table.
But i m getting syntax error like
"the work area i_final is not alligned properly
below i m providing my code.
<code>
*& Report ZEDITABLE_ALV1
REPORT ZEDITABLE_ALV1.
TABLES: vbak,vbap.
TYPE-POOLS: slis. "ALV Declarations
data: BEGIN OF i_final occurs 0,
vbeln like vbap-vbeln,
posnr like vbap-posnr,
matnr like vbap-matnr,
erdat like vbap-erdat,
END OF i_final.
DATA : C_X(1) TYPE C VALUE 'X',
C_FC_MODIFY(6) TYPE C VALUE 'MODIFY'.
*DATA: i_final TYPE STANDARD TABLE OF T_FINAL with header line.
i_temp type standard table of T_FINAL with header line.
*wa_final like line of i_final.
*DATA:i_final LIKE vbap OCCURS 0.
*DATA:wa_final LIKE vbap.
*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid.
*Start-of-selection.
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_alv_report.
*& Form BUILD_FIELDCATALOG
* Build Fieldcatalog for ALV Report
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'VBELN'.
fieldcatalog-seltext_m = 'sales order'.
fieldcatalog-col_pos = 0.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ERDAT'.
fieldcatalog-seltext_m = 'date'.
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'material no.'.
fieldcatalog-col_pos = 2.
fieldcatalog-edit = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'POSNR'.
fieldcatalog-seltext_m = 'line item no.'.
fieldcatalog-col_pos = 3.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-FIELDNAME = 'REC_SEL'.
fieldcatalog-NO_OUT = C_X.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDFORM. " BUILD_FIELDCATALOG
*& Form BUILD_LAYOUT
* Build layout for ALV grid report
FORM build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
gd_layout-totals_only = 'X'.
gd_layout-f2code = 'DISP'. "Sets fcode for when double
"click(press f2)
gd_layout-zebra = 'X'.
gd_layout-group_change_edit = 'X'.
gd_layout-header_text = 'helllllo'.
ENDFORM. " BUILD_LAYOUT
*& Form DISPLAY_ALV_REPORT
* Display report using ALV grid
FORM display_alv_report.
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
i_callback_user_command = 'USER_COMMAND'
i_callback_pf_status_set = 'GUI_STAT'
*i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
*it_special_groups = gd_tabgroup
*it_events = it_events
i_save = 'X'
*is_variant = z_template
TABLES
t_outtab = i_final
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.
ENDFORM. " DISPLAY_ALV_REPORT
**& Form DATA_RETRIEVAL
* Retrieve data form EKPO table and populate itab it_ekko
FORM data_retrieval.
*SELECT avbeln aerdat bmatnr bposnr FROM vbak AS a
*INNER JOIN vbap AS b ON avbeln = bvbeln
*INTO TABLE i_final WHERE a~vbeln = b~vbeln.
select VBELN ERDAT MATNR POSNR up to 10 rows from vbap into corresponding fields of table i_final.
ENDFORM. " DATA_RETRIEVAL
* FORM GUI_STAT *
* --> RT_EXTAB *
FORM gui_stat USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'MODIFY' EXCLUDING rt_extab.
ENDFORM.
* FORM USER_COMMAND *
* --> U_COMM *
* --> RS_SELFIELD *
FORM user_command USING u_comm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA:selfield TYPE slis_selfield.
*RS_SELFIELD-REFRESH = C_X.
CASE u_comm.
*IF U_COMM = C_FC_MODIFY.
WHEN 'UPDATE'.
LOOP AT i_final. " into wa_final."into wa_final.
*READ TABLE I_TEMP WITH KEY VBELN = I_FINAL-VBELN.
*IF SY-SUBRC = 0.
i_final-matnr = vbap-matnr.
*MODIFY I_final INDEX SY-TABIX.
*ENDIF.
ENDLOOP.
*ENDIF.
MODIFY VBAP FROM TABLE i_final.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT.
*MESSAGE I000 WITH SY-DBCNT
*' Record(s) has been Updated'(020).
ENDIF.
*append i_final.
*it_temp = i_final.
*append it_temp.
**UPDATE sflight FROM TABLE sflight_tab.
*ENDLOOP.
*update vbap from table i_final.
*IF sy-subrc = 0.
*MESSAGE s000(0) WITH 'records updated successfully'.
*ENDIF.
ENDCASE.
ENDFORM.
</code>
Frnds plz help me in this regard.
Thanks,
satyaTry something like this...ur code was not clear..i have done something u can understand.
First check that u r not trying to update the primary key field.
first before updating.
Before updating select the record u r going to update from the main table.
select single * from VBAP where <pass the key values>.
if sy-subrc = 0.
move the rest of the values to the table header except the key values.
vbap-<field1> = value1.
vbap-<field2> = value2.
after moving the values.
update <table>.
if sy-subrc = 0.
commit work.
endif.
data:st_vbap type vbap.
WHEN 'UPDATE'.
LOOP AT i_final. " into wa_final."into wa_final.
select single * from vbap where vbeln = I_FINAL-VBELN.
move-corresponding i_final to vbap.
update vbap.
if sy-subrc = 0.
commit work.
wk_cnt = wk_cnt + 1.
endif.
at last.
*MESSAGE I000 WITH SY-DBCNT
*' Record(s) has been Updated'(020).
endat.
endloop -
Hi All,
I am catching double click event in user command for alv list display,where we get one structure filled on runtime called slis_selfield upon double clicking on alv rows. in this structure i am not getting the field 'sel_tab_field' filled. and i am in need of that field value.
can you help me out in this regard.
Thanks in advance.
Regards
AshutoshHi ,
FORM user_command USING p_ucomm LIKE sy-ucomm
f_selfield TYPE slis_selfield.
capture double click event on document number created.
CASE p_ucomm.
WHEN '&IC1'.
IF f_selfield-tabname EQ 'I_DOC_CREATED'.
CHECK NOT f_selfield-value IS INITIAL.
SET PARAMETER ID 'BLN' FIELD f_selfield-value.
SET PARAMETER ID 'BUK' FIELD so_bukrs-low.
SET PARAMETER ID 'GJR' FIELD w_gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ELSEIF f_selfield-tabname EQ 'I_ELOG'.
CHECK NOT f_selfield-value IS INITIAL.
SET PARAMETER ID 'BLN' FIELD f_selfield-value.
SET PARAMETER ID 'BUK' FIELD so_bukrs-low.
SET PARAMETER ID 'GJR' FIELD w_gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
I am not getting fieldname field of slis_selfield populated upon double clicking -
Regarding Hierarchial ALV Display
Can any one please tell me the 'keyinfo' parameter in the ALV function REUSE_ALV_HIERSEQ_LIST_DISPLAY.
I want all the details regarding the parameter keyinfo.
Thanks in advance.this is used to specify that according to which field u want hierarchy....
means i want that according to material number i want hierarchical display than i have to pass matnr in this
and
key_info-header01 = 'MAT'.
key_info-item01 = 'MAT'.
In this we passing field name of header table and item table....
Now see this example..
In this i want hierarchy depend on Material and palnt both..
so my code will be
TYPE-POOLS : slis.
TABLES : mseg.
DATA : BEGIN OF itab_head OCCURS 0,
mat LIKE mseg-matnr,
matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
END OF itab_head.
DATA : BEGIN OF itab_item OCCURS 0,
mat LIKE mseg-matnr,
matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
mblnr LIKE mseg-mblnr,
menge LIKE mseg-menge,
END OF itab_item.
DATA : t_fcat TYPE slis_t_fieldcat_alv,
key_info TYPE slis_keyinfo_alv,
t_eve TYPE slis_t_event,
gt_subtot TYPE slis_t_sortinfo_alv,
subtot LIKE LINE OF gt_subtot,
t_listhead TYPE slis_t_listheader,
st_line TYPE slis_listheader.
DATA : t_mtdoc LIKE mseg-mblnr.
SELECT-OPTIONS : mat FOR mseg-matnr.
INITIALIZATION.
PERFORM build_cat USING t_fcat.
PERFORM build_eve.
START-OF-SELECTION.
PERFORM get_data.
PERFORM dis_data.
*& Form build_cat
text
-->TEMP_FCAT text
FORM build_cat USING temp_fcat TYPE slis_t_fieldcat_alv.
DATA : wa_fcat TYPE slis_fieldcat_alv.
wa_fcat-tabname = 'ITAB_HEAD'.
wa_fcat-fieldname = 'MAT'.
wa_fcat-seltext_m = 'Material'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_HEAD'.
wa_fcat-fieldname = 'WERKS'.
wa_fcat-seltext_m = 'Plant'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITEM'.
wa_fcat-fieldname = 'MBLNR'.
wa_fcat-seltext_m = 'Material Doc.'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITEM'.
wa_fcat-fieldname = 'MENGE'.
wa_fcat-seltext_m = 'Quantity'.
wa_fcat-do_sum = 'Y'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
subtot-spos = 1.
subtot-fieldname = 'MAT'.
subtot-tabname = 'ITAB_HEAD'.
subtot-up = 'X'.
subtot-group = 'X'.
subtot-subtot = 'X'.
subtot-expa = 'X'.
APPEND subtot TO gt_subtot.
ENDFORM. "build_cat
*& Form build_eve
text
FORM build_eve.
DATA : wa_eve TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = t_eve
EXCEPTIONS
LIST_TYPE_WRONG = 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.
ENDFORM. "build_eve
*& Form get_data
text
FORM get_data.
SELECT matnr AS mat werks mblnr menge FROM mseg INTO CORRESPONDING FIELDS OF TABLE itab_item
WHERE matnr IN mat.
ENDFORM. "get_data
*& Form dis_data
text
FORM dis_data.
key_info-header01 = 'MAT'.
key_info-item01 = 'MAT'.
key_info-header02 = 'WERKS'.
key_info-item02 = 'WERKS'.
REFRESH itab_head.
LOOP AT itab_item.
ON CHANGE OF itab_item-mat OR itab_item-werks.
MOVE-CORRESPONDING itab_item TO itab_head.
APPEND itab_head.
ENDON.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = 'ZALV_PRDS'
it_fieldcat = t_fcat
it_sort = gt_subtot
it_events = t_eve[]
i_tabname_header = 'ITAB_HEAD'
i_tabname_item = 'ITAB_ITEM'
is_keyinfo = key_info
TABLES
t_outtab_header = itab_head
t_outtab_item = itab_item
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.
ENDFORM. "dis_data
reward if usefull..... -
Need information regarding Hierarchical ALV display
How to total sub items in an Heirarchical ALV List display?
Hi,
I have one Hierarchical alv example .. please see it. Also check B*ALV in se38.
*& Report ZLAXMI_ALVEXER4 *
REPORT ZLAXMI_ALVEXER4 MESSAGE-ID ZZ .
*& TABLES DECLARATION *
TABLES: VBAK, VBAP.
*& TYPE POOLS DECLARATION *
TYPE-POOLS: SLIS.
DATA DECLARATIONS *
DATA: V_FLAG TYPE C. "Flag to display the header
DATA: V_REPID TYPE SY-REPID.
*& INTERNAL TABLE DECLARATION *
DATA: BEGIN OF IT_VBAK OCCURS 0,
VBELN LIKE VBAK-VBELN,
AUDAT LIKE VBAK-AUDAT,
AUART LIKE VBAK-AUART,
NETWR LIKE VBAK-NETWR,
EXPAND(1),
END OF IT_VBAK.
DATA: BEGIN OF IT_VBAP OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
PSTYV LIKE VBAP-PSTYV,
CHARG LIKE VBAP-CHARG,
END OF IT_VBAP.
DATA: IT_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
IT_FLDCAT1 TYPE SLIS_T_FIELDCAT_ALV,
*events
IT_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE,
V_CALL TYPE C,
X_USER TYPE SLIS_EXIT_BY_USER,
IT_VARIANT LIKE DISVARIANT OCCURS 0 WITH HEADER LINE,
X_KEYINFO TYPE SLIS_KEYINFO_ALV,
*layout
X_LAYOUT TYPE SLIS_LAYOUT_ALV,
*sort
IT_SORT TYPE SLIS_T_SORTINFO_ALV,
WA_SORT LIKE LINE OF IT_SORT,
X_CAT TYPE SLIS_FIELDCAT_ALV,
V_TABIX LIKE SY-TABIX.
Selection screen Declaration
*--BLOCK1
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN,
S_AUART FOR VBAK-AUART.
SELECTION-SCREEN END OF BLOCK B1.
AT SELECTION-SCREEN *
*- Validations
AT SELECTION-SCREEN.
PERFORM VALIDATE_SCREEN.
START OF SELECTION *
START-OF-SELECTION.
*- To get data from VBAK
PERFORM GET_DATA.
*to get data from VBAP
PERFORM GET_DATA_VBAP.
PERFORM PREPARE_ALV.
END OF SELECTION *
END-OF-SELECTION.
PERFORM DISPLAY_REPORT.
*& Form VALIDATE_SCREEN
text
--> p1 text
<-- p2 text
FORM VALIDATE_SCREEN .
DATA: LV_VBELN LIKE VBAK-VBELN,
LV_AUART LIKE VBAK-AUART.
IF NOT S_VBELN[] IS INITIAL.
SELECT VBELN
INTO LV_VBELN
FROM VBAK
WHERE VBELN IN S_VBELN.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE E000 WITH 'INVALID SALES DOC'(002).
ENDIF.
ENDIF.
IF NOT S_AUART[] IS INITIAL.
SELECT AUART
INTO LV_AUART
FROM VBAK
WHERE AUART IN S_AUART.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE E000 WITH 'INVALID SALES DOC TYPE'(003).
ENDIF.
ENDIF.
ENDFORM. " VALIDATE_SCREEN
*& Form GET_DATA
text
--> p1 text
<-- p2 text
FORM GET_DATA .
SELECT VBELN
AUDAT
AUART
NETWR
FROM VBAK
INTO TABLE IT_VBAK
WHERE VBELN IN S_VBELN
AND AUART IN S_AUART.
IF SY-SUBRC = 0.
SORT IT_VBAK BY VBELN.
ENDIF.
ENDFORM. " GET_DATA
*& Form GET_DATA_VBAP
text
--> p1 text
<-- p2 text
FORM GET_DATA_VBAP .
SELECT VBELN
POSNR
MATNR
PSTYV
CHARG
INTO TABLE IT_VBAP
FROM VBAP
FOR ALL ENTRIES IN IT_VBAK
WHERE VBELN = IT_VBAK-VBELN.
IF SY-SUBRC = 0.
SORT IT_VBAP BY VBELN POSNR.
ENDIF.
ENDFORM. " GET_DATA_VBAP
*& Form prepare_alv
text
--> p1 text
<-- p2 text
FORM PREPARE_ALV .
Prepare field catalog .
PERFORM PREPARE_CATALOG.
Modify catalog
PERFORM CHANGE_ATTR_OF_CATALOG.
Modify Layout
PERFORM MODIFY_LAYOUT.
Sort Catalog
PERFORM SORT_CATALOG.
ENDFORM. " prepare_alv
*& Form prepare_catalog
text
--> p1 text
<-- p2 text
FORM PREPARE_CATALOG .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'IT_VBAK'
I_INCLNAME = SY-REPID
CHANGING
CT_FIELDCAT = IT_FLDCAT1[]
EXCEPTIONS
INCONSISTENT_INTERFACE = 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.
ENDIF.
APPEND LINES OF IT_FLDCAT1 TO IT_FLDCAT.
CLEAR: IT_FLDCAT1[].
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'IT_VBAP'
I_INCLNAME = SY-REPID
CHANGING
CT_FIELDCAT = IT_FLDCAT1[]
EXCEPTIONS
INCONSISTENT_INTERFACE = 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.
ENDIF.
APPEND LINES OF IT_FLDCAT1 TO IT_FLDCAT.
ENDFORM. " prepare_catalog
*& Form change_attr_of_catalog
text
--> p1 text
<-- p2 text
FORM CHANGE_ATTR_OF_CATALOG .
LOOP AT IT_FLDCAT INTO X_CAT.
V_TABIX = SY-TABIX.
CASE X_CAT-FIELDNAME.
WHEN 'EXPAND'.
IF X_CAT-TABNAME = 'IT_VBAK'.
X_CAT-NO_OUT = 'X'.
ENDIF.
when 'VBELN'.
if x_cat-tabname = 'IT_VBAK'.
x_cat-no_out = 'X'.
endif.
WHEN 'VBELN'.
IF X_CAT-TABNAME = 'IT_VBAK'.
X_CAT-COL_POS = '1'.
X_CAT-SELTEXT_M = 'SALES DOC'.
X_CAT-SELTEXT_L = 'SALES DOC'.
X_CAT-SELTEXT_S = 'SALES DOC'.
X_CAT-OUTPUTLEN = '10'.
ENDIF.
WHEN 'AUDAT'.
IF X_CAT-TABNAME = 'IT_VBAK'.
X_CAT-COL_POS = '2'.
X_CAT-SELTEXT_M = 'DOC DATE'.
X_CAT-SELTEXT_L = 'DOC DATE'.
X_CAT-SELTEXT_S = 'DOC DATE'.
X_CAT-OUTPUTLEN = '8'.
ENDIF.
WHEN 'AUART'.
IF X_CAT-TABNAME = 'IT_VBAK'.
X_CAT-COL_POS = '3'.
X_CAT-SELTEXT_M = 'ORDER REASON'.
X_CAT-SELTEXT_L = 'ORDER REASON'.
X_CAT-SELTEXT_S = 'ORDER REASON'.
X_CAT-OUTPUTLEN = '5'.
ENDIF.
WHEN 'NETWR'.
IF X_CAT-TABNAME = 'IT_VBAK'.
X_CAT-COL_POS = '4'.
X_CAT-SELTEXT_M = 'NET PRICE'.
X_CAT-SELTEXT_L = 'NET PRICE'.
X_CAT-SELTEXT_S = 'NET PRICE'.
X_CAT-OUTPUTLEN = '15'.
ENDIF.
ENDCASE.
MODIFY IT_FLDCAT FROM X_CAT.
CLEAR X_CAT.
ENDLOOP.
ENDFORM. " change_attr_of_catalog
*& Form modify_layout
text
--> p1 text
<-- p2 text
FORM MODIFY_LAYOUT .
X_LAYOUT-DEFAULT_ITEM = 'X'.
X_LAYOUT-ZEBRA = 'X'.
X_LAYOUT-EXPAND_FIELDNAME = 'EXPAND'.
ENDFORM. " modify_layout
*& Form sort_catalog
text
--> p1 text
<-- p2 text
FORM SORT_CATALOG .
CLEAR WA_SORT.
WA_SORT-SPOS = '01'.
WA_SORT-FIELDNAME = 'VBELN' .
WA_SORT-TABNAME = 'IT_VBAP'.
WA_SORT-UP = 'X'.
APPEND WA_SORT TO IT_SORT.
CLEAR WA_SORT.
WA_SORT-SPOS = '02'.
WA_SORT-FIELDNAME = 'POSNR' .
WA_SORT-TABNAME = 'IT_VBAP'.
WA_SORT-UP = 'X'.
APPEND WA_SORT TO IT_SORT.
ENDFORM. " sort_catalog
*& Form DISPLAY_REPORT
text
--> p1 text
<-- p2 text
FORM DISPLAY_REPORT .
IT_VARIANT-REPORT = SY-REPID.
SORT IT_VBAK BY VBELN.
SORT IT_VBAP BY VBELN POSNR.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = X_LAYOUT
IT_FIELDCAT = IT_FLDCAT[]
IT_SORT = IT_SORT
IS_VARIANT = IT_VARIANT
IT_EVENTS = IT_EVENTS[]
I_TABNAME_HEADER = 'IT_VBAK'
I_TABNAME_ITEM = 'IT_VBAP'
IS_KEYINFO = X_KEYINFO
IMPORTING
E_EXIT_CAUSED_BY_CALLER = V_CALL
ES_EXIT_CAUSED_BY_USER = X_USER
TABLES
T_OUTTAB_HEADER = IT_VBAK
T_OUTTAB_ITEM = IT_VBAP
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.
ENDFORM. " DISPLAY_REPORT
Regards,
Laxmi. -
Hi abapers,
i am developing the alv interactive report . such that if any user clicks on particular matnr then it has to go for the MM02 Transaction Accounting tab.
i should not do BDC. i am using function module called selection_view_find. how to acheive it? i am keep trying but not able to search in sdn . if possible post the sample code without doing bdc.
my code is
{ IF rs_selfield-fieldname = 'MATNR'.}
{READ TABLE t_vbap INTO w_vbap INDEX rs_selfield-tabindex.}
{SET PARAMETER ID 'MAT' FIELD w_vbap-matnr.}
{ CALL TRANSACTION 'MM02' AND SKIP FIRST SCREEN.}Use a
IF rs_selfield-fieldname = 'MATNR'.
READ TABLE t_vbap INTO w_vbap INDEX rs_selfield-tabindex.
SET PARAMETER ID 'MAT' FIELD w_vbap-matnr. " material number
SET PARAMETER ID 'WRK' FIELD w_vbap-werks. " Plant
SET PARAMETER ID 'BWT' FIELD w_vbap-bwtar. " Valuation type
SET PARAMETER ID 'MXX' FIELD 'B'. " function(s) to call
CALL TRANSACTION 'MM02' AND SKIP FIRST SCREEN.
Check table T132(T) for values of MXX parameter, and provide every required parameters.
Regards,
Raymond -
Regarding multiple ALV's in a screen.
Hi gurus,
I have to develop one ALV report having multiple reports in one screen, also if i click any of the row items in one screen, it will move to the second, the approach i am using is using oops-ABAP i m new to this subject, thought there are
many materials available still i am not able to understand, so can some one please show me a sample code for 2 reports in a screen and explain it?
Thanks & Regards,
Swordfish.Hi,
<li>We have one concept in ALV called ALV Blocked report. It means displaying multiple outputs on one screen.
<li> We use 3 function modules for that.
REUSE_ALV_BLOCK_LIST_INIT
REUSE_ALV_BLOCK_LIST_APPEND
REUSE_ALV_BLOCK_LIST_DISPLAY
<li>Try this program.It works fine.
<pre><font color=blue>REPORT zvenkat_blocked_alv.
DATA: i_0000 TYPE STANDARD TABLE OF pa0000,
i_0001 TYPE STANDARD TABLE OF pa0001,
i_0002 TYPE STANDARD TABLE OF pa0002,
i_0008 TYPE STANDARD TABLE OF pa0008.
ALV Declarations
TYPE-POOLS:slis.
TYPES:
t_fieldcat TYPE slis_fieldcat_alv,
t_events TYPE slis_alv_event,
t_layout TYPE slis_layout_alv.
DATA:
w_fieldcat1 TYPE t_fieldcat,
w_fieldcat2 TYPE t_fieldcat,
w_fieldcat3 TYPE t_fieldcat,
w_fieldcat4 TYPE t_fieldcat,
w_events TYPE t_events,
w_layout TYPE t_layout.
DATA:
i_fieldcat1 TYPE STANDARD TABLE OF t_fieldcat,
i_fieldcat2 TYPE STANDARD TABLE OF t_fieldcat,
i_fieldcat3 TYPE STANDARD TABLE OF t_fieldcat,
i_fieldcat4 TYPE STANDARD TABLE OF t_fieldcat,
i_events TYPE STANDARD TABLE OF t_events.
START-OF-SELECTION.
PERFORM get_data.
PERFORM display_data.
FORM get_data.
SELECT * FROM pa0000 INTO TABLE i_0000 UP TO 10 ROWS.
SELECT * FROM pa0001 INTO TABLE i_0001 UP TO 10 ROWS.
SELECT * FROM pa0002 INTO TABLE i_0002 UP TO 10 ROWS.
SELECT * FROM pa0008 INTO TABLE i_0008 UP TO 10 ROWS.
ENDFORM. "get_data
FORM display_data.
PERFORM build_fieldcatalog USING 'PA0000' CHANGING i_fieldcat1.
PERFORM build_fieldcatalog USING 'PA0001' CHANGING i_fieldcat2[].
PERFORM build_fieldcatalog USING 'PA0002' CHANGING i_fieldcat3[].
PERFORM build_fieldcatalog USING 'PA0008' CHANGING i_fieldcat4[].
w_layout-max_linesize = '500'.
PERFORM display_data_alv.
ENDFORM. "display_data
FORM display_data_alv .
DATA:l_program TYPE sy-repid.
l_program = sy-repid.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = l_program.
PERFORM build_block_list_append TABLES i_0000[] USING w_layout i_fieldcat1[] 'PA0000' i_events[].
PERFORM build_block_list_append TABLES i_0001[] USING w_layout i_fieldcat2[] 'PA0001' i_events[].
PERFORM build_block_list_append TABLES i_0002[] USING w_layout i_fieldcat3[] 'PA0002' i_events[].
PERFORM build_block_list_append TABLES i_0008[] USING w_layout i_fieldcat4[] 'PA0008' i_events[].
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " display_data_ALV
FORM build_block_list_append TABLES outtab USING layout fieldcat tabname events .
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = layout
it_fieldcat = fieldcat
i_tabname = tabname
it_events = events
TABLES
t_outtab = outtab.
IF sy-subrc = 0.
"MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
" WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " build_block_list_append
FORM build_fieldcatalog USING structure CHANGING i_fieldcat1.
DATA:l_program TYPE sy-repid.
l_program = sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = l_program
i_structure_name = structure
CHANGING
ct_fieldcat = i_fieldcat1.
IF sy-subrc <> 0.
"MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
" WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " build_fieldcatalo</pre></font>
Thanks
Venkat.O -
Regarding editable alv save button
Hi Friends,
I have an ALV report in which one of the Column is in editable mode.
i want to edit that column field with new value and press save .
Friends , i want to know what should i write to get things done.
regards,
RajeshHi Friends,
I have an ALV report in which one of the Column is in editable mode.
i want to edit that column field with new value and press save .
Friends , i want to know what should i write to get things done.
regards,
Rajesh -
Regarding SAP ABAP Online Training
Hi All,
I have around 2 years of Exp in SAP Business One as Technical Consultant.
i am planning for SAP ABAP online Training from NIIT Mumbai.
due to my budget constraint i m going for online training.
NIIT is Authorised SAP Education Partner.
Can u please guide me regarding Online training?
i would like to know whether it will be fruitfull or not?
How user friendly it is?
Is it tough to understand the online training?
is it right decision to go for online training for me?
waiting for ur valuable reply....
thanx in advance...
Regards,
Chetan .I would love to start with the development for business one. I have 3 years experience with the "big" SAP (ABAP and stuff) and would like to exchange the knowledge. If you would be interested, please drop me a line on my eml. I wanted to reach you through eml but it is not a public one. Looking forward to hear from you, Otto
-
Doubt regarding editable ALV report using Classes
I need to create an ALV report and make few fields editable
and i need to update the changes to the corresponding database tables
for that please suggest me some idea or provide me sample code for that
urgentHi ramesh,
Please check this example program. I think it will help for some extent.
[code]&----
*& Report ZSUMA_INTERACTIVEREPORT *
report zsuma_interactivereport.
tables: vbak.
data :gr_alvgrid type ref to cl_gui_alv_grid,
gr_cc_name type scrfname value 'CC_ALV',
gr_ccontainer type ref to cl_gui_custom_container,
gr_fieldcat type lvc_t_fcat,
gr_layout type lvc_s_layo,
gr_sort type lvc_t_sort,
gr_get_cell type lvc_t_cell,
gr_set_cell type lvc_t_cell,
gr_hyper type lvc_t_hype,
gr_drop_down type lvc_t_drop,
is_variant type disvariant,
line_number type lvc_s_roid-row_id,
line(5) type c ,
cell_value type lvc_value.
data: begin of it_vbak occurs 0,
vbeln type vbak-vbeln,
erdat like vbak-erdat,
erzet like vbak-erzet,
netwr like vbak-netwr,
waerk like vbak-waerk,
*Below field is useful for making the entire row with different colors.
it must be a char of 4.and layout-info_fname should populate with
*this field.
rowcolor(4) type c,
*Below field is useful for making the INDIVIDUAL CELL with different
*colors.for this we have to include structure of type lvc_t_scol.
*layout-ctab_fname should be populate with this field.
cellcolor type lvc_t_scol,
*below field is added for for providing the hyperlinks to perticular
*field. at the time of field catalog , it_fcatalog-web_field should be
*populate with this field.
vbeln_hyper type int4,
*For displaying one cell as button.we have to declare one styles
*internal table .it has to be populate.at layout structure this table
*name has to be populate at layout-stylename.
cellstyle type lvc_t_styl,
end of it_vbak.
*& SELECTION SCREEN
selection-screen begin of block b1 with frame title text-001.
select-options s_vbeln for vbak-vbeln.
selection-screen end of block b1.
start-of-selection.
select vbeln
erdat
erzet
netwr
waerk
from vbak
into corresponding fields of table it_vbak
where vbeln in s_vbeln.
data: wa_cellcolor type lvc_s_scol,
wa_style type lvc_s_styl.
loop at it_vbak.
FOR ROW COLORING
if sy-tabix = 1.
it_vbak-rowcolor = 'C511'.
FOR PUTTING THE HYPERLINKS ON VBELN FIELD
it_vbak-vbeln_hyper = '1'.
modify it_vbak.
endif.
FOR CELL COLORING
if sy-tabix = 2.
wa_cellcolor-fname = 'ERZET'.
wa_cellcolor-color-col = '6'.
wa_cellcolor-color-int = '1'.
wa_cellcolor-color-inv = '1'.
append wa_cellcolor to it_vbak-cellcolor.
modify it_vbak index 2.
endif.
FOR DISPLAYING THE CELL AS A BUTTON
clear it_vbak-cellstyle.
at last.
read table it_vbak index sy-tabix.
wa_style-fieldname = 'NETWR'.
wa_style-style = cl_gui_alv_grid=>mc_style_button.
append wa_style to it_vbak-cellstyle .
modify it_vbak .
endat.
endloop.
if not it_vbak[] is initial.
call screen 100.
endif.
*CLASS DEFINITION FOR HANDLING THE EVENTS IN ALV GRID
class gr_event_handler definition.
public section.
methods:handle_hotspot_click
for event hotspot_click of cl_gui_alv_grid
importing e_row_id e_column_id es_row_no.
endclass.
*CLASS IMPLEMENTATIONFOR HANDLING THE EVENTS IN ALV GRID
class gr_event_handler implementation.
method handle_hotspot_click.
perform handle_hotspot_click using e_row_id e_column_id es_row_no.
endmethod.
endclass.
*& Form BUILDING_FIELDCATALOG
text
<--P_GR_FIELDCAT text
form building_fieldcatalog changing p_gr_fieldcat type lvc_t_fcat.
data s_fieldcat type lvc_s_fcat.
s_fieldcat-fieldname = 'VBELN'.
s_fieldcat-outputlen = '15'.
s_fieldcat-col_pos = '1'.
s_fieldcat-coltext = 'DOCCUMENT NO.'.
s_fieldcat-key = ' '.
s_fieldcat-emphasize = 'C511'.
s_fieldcat-web_field = 'VBELN_HYPER'.
append s_fieldcat to p_gr_fieldcat .
clear s_fieldcat.
s_fieldcat-fieldname = 'ERDAT'.
s_fieldcat-outputlen = '15'.
s_fieldcat-col_pos = '2'.
s_fieldcat-coltext = 'REC CREATE DATE.'.
s_fieldcat-emphasize = 'C311'.
s_fieldcat-hotspot = 'X'.
append s_fieldcat to p_gr_fieldcat .
clear s_fieldcat.
s_fieldcat-fieldname = 'ERZET'.
s_fieldcat-outputlen = '15'.
s_fieldcat-col_pos = '3'.
s_fieldcat-coltext = 'TIME ENTRY.'.
*S_FIELDCAT-EMPHASIZE = 'C311'.
append s_fieldcat to p_gr_fieldcat .
clear s_fieldcat.
s_fieldcat-fieldname = 'NETWR'.
s_fieldcat-outputlen = '15'.
s_fieldcat-col_pos = '4'.
s_fieldcat-emphasize = 'C311'.
s_fieldcat-coltext = 'NET WEIGHT.'.
s_fieldcat-do_sum = 'X'.
append s_fieldcat to p_gr_fieldcat .
clear s_fieldcat.
s_fieldcat-fieldname = 'WAERK'.
s_fieldcat-outputlen = '5'.
s_fieldcat-col_pos = '5'.
s_fieldcat-emphasize = 'C511'.
s_fieldcat-coltext = 'CURR.'.
FOR PUTTING THE DROP DOWN BOX.
s_fieldcat-drdn_hndl = '1'.
s_fieldcat-edit = 'X'.
append s_fieldcat to p_gr_fieldcat .
clear s_fieldcat.
endform. " BUILDING_FIELDCATALOG
*& Form CREATE_CCONTAINER_INSTANCE
text
--> p1 text
<-- p2 text
form create_ccontainer_instance .
create object gr_ccontainer
exporting
container_name = gr_cc_name
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
others = 6
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
endform. " CREATE_CCONTAINER_INSTANCE
*& Form CREATE_ALVGRID_INSTANCE
text
--> p1 text
<-- p2 text
form create_alvgrid_instance .
create object gr_alvgrid
exporting
i_parent = gr_ccontainer
exceptions
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
others = 5
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
endform. " CREATE_ALVGRID_INSTANCE
*& Form DISPLAYING_ALVGRID
text
--> p1 text
<-- p2 text
form displaying_alvgrid .
call method gr_alvgrid->set_table_for_first_display
exporting
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
is_variant = is_variant
i_save = 'A'
I_DEFAULT = 'X'
is_layout = gr_layout
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
it_hyperlink = gr_hyper
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
changing
it_outtab = it_vbak[]
it_fieldcatalog = gr_fieldcat
it_sort = gr_sort
IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
others = 4
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
*CALL METHOD GR_ALVGRID->GET_FRONTEND_LAYOUT
IMPORTING
ES_LAYOUT = GR_LAYOUT
*GR_LAYOUT-GRID_TITLE = 'HAI ALV'.
*CALL METHOD GR_ALVGRID->SET_FRONTEND_LAYOUT
EXPORTING
IS_LAYOUT = GR_LAYOUT
endform. " DISPLAYING_ALVGRID
*& Form REFRESH_DISPLAY_TABLE
text
--> p1 text
<-- p2 text
form refresh_display_table .
call method gr_alvgrid->refresh_table_display
EXPORTING
IS_STABLE =
I_SOFT_REFRESH =
exceptions
finished = 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.
endform. " REFRESH_DISPLAY_TABLE
*& Form SETTING_LAYOUT
text
<--P_GR_LAYOUT text
form setting_layout changing p_gr_layout type lvc_s_layo.
p_gr_layout-grid_title = 'ALV GRID USING ABAP OBJECTS'.
p_gr_layout-zebra = 'X'.
p_gr_layout-no_toolbar = ''.
p_gr_layout-sel_mode = 'D'.
p_gr_layout-info_fname = 'ROWCOLOR'.
p_gr_layout-ctab_fname = 'CELLCOLOR'.
p_gr_layout-stylefname = 'CELLSTYLE'.
endform. " SETTING_LAYOUT
*& Module STATUS_0100 OUTPUT
text
module status_0100 output.
SET PF-STATUS 'xxxxxxxx'.
SET TITLEBAR 'xxx'.
set pf-status 'MENU'.
if gr_alvgrid is initial.
*CREATING THE CONTAINER INSTANCE BY SENDING THE CONTAINER NAME( IT HAS
*TO COINSIDE WITH COSTUM CONTROL NAME OF TRANSACTION SCREEN
perform create_ccontainer_instance.
perform create_alvgrid_instance.
*VARIANT POPULATION.
perform setting_variants changing is_variant.
*BELOW FORM IS USEFUL TO FILL THE HYPER LINK TABLE AND WE PASS THAT
*TABLE TO 'IT_HYPERLINK' PARAMETER IN FIRST DISPLAY METHOD.
perform setting_hyperlinks_field changing gr_hyper.
*TO MAKE THE COLOUMN AS DROP DOWN.
perform setting_dropdown_column changing gr_drop_down.
perform building_fieldcatalog changing gr_fieldcat.
perform setting_layout changing gr_layout.
perform setting_sorting changing gr_sort.
perform setting_cells changing gr_set_cell.
perform displaying_alvgrid.
*PERFORM GETTING_CELL_DETAILS CHANGING GR_GET_CELL. " IT IS NOT WORKING
FOR ME AND I HAVE DOUBT .
perform creating_event_object.
*PERFORM REFRESH_DISPLAY_TABLE.
endif.
endmodule. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
text
module user_command_0100 input.
case sy-ucomm.
when 'BACK'.
leave to screen 000.
endcase.
endmodule. " USER_COMMAND_0100 INPUT
*& Form SETTING_SORTING
text
<--P_GR_SORT text
form setting_sorting changing p_gr_sort type lvc_t_sort.
data: lr_sort type lvc_s_sort.
lr_sort-spos = '1'.
lr_sort-fieldname = 'VBELN'.
lr_sort-up = 'X'.
append lr_sort to p_gr_sort.
lr_sort-spos = '2'.
lr_sort-fieldname = 'ERDAT'.
lr_sort-up = 'X'.
append lr_sort to p_gr_sort.
endform. " SETTING_SORTING
*& Form GETTING_CELL_DETAILS
text
<--P_GR_GET_CELL text
form getting_cell_details changing p_gr_get_cell.
call method gr_alvgrid->get_selected_cells
importing
et_cell = p_gr_get_cell
*CELL_VALUE = P_GR_GET_CELL-VALUE.
endform. " GETTING_CELL_DETAILS
*& Form SETTING_CELLS
text
<--P_GR_SET_CELL text
form setting_cells changing p_gr_set_cell type lvc_t_cell.
data:s_gr_set_cell type lvc_s_cell.
s_gr_set_cell-col_id-fieldname = 'NETWR'.
s_gr_set_cell-row_id-index = '3'.
append s_gr_set_cell to p_gr_set_cell.
call method gr_alvgrid->set_selected_cells
exporting
it_cells = p_gr_set_cell.
endform. " SETTING_CELLS
*& Form SETTING_HYPERLINKS_FIELD
text
<--P_GR_HYPER text
form setting_hyperlinks_field changing p_gr_hyper type lvc_t_hype.
data: is_hype type lvc_s_hype.
is_hype-handle = '1'.
is_hype-href = 'HTTP://WWW.GOOGLE.CO.IN'.
append is_hype to p_gr_hyper.
is_hype-handle = '2'.
is_hype-href = 'HTTP://SDN.SAP.COM'.
append is_hype to p_gr_hyper.
endform. " SETTING_HYPERLINKS_FIELD
*& Form SETTING_DROPDOWN_COLUMN
text
<--P_GR_DROP_DOWN text
form setting_dropdown_column changing p_gr_drop_down type lvc_t_drop.
data: wa_drop type lvc_s_drop.
wa_drop-handle = '1'.
wa_drop-value = '$'.
append wa_drop to p_gr_drop_down.
wa_drop-handle = '1'.
wa_drop-value = 'Rs'.
append wa_drop to p_gr_drop_down.
wa_drop-handle = '1'.
wa_drop-value = 'CUR'.
append wa_drop to p_gr_drop_down.
call method gr_alvgrid->set_drop_down_table
exporting
it_drop_down = p_gr_drop_down
IT_DROP_DOWN_ALIAS =
endform. " SETTING_DROPDOWN_COLUMN
*& Form SETTING_VARIANTS
text
<--P_IS_VARIANT text
form setting_variants changing p_is_variant type disvariant.
p_is_variant-report = sy-repid.
endform. " SETTING_VARIANTS
*& Form HANDLE_HOTSPOT_CLICK
text
-->P_E_ROW text
-->P_E_COLUMN text
-->P_E_ROW_NO text
form handle_hotspot_click using p_e_row_id type lvc_s_row
p_e_column_id type lvc_s_col
p_es_row_no type lvc_s_roid.
read table it_vbak index p_es_row_no-row_id.
if sy-subrc = 0 and p_e_column_id-fieldname = 'ERDAT'.
line = p_es_row_no-row_id.
line_number = p_es_row_no-row_id.
leave to screen 200.
endif.
endform. " HANDLE_HOTSPOT_CLICK
*& Form CREATING_EVENT_OBJECT
text
--> p1 text
<-- p2 text
form creating_event_object .
data event_handle type ref to gr_event_handler.
create object event_handle.
set handler event_handle->handle_hotspot_click for gr_alvgrid.
endform. " CREATING_EVENT_OBJECT
*& Module STATUS_0200 OUTPUT
text
module status_0200 output.
set pf-status 'BB'.
SET TITLEBAR 'xxx'.
*LINE = LINE_NUMBER.
endmodule. " STATUS_0200 OUTPUT
*& Module USER_COMMAND_0200 INPUT
text
module user_command_0200 input.
if sy-ucomm = 'BACK'.
leave to screen 100.
endif.
endmodule. " USER_COMMAND_0200 INPUT[/code]
Reward points if helpful
Thanks,
Suma. -
Regarding editable ALV in OOPS
Hi,
I have an editable alv.
I have requirement like i need to validate the data which is edited on pressing "ENTER" or "SAVE"
for this iam using the event DATA_CHANGED
and define a local class lcl_event handler and also set handler for it.
But iam able to validate using this event only if the data is changed inspite of SAVE or ENTER its getting triggered.
But if the data is not changed its not triggering please suggest me an event which triggers on clicking SAVE in menu bar.
Thanks,
Phani.Hello
If the event is not triggered but you need to do the validation then just call the event handler method yourself:
" PAI: USER_COMMAND module
CASE gd_okcode.
WHEN 'SAVE'.
" Now call your event handler method directly
go_grid->handle_data_changed( )
EXPORTING
WHEN OTHERS.
ENDCASE.
Within your event handler method you can easily distinguish between whether the method is triggered by the control framework or by your direct call:
METHOD handle_data_changed.
" instance exists -> triggered by framework
IF ( er_data_changed IS BOUND ).
" direct call
ELSE.
ENDIF.
ENDMETHOD.
Regards
Uwe -
Hi all,
I am using lvc_t_scol to color a cell of ALV List. In this, i used as below,
IF wa_admi_files-status_fil EQ '3'.
MOVE 'STATUS_FIL' TO wa_color-fname.
MOVE '6' TO wa_color-color-col.
MOVE '1' TO wa_color-color-int.
MOVE '0' TO wa_color-color-inv.
APPEND wa_color TO t_color.
wa_joblog-color_cell[] = t_color[].
ENDIF.
i am passing different color codes to wa_color-color-col. But color is not changing.
It is always displaying Green color.
Please suggest how to resolve this.
Regards,
Neham sending u a repost.
copy it paste.
execute.
read n understand each n every line of it.
tables mara.
type-POOLS: slis.
DATA M TYPE I.
data: begin of itab occurs 0,
matnr like mara-matnr,
maTKL like mara-maTKl,
tcolor type slis_t_specialcol_alv, "cell
end of itab.
data: layout type slis_layout_alv,
fcat type slis_fieldcat_alv,
bcat type slis_t_fieldcat_alv.
data:xcolor type slis_specialcol_alv.
SELECTION-SCREEN: begin of block abc.
SElect-OPTIONS: matnr for mara-matnr.
SELECtion-SCREEN: END OF block abc.
INITIALIZATION.
matnr-low = '7'.
matnr-high = '200'.
append matnr.
START-OF-SELECTION.
select * from mara into CORRESPONDING FIELDS OF table itab where matnr IN MATNR.
if sy-subrc = '0'.
loop at itab.
M = SY-TABIX MOD 2.
if m = 1. "color CELL
clear xcolor.
xcolor-fieldname = 'MATKL'.
xcolor-color-col = '3'.
xcolor-color-int = '1'. "Intensified on/off
xcolor-color-inv = '0'.
append xcolor to itab-tcolor.
endif.
if m = 0. "color CELL
clear xcolor.
xcolor-fieldname = 'MATKL'.
xcolor-color-col = '4'.
xcolor-color-int = '1'. "Intensified on/off
xcolor-color-inv = '0'.
append xcolor to itab-tcolor.
endif.
modify itab.
endloop.
layout-coltab_fieldname = 'TCOLOR'.
fcat-COL_POS = '1'.
fcat-fieldname = 'MATNR'.
fcat-seltext_l = 'MATERIAL NO'.
fcat-OUTPUTLEN = '30'.
APPEND fcat to bcat.
clear fcat.
FCAT-COL_POS = '2'.
FCAT-fieldname = 'MATKL'.
fcat-seltext_l = 'MATKL'.
append fcat to bcat.
clear fcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = sy-repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMM'
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT = LAYOUT
IT_FIELDCAT = BCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = bdy_events
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = ITAB
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. -
Why has BC stopped sending us email alerts regarding workflow or online form submissions?
It appears our site has stopped alerting us via email regarding online form submissions...what's going on with this? www.smilegalaxykids.com
BrentIt appears the "orders" box is checked as it should be....and I know we haven changed anything recently on our end. (see screen shot attached)
Maybe you are looking for
-
Preinstaller failing at install Application Server Role, Web Server (IIS) Role
Hi, I am trying to install SharePoint 2013 on Windows 2008 R2. I have database MS SQL Server 2012 on the same machine itself. My SharePoint Preinstaller fails at installing Application server and Web server roles.. Even though the roles get created
-
Using a Template on a Different Folder
Hi! I have a website which home page is in \folder1\subf1. It uses a template located on \folder1\subf1\templates. This template has several links referring to files located on \folder1\subf1, and images located on \folder1\subf1\images. I am modifyi
-
How To Cycle a Battery? 12% Health!!!
How do i cycle it? My health is Down to 12% and its only 18 months old. So any help will do! b and cycle count is 64 if that means anything????? Message was edited by: bradley Glaberson
-
IPhoto on an iPad Air: Save As?
I opened an image from my iPad Air camera roll in my iPhoto App. Is there a way from inside my iPhoto App to save a duplicate to the camera roll or iPad Air? I get confused in iPhoto when I crop an image, how do I keep the original and work on a dupl
-
Ouvrir Fichiers RAW X30 Fuji avec Lightroom
Je viens de me procurer le X30 de fuji et il m'est impossible d'ouvrir les fichiers RAW avec la dernière version de Lightroom... Quand pourrais-je les ouvrir?