Editable ALV : Need PERNR & ENAME on PERNR F4 help
Dear Friends,
I have created a GRID ALV for my customized HR module. In this ALV, there is a field PERNR and alongwith that there is another field ENAME.
PERNR field is editable & supported with F4 help. My requirement is like, when I change the PERNR, say, I clicked on F4 help (PREM - for PERNR) & select any PERNR, then automatically, the ENAME should get changed.
My requirement can also be achieved, if after getting the New PERNR, the user presses the ENTER button, then the ENAME of the PERNR should also get updated.
I tried to check the way with which SAP is going through the whole process by debugging (/H method).
But on clicking ENTER the control remains doesn't go anywhere, that means ENTER is not considered as an EVENT. Also, when I click on F4 Help button, the control remains in SAPLSLVC_FULLSCREEN program & it doesn't come in my Z report.
My problem can be solved in one of the following ways :
1). Can someone please tell me the way to get customized F4 help in GRID ALV & also how can I
populate ENAME alongwith PERNR in one go.
2). Any example code of OOPS ALV with this scenario. (I know, this can be done with OOPS
methods, but I'm novice in OOPS).
OR any other possible way, that you think can solve my problem.
PLS DON'T GIVE THE SOLUTION TO CHECK BCALV REPORTS ... I've already checked those, but there is so much functionality included that it is very difficult to understand a single functionality from those.
Waiting for your replies Gurus ...
Thanks & Regards,
Mohit Grover
Hi,
class lcl_event_receiver definition.
public section.
methods:
handle_data_changed
for event data_changed of cl_gui_alv_grid
importing er_data_changed.
methods: check_price
importing
ps_good_price type lvc_s_modi
pr_data_changed type ref to cl_alv_changed_data_protocol.
endclass. "lcl_event_receiver DEFINITION
class lcl_event_receiver implementation.
method handle_data_changed.
data: ls_good type lvc_s_modi.
loop at er_data_changed->mt_good_cells into ls_good.
case ls_good-fieldname.
* check if column PLANETYPE of this row was changed
when 'PRICE'.
call method check_price
exporting
ps_good_price = ls_good
pr_data_changed = er_data_changed.
endcase.
endloop.
endmethod. "handle_data_changed
method check_price.
data: l_price type sflight-price.
call method pr_data_changed->get_cell_value
exporting
i_row_id = ps_good_price-row_id
i_fieldname = ps_good_price-fieldname
importing
e_value = l_price.
read table t_sflight into fs_sflight index sy-tabix.
if sy-subrc = 0.
move l_price to fs_sflight-cost.
modify t_sflight from fs_sflight
transporting price cost
where carrid = fs_sflight-carrid
and connid = fs_sflight-connid.
endif.
endmethod.
or use the standard program BCALV_EDIT_03 if any dought pls let me know!!
thanks
ravi
Similar Messages
-
How to get employees PERNR,ENAME,MAIL information under manager
Dear Experts,
is they have any standard function module to find employees information under the manager.
I need empnumber(PERNR), Ename, Mailid employees information under the manager..
please help me.
RegardsCALL FUNCTION 'RH_STRUC_GET'
EXPORTING
act_otype = 'O'
act_objid = w_objid
act_wegid = 'B002'
ACT_INT_FLAG =
ACT_PLVAR = ' '
act_begda = w_begda
act_endda = w_endda
ACT_TDEPTH = 0
ACT_TFLAG = 'X'
ACT_VFLAG = 'X'
AUTHORITY_CHECK = 'X'
TEXT_BUFFER_FILL =
BUFFER_MODE =
IMPORTING
ACT_PLVAR =
TABLES
result_tab = it_result
result_objec = it_objec
result_struc = it_struc
EXCEPTIONS
no_plvar_found = 1
no_entry_found = 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.
try this u will get positions of employee under the manager
then u can get pernr from IT-0001 or from IT-1001 for that positions,
then get required data from IT-0002 & IT-0105(email address if maintained check subtype).
reward points if found helpful. -
Program in which i am downloading p0002-pernr , pernr-ename , p0002-sp
I have written a program in which i am downloading p0002-pernr , pernr-ename , p0002-sprsl in to c:\temp in csv format , i am able to download the file but the program continue running its not stoping its acting like an infinite loop program is given bellow . i am using logical database in this (pnp) . and when the downloading part is removed and given the write command its writting result with out delay . only when downloading i am getting problem I am using function module GUI_DOWNLOAD to download .
*-- Declaration
TABLES: pernr.
INFOTYPES: 0002. "Personal Data
*-- Selection screen
INITIALIZATION.
*-- Processing
DATA: Begin of it_final OCCURS 0,
text(1000) TYPE C,
END OF it_final.
DATA: Begin of it_final1 OCCURS 0,
text(1000) TYPE C,
END OF it_final1.
GET pernr.
PROVIDE pernr sprsl from p0002 BETWEEN pnpbegda AND pnpendda.
CONCATENATE p0002-pernr pernr-ename p0002-sprsl into it_final-text separated by ',' .
write it_final-text.
ENDPROVIDE.
append it_final.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
filename = 'c:\temp\test.csv'
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = 'X'
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
IMPORTING
FILELENGTH =
tables
data_tab = it_final
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.Look at the BOLD part ...
Declaration
TABLES: pernr.
INFOTYPES: 0002. "Personal Data
Selection screen
INITIALIZATION.
Processing
DATA: Begin of it_final OCCURS 0,
text(1000) TYPE C,
END OF it_final.
DATA: Begin of it_final1 OCCURS 0,
text(1000) TYPE C,
END OF it_final1.
start-of-selection. <--- add this
GET pernr.
PROVIDE pernr sprsl from p0002 BETWEEN pnpbegda AND pnpendda.
CONCATENATE p0002-pernr pernr-ename p0002-sprsl into it_final-text separated by ',' .
write it_final-text.
ENDPROVIDE.
append it_final.
end-of-selection. <--- add this
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
filename = 'c:\temp\test.csv'
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = 'X'
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
IMPORTING
FILELENGTH =
tables
data_tab = it_final
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
IF sy-subrc 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. -
Editable ALV- I need to increase curr to be 12 chars from 8 chars in o/p.
I am getting problem in Editable ALV, I wanted to increase the currency field from 8 chars to 12 chars at the output.
But after the output i am able to enter only eight chars.
I want '123456789012' but i am able to put only '12345678'.
Plz have alook.hi !
check the length of field in your data declaration
you can set the length of o/p field in alv for that just check
intlen or outputlen in fieldcat
but by using these you can not update these in your internal table b'coz of your type declaration for that field -
How to edit ALV report using function modules
I have a ALV report , i want to edit the report
using function modules.
how can i do that...
Edited by: ms kumar on Mar 6, 2008 3:24 PMhi i had used this report with the check box,
using the fm of alvs.....
*& Report ZZZ00
REPORT ZPR_02.
TYPE-POOLS: SLIS.
TABLES:pa0002,pa0008.
data:begin of it_pa0002 occurs 0,
checkbox,
pernr like pa0002-pernr,
begda like pa0002-begda,
endda like pa0002-endda,
vorna like pa0002-vorna,
nachn like pa0002-nachn,
end of it_pa0002.
data:begin of it_pa00021 occurs 0,
pernr like pa0002-pernr,
begda like pa0002-begda,
endda like pa0002-endda,
vorna like pa0002-vorna,
nachn like pa0002-nachn,
expand TYPE xfeld value 'X',
end of it_pa00021.
data:begin of it_pa0008 occurs 0,
pernr like pa0008-pernr,
begda like pa0008-begda,
endda like pa0008-endda,
ANSAL like pa0008-ANSAL,
LGA01 like pa0008-LGA01,
BET01 LIKE PA0008-BET01,
end of it_pa0008.
DATA: IT_FIELD_CAT TYPE SLIS_T_FIELDCAT_ALV,
IT_FIELD_CAT1 TYPE SLIS_T_FIELDCAT_ALV,
IT_LAYOUT1 TYPE SLIS_LAYOUT_ALV,
WA_FIELD_CAT TYPE SLIS_FIELDCAT_ALV,
WA_FIELD_CAT1 TYPE SLIS_FIELDCAT_ALV,
IT_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_EVENTS TYPE SLIS_T_EVENT,
WA_EVENTS TYPE SLIS_ALV_EVENT,
IT_HEADER TYPE SLIS_T_LISTHEADER,
WA_HEADER TYPE SLIS_LISTHEADER,
wa_keyinfo TYPE slis_keyinfo_alv.
CONSTANTS:c VALUE 'X'.
SELECT-OPTIONS: S_pernr FOR pa0002-pernr.
START-OF-SELECTION.
SET PF-STATUS 'DATA' .
PERFORM GET_DATA.
PERFORM BUILD_FIELD_CAT.
PERFORM GET_EVENTS.
PERFORM DISPLAY_DATA.
*& Form get_data
text
FORM GET_DATA .
SELECT pernr
begda
endda
vorna
nachn
FROM pa0002
INTO CORRESPONDING FIELDS OF TABLE IT_pa0002
WHERE pernr IN S_pernr.
ENDFORM. " get_data
*& Form build_field_cat
text
FORM BUILD_FIELD_CAT .
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'CHECKBOX'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'Check Box'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'PERNR'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'Personnel no'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'BEGDA'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'Start date'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'ENDDA'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'End date'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'VORNA'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'First name'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'NACHN'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'Last name'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'PERNR'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'Personnel no'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'BEGDA'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'Start date'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'ENDDA'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'End date'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'VORNA'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'First name'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'NACHN'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'Last name'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'PERNR'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'personnelno'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'BEGDA'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'begindate'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'ENDDA'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'enddate'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'ANSAL'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'annualsalary'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'LGA01'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'wagetype'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'BET01'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'Amount'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
ENDFORM. " build_field_cat
*& Form display_data
text
FORM DISPLAY_DATA .
it_layout-box_fieldname = 'CHECKBOX'.
it_layout-EDIT = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT = IT_FIELD_CAT
IS_LAYOUT = IT_LAYOUT
IT_EVENTS = IT_EVENTS
TABLES
T_OUTTAB = IT_pa0002.
ENDFORM. " display_data
*& Form get_events
text
FORM GET_EVENTS .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
ET_EVENTS = IT_EVENTS .
READ TABLE IT_EVENTS INTO WA_EVENTS
WITH KEY NAME = SLIS_EV_TOP_OF_PAGE.
IF SY-SUBRC = 0.
WA_EVENTS-FORM = 'TOP_OF_PAGE'.
MODIFY IT_EVENTS FROM WA_EVENTS INDEX SY-TABIX.
ENDIF.
ENDFORM. " get_events
*& Form top_of_page
text
FORM TOP_OF_PAGE.
WA_HEADER-TYP = 'H'.
WA_HEADER-INFO = 'EMPLOYEE DATA'.
APPEND WA_HEADER TO IT_HEADER.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_HEADER
ENDFORM. "top_of_page
*& Form GUI_SET
FORM GUI_SET USING RT_EXTAB TYPE SLIS_T_EXTAB .
SET PF-STATUS 'DATA' .
ENDFORM. "GUI_SET
*& Form USER_COMMAND
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
R_SELFIELD TYPE SLIS_SELFIELD.
DATA:V_PERNR LIKE PA0002-PERNR.
CASE R_UCOMM.
WHEN 'DET'.
DATA: V_FLAG.
clear : v_flag.
LOOP AT IT_PA0002.
if it_PA0002-checkbox = 'X'.
v_flag = 'X'.
v_pernr = IT_PA0002-PERNR.
SELECT PERNR
BEGDA
ENDDA
VORNA
NACHN
FROM PA0002
INTO CORRESPONDING FIELDS OF TABLE IT_PA00021
WHERE PERNR = V_PERNR.
SORT IT_PA00021 BY PERNR.
DELETE ADJACENT DUPLICATES FROM IT_PA00021 COMPARING PERNR.
READ TABLE IT_PA00021 INDEX 1.
SELECT PERNR
BEGDA
ENDDA
ANSAL
LGA01
BET01
FROM PA0008
INTO TABLE IT_PA0008
FOR ALL ENTRIES IN IT_PA00021
WHERE PERNR = IT_PA00021-PERNR.
if not it_PA0008[] Is initial.
SORT IT_PA0008 BY PERNR.
delete adjacent duplicates from it_PA0008 comparing pernr.
READ TABLE IT_PA0008 INDEX 1.
endif.
endif.
enddo.
it_layout1-group_change_edit = c.
it_layout1-colwidth_optimize = c.
it_layout1-zebra = c.
it_layout1-detail_popup = c.
it_layout1-get_selinfos = c.
it_layout-expand_fieldname = 'EXPAND'.
wa_keyinfo-header01 = 'PERNR'.
wa_keyinfo-item01 = 'PERNR'.
IF NOT V_FLAG IS INITIAL.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = IT_LAYOUT1
IT_FIELDCAT = IT_FIELD_CAT1
I_TABNAME_HEADER = 'PA0002'
I_TABNAME_ITEM = 'PA0008'
IS_KEYINFO = wa_keyinfo
TABLES
T_OUTTAB_HEADER = IT_PA00021
T_OUTTAB_ITEM = IT_PA0008.
ENDIF.
CLEAR: IT_PA00021,IT_PA0002,IT_PA0008.
ENDLOOP.
WHEN 'BACK'.
EXIT.
ENDCASE.
ENDFORM. "USER_COMMAND
reward points if useful,
venkat. -
Regarding transfer of data from old pernr to new pernr
Hi Gurus,
here i am with scenario,transfer data from old pernr to new pernr with out using actions type.
it is better can anyone tell me the function module for the above scenario.Hi,<br>
What do you mean by new pernr?
Is the employee rejoined the same company in same country? - Then can change the employement status of the employee in IT0000 to active and the load other required data for this use REHIRE action.This will with only old pernr. (there is no new pernr concept. employee is just rejoining the same company in same country)
or if you have to use different pernr, then use to alteast use hiring action to create new pernr. I believe you are doing that . If you need to use old employee data from old pernr, then connect old pernr record with new pernr record using Reference Personnel Id concept of IT0031.
Please read the SAP document on help.sap. and go ahead.
If it is for different country also you can use IT0031.
I can copy paste the text from help,sap but it would look like junk. It better you and read through the document to understand the concept.
Then let me know if you need any help and do provide feedbk.
Good luck<br><br>
Thanks,
Amosha
<br><br>"Known is a drop & unknown is an OCEAN!"
Edited by: Amosha on Jun 25, 2009 11:42 PM -
Update the Billing orders after display/ modifiy in the Editable ALV
Hi Experts,
I have created one Editable ALV to display theBilling order with BP details,
Once user get the ALV output he can modify the content and same will be updated once he hits UPDATE button.
my requirement is after user hits the UPDATE button a background should be created and update of BO should happen also user user should able to see the status by checking the SPOOL.
currently i am using the FM crm_order_maintain to update, kindly guide me how to process this step in background for all the entries which are selected in ALV by user.
i think i can use SUBMIT with JOB_OPEN and JOB_CLOSE, but i need some same code & guidance.
Thanks in Advance.
Regards,
Pradeepproblem solved
-
Row wise total in editable ALV
hello all,
I am workin on editable alv, the user need to enter the values in the editable fields and in the last column(non-editable) i need to populate the total row wise,as soon as user enters a value and goes to next editable cell or on entering a vale and press enter.how to accomplish this task...
with regards,
sandeep akella.
Edited by: sandeep akella on Aug 20, 2009 1:58 PMYou need to Implement the OnCellAction event.follow these steps;
1. Goto WDDOMODIFYVIEW and place the following code
IF first_time IS INITIAL.
DATA lo_cmp_usage TYPE REF TO if_wd_component_usage.
lo_cmp_usage = wd_this->wd_cpuse_usg_alv( ).
IF lo_cmp_usage->has_active_component( ) IS INITIAL.
lo_cmp_usage->create_component( ).
ENDIF.
DATA lo_interfacecontroller TYPE REF TO iwci_salv_wd_table .
lo_interfacecontroller = wd_this->wd_cpifc_usg_alv( ).
DATA lo_value TYPE REF TO cl_salv_wd_config_table.
lo_value = lo_interfacecontroller->get_model(
CALL METHOD lo_value->if_salv_wd_table_settings~set_cell_action_event_enabled
EXPORTING
value = abap_true.
ENDIF.
2. Implement the onCellAction event as follows;
Goto Methods tab, create a new method. Method Type- Event Handler , Event - ON_CELL_ACTION
3. Now in this method retrive the contents of the row and calculate the value as follows.
DATA: l_element TYPE REF TO if_wd_context_element.
DATA:ls_stru TYPE wd_this->element_cn_alv.
DATA: l_node TYPE REF TO if_wd_context_node.
l_node = wd_context->get_child_node( 'CN_ALV' ).
l_element = l_node->get_element( r_param->index ).
l_element->get_static_attributes( IMPORTING static_attributes = ls_stru ).
ls_stru-last_col = ls_stru-col1+ls_stru-col2....+ ls_stru-col5. " add all the cells data
l_element->set_static_attributes( exporting static_attributes = ls_stru ). -
Hi guys,
I use the following method (register_edit_event) in the PBO soon after first display of an editable ALV grid to register enter as an event to do validations on fields like qty. If user enters some character like 'abc' for qty and hits enter on keyboard, ALV grid pop's up a standard message ( I haven't coded for this.Since I use DDIC structure in field catalog, the Std. ALV program takes care of it. ). THis takes care of the validation before I click on save.
call method alv_grid->register_edit_event
exporting
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
This works fine. But I want this validation to run when I also click the SAVE button of the screen. Is it possible to run this standard validation in my PAI event eg. SAVE ? I thought I will be, by calling the method check_changed_data in my PAI event. But this is doing nothing. Does this method conflict with register_edit_event or something ? So , basically what I am looking for is to trigger the event or call the method which does the same work as the "check" button on ALV grid.
Any advice or tips or sample code is greatly appreciated.
Thanks,
ShareenHi Shareen,
Handle the data_changed event in the grid.
Whenever you make changes in the data in ALV Grid this event would be triggered. Here you can perform additional validations that you may need to perform.
METHODS handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.
Implementation:
METHOD handle_data_changed.
PERFORM validations USING er_data_changed.
ENDMETHOD.
FORM validations USING er_data_changed TYPE REF TO cl_alv_changed_data_protocol.
DATA: ls_good TYPE lvc_s_modi.
DATA wa LIKE LINE OF lt_good_cells.
CALL METHOD g_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
LOOP AT er_data_changed->mt_good_cells INTO ls_good.
CASE ls_good-fieldname.
WHEN 'FIELDNAME'. "Your fieldname
CALL METHOD er_data_changed->get_cell_value "Get the changed value
EXPORTING
i_row_id = ls_good-row_id
i_fieldname = ls_good-fieldname
IMPORTING
e_value = temp. "Your temp variable
"Make your validations here.
ENDCASE.
Ps: Reward points if helpful.
Regards,
Wenceslaus. -
Capture contents from an editable alv
I'm trying to capture fields from an editable alv. I have an update button in the application toolbar. So when i press this button, whatever changes I have done on the screen, the internal table should get updated. I'm using the function module REUSE_ALV_GRID_DISPLAY.
Can anybody help me out??Yes you can,
If you have access to the element in the context that is bound to the row in the ALV then you can connect the message. Marking a * is not possible by default with the WD message manager and you willl need to do it manually. Use the element method of the message manager API for this purpose. -
Get data in editable ALV back to internal table without data_changed ev?
Hi,
I have an editable ALV using classes to whch I have users the option to edit directly on the screen or upload data from an excel. The event data_changed gets triggered when users edit the table on the screen.
However when EXCEL is uploaded, I refresh the table display. So, I need a way to get the data from the ALV into a internal table to check which rows were update using the excel and save them into the db table.
PrakashHi!
For more information, inspect programs suiting the mask "BCALVEDIT*" and the thread with header "How to make a row of ALV editable " (I know this is some more steps further from your demand but it may be useful) at URL " How to make a row of ALV editable " .
If you want to study more BC412 "EnjoySAP Controls" may help you.
*--Serdar -
Hi Leads,
I am working on Editable ALV using REUSE_ALV_GRID_DISPLAY_LVC.
But, my requirement is I need to track the changes in Report.
After editing the ALV report, I need to update the data base with the changed records and Need to display them as One more Report.
Can you please suggest me any to resolve my issue?
Thanks,
SandeepYou may need to check
http://wiki.sdn.sap.com/wiki/display/Snippets/UpdatingtheInternalTable-AfterEditinALVusingFunctionModules
a® -
Update out_tab data in editable ALV
Hi,
I am working on editable ALV using oops. I want to insert the data into database tables after user insert the data in ALV based on the application tool bar button action.
How to refresh the data in out_tab, If user click the application tool bar button then I need to save the ALV grid data in database table.
Please give me the valuable suggestions.
- Rayudusolved my self
-
Editable alv: add custom validation and display "errors" in protocol list
Hi,
What I want to do:
PAI validation of editable alv with displaying error's in the protocol list by adding custom entries to the existing protocol object.
What is my problem:
After registering "data_changed event", the protocol list don't appear.
My understanding is, that the object "er_data_changed" is passed by the event "data_changed"
an so I thought I can add some more entries to the protocol list.
After "de-registering" the "data_changed" event, the protocol appears with the standard errros messages (e.g. "input to numeric" by enter charachters)
One more hint:
By creating a new object "er_data_changed" in the handler method the protocol list works, but I would like to append entries to the object that was passed with the event.
Probably I've misunderstand something, please help !
My coding:
PAI:
trigger event "data_changed" -> calls handler method
CALL METHOD r_myalv->check_changed_data
IMPORTING
e_valid = is_valid.
stop processing
IF is_valid NE 'X'.
MESSAGE 'invalid input' TYPE 'E' .
ENDIF.
handler method:
handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid IMPORTING e_ucomm
er_data_changed.
METHOD handle_data_changed.
data: ls_mod_cell type lvc_s_modi.
CALL METHOD er_data_changed->add_protocol_entry
EXPORTING
i_msgid = 'SU'
i_msgty = 'E'
i_msgno = '000'
i_msgv1 = 'This is a test !'
i_fieldname = ls_mod_cell-fieldname.
er_data_changed->refresh_protocol( ).
er_data_changed->DISPLAY_PROTOCOL( ).
ENDMETHOD. "handle_data_changedDear Olaf,
If understood correctly, you want to Edit an ALV and do some data validations when some data is changed in an ALV. To do this follow the following steps:
1. Before displaying ALV, Register the edit event.
* Set cell modified to trigger data_changed
CALL METHOD go_alv_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
2. Register the event DATA_CHANGED of class CL_GUI_ALV_GRID & handle the event.
SET HANDLER lo_event_receiver->handle_data_changed FOR go_alv_grid.
The event DATA_CHANGED of class CL_GUI_ALV_GRID has a parameter ER_DATA_CHANGED which is of type CL_ALV_CHANGED_DATA_PROTOCOL.
This er_data_changed has internal table MT_MOD_CELLS(contains index of records changed ) & MP_MOD_ROWS(contains the changed row), using these update your internal table accordingly.
DATA : wa_mod_cell TYPE lvc_s_modi.
FIELD-SYMBOLS: <fs> TYPE table.
LOOP AT er_data_changed->mt_mod_cells INTO wa_mod_cell.
ASSIGN er_data_changed->mp_mod_rows->* TO <fs>.
READ TABLE <fs> INTO wa_output INDEX wa_mod_cell-tabix.
MODIFY lt_output FROM wa_output INDEX wa_mod_cell-row_id.
ENDLOOP.
3. Here it self you can do the required data validations(No need of any PAI modules) as below.
IF wa_orders-zfstfirmtyp = c_9.
MESSAGE s288(zcsp).
DELETE er_data_changed->mt_mod_cells.
EXIT.
ENDIF.
Regards
Kesava -
Get Current row in Editable ALV
Hi,
I have editable alv, when i press "insert row" or "Append row" i need to get current inserted/appended row element reference or index.
How can i get this??
Please suggest.Hi kranthi ,
While inserting row you must be selecting a row, you can get the index of the selected row by this following code
get Index of selected table item
CALL METHOD NODE_NAME->GET_LEAD_SELECTION_INDEX
RECEIVING INDEX = Lv_Indx.
( DATA: Lv_Indx Type i )
or while you are appending a row you can use Describe int_table LINES lv_line and use the value of 'lv_line' as the index.
Regards
Maybe you are looking for
-
How to create a long text in phrase
The text in phrase allows only certain limit. How can we enable to have long text and how to open it and put long description . Regards, M D
-
JSF 1.0 final release problem.
My application was working when I was using the beta release. (with the old tag like input_text) I downloaded the JSF 1.0 final release from Sun and everything stopped working. The funny part is the the samples in the fina release are working. Howeve
-
No images with isight ? ?
Hi, I cant see any images with the isight camera on my new imac, the green light is on, but no images in Photo Booth, imovie and ichat. Need help. Thanks.
-
GObject : Replace Method
Hello. I am working with labview scripting in order to create a script that will replace all selected indicators with an indicator from a ctl file. However, I can't seem to figure out the GObject method "Replace". Attached is my current script. I was
-
Advanced RAM Optimizer problem
Pls RIM sent me a message to download this application and there's this goldstar on my homescreen that has refused to leave. I cant even open the message in my folder, it only permits delete which doesn't remove the star and the message comes back af