ALV Report Editable field
Hi Expart ,
Ex: In ALV O/P having check box field have 10 row . I want editable perticular row in o/p list . how can i create .
Please tell me or give me one Example .
Regards
Bhabani
Hi Sankardey,
You can make use of method MC_STYLE_ENABLED of class CL_GUI_ALV_GRID to achieve this.
Please refer below code snippet for your reference :-
FIELD-SYMBOLS : <fs_fieldcat> TYPE lvc_s_fcat.
LOOP AT i_fieldcat ASSIGNING <fs_fieldcat>.
CASE <fs_fieldcat>-fieldname.
WHEN 'ERNAM'.
* Making a column as Editable
<fs_fieldcat>-edit = 'X'.
ENDCASE.
ENDLOOP.
* Making a particular cell as non-editable and other editable
CLEAR w_style.
w_style-fieldname = 'ERNAM'.
w_style-style = cl_gui_alv_grid=>mc_style_enabled.
REFRESH wa-cellstyles.
APPEND w_style TO wa-cellstyles.
MODIFY itab FROM wa INDEX 3 TRANSPORTING cellstyles.
Kindly set to resolved if it helps you.
Regards
Abhii
Similar Messages
-
How to make the field in the output ALV report editable ?
Hi,
I have a requirement to make fields like MATNR,WERKS in the output ALV report editable . Could any of you help me with this ?.
Thank you.
Moderator Message: Search.
Edited by: kishan P on Sep 6, 2010 6:35 PMHi
Please for available information on SCN. There are a lot of information on SCN about ALV wit hEDIT functionality.
Regards
Abhii -
Create a ALV report with fields editable and entry to be saved in ztable
Hello Experts,
I have created the ALV report which has two of the fields editable. Now whenever user puts an entry in the ALV it has to be saved in the ZTABLE.
The report is displayed with editable fields but i'm not sure what has to be written in the 'USER COMMAND' subroutine to save the entries in ztable.
Please see my code belwo:-
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'ALV_USER_COMM'
i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_special_groups = gd_tabgroup
it_events = gt_events
is_print = gd_prntparams
i_save = 'X'
is_variant = z_template
TABLES
t_outtab = it_bg2
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
Thanks,
Naveen
Edited by: jaikrishna on Sep 4, 2010 8:13 AMHi,
I have worked on similar requirement. You can do that on sy-ucomm value only and you have to call a FM and a method. For that end user has to click on a button which you need to create in the application toolbar. Say that button function code is 'SAVE'. Write the following code in your user command :
*& Form USER_COMMAND
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
*Code to reflect the changes done in the internal table
DATA : REF_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: L_VALID TYPE C.
IF REF_GRID IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF_GRID.
ENDIF.
IF NOT REF_GRID IS INITIAL.
CALL METHOD REF_GRID->CHECK_CHANGED_DATA
IMPORTING
E_VALID = L_VALID.
ENDIF.
CASE SY-UCOMM.
WHEN 'SAVE'.
*Data will come with the edited values from ALV
*Here you write your code to save entries into Z table
ENDCASE.
ENDFORM. "USER_COMMAND
Thanks & Regards,
Rock. -
Hi,
This is BalaNarasimman. i am making one field as editable field in alv report.
The requirement is that field should have input with decimal also. Eg. 2.2.
So i am declaring data type as, data:per type P DECIMALS 1.
if i am giving input as '2', then system is converting as '0.2'.
if i want to get '2.2',then i need to give '22'. so How can i avoid such kind of situation?
Please give suggestion to me.hi,
check this
*& Report ZDEMO_ALVGRID_EDIT *
*& Example of a simple ALV Grid Report *
*& The basic ALV grid, Enhanced to display specific fields as *
*& editable depending on field value *
REPORT ZDEMO_ALVGRID_EDIT .
TABLES: ekko.
TYPE-POOLS: slis. "ALV Declarations
*Data Declaration
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
field_style TYPE lvc_t_styl, "FOR DISABLE
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA: it_fieldcat TYPE lvc_t_fcat, "slis_t_fieldcat_alv WITH HEADER LINE,
wa_fieldcat TYPE lvc_s_fcat,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE lvc_s_layo, "slis_layout_alv,
gd_repid LIKE sy-repid.
*Start-of-selection.
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM set_specific_field_attributes.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_alv_report.
*& Form BUILD_FIELDCATALOG
Build Fieldcatalog for ALV Report
FORM build_fieldcatalog.
wa_fieldcat-fieldname = 'EBELN'.
wa_fieldcat-scrtext_m = 'Purchase Order'.
wa_fieldcat-col_pos = 0.
wa_fieldcat-outputlen = 10.
wa_fieldcat-emphasize = 'X'.
wa_fieldcat-key = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'EBELP'.
wa_fieldcat-scrtext_m = 'PO Item'.
wa_fieldcat-col_pos = 1.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'STATU'.
wa_fieldcat-scrtext_m = 'Status'.
wa_fieldcat-col_pos = 2.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'AEDAT'.
wa_fieldcat-scrtext_m = 'Item change date'.
wa_fieldcat-col_pos = 3.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-scrtext_m = 'Material Number'.
wa_fieldcat-col_pos = 4.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MENGE'.
wa_fieldcat-scrtext_m = 'PO quantity'.
wa_fieldcat-col_pos = 5.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MEINS'.
wa_fieldcat-scrtext_m = 'Order Unit'.
wa_fieldcat-col_pos = 6.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'NETPR'.
wa_fieldcat-scrtext_m = 'Net Price'.
wa_fieldcat-edit = 'X'. "sets whole column to be editable
wa_fieldcat-col_pos = 7.
wa_fieldcat-outputlen = 15.
wa_fieldcat-datatype = 'CURR'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'PEINH'.
wa_fieldcat-scrtext_m = 'Price Unit'.
wa_fieldcat-col_pos = 8.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " BUILD_FIELDCATALOG
*& Form BUILD_LAYOUT
Build layout for ALV grid report
FORM build_layout.
Set layout field for field attributes(i.e. input/output)
gd_layout-stylefname = 'FIELD_STYLE'.
gd_layout-zebra = 'X'.
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'
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = gd_repid
i_callback_user_command = 'USER_COMMAND'
is_layout_lvc = gd_layout
it_fieldcat_lvc = it_fieldcat
i_save = 'X'
TABLES
t_outtab = it_ekko
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 ebeln ebelp statu aedat matnr menge meins netpr peinh
UP TO 10 ROWS
FROM ekpo
INTO CORRESPONDING FIELDS OF TABLE it_ekko.
ENDFORM. " DATA_RETRIEVAL
*& Form set_specific_field_attributes
populate FIELD_STYLE table with specific field attributes
form set_specific_field_attributes .
DATA ls_stylerow TYPE lvc_s_styl .
DATA lt_styletab TYPE lvc_t_styl .
Populate style variable (FIELD_STYLE) with style properties
The NETPR field/column has been set to editable in the fieldcatalog...
The following code sets it to be disabled(display only) if 'NETPR'
is gt than 10.
LOOP AT it_ekko INTO wa_ekko.
IF wa_ekko-netpr GT 1000.
ls_stylerow-fieldname = 'NETPR' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
"set field to disabled
APPEND ls_stylerow TO wa_ekko-field_style.
MODIFY it_ekko FROM wa_ekko.
ENDIF.
ENDLOOP.
endform. " set_specific_field_attributes
regards,
Prabhu
Reward if it is helpful -
Re: Problem in ALV reports using Field symbols
Hi Friends,
Can you tell me how to convert a normal report using field symbols into ALV report
can ypu please suggest me any solutions.I am sending the code along with this mail.
Regards,
Dinesh
<b>Coding:</b>
*& Report YSDBTEMP *
REPORT YSDBTEMP .
tables: ekko , ekpo .
TYPE-POOLS: SLIS.
*Internal Table Declaration
data: begin of line ,
ebeln like ekko-ebeln , "Purchasing Document No.
bedat like ekko-bedat , "Purchasing Document Date
matnr like ekpo-matnr , "Material No.
netwr like ekpo-netwr , "Net Order Value in PO Currancy
meins like ekpo-meins , "UOM
change like ekpo-menge ,
end of line .
*Internal table Declaration
DATA: IT_final like table of line with header line.
DATA : FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV with header line.
DATA : V_REPID TYPE SYREPID.
DATA : IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
data : i_layout type slis_layout_alv .
Header for Main Grid Display
data:i_header1 type slis_t_listheader with header line.
Header for Interactive Report Display
data:i_header2 type slis_t_listheader with header line.
*Field Symbol declaration.
FIELD-SYMBOLS: <FS> type any table.
**select option Declaration
selection-screen begin of block block.
select-options: s_ebeln for ekko-ebeln .
selection-screen end of block block .
start-of-selection.
perform get_data.
perform field_cat.
perform layout using i_layout .
perform grid_display .
*& Form get_data
text
--> p1 text
<-- p2 text
FORM get_data .
SELECT EKKO~EBELN
EKKO~BEDAT
EKPO~EBELP
EKPO~MATNR
EKPO~NETWR
EKPO~MEINS
EKPO~MENGE
EKPO~BPRME
INTO CORRESPONDING FIELDS OF table IT_FINAL
FROM EKKO INNER JOIN EKPO ON EKKOEBELN = EKPOEBELN
WHERE EKKO~EBELN IN S_EBELN.
ENDFORM. " get_data
*& Form field_cat
text
--> p1 text
<-- p2 text
FORM field_cat .
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order No'.
fieldcatalog-col_pos = 1.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'BEDAT'.
fieldcatalog-seltext_m = 'Purchasing Document Date'.
fieldcatalog-col_pos = 2.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material No'.
fieldcatalog-col_pos = 3.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Net order'.
fieldcatalog-col_pos = 4.
append fieldcatalog .
clear fieldcatalog.
ENDFORM. " field_cat
*& Form layout
text
-->P_I_LAYOUT text
FORM layout USING P_I_LAYOUT.
i_layout-lights_tabname = 'IT_FINAL'.
i_layout-box_tabname = 'IT_FINAL'.
ENDFORM. " layout
*& Form grid_display
text
--> p1 text
<-- p2 text
FORM grid_display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PO_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = I_LAYOUT
IT_FIELDCAT = FIELDCATALOG[]
*IT_EVENTS = I_EVENT[]
TABLES
t_outtab = <fs>.
endform.Hi,
This is one sample program,
Check this.
I hope it is helpful to you.
TABLES : zeastable_02,zeastable_04.
TYPE-POOLS : slis.
TYPES : BEGIN OF fieldst,
name LIKE zeastable_02-name,
znum LIKE zeastable_02-znum,
empno LIKE zeastable_04-empno,
zempsalary LIKE zeastable_04-zempsalary,
END OF fieldst.
DATA itab TYPE TABLE OF fieldst WITH HEADER LINE.
DATA: w_report_id LIKE sy-repid. "Program name
DATA: w_title TYPE lvc_title VALUE 'Assignment 1 in ALV'.
DATA: w_layout TYPE slis_layout_alv. "Layout setup
DATA: w_fieldcat TYPE slis_t_fieldcat_alv. "Field Catlog
START-OF-SELECTION.
SELECT-OPTIONS employee FOR zeastable_04-empno.
SELECT zeastable_02name zeastable_02znum
zeastable_04empno zeastable_04zempsalary
INTO CORRESPONDING FIELDS OF TABLE itab FROM
zeastable_02 INNER JOIN zeastable_04 ON
zeastable_02name = zeastable_04name
WHERE zeastable_04~empno IN employee.
w_report_id = sy-repid.
PERFORM i_layout CHANGING w_layout.
PERFORM i_fieldcat CHANGING w_fieldcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'ZEASALV_04'
i_grid_title = w_title
is_layout = w_layout
it_fieldcat = w_fieldcat
i_save = 'A'
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.
PERFORM i_layout CHANGING w_layout.
PERFORM i_fieldcat CHANGING w_fieldcat.
*& Form i_layout
text
<--P_W_LAYOUT text
form i_layout changing p_w_layout.
clear w_layout.
w_layout-colwidth_optimize = 'X'.
w_layout-edit = ' '.
endform. " i_layout
*& Form i_fieldcat
text
<--P_W_FEILDCAT text
form i_fieldcat changing p_w_feildcat.
data: l_line_fieldcat type slis_fieldcat_alv.
clear l_line_fieldcat.
l_line_fieldcat-fieldname = 'NAME'.
l_line_fieldcat-ref_tabname = 'itab'.
l_line_fieldcat-seltext_m = 'NAME'.
l_line_fieldcat-key = 'X'.
append l_line_fieldcat to w_fieldcat.
clear l_line_fieldcat.
l_line_fieldcat-fieldname = 'ZNUM'.
l_line_fieldcat-ref_tabname = 'itab'.
l_line_fieldcat-seltext_m = 'NUMBER'.
l_line_fieldcat-key = 'X'.
append l_line_fieldcat to w_fieldcat.
clear l_line_fieldcat.
l_line_fieldcat-fieldname = 'EMPNO'.
l_line_fieldcat-ref_tabname = 'itab'.
l_line_fieldcat-seltext_m = 'EMPLNUM'.
*l_line_fieldcat-key = 'X'.
append l_line_fieldcat to w_fieldcat.
clear l_line_fieldcat.
l_line_fieldcat-fieldname = 'ZEMPSALARY'.
l_line_fieldcat-ref_tabname = 'itab'.
l_line_fieldcat-seltext_m = 'SALARY'.
*l_line_fieldcat-key = 'X'.
append l_line_fieldcat to w_fieldcat.
endform. " i_fieldcat
Reward for useful answers. -
ALV Report dynamically fields i want to display
Hi experts,
how to declare dynamical fields in ALV reports not in oops.can i use fieldcat merge function mod for this requirement.pls write the code if possible.Hi,
how to declare dynamical fields in ALV reports not in oops. ? I didnt understand what exactly you mean ? Do you want to build an internal table which is of dynamic in nature ?
can i use fieldcat merge function mod for this requirement. No
pls write the code if possible. No one writes the code here. Paste your code here !! If there any mistakes, any one of the SDNer will let you know !!
If you want the internal table to be dynamically created, check the following link:
Re: Dynamic Table with Validation
Regards
Kannaiah -
In ALV Report ,a field to allow the user EDIT/CHANGE
Hi Guys,
My requirement is
in the ALV Grid display iam having 10 fields.5th field should be allow the user EDIT/CHANGE mode.
what ever he enters the value the same should be updated to an custom table.
EX.
o/p:
0001 0002 0003 0004 0005 0006 0007 0008 0009 0010
Now the user changed the value 0005 to 0011.
0001 0002 0003 0004 0011 0006 0007 0008 0009 0010
now 0011 should be updated in custom table.
to do this process please suggest a best way for coding.
thanks in advance.
Sunil.hi
*& Report ZTESTDEMO_INTERACTIVE_LIST_2
REPORT ZTESTDEMO_INTERACTIVE_LIST_2.
TABLES: MARA,MARC,MARD.
* internal table itab_mara 3 fields matnr, ernam,mtart
DATA: BEGIN OF ITAB_MARA OCCURS 0,
MATNR LIKE MARA-MATNR, " material number
ERNAM LIKE MARA-ERNAM, " name of person who create
MTART LIKE MARA-MTART, " Material Type
END OF ITAB_MARA.
* internal table itab_marc 3 fields matnr, werks,lvorm
DATA: BEGIN OF ITAB_MARC OCCURS 0,
MATNR LIKE MARC-MATNR,
WERKS LIKE MARC-WERKS, " Plant
LVORM LIKE MARC-LVORM, " Flag Material for Deletion at Plant Level
END OF ITAB_MARC.
* internal table itab_mard 2 fields
DATA: BEGIN OF ITAB_MARD OCCURS 0,
MATNR LIKE MARD-MATNR,
LGORT LIKE MARD-LGORT, " Storage Location
END OF ITAB_MARD.
SELECT-OPTIONS: S_MTART FOR MARA-MTART.
INITIALIZATION.
S_MTART-LOW = 'HALB'.
S_MTART-HIGH = 'HAWA'.
S_MTART-OPTION = 'BT'.
APPEND S_MTART.
START-OF-SELECTION.
SELECT MATNR ERNAM MTART FROM MARA INTO TABLE ITAB_MARA WHERE MTART IN
S_MTART.
PERFORM DISPLAY.
TOP-OF-PAGE.
WRITE:/2(15) 'MATERIAL NO',20(20) 'CREATED BY',45(15) 'MATERIAL TYPE'.
FORM DISPLAY.
LOOP AT ITAB_MARA.
WRITE:/ ITAB_MARA-MATNR UNDER 'MATERIAL NO' HOTSPOT ON,ITAB_MARA-ERNAM
UNDER 'CREATED BY',ITAB_MARA-MTART UNDER 'MATERIAL TYPE'.
HIDE: ITAB_MARA-MATNR.
ENDLOOP.
ENDFORM.
AT LINE-SELECTION.
CASE SY-LSIND.
WHEN 1.
SELECT MATNR WERKS LVORM FROM MARC INTO TABLE ITAB_MARC WHERE MATNR =
ITAB_MARA-MATNR.
PERFORM DISPLAY1.
WHEN 2.
SELECT MATNR LGORT FROM MARD INTO TABLE ITAB_MARD WHERE MATNR =
ITAB_MARC-MATNR.
PERFORM DISPLAY2.
when 3.
sy-lsind = 0.
ENDCASE.
FORM DISPLAY1.
LOOP AT ITAB_MARC.
WRITE:/ ITAB_MARC-MATNR HOTSPOT ON, ITAB_MARC-WERKS,ITAB_MARC-LVORM.
HIDE: ITAB_MARC-MATNR.
ENDLOOP.
WRITE:/ SY-LSIND.
ENDFORM.
FORM DISPLAY2.
LOOP AT ITAB_MARD.
WRITE:/ ITAB_MARD-MATNR, ITAB_MARD-LGORT.
ENDLOOP.
WRITE:/ SY-LSIND.
ENDFORM.
regards
ravish
<b>plz dont forget to reward points if helpful</b> -
ALV report editable to enter text and print with including the text?
Hi all,
I have to display output of a report in ALV format and i have to make two fileds can be editable to enter texts by user and able to print the list with that texts .
Is it possible using standard Function modules or I have to go for OO methods? Please give the sample code ?
Thanks,
Vamshi
Edited by: VAMSHI KRISHNA on Oct 31, 2008 4:25 PMHi Vamshi,
Check out the Below sample code for the editable ALV.
*& Report Z7CC_OOPS_ALV_EDITABLE
report z7cc_oops_alv_editable.
tables sflight.
data: begin of gt_outtab occurs 0. "with header line
include structure sflight.
data: celltab type lvc_t_styl.
data: end of gt_outtab.
data: gt_fieldcat type lvc_t_fcat.
data: g_carrid like sflight-carrid,
g_connid like sflight-connid.
data: gs_spfli type spfli. "#EC NEEDED
data: g_custom_container type ref to cl_gui_custom_container.
data: g_container type scrfname value 'BCALV_GRID_DEMO_0100_CONT1'.
data: g_grid type ref to cl_gui_alv_grid.
data: wa_outtab like gt_outtab.
* CLASS lcl_event_receiver DEFINITION
class lcl_event_receiver definition.
public section.
types: begin of sflight_key.
types: carrid type s_carr_id.
types: connid type s_conn_id.
types: fldate type s_date.
types: end of sflight_key.
types: sflight_keys type standard table of sflight_key,
sflight_table type standard table of sflight.
methods:
handle_data_changed
for event data_changed of cl_gui_alv_grid
importing er_data_changed.
methods:
get_inserted_rows
exporting
inserted_rows type sflight_keys.
methods:
get_deleted_rows
exporting
deleted_rows type sflight_table.
methods:
refresh_delta_tables.
methods: set_table_is_initial.
methods: set_table_is_not_initial.
methods: table_is_initial
returning value(initial) type char01.
private section.
* §4.Define internal tables to remember inserted and deleted lines,
* thus the delta between input made after the last saving.
data: inserted_rows type sflight_keys,
deleted_rows type standard table of sflight.
* This flag is set if any error occured in one of the
* following methods:
data: error_in_data type c.
* This flag signals that no records were read for the flight
* table initially:
data: initial_table type c.
** Methods to modularize event handler method HANDLE_DATA_CHANGED:
methods:
check_double_entries
importing
pr_data_changed type ref to cl_alv_changed_data_protocol.
methods:
update_delta_tables
importing
pr_data_changed type ref to cl_alv_changed_data_protocol.
methods:
perform_semantic_checks
importing
pr_data_changed type ref to cl_alv_changed_data_protocol.
methods:
get_cell_values
importing
row_id type int4
pr_data_changed type ref to cl_alv_changed_data_protocol
exporting
key type sflight_key.
endclass. "lcl_event_receiver DEFINITION
class lcl_event_receiver implementation.
method handle_data_changed.
* data: ls_good type lvc_s_modi,
* l_price type s_price,
* ls_new type lvc_s_moce.
* error_in_data = space.
** check if there exist double entries
* call method check_double_entries( er_data_changed ).
** remember new or deleted lines for saving
* call method update_delta_tables( er_data_changed ).
** check mt_good_cells semantically
* call method perform_semantic_checks( er_data_changed ).
* if error_in_data = 'X'.
* call method er_data_changed->display_protocol.
* endif.
endmethod. "handle_data_changed
method check_double_entries.
data: lt_good_cells type lvc_t_modi,
ls_good type lvc_s_modi,
ls_key type sflight_key,
ls_sflight type sflight,
l_flightdate like gt_outtab-fldate,
l_del_row type lvc_s_moce,
ls_outtab like line of gt_outtab,
l_reentered type c.
* §5.Check if there exist already other records with equal key fields.
* Check if the user has entered two new lines where the key fields
* are equal.
* Since CARRID and CONNID are read only, the check is restrained
* to field FLDATE.
* Algorithm: Copy all entries in MT_GOOD_CELLS to a dummy table.
* During the copying procedure check if there exists
* already a line with the same Flight date.
* loop at pr_data_changed->mt_good_cells into ls_good.
* case ls_good-fieldname.
* when 'FLDATE'.
* call method pr_data_changed->get_cell_value
* exporting
* i_row_id = ls_good-row_id
* i_fieldname = ls_good-fieldname
* importing e_value = l_flightdate.
* read table lt_good_cells with key
* value = l_flightdate
* transporting no fields.
* if sy-subrc = 0.
** There exists already a line with the same flight date!
* call method pr_data_changed->add_protocol_entry
* exporting
* i_msgid = '0K' i_msgno = '000' i_msgty = 'E'
* i_msgv1 = text-m01
* i_fieldname = ls_good-fieldname
* i_row_id = ls_good-row_id.
* error_in_data = 'X'.
* else.
* ls_good-value = l_flightdate.
* append ls_good to lt_good_cells.
* endif.
* endcase.
* endloop.
** Check if any new entries already exist in gt_outtab.
** At this point, lt_good_cells contains only lines with
** FIELDNAME = 'FLDATE'.
* loop at lt_good_cells into ls_good.
* l_flightdate = ls_good-value. "flightdate, see above
* read table gt_outtab with key
* carrid = g_carrid
* connid = g_connid
* fldate = l_flightdate
* transporting no fields.
* if sy-subrc = 0.
** Check if this entry was deleted before, i.e. it is in the table
** of deleted rows. If so, the entry does not exist twice. The user
** has deleted a line and then reentered it.
* l_reentered = space.
* loop at pr_data_changed->mt_deleted_rows into l_del_row.
* read table gt_outtab into ls_outtab index l_del_row-row_id.
* if sy-subrc ne 0.
* message i000(0k) with text-e01."Fehler beim Löschen
* elseif
* ls_outtab-carrid eq g_carrid
* and ls_outtab-connid eq g_connid
* and ls_outtab-fldate eq ls_good-value.
* l_reentered = 'X'.
* endif.
* endloop.
* if l_reentered ne 'X'.
* call method pr_data_changed->add_protocol_entry
* exporting
* i_msgid = '0K' i_msgno = '000' i_msgty = 'E'
* i_msgv1 = text-m01
* i_fieldname = ls_good-fieldname
* i_row_id = ls_good-row_id.
* error_in_data = 'X'.
* endif.
* endif.
* endloop.
** In this demo report you may prevent the selection
** of data by setting parameter 'p_ds'.
** If this is done, the next check is required:
* if me->table_is_initial( ) eq 'X'.
* call method get_cell_values
* exporting row_id = 1
* pr_data_changed = pr_data_changed
* importing key = ls_key.
* select single * from sflight into ls_sflight
* where carrid = ls_key-carrid
* and connid = ls_key-connid
* and fldate = ls_key-fldate.
* if sy-subrc = 0.
* call method pr_data_changed->add_protocol_entry
* exporting
* i_msgid = '0K' i_msgno = '000' i_msgty = 'E'
* i_msgv1 = text-m01
* i_fieldname = 'FLDATE'
* i_row_id = 1.
* error_in_data = 'X'.
* endif.
** flag initial_table is reset in method 'update_delta_tables'
* endif.
endmethod. "check_double_entries
method update_delta_tables.
* data: l_ins_row type lvc_s_moce,
* l_del_row type lvc_s_moce,
* ls_key type sflight_key,
* ls_sflight type sflight,
* ls_outtab like line of gt_outtab.
** §6.Use protocol attributes MT_DELETED_ROWS and MT_INSERTED_ROWS
** to remember which lines where deleted or inserted. Save this
** information in your internal tables.
** deleted rows
* loop at pr_data_changed->mt_deleted_rows into l_del_row.
* read table gt_outtab into ls_outtab index l_del_row-row_id.
* if sy-subrc ne 0.
* message i000(0k) with text-e01."Fehler beim Löschen
* else.
* move-corresponding ls_outtab to ls_sflight.
** It should no be possible that the same line is deleted twice,
** so we just add the new key line to 'deleted_rows'.
* append ls_sflight to deleted_rows.
** If this line was inserted just before it is deleted:
* delete me->inserted_rows
* where carrid = ls_outtab-carrid
* and connid = ls_outtab-connid
* and fldate = ls_outtab-fldate.
* endif.
* endloop.
** inserted rows
** At this point ALV has not added new lines
** to gt_outtab, so you can not access their values
** by reading gt_outtab.
** Table MT_GOOD_CELLS holds new values that can be
** referenced using the ROW_ID.
* if me->table_is_initial( ) eq 'X'.
** No flights were selected initially. This is the first new line.
* call method get_cell_values
* exporting row_id = 1
* pr_data_changed = pr_data_changed
* importing key = ls_key.
* append ls_key to inserted_rows.
* call method me->set_table_is_not_initial.
* endif.
* loop at pr_data_changed->mt_inserted_rows into l_ins_row.
* call method get_cell_values
* exporting row_id = l_ins_row-row_id
* pr_data_changed = pr_data_changed
* importing key = ls_key.
** READ TABLE gt_outtab INTO ls_outtab INDEX l_ins_row-row_id.
** Just insert the new row regardless if the input is wrong
* append ls_key to inserted_rows.
* endloop.
endmethod. "update_delta_tables
method get_cell_values.
* get values of key cells of row ROW_ID
** CARRIER
* call method pr_data_changed->get_cell_value
* exporting
* i_row_id = row_id
* i_fieldname = 'CARRID'
* importing
* e_value = key-carrid.
* if sy-subrc ne 0.
* message i000(0k) with text-e02. "Fehler beim Einfügen
* endif.
** CONNID
* call method pr_data_changed->get_cell_value
* exporting
* i_row_id = row_id
* i_fieldname = 'CONNID'
* importing
* e_value = key-connid.
* if sy-subrc ne 0.
* message i000(0k) with text-e02. "Fehler beim Einfügen
* endif.
** FLDATE
* call method pr_data_changed->get_cell_value
* exporting
* i_row_id = row_id
* i_fieldname = 'FLDATE'
* importing
* e_value = key-fldate.
* if sy-subrc ne 0.
* message i000(0k) with text-e02. "Fehler beim Einfügen
* endif.
endmethod. "get_cell_values
method perform_semantic_checks.
* data: ls_good type lvc_s_modi,
* l_planetype type s_planetye,
* l_seatsmax type s_seatsmax.
* loop at pr_data_changed->mt_good_cells into ls_good.
* case ls_good-fieldname.
* when 'PLANETYPE'.
* call method pr_data_changed->get_cell_value
* exporting
* i_row_id = ls_good-row_id
* i_fieldname = ls_good-fieldname
* importing
* e_value = l_planetype.
* select single seatsmax from saplane into l_seatsmax
* where planetype = l_planetype.
* if sy-subrc ne 0.
* call method pr_data_changed->add_protocol_entry
* exporting
* i_msgid = '0K' i_msgno = '000' i_msgty = 'E'
* i_msgv1 = text-m02
* i_fieldname = ls_good-fieldname
* i_row_id = ls_good-row_id.
* error_in_data = 'X'.
* else.
* call method pr_data_changed->modify_cell
* exporting i_row_id = ls_good-row_id
* i_fieldname = 'SEATSMAX'
* i_value = l_seatsmax.
* endif.
* endcase.
* endloop.
endmethod. "perform_semantic_checks
method get_inserted_rows.
* inserted_rows = me->inserted_rows.
endmethod. "get_inserted_rows
method get_deleted_rows.
* deleted_rows = me->deleted_rows.
endmethod. "get_deleted_rows
method refresh_delta_tables.
* clear me->inserted_rows[].
* clear me->deleted_rows[].
endmethod. "refresh_delta_tables
method set_table_is_initial.
* initial_table = 'X'.
endmethod. "set_table_is_initial
method set_table_is_not_initial.
* initial_table = space.
endmethod. "set_table_is_not_initial
method table_is_initial.
* if initial_table = 'X'.
* initial = 'X'.
* else.
* initial = space.
* endif.
endmethod. "table_is_initial
endclass. "lcl_event_receiver IMPLEMENTATION
data: g_verifier type ref to lcl_event_receiver.
data: g_max type i value 100.
data: gs_layout type lvc_s_layo.
data: ok_code like sy-ucomm,
save_ok like sy-ucomm.
parameters: p_ds type c as checkbox. "delete selection
select-options s_carrid for sflight-carrid
no intervals no-extension default 'LH'.
select-options s_connid for sflight-connid
no intervals no-extension default '0400'.
start-of-selection.
g_carrid = s_carrid-low.
g_connid = s_connid-low.
* first check airline and connection
select single * from spfli into gs_spfli
where carrid = g_carrid
and connid = g_connid.
call screen 100.
*& Module STATUS_0100 OUTPUT
* text
module status_0100 output.
set pf-status 'MAIN100'.
set titlebar 'MAIN100'.
if g_custom_container is initial.
perform create_and_init_alv changing gt_outtab[]
gt_fieldcat.
endif.
endmodule. " STATUS_0100 OUTPUT
*& Form create_and_init_alv
* text
* <--P_GT_OUTTAB[] text
* <--P_GT_FIELDCAT text
form create_and_init_alv changing pt_outtab like gt_outtab[]
pt_fieldcat type lvc_t_fcat.
data: lt_exclude type ui_functions.
create object g_custom_container
exporting container_name = g_container.
create object g_grid
exporting i_parent = g_custom_container.
* Create Objekt to verify input values.
* (This object is already needed in form SELECT_DATA).
create object g_verifier.
* SET HANDLER g_verifier->handle_data_changed FOR g_grid.
perform select_data changing pt_outtab[].
perform build_fieldcat changing pt_fieldcat.
perform exclude_tb_functions changing lt_exclude.
gs_layout-stylefname = 'CELLTAB'.
call method g_grid->set_table_for_first_display
exporting
it_toolbar_excluding = lt_exclude
is_layout = gs_layout
changing
it_fieldcatalog = pt_fieldcat
it_outtab = pt_outtab[].
* Set editable cells to ready for input initially
call method g_grid->set_ready_for_input
exporting
i_ready_for_input = 1.
endform. " create_and_init_alv
*& Form select_data
* text
* <--P_GT_OUTTAB text
form select_data changing pt_outtab like gt_outtab[].
data: lt_sflight type table of sflight,
ls_sflight type sflight,
ls_outtab like line of gt_outtab,
l_index type i,
ls_spfli type spfli, "#EC NEEDED
lt_celltab type lvc_t_styl.
* Check parameter 'p_ds'=>optionally select no data
if p_ds is initial.
* Select data from sflight
select * from sflight into table lt_sflight up to g_max rows
where carrid = g_carrid
and connid = g_connid.
endif.
if sy-subrc ne 0 or not p_ds is initial.
* no flights were found!
* We provide some default values for the first line that is entered:
ls_outtab-carrid = g_carrid.
ls_outtab-connid = g_connid.
case g_carrid.
when 'LH'.
ls_outtab-currency = 'DEM'.
when others.
ls_outtab-currency = 'US'.
endcase.
ls_outtab-seatsocc = 0.
ls_outtab-paymentsum = 0.
* set fields FLDATE, PRICE and PLANETYPE to editable
perform fill_celltab using 'RW'
changing lt_celltab.
insert lines of lt_celltab into table ls_outtab-celltab.
append ls_outtab to pt_outtab.
* Tell Verify-Objekt that the table was initial
call method g_verifier->set_table_is_initial.
else.
call method g_verifier->set_table_is_not_initial.
* move corresponding fields from lt_sflight to gt_outtab
loop at lt_sflight into ls_sflight.
move-corresponding ls_sflight to ls_outtab.
append ls_outtab to pt_outtab.
endloop.
* §3.Set all cells of the table non-editable by using the style table.
loop at pt_outtab into ls_outtab.
l_index = sy-tabix.
refresh lt_celltab.
perform fill_celltab using 'RO'
changing lt_celltab.
* Copy your celltab to the celltab of the current row of gt_outtab.
insert lines of lt_celltab into table ls_outtab-celltab.
modify pt_outtab from ls_outtab index l_index.
endloop.
endif.
endform. " select_data
*& Form fill_celltab
* text
* -->VALUE(P_MODE) text
* -->PT_CELLTAB text
form fill_celltab using value(p_mode)
changing pt_celltab type lvc_t_styl.
data: ls_celltab type lvc_s_styl,
l_mode type raw4.
* This forms sets the style of columns 'PRICE', FLDATE and PLANETYPE
* editable
if p_mode eq 'RW'.
l_mode = cl_gui_alv_grid=>mc_style_enabled.
else. "p_mode eq 'RO'
l_mode = cl_gui_alv_grid=>mc_style_disabled.
endif.
ls_celltab-fieldname = 'FLDATE'.
ls_celltab-style = l_mode.
insert ls_celltab into table pt_celltab.
ls_celltab-fieldname = 'PRICE'.
ls_celltab-style = l_mode.
insert ls_celltab into table pt_celltab.
ls_celltab-fieldname = 'PLANETYPE'.
ls_celltab-style = l_mode.
insert ls_celltab into table pt_celltab.
endform. " FILL_CELLTAB
*& Form BUILD_FIELDCAT
* text
* <--P_GT_FIELDCAT text
form build_fieldcat changing pt_fieldcat type lvc_t_fcat.
data ls_fcat type lvc_s_fcat.
call function 'LVC_FIELDCATALOG_MERGE'
exporting
i_structure_name = 'SFLIGHT'
changing
ct_fieldcat = pt_fieldcat.
loop at pt_fieldcat into ls_fcat.
if ls_fcat-fieldname eq 'PRICE'
or ls_fcat-fieldname eq 'PLANETYPE'
or ls_fcat-fieldname eq 'FLDATE'.
* §1.Set status of columns FLDATA, PRICE and PLANETYPE to editable.
* Since all cells are set to non-editable (see step 3) the cells
* of this columns will only be editable for new lines.
ls_fcat-edit = 'X'.
* Field 'checktable' is set to avoid shortdumps that are caused
* by inconsistend data in check tables. You may comment this out
* when the test data of the flight model is consistent in your system.
ls_fcat-checktable = '!'. "do not check foreign keys
modify pt_fieldcat from ls_fcat.
elseif ls_fcat-fieldname = 'CARRID'
or ls_fcat-fieldname = 'CONNID'
or ls_fcat-fieldname = 'CURRENCY'.
* §2.Use field AUTO_VALUE of the fieldcatalog to preset values when new
* lines are added.
ls_fcat-auto_value = 'X'.
ls_fcat-checktable = '!'. "do not check foreign key relations
modify pt_fieldcat from ls_fcat.
endif.
endloop.
endform. "build_fieldcat
*& Form exclude_tb_functions
* text
* <--P_LT_EXCLUDE text
form exclude_tb_functions changing pt_exclude type ui_functions.
data ls_exclude type ui_func.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
append ls_exclude to pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
append ls_exclude to pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
append ls_exclude to pt_exclude.
endform. " EXCLUDE_TB_FUNCTIONS
*& Module USER_COMMAND_0100 INPUT
* text
module user_command_0100 input.
save_ok = sy-ucomm.
clear ok_code.
case save_ok.
when 'SAVE'.
* perform save_data.
when 'BACK'.
* §10.Unlock your database table.
* perform unlock_sflight.
leave to screen 0.
when 'EXIT'.
perform exit_program.
when 'ADD'.
perform add_line_item.
when others.
* do nothing
endcase.
endmodule. " USER_COMMAND_0100 INPUT
* FORM EXIT_PROGRAM *
form exit_program.
leave program.
endform. "exit_program
*& Form ADD_LINE_ITEM
* text
* --> p1 text
* <-- p2 text
form add_line_item .
data: lt_rows type lvc_t_row.
data: wa_rows type lvc_t_row with header line.
data: tabix type sy-tabix.
*&Find the row ( index ) number
call method g_grid->get_selected_rows
importing et_index_rows = lt_rows.
call method cl_gui_cfw=>flush.
read table lt_rows into wa_rows index 1.
tabix = wa_rows-index .
insert gt_outtab index tabix.
*REFRESH_TABLE_DISPLAY
call method g_grid->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. " ADD_LINE_ITEM
Thanks,
Chidanand -
ALV Reporting with Field Headings
Hi ,
Can anyone tell..
Can we Display Field heading with Some Common Heading for a group in ALV grid Reporting.
Below is the format...
GROSS Block DEP RESEREVE
GL CODES SAP register Unit`s Trial Check GL CODES SAP register Unit`s Trial Check
311100 38810062.33 38810062.33 0 0.00 0.00 0 0
311200 0 0 0 0.00 0.00 0 0Hi ,
Can anyone tell..
Can we Display Field heading with Some Common Heading for a group in ALV grid Reporting.
Below is the format...
GROSS Block DEP RESEREVE
GL CODES SAP register Unit`s Trial Check GL CODES SAP register Unit`s Trial Check
311100 38810062.33 38810062.33 0 0.00 0.00 0 0
311200 0 0 0 0.00 0.00 0 0 -
Hello,
I got a dynpro with 3 ALV grids. I edit a value of grid 3, then I execute a pushbutton of grid 1. The value of grid 3 is resetted then.
What should I do to keep the value?
Reward points guaranteed.
Regards
RenéSounds like the event handler method for event data_changed is not being fired. In one of my programs, I am registering the "ENTER" key, the user must hit enter after editing the field to fire the data_changed event.
* Set for first display
call method alv_grid->set_table_for_first_display
exporting
is_layout = lt_layout
it_toolbar_excluding = lt_exclude
changing
it_outtab = ialv[]
it_fieldcatalog = fieldcat[].
* If cancelling points, register "ENTER" as event
* and create the event receiver
<b> call method alv_grid->register_edit_event
exporting
i_event_id = cl_gui_alv_grid=>mc_evt_enter.</b>
* create Event Receiver
create object event_receiver.
* handler for ALV grid
set handler event_receiver->handle_data_changed for alv_grid.
Do this records the changes that the user has made. I believe that this must be done before you start the processing of the button on Grid1.
Regards,
Rich Heilman -
Hai friends,
I am displaying data in ALV Grid, in this 2-fields are editable,so i have to change existing values and input our own values ,but here trouble is i unable to catch new values ,can any one help me that how to catch these input values.
Thanks in AdvanceThanku for reply..please see the below code.
fieldcatalog-fieldname = 'NEWA'.
fieldcatalog-just = 'C'.
fieldcatalog-key = 'X'.
fieldcatalog-input = 'X'.
fieldcatalog-edit = 'X'.
fieldcatalog-seltext_m = 'New Aggrement'.
fieldcatalog-outputlen = 15.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'NEWI'.
fieldcatalog-just = 'C'.
fieldcatalog-key = 'X'.
fieldcatalog-edit = 'X'.
fieldcatalog-seltext_m = 'New Item'.
fieldcatalog-outputlen = 15.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_pf_status_set = 'PFSTATUS'
i_callback_user_command = 'USER'
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_events = gi_events
i_save = 'X'
tables
t_outtab = gt_final
exceptions
program_error = 1
others = 2. -
hi
could u plz tell me how to edit the values of the alv grid display
could u plz explain clearly with codeHi,
Check this Program .
data: ok_code like sy-ucomm,
save_ok like sy-ucomm,
g_container type scrfname value 'BCALV_GRID_DEMO_0100_CONT1',
g_grid type ref to cl_gui_alv_grid,
g_custom_container type ref to cl_gui_custom_container,
gs_layout type lvc_s_layo,
g_max type i value 100.
data: gt_outtab type table of sflight.
MAIN *
call screen 100 starting at 1 1..
MODULE PBO OUTPUT *
module pbo output.
set pf-status 'MAIN100'.
set titlebar 'MAIN100'.
if g_custom_container is initial.
create object g_custom_container
exporting container_name = g_container.
create object g_grid
exporting i_parent = g_custom_container.
*§1.Set status of all cells to editable using the layout structure.
gs_layout-edit = 'X'.
select * from sflight into table gt_outtab up to g_max rows.
call method g_grid->set_table_for_first_display
exporting i_structure_name = 'SFLIGHT'
is_layout = gs_layout
changing it_outtab = gt_outtab.
*§2.Use SET_READY_FOR_INPUT to allow editing initially.
(state "editable and ready for input").
call method g_grid->set_ready_for_input
exporting i_ready_for_input = 1.
endif.
endmodule.
MODULE PAI INPUT *
module pai input.
save_ok = ok_code.
clear ok_code.
case save_ok.
when 'EXIT'.
perform exit_program.
when 'SWITCH'.
perform switch_edit_mode.
when others.
do nothing
endcase.
endmodule.
FORM EXIT_PROGRAM *
form exit_program.
leave program.
endform.
*& Form SWITCH_EDIT_MODE
text
--> p1 text
<-- p2 text
form switch_edit_mode.
*§3.Use IS_READY_FOR_INPUT to fetch current substate of editable cells.
if g_grid->is_ready_for_input( ) eq 0.
*§4.Use SET_READY_FOR_INPUT to switch between the substates.
call method g_grid->set_ready_for_input
exporting i_ready_for_input = 1.
else.
call method g_grid->set_ready_for_input
exporting i_ready_for_input = 0.
endif.
endform. " SWITCH_EDIT_MODE
For more information check the standard programs :BCALV_EDIT_*
reward if it helps..
Regards,
Omkar. -
Alv tree editable fields?
Hi gusrus does any one knows if there is a way to set an entire
column editable or maybe only a cell in an alvtree
thanksok first you have to register the alv tree event handler for double click, once you have done this you need to use the method
g_alv_tree->get_selected_item, once you have got the selected node by using the g_alv_tree->get_selected_item , you have to use the method g_alv_tree->get_outtab_line, then use the function 'POPUP_GET_VALUES', and finaly use the method g_alv_tree->change_item where you can insert the obtained values from 'POPUP_GET_VALUES'.
thanks i hope you can solve your problem, let me know if you want to receive my source code because i think is complex explaning by here.
regards -
Hi,
How to increase the field width of a field in ALV report.
I mean, in a ALV report, the field description of a field is not showing correctly. IF i try to extend the field width by the mouse/coursor, it displays the correct description.
IS there any way where for displaying the field description correctly?
Thanks,
KumarHi,
Go through the sample code,
*& Report ZDEMO_ALVLIST *
*& Example of a simple ALV List Report *
*& The basic requirement for this demo is to display a number of *
*& fields from the EKKO table. *
REPORT zdemo_alvlist .
TABLES: ekko.
type-pools: slis. "ALV Declarations
*Data Declaration
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
*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.
There are a number of ways to create a fieldcat.
For the purpose of this example i will build the fieldcatalog manualy
by populating the internal table fields individually and then
appending the rows. This method can be the most time consuming but can
also allow you more control of the final product.
Beware though, you need to ensure that all fields required are
populated. When using some of functionality available via ALV, such as
total. You may need to provide more information than if you were
simply displaying the result
I.e. Field type may be required in-order for
the 'TOTAL' function to work.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
fieldcatalog-do_sum = 'X'.
fieldcatalog-no_zero = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'PO Item'.
fieldcatalog-col_pos = 1.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'STATU'.
fieldcatalog-seltext_m = 'Status'.
fieldcatalog-col_pos = 2.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-seltext_m = 'Item change date'.
fieldcatalog-col_pos = 3.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material Number'.
fieldcatalog-col_pos = 4.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'PO quantity'.
fieldcatalog-col_pos = 5.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Order Unit'.
fieldcatalog-col_pos = 6.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'NETPR'.
fieldcatalog-seltext_m = 'Net Price'.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = 15.
fieldcatalog-datatype = 'CURR'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'PEINH'.
fieldcatalog-seltext_m = 'Price Unit'.
fieldcatalog-col_pos = 8.
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_LIST_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_special_groups = gd_tabgroup
IT_EVENTS = GT_XEVENTS
i_save = 'X'
is_variant = z_template
tables
t_outtab = it_ekko
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 ebeln ebelp statu aedat matnr menge meins netpr peinh
up to 10 rows
from ekpo
into table it_ekko.
endform. " DATA_RETRIEVAL
Form TOP-OF-PAGE *
ALV Report Header *
Form top-of-page.
*ALV Header declarations
data: t_header type slis_t_listheader,
wa_header type slis_listheader,
t_line like wa_header-info,
ld_lines type i,
ld_linesc(10) type c.
Title
wa_header-typ = 'H'.
wa_header-info = 'EKKO Table Report'.
append wa_header to t_header.
clear wa_header.
Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info. "todays date
append wa_header to t_header.
clear: wa_header.
Total No. of Records Selected
describe table it_ekko lines ld_lines.
ld_linesc = ld_lines.
concatenate 'Total No. of Records Selected: ' ld_linesc
into t_line separated by space.
wa_header-typ = 'A'.
wa_header-info = t_line.
append wa_header to t_header.
clear: wa_header, t_line.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_header.
i_logo = 'Z_LOGO'.
endform.
Regards,
Raj. -
Merge field label of two fields in ALV report
Hi,
Greetings of the day !!
I have a requirement to create a ALV report and the alv report has three fields(say F1, F2, F3). Where F1 and F2 fall under same category and i need to have single field label for both these fields.
How can I merge the field label of the fields F1 and F2?
Pl. share your knowledge regarding this.
Thanking you.
Regards,
RaghuHi Jodeswara Rao,
I need to display a ALV report with fields F1, F2 and F3. But F1 and F2 should have same field Label.
Header 1
Header 3
F1
F2
F3
Maybe you are looking for
-
Windows 2008 64 bits and BO XI 3.1
Bonjour, Que faut il faire pour installer BO XI sans problème sur un serveur windows 2008 64 bits virtualisé ? paramètres,composants 32 bits à installer ou à paramétrer ?? Merci de votre réponse Cordialement F. Bedouin 02.23.21.76.54
-
Older content debuggers file association problem...
I require to use the flash player content debugger stand alone to debug an application and examine traces.... The PC I am using (Windows 7 - 64 bit) came bundled with Flash Player 15, but not the content debugger..... when examining the content debug
-
Ct_bind issue in ASE15.7
Hi All, We upgraded our sybase version from 12 ->15.7. After upgrade, we are getting below bind issue during ct_bind call through our c routine eg- ct_bind(dbproc->cmd,column,temp_ptr,varaddr,NULL,null_ind); in above call ct_bind is assign
-
Apple ID not working with iTunes
Hi, After I updated to the most recent update (7.04) the iTunes Store won't let me update apps. When I press update all or just one of the apps it asks me for my password for my id. I put it in but iTunes doesn't seem to recognize it, like before the
-
I did the update for my ipod touch and it showed the itunes with the usb. i plugged into itunes and it said it needed to restore it. I waited for the restore and an error came up on my computer. I am running the latest itunes and admin on my computer