Alv edit date field f4 help
hi,
i am using normal alv edit report, in list 2 field date fields, this 2 fields are editable, how to get the date f4 help, pls give me solution
thanks
santha
hi i have define this type,
types: begin of TY_FINAL,
CREDATE type SY-DATUM, "SY-DATUM,
DOCNUM(5) type C,
PERSON(35) type C,
TKNUM type TKNUM,
NAME1 type NAME1,
ORT01 type ORT01,
VBELN type VBELN,
AGENT_PNO(4) type C,
AGENT(10) type C,
TO_ORDER(7) type C,
INCO1 type INCO1,
INCO2 type INCO2,
LCNUM type LCNUM,
VSART type VSART,
DATXA type DATXA,
LOADING(10) type C,
DATLOAD(10) type C, "SY-DATUM,
SHIPDATE(10) type C, "SY-DATUM,
DATLOAD type dats "SY-DATUM,
SHIPDATE type SY-DATUM,
ABLAD type ABLAD,
SHIPLOAD type C,
IMPORT TYPE C,
VIA(10) type C,
PORT(10) type C,
MARKS(13) type C,
PRO_DESCR(10) type C,
NTGEW type NTGEW,
BRGEW type BRGEW,
NOTE(15) type C,
WH_SH_DOCU(15) type C,
WHEN_SHIP(15) type C,
ENCLOSURE(10) type C,
ZTERM type VBRK-ZTERM,
VTEXT type VTEXT,
BOX type C,
end of TY_FINAL.
LS_FIELDCAT-FIELDNAME = 'DATLOAD'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-REF_FIELDNAME = 'ERDAT'.
LS_FIELDCAT-REF_TABNAME = 'VBRK'.
LS_FIELDCAT-DATATYPE = 'DATS'.
LS_FIELDCAT-INTTYPE = 'D'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-116.
append LS_FIELDCAT to PT_FIELDCAT
Thanks
santha
Similar Messages
-
Date field input help - changing first day of the week
Hi,
I need to change the starting day of the week in a date field value help. I also need to change the days name in this calender.
Thanks in Advance,
Dekel.I found how to change the first day of the week, through BAdi calendar_definition.
Can anyone help me locate the day names? (I checked - FM day_names_get dosen't get the names of the UI search help).
Thanks,
Dekel.
Edited by: dekel31 on May 29, 2011 1:17 PM -
ALV Editable Grid Control F4 help problem
HI Experts,
am facing some funny and critical problem in ALV Editable GRID,that is i used OOPS concept for ALV GRID Control output,
in fieldcatalog i given for fields as
wafieldcatlog-f4availabl = 'X'.
wafieldcatlog-ref_table = 'table'.
wafieldcatlog-ref_field = 'field'.
and for seven fields i given like this .
but in that editable if i use F4 help for the field and get that data and later save means that data is not considering and giving error message.
So can any one please help if u confused pls reply fo any clarifications, pls help me out in this situation.
THXwafieldcatlog-f4availabl = 'X'.
wafieldcatlog-ref_table = 'table'. "should be in caps
wafieldcatlog-ref_field = 'field'. "should be in caps.
what error you are getting while saving..? -
ALV edit (qty field is not convertable)
in my ALV program i have used one field MENGE (13,3) (QTY field) in the out put it is showing as 1.000,
when user going to enter a value (5) it is showing as 0.005 but user need it as 5.000.
please solve this question experts.....
Regards
Prasad.EVhi venkatesh,
MENGE is QTY field,
instead of that u can give F (float) field then user can enter 5 it will be display 5.000.... that is best way to use it..
points please.. (if u have satisfied.)
Prasad.
Edited by: EV prasad on Jun 6, 2008 10:10 AM -
Is there an easy way to make a field required in the ALV grid? I have looked in the field catalog and the layout and can't seem to find a flag to set. Right now I am using "handle_data_changed" to check the required fields in the row. I think this should be a standard "feature" like it is on the table control.
Thanks in advance.
MikeIs there an easy way to make a field required in the ALV grid? I have looked in the field catalog and the layout and can't seem to find a flag to set. Right now I am using "handle_data_changed" to check the required fields in the row. I think this should be a standard "feature" like it is on the table control.
Thanks in advance.
Mike -
Javascript for multiple date fields
Hi all-
I have to write javascript for 15 different date fields in a form.
The requirement here is that we convert all date fields on Page 100 from date pickers (editable date fields) to display-only date fields with two controls for the users to set the date.
If the field is empty (no date registered yet), there will be a green checkmark(X). When the user clicks this checkmark, the current date is entered into the field.
If the field is not empty (there is a date already in the system), there will be a red X. When the user click this red X, the date from the date field is removed.
The javascript I am using here is
</script>
<script type="text/javascript">
function init(){
var datePickerVal = $v2('P100_TODAYS_DATE');
if(datePickerVal){
$x_Show('ToggleDateR');
$x_Hide('ToggleDateG');
}else{
$x_Hide('ToggleDateR');
$x_Show('ToggleDateG');
function toggleDateFunc(pValue){
var sysDate = $v2('P100_DATE');
if(pValue == 'R'){
$x_Hide('ToggleDateR');
$x_Show('ToggleDateG');
$x_Value('P100_TODAYS_DATE','');
}else if(pValue == 'G'){
$x_Show('ToggleDateR');
$x_Hide('ToggleDateG');
$x_Value('P100_TODAYS_DATE',sysDate);
window.onload = init;
</script>
This javascript is working for one date field( 'P100_TODAYS_DATE') but i have 15 different date fields in this page(100) all should have same funtionality. Please help me out how to write a logic to use this function for all the date fields.
Thanks,(apex 3.2)
Greenhorn
Edited by: Greenhorn on Jul 19, 2011 12:30 PMHi,
You can do the needful by re-using the code if you can give the item names as P8_DATE1, P8_DATE_hh1, P8_DATE2, P8_DATEhh2 etc..So your item name just differs by a sequence.
Now you write function which will return desired date value taking above items as input. Pass item names to this function, get session state using APEX_UTIL.GET_SESSION_STATE('item_name') API.
Now modify you code as
FOR i IN 1..30
LOOP
v_date_array[i] = f_get_date('P8_DATE'||i, 'P8_DATEhh'||i);
END LOOP;
....Now you have all date valus in array. Just write one update as follows
UPDATE TABLE1
SET date1 = my_date_array[1], date2 = my_date_array[2]..
WHERE ....Hope it helps :)
Cheers,
Hari -
Date field navigator controll problem
Hi Friends,
Recently i have implemented the one view with the DATE field as a input field, The date field data type is sy-datum.
When i click the date field F4 help, the new pop up will be triggered and shows the date calander. the funcitonality is correct.
Now my use want's restrict the date field navagator with in given period only, For example the date field low value is 01/01/2010 and high value is 31/12/2010, The user want's to see the date field calander betweeen 01/01/2010 and 31/12/2010, user do not want to see the other dates.
Can you please help about the issues. the solution is more helpful for me , if possible please provide the solution.
Thanks & Regards
charanI noticed the same behaviour. As it turns out, it IS a JHeadstart problem that causes this error to happen. When I generate a UIX paga with both an Advanced Search region and a Quick Search region, this error only happens in the Quick Search region. The Advanced Search region works fine.
Using the FireBug extension for Firefox I noticed this difference between Advanced Search and Quick Search: Advanced Search passes on a reference to the input element into the reference variable and no error is thrown. Quick Search passes on an array of input elements and since an array doesn;t know of the select() method, an error is thrown.
I will create a worksround for this issue by modifying the ADF JavaScript library since I now know where this error happens. Please review this situation and try and solve this.
Thanks a lot in advance,
Wouter van Reeven
AMIS -
Date field not updated when select on F4 value on editable ALV Grid
Can some one look into this to see what was wrong.
I have a report that display fields extracted from a ZTable and display on an ALV Editable Grid.
The data are displayed as read only mode for these fields:
Field A - type char20 and have a search help available.
Start Date - type dats
End Date - type dats.
Field B
Field C ...
When user select to add new record, Field A, Start Date and End Date must be editable, the rest are read only.
On field A because there is search help available, I have no problem select data on F4 pull down menu and the data is updated on the grid.
But on field start date and end date, there is F4 menu and when you pull down, it shows the calendar date. But when I select the date to change, it acts like nothing happens. I run the debug mode and found out that in function module 'F4IF_FIELD_VALUE_REQUEST', after you select the date field, I got the return code irc = 8 from line 305 of this FM.
Here is what I did.
I build field catalog similar like BCALV_EDIT04 (add table type lvc_t_styl to each extracted record to indicate which field will be editable.
In the PBO, I build field catalog and set style as enable for these fields:
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = p_struct
CHANGING
ct_fieldcat = p_t_fieldcat.
LOOP AT p_t_fieldcat INTO ls_fcat.
CASE ls_fcat-fieldname.
when 'Field_A'.
ls_fcat-ref_table = 'ZTABNAME'.
ls_fcat-ref_field = 'FIELD_A'.
ls_fcat-edit = 'X'.
MODIFY p_t_fieldcat FROM ls_fcat.
when 'START_DATE' or 'END_DATE'.
ls_fcat-style = CL_GUI_ALV_GRID=>MC_STYLE_enabled.
MODIFY p_t_fieldcat FROM ls_fcat.
endcase.
Just curious, I copied program BCALV_EDIT_08 to ZBCALV_EDIT08 and make field booking date as editable to test. When I select to change booking date from F4 menu pull down, the new date is populated to the screen field. So what was wrong between my program and BCALV_EDIT_08? Thanks for your help. I am stuck on this problem for 2 days and could not figure out what was wrong.not sure why you use that FM for date filed , you just need in the field catalog make sure that are use a date field of reference , anyway check program BCALV_EDIT_01
-
Editable ALV - Standard F4 on Date field not choosable
Hi all,
Have made an editable ALV (All rows) . One date field where i can use F4 help (mean i can see date when i press f4) but selection is not possible. I cant double click the date. when i click on particular date and and press the TICK button ,value not populated in AVL ..
Thanks,
SriniHi Sri_neo,
I tried your scenario its working fine, when we double click on the date which is from F4 help it is reflecting on ALV grid.
Thanks & Regards,
Sridhar S. -
F4 Help on Date Field after ALV is generated
Hi all,
Now this might sound very simple question, but Im having some difficulty in this.
My idea is to have an F4 on a date field after the ALV Grid report is executed. From the forum search, Ive got such answers as
l_fieldcat-edit = 'X'.
l_fieldcat-F4AVAILABL = 'X'.
Now the problem with this is that Im getting an error saying:
The data object "l_fieldcat does not have a component called "F4AVAILABL".
And then I tried this:
l_fieldcat-fieldname = 'DDATE'.
l_fieldcat-ref_tabname = 'ZCST001'.
Now at the report output when I press F4 on the date field it gives me a dump saying:
Field symbol has not yet been assigned.
Error in the ABAP Application Program
The current ABAP program "CL_GUI_ALV_GRID===============CP" had to be terminated because it has come across a statement that unfortunately cannot be executed.
So Im kinda stuck now. Appreciate your suggestions.
PS: Im on ECC6.
PPS:The intended F4 on field is a custom field in a custom table.
pkRun This:
report ztest.
TYPE-POOLS : slis.
tables:mara,makt.
data: begin of it_final occurs 0,
matnr like mara-matnr,
ERSDA like mara-ERSDA,
end of it_final.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
wa_layout TYPE slis_layout_alv,
g_repid TYPE sy-repid.
START-OF-SELECTION.
select matnr ERSDA into table it_final from mara up to 10 rows.
g_repid = sy-repid.
PERFORM f_populate_fieldcat.
* PERFORM fill_zpayroll.
PERFORM f_call_alv.
*& Form f_populate_fieldcat
* text
* --> p1 text
* <-- p2 text
form f_populate_fieldcat .
"Mat Number
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_l = 'MAT No.'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
"Creation date
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'ERSDA'.
wa_fieldcat-edit = 'X'.
wa_fieldcat-REF_TABname = 'MARA'.
wa_fieldcat-REF_FIELDname = 'ERSDA'.
wa_fieldcat-seltext_l = 'Creation date '.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
endform. " f_populate_fieldcat
*& Form f_call_alv
* text
* --> p1 text
* <-- p2 text
form f_call_alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
i_callback_top_of_page = 'TOP-OF-PAGE'
is_layout = wa_layout
it_fieldcat = it_fieldcat[]
I_SAVE = 'A'
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
EXIT.
ENDIF.
endform. " f_call_alv
In custom table date field must be referenced to DATS.
P.S.I hope you already solved
Cheers -
How to display date field in ALV in format 'YYYY-MM-DD'?
Hi experts,
I am not getting displayed the date field in ALV in the format 'YYYY-MM-DD' if it is different than my user setting's format (DD.MM.YYYY).
Tried with the edit mask
LVC_S_FCAT-EDIT_MASK = '____-__-__' but it does not work.
I could not find the conversion routine for this. Is it possible to write customer conversion routine?
I have to use DATE field, otherwise if I display this format in CHAR10 field , sorting in ALV does not work for this field.
PLEASE ANY HELP!
Kind regards,
DanijelaHi,
Use FM FORMAT_DATE_4_OUTPUT.
TYPE-POOLS : slis, KKBLO.
TYPES: BEGIN OF t_data,
sel TYPE char1,
matnr TYPE matnr,
bldat type char10,
END OF t_data.
DATA: it_tab TYPE STANDARD TABLE OF t_data,
it_fcat TYPE slis_t_fieldcat_alv.
DATA: wa_tab TYPE t_data,
wa_fcat TYPE slis_fieldcat_alv,
wa_layout type SLIS_LAYOUT_ALV.
data: lv_repid TYPE syrepid.
data : lv_date type NLEI-IBGDT,
lv_outdate type RN1DATUM-DATEX,
lv_format type RN1DATUM-FORMAT value 'YYYY-MM-DD'.
lv_repid = sy-repid.
lv_date = sy-datum.
CALL FUNCTION 'FORMAT_DATE_4_OUTPUT'
EXPORTING
datin = lv_date
format = lv_format
IMPORTING
DATEX = lv_outdate.
move lv_outdate to wa_tab-bldat.
wa_tab-matnr = '0000001'.
APPEND wa_tab TO it_tab.
lv_date = sy-datum + 1.
CALL FUNCTION 'FORMAT_DATE_4_OUTPUT'
EXPORTING
datin = lv_date
format = lv_format
IMPORTING
DATEX = lv_outdate.
move lv_outdate to wa_tab-bldat.
wa_tab-matnr = '0000002'.
APPEND wa_tab TO it_tab.
lv_date = sy-datum + 2.
CALL FUNCTION 'FORMAT_DATE_4_OUTPUT'
EXPORTING
datin = lv_date
format = lv_format
IMPORTING
DATEX = lv_outdate.
move lv_outdate to wa_tab-bldat.
wa_tab-matnr = '0000003'.
APPEND wa_tab TO it_tab.
wa_fcat-fieldname = 'SEL'.
wa_fcat-ref_fieldname = 'XCHPF'.
wa_fcat-ref_tabname = 'MARA'.
wa_fcat-edit = 'X'.
wa_fcat-checkbox = 'X'.
APPEND wa_fcat TO it_fcat.
CLEAR : wa_fcat.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-ref_fieldname = 'MATNR'.
wa_fcat-ref_tabname = 'MARA'.
APPEND wa_fcat TO it_fcat.
CLEAR : wa_fcat.
wa_fcat-fieldname = 'BLDAT'.
wa_fcat-ref_fieldname = 'BLDAT'.
wa_fcat-ref_tabname = 'BKPF'.
APPEND wa_fcat TO it_fcat.
call 'REUSE_ALV_GRID_DISPLAY'' after this
Edited by: Ankur Parab on Oct 1, 2009 2:50 PM
Edited by: Ankur Parab on Oct 1, 2009 2:51 PM -
ALV Output to Spreadsheet.. all integer,date fields are moved to last .
My requirement is that, Downloading the ALV displayed data into Excel.
So, I gone Menu>List>Export-->Spreadsheet
But, I observed that, the Currency, Date, Unit columns r coming in the last of spread sheet and with out any color(where as other columns does hv some color!)
I am expalining with the example .
when we take the table SFLIGHT.
Go To SE16 and give table SFLIGHT
and then go for it contents..
then the sequence of cloumns in ALV o/p is as follows..
Carrid,Connid,Fldate,Price,Currency ,PlaneType,seats Max,Setats Occ and others..
But when I goto TableEntry>List>Export-->Spreadsheet
->Table->Micro soft Excel..
we will ge the excel Carrid,Connid,Currency ,PlaneType,
Fldate,Price,seats Max,Setats Occ and others..
The Order is Changed.
1 - So, its the SAP default property? OR Do I need do/code some thing, to resemble the ALV displayed data(to meet my requiremenet)?
2- Generally, Wht is the procedure to get thru my requirement? I mean, am I doing correct?
Your help is appreciated.
With Regards,
Satish.
Edited by: satish akkina on Jan 17, 2008 7:23 PMHi Satish,
Ideally, the layout should strictly follow the field catalogue structure you have defined. Just because you are getting the correct layout in ALV implies that everuthing is OK with your code.
A humble suggestion is that you cross-check this malfunction by downloading the same report on some other system (PC). May be some setting in the Excel sheet is modifying the layout.
Do let me know if it works, else i will dig more to find out the reason and the remedy.
Regards,
Rumi -
How to set column names in OVS search help of ALV EDIT
Hi All,
I have a OVS search help for my ALV EDIT column.This OVS will have two columns,I need to give the names(name1 , name2) to the columns.
I am writing the below codo in phase 0.
ls_text-name = 'Column1'.
ls_text-value = 'name1'.
INSERT ls_text INTO TABLE lt_column_texts.
ls_text-name = 'Column2'.
ls_text-value = 'name2'.
INSERT ls_text INTO TABLE lt_column_texts.
ovs_callback_object->set_configuration(
label_texts = lt_label_texts
column_texts = lt_column_texts
group_header = lv_group_header
window_title = lv_window_title
table_header = lv_table_header
col_count = 2
row_count = 20 ).
Below code in Phase 3.
Assign ovs_callback_object->selection->* to <ls_selection>.
if <ls_selection> is assigned.
ovs_callback_object->context_element->set_attribute(
name = `ATR1`
value = <ls_selection>-Column1 ).
endif.
But,the column names are not getting set.Please provide your inputs.
Regards,
Salmahi,
About your requirement, i don't know why you need to code in "Phase 3" of OVS.
"Phase 3" is used for transporting your selected value to Your ALV.
I think, the reason why you loose the result table including your customized column title, is that you loose the "Phase 2".
Generally, in the past i used OVS as the following code simply.Just one example:
* declare data structures for the fields to be displayed and
* for the table columns of the selection list, if necessary
types:
begin of lty_stru_input,
* add fields for the display of your search input here
carrid type string,
connid type string,
end of lty_stru_input.
types:
begin of lty_stru_list,
* add fields for the selection list here
carrid type string,
connid type string,
text type string,
end of lty_stru_list.
data: ls_search_input type lty_stru_input,
lt_select_list type standard table of lty_stru_list,
ls_text type wdr_name_value,
lt_label_texts type wdr_name_value_list,
lt_column_texts type wdr_name_value_list,
case ovs_callback_object->phase_indicator.
when if_wd_ovs=>co_phase_0. "configuration phase, may be omitted
* in this phase you have the possibility to define the texts,
* if you do not want to use the defaults (DDIC-texts)
ls_text-name = 'CARRID'. "must match a field name of search
ls_text-value = 'Search Field-Carrid'.
insert ls_text into table lt_label_texts.
ls_text-name = 'CONNID'. "must match a field name of search
ls_text-value = 'Search Field-Connid'.
insert ls_text into table lt_label_texts.
ls_text-name = 'CARRID'. "must match a field in list structure
ls_text-value = 'Result-Carrid'.
insert ls_text into table lt_column_texts.
ls_text-name = 'CONNID'. "must match a field in list structure
ls_text-value = 'Result-Connid'.
insert ls_text into table lt_column_texts.
ls_text-name = 'TEXT'. "must match a field in list structure
ls_text-value = 'Result-Text'.
insert ls_text into table lt_column_texts.
lv_group_header = 'Group Header'.
lv_window_title = 'Window Title'.
lv_table_header = 'Table Header'.
ovs_callback_object->set_configuration(
label_texts = lt_label_texts
column_texts = lt_column_texts
group_header = lv_group_header
window_title = lv_window_title
table_header = lv_table_header
col_count = 3
row_count = 8 ).
when if_wd_ovs=>co_phase_2.
* If phase 1 is implemented, use the field input for the
* selection of the table.
* If phase 1 is omitted, use values from your own context.
if ovs_callback_object->query_parameters is not bound.
******** TODO exception handling
endif.
assign ovs_callback_object->query_parameters->*
to <ls_query_params>.
SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_select_list FROM ZTABLE_FLIGHT
WHERE CARRID LIKE lw_carrid
AND CONNID LIKE lw_connid
*ovs_callback_object->set_output_table( output = lt_select_list ).*
Hope it can help.
Best wishes. -
Edit single field in single line in ALV
Dear experts,
I have an ALV with many lines.
I need to edit one field in a few of those lines, depending on the data. How can I do that? I aldeady used the EDIT parameter of fieldcat, but it changed the whole column of the table.
Please help.
Thanks,
RoxaniHi again,
1. Just for info purpose.
2. We can use colours
3. Not only the full row color,
we can also manipulate the color in each cell.
4.
IMPORTANT THINGS
a. Extra field in internal table
clr TYPE slis_t_specialcol_alv,
(this field will contain the colour codes)
b. assign fieldname to alv layout
alvly-coltab_fieldname = 'CLR'
c. work area for colour
DATA : clrwa TYPE slis_specialcol_alv.
d. Populating the color
Once again
Loop at ITAB.
*********logic
if itab-field < 0 "---negative
clrwa-fieldname = 'FIELDNAME'. "<--- FIELDNAME FOR COLOR
clrwa-color-col = 6. <------- COLOUR 0-9
APPEND clrwa TO itab-clr.
MODIFY ITAB.
endif.
ENDLOOP.
5. just copy paste in new program
6.
REPORT abc .
NECESSARY / MUST
TYPE-POOLS : slis.
DATA : alvfc TYPE slis_t_fieldcat_alv.
DATA : alvly TYPE slis_layout_alv.
ITAB DECLARATION
DATA : prg TYPE sy-repid.
DATA : BEGIN OF itab OCCURS 0.
INCLUDE STRUCTURE t001.
DATA : clname(3) TYPE c,
clr TYPE slis_t_specialcol_alv,
END OF itab.
DATA : clrwa TYPE slis_specialcol_alv.
PARAMETERS : a TYPE c.
DATA : flname TYPE slis_fieldname.
SELECT
START-OF-SELECTION.
SELECT * FROM t001
INTO CORRESPONDING FIELDS OF TABLE itab..
LOOP AT itab..
IF SY-TABIX <= 5.
itab-clname = 'C50'.
ELSE.
itab-clname = 'C30'.
ENDIF.
MODIFY itab.
ENDLOOP.
LOOP AT ITAB.
check itab-bukrs = '1000'
clrwa-fieldname = 'BUTXT'.
clrwa-color-col = 6.
APPEND clrwa TO itab-clr.
MODIFY ITAB.
clrwa-fieldname = 'LAND1'.
clrwa-color-col = 4.
APPEND clrwa TO itab-clr.
MODIFY ITAB.
ENDLOOP.
prg = sy-repid.
flname = 'CLNAME'.
alvly-info_fieldname = 'CLNAME'.
alvly-coltab_fieldname = 'CLR'.
LOOP AT ITAB.
if sy-tabix = 3.
clrwa-fieldname = 'BUTXT'.
clrwa-color-col = 6.
APPEND clrwa TO itab-clr.
MODIFY ITAB.
clrwa-fieldname = 'LAND1'.
clrwa-color-col = 1.
APPEND clrwa TO itab-clr.
MODIFY ITAB.
endif.
ENDLOOP
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = prg
i_internal_tabname = 'ITAB'
i_inclname = prg
CHANGING
ct_fieldcat = alvfc
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
minimum
*CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
it_fieldcat = alvfc
TABLES
t_outtab = itab
EXCEPTIONS
program_error = 1
OTHERS = 2
extra
sy-uname = 'XYZAB'.
prg = sy-repid.
Excluding
DATA : excl TYPE slis_t_extab.
DATA : exclwa TYPE slis_extab.
exclwa = '&OUP'.
APPEND exclwa TO excl.
exclwa = '&ODN'.
APPEND exclwa TO excl.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
it_fieldcat = alvfc
i_callback_program = sy-repid
is_layout = alvly
i_callback_user_command = 'ITAB_USER_COMMAND'
it_excluding =
excl
i_save = 'A'
TABLES
t_outtab = itab
EXCEPTIONS
program_error = 1
OTHERS = 2.
*& Form itab_user_command
text
-->WHATCOMM text
-->WHATROW text
FORM itab_user_command USING whatcomm TYPE sy-ucomm whatrow TYPE
slis_selfield.
BREAK-POINT.
ENDFORM. "itab_user_command
regards,
amit m. -
Here's how to do ALV (OO) with dynamic fcat, int table and editable data
Hi everybody
Here's a more useful approach to ALV grid with OO using dynamic table, data NOT from DDIC, dynamic FCAT and how to get changed lines from the grid when ENTER key is pressed.
It's really not too dificult but I think this is more useful than the ever present SFLIGHT methods from the demos.
This also defines a subclass of cl_gui_alv_grid so you can access the protected attributes / methods of that class.
You don't need to add the class via SE24 -- done fron this ABAP.
When you run it click Edit for the first time.
After editing data press ENTER and the break point should bring you into the relevant method.
Code developed on NW2004S trial version but also works on rel 6.40 on a "Real" system.
The code should work without any changes on any system >=6.40.
All you need to do is to create a blank screen 100 via SE51 with a custom container on it called CCONTAINER1.
The rest of the code can just be uploaded into your system using the SE38 upload facility.
When running the program click on the EDIT button to enable the edit functionality of the grid.
Change your data and when you press ENTER you should get the break-point where you can see the original table and changed rows.
This program is actually quite general as it covers Dynamic tables, building a dynamic fcat where your table fields are NOT in the DDIC, intercepting the ENTER key via using an event, and accessing the protected attributes of the cl_gui_alv_grid by defining a subclass of this class in the abap.
I've seen various questions relating to all these functions but none in my view ever answers the questions in a simple manner. I hope this simple program will answer all these and show how using OO ALV is actually quite easy and people shouldn't be scared of using OO.
Have fun and award points if useful.
Cheers
Jimbo.
<b>PROGRAM zdynfieldcat.
Simple test of dynamic ITAB with user defined (not ddic) fields
Build dynamic fcat
use ALV grid to display and edit.
*When edit mode set to 1 toolbar gives possibility of adding and
*deleting rows.
*Define subclass of cl_gui_alv_grid so we can use protected attributes
*and methods.
Add event handler to intercept user entering data and pressing the
*ENTER key.
When enter key is pressed get actual value of NEW table (all rows)
rather than just the changed data.
*use new RTTI functionality to retrieve internal table structure
*details.
Create a blank screen 100 with a custom container called CCONTAINER1.
James Hawthorne
include <icon>.
define any old internal structure NOT in DDIC
types: begin of s_elements,
anyfield1(20) type c,
anyfield2(20) type c,
anyfield3(20) type c,
anyfield4(20) type c,
anyfield5(11) type n,
end of s_elements.
types: lt_rows type lvc_t_roid.
Note new RTTI functionality allows field detail retrieval
at runtime for dynamic tables.
data: wa_element type s_elements ,
wa_data type s_elements,
c_index type sy-index,
c_dec2 type s_elements-anyfield5,
wa_it_fldcat type lvc_s_fcat,
it_fldcat type lvc_t_fcat,
lr_rtti_struc TYPE REF TO cl_abap_structdescr, "RTTI
lt_comp TYPE cl_abap_structdescr=>component_table,"RTTI
ls_comp LIKE LINE OF lt_comp, "RTTI
zog like line of lr_rtti_struc->components, "RTTI
struct_grid_lset type lvc_s_layo,
l_valid type c,
new_table type ref to data.
field-symbols: <dyn_table> type standard table,
<actual_tab> type standard table,
<fs1> type ANY,
<FS2> TYPE TABLE.
data: grid_container1 type ref to cl_gui_custom_container.
class lcl_grid_event_receiver definition deferred.
data: g_event_receiver type ref to lcl_grid_event_receiver.
data: ls_modcell type LVC_S_MODI,
stab type ref to data,
sdog type s_elements. .
class lcl_grid_event_receiver definition.
public section.
methods:
handle_data_changed
for event data_changed of cl_gui_alv_grid
importing er_data_changed,
toolbar for event toolbar of cl_gui_alv_grid
importing e_object
e_interactive,
user_command for event user_command of cl_gui_alv_grid
importing e_ucomm.
endclass.
*implementation of Grid event-handler class
class lcl_grid_event_receiver implementation.
method handle_data_changed.
code whatever required after data entry.
various possibilites here as you can get back Cell(s) changed
columns or the entire updated table.
Data validation is also possible here.
perform check_data using er_data_changed.
endmethod.
Method for handling all creation/modification calls to the toolbar
method toolbar.
data : ls_toolbar type stb_button.
Define Custom Button in the toolbar
clear ls_toolbar.
move 0 to ls_toolbar-butn_type.
move 'EDIT' to ls_toolbar-function.
move space to ls_toolbar-disabled.
move 'Edit' to ls_toolbar-text.
move icon_change_text to ls_toolbar-icon.
move 'Click2Edit' to ls_toolbar-quickinfo.
append ls_toolbar to e_object->mt_toolbar.
clear ls_toolbar.
move 0 to ls_toolbar-butn_type.
move 'UPDA' to ls_toolbar-function.
move space to ls_toolbar-disabled.
move 'Update' to ls_toolbar-text.
move icon_system_save to ls_toolbar-icon.
move 'Click2Update' to ls_toolbar-quickinfo.
append ls_toolbar to e_object->mt_toolbar.
clear ls_toolbar.
move 0 to ls_toolbar-butn_type.
move 'EXIT' to ls_toolbar-function.
move space to ls_toolbar-disabled.
move 'Exit' to ls_toolbar-text.
move icon_system_end to ls_toolbar-icon.
move 'Click2Exit' to ls_toolbar-quickinfo.
append ls_toolbar to e_object->mt_toolbar.
endmethod.
method user_command.
case e_ucomm .
when 'EDIT'. "From Tool bar
perform set_input.
perform init_grid.
when 'UPDA'. "From Tool bar
perform refresh_disp.
perform update_table.
when 'EXIT'. "From Tool bar
leave program.
endcase.
endmethod.
endclass.
class zcltest definition inheriting from cl_gui_alv_grid.
define this as a subclass so we can access the protected attributes
of the superclass cl_gui_alv_grid
public section.
methods: constructor, disp_tab.
endclass.
need this now to instantiate object
as we are using subclass rather than the main cl_gui_alv_grid.
class zcltest implementation.
METHOD constructor.
CALL METHOD super->constructor
exporting i_appl_events = 'X'
i_parent = grid_container1.
endmethod.
method disp_tab.
FIELD-SYMBOLS: <outtab> TYPE STANDARD TABLE.
break-point 1.
mt_outtab is the data table held as a protected attribute
in class cl_gui_alv_grid.
ASSIGN me->mt_outtab->* TO <outtab>. "Original data
do whatever you want with <outtab>
contains data BEFORE changes each time.
Note that NEW (Changed) table has been obtained already by
call to form check_data USING P_ER_DATA_CHANGED
TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
Entered data is in table defined by <fs2>
In this method you can compare original and changed data.
Easier than messing around with individual cells.
do what you want with data in <fs2> validate / update / merge etc
endmethod.
endclass.
data :
ok_code like sy-ucomm,
save_ok like sy-ucomm,
i4 type int4,
Container Object [grid_container]
now created via method constructor
in the subclass zcltest.
Control Object [grid]
grid1 type ref to zcltest,
Event-Handler Object [grid_handler]
grid_handler type ref to lcl_grid_event_receiver.
start-of-selection.
call screen 100.
module status_0100 output.
now display it as grid
if grid_container1 is initial.
create object grid_container1
exporting
container_name = 'CCONTAINER1'.
create object grid1.
break-point 1.
create object grid_handler.
set handler:
grid_handler->user_command for grid1,
grid_handler->toolbar for grid1,
grid_handler->handle_data_changed for grid1.
perform create_dynamic_fcat.
perform create_dynamic_itab.
perform populate_dynamic_itab.
perform init_grid.
perform register_enter_event.
set off ready for input initially
i4 = 0.
call method grid1->set_ready_for_input
exporting
i_ready_for_input = i4.
endif.
endmodule.
module user_command_0100 input.
*PAI not needed in OO ALV anymore as User Commands are handled as events
*in method user_command.
*we can also get control if the Data entered and the ENTER is pressed by
*raising an event.
Control then returns to method handle_data_changed.
endmodule.
form create_dynamic_fcat.
get structure of our user table for building field catalog
Use the RTTI functionality
lr_rtti_struc ?= cl_abap_structdescr=>describe_by_data( wa_data ).
Build field catalog just use basic data here
colour specific columns as well
loop at lr_rtti_struc->components into zog.
c_index = c_index + 1.
clear wa_it_fldcat.
wa_it_fldcat-fieldname = zog-name .
wa_it_fldcat-datatype = zog-type_kind.
wa_it_fldcat-inttype = zog-type_kind.
wa_it_fldcat-intlen = zog-length.
wa_it_fldcat-decimals = zog-decimals.
wa_it_fldcat-lowercase = 'X'.
if c_index eq 2.
wa_it_fldcat-emphasize = 'C411'.
endif.
if c_index eq 3.
wa_it_fldcat-emphasize = 'C511'.
endif.
append wa_it_fldcat to it_fldcat .
endloop.
endform.
form create_dynamic_itab.
Create dynamic internal table and assign to field sysmbol.
Use dynamic field catalog just built.
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = it_fldcat
importing
ep_table = new_table.
assign new_table->* to <dyn_table>.
endform.
form populate_dynamic_itab.
load up a line of the dynamic table
c_dec2 = c_dec2 + 11.
wa_element-anyfield1 = 'Tabbies'.
wa_element-anyfield2 = 'ger.shepards'.
wa_element-anyfield3 = 'White mice'.
wa_element-anyfield4 = 'Any old text'.
wa_element-anyfield5 = c_dec2.
append wa_element to <dyn_table>.
endform.
form check_data USING P_ER_DATA_CHANGED
TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
Get altered data back
ASSIGN p_er_data_changed->mp_mod_rows TO <FS1>.
stab = p_er_data_changed->mp_mod_rows.
ASSIGN STAB->* TO <FS2>.
LOOP AT <FS2> INTO sdog.
ALV grid display with altered data is now in <fs2>.
do any extra processing you want here
endloop.
now display new table
call method grid1->disp_tab.
endform.
form exit_program.
call method grid_container1->free.
call method cl_gui_cfw=>flush.
leave program.
endform.
form refresh_disp.
call method grid1->refresh_table_display.
endform.
form update_table.
The dynamic table here is the changed table read from the grid
after user has changed it
Data can be saved to DB or whatever.
loop at <dyn_table> into wa_element.
do what you want with the data here
endloop.
switch off edit mode again for next function
i4 = 0.
call method grid1->set_ready_for_input
exporting
i_ready_for_input = i4.
endform.
form set_input.
i4 = 1.
call method grid1->set_ready_for_input
exporting
i_ready_for_input = i4.
endform.
form switch_input.
if i4 = 1.
i4 = 0.
else.
i4 = 1.
endif.
call method grid1->set_ready_for_input
exporting
i_ready_for_input = i4.
endform.
form init_grid.
Enabling the grid to edit mode,
struct_grid_lset-edit = 'X'. "To enable editing in ALV
struct_grid_lset-grid_title = 'Jimbos Test'.
call method grid1->set_table_for_first_display
exporting
is_layout = struct_grid_lset
changing
it_outtab = <dyn_table>
it_fieldcatalog = it_fldcat.
endform.
form register_enter_event.
call method grid1->register_edit_event
exporting
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
Instantiate the event or it won't work.
create object g_event_receiver.
set handler g_event_receiver->handle_data_changed for grid1.
endform.</b>Hi there
IE7 doesn't give me the add new page option and I get 404 error when trying to access the "How to contribute" section.
I'll load up Firefox later (this browser usually works when IE7 doesn't always work properly).
I'll copy the stuff to the wiki when I've got the browser sorted out.
Cheers
jimbp
Maybe you are looking for
-
Cannot Pre order and charge to the account...ouch (bound to happen)
Will this put a hamper in peoples plans to pre order the iphone next week? Esp those paying full retail? Well not I, thats for sure.
-
Owb Process Flow getting hanged/stuck .
Hi, Problem description :- We have designed a Process Flow in OWB our project. The Process Flow is scheduled to run at 12.00 AM daily Dutch timings. We have been facing a problem for around 3 months wherein the process gets hanged/stuck in between
-
Simple editor for Apple TV video?
I'm looking for something simple for editing video for the Apple TV, just to chop off the ends and some interior segments (eliminate commercials). The editor that's part of Eye TV works very well for this, I can control on a frame level where the cut
-
Mail hanging and seldom retrieving mail, Mail hanging and seldom retrieving mail
When I have Mail running (5.1) all that happens is the circular progress thingy is trying to retrieve Mail constantly when I opened up the the Inbox triangle it is the iCloud mail sync progress circle thats because Mail is set to sync. Is that OK and
-
Can I install PSE 10-13 Win7-8 without the Organizer (uses a lot of resources)?
Can I install PSE 10-13 Win7-8 without the Organizer (uses a lot of resources)?