ALV GRID (add_protocol_entry)
Dear SDN,
I'm using edit grid.
How could I use the method call method p_data_changed->add_protocol_entry, outside event data_changed?
I need to check the data (all lines of te grid) at an (Z) user-comand.
Thanks!
Best regards,
Maria João Rocha
Call this method in your Z user command
call method cl_gui_alv_grid=>check_changed_data
importing
e_valid = v_valid.
if not v_valid is initial.
" Data changed
else.
" Data not changed
endif.
a®
Similar Messages
-
Editing An ALV Grid and saving finally.
Hİ !
former Abap programmer I have modified CN47N as ZCN47N and made the some of the fields of the grid Editable.
The user changes some of the fields and then press Enter occasionally. When he wants to save he clicks a Save button.
If I use
call method g_d_grid->set_ready_for_input
exporting
i_ready_for_input = 1.
call method g_d_grid->register_edit_event
exporting
i_event_id = cl_gui_alv_grid=>mc_evt_enter
exceptions
error = 1
others = 2.
the "data_changed " event of the ALV grid is fired every time the user press Enter BUT CAPTURES ONLY THE LAST EDITS.
But I can update the neighboring cells of the editable cells immediately by this way.
If I disable the mc_evt_enter event , The user can save ALL of the changes with the firing of gr_grid->checked_changed_data which fires the data_changed event.
But by this way I can not update the neighboring cells of the editable cells with the explanation of the editable cells.
My Question:
1) Will data_changed_finished event suit better than data_changed_?
2) Is there a moderate way in which I can use the enter key and capture all the changes that have been made in the grid ?
thanks.
erkan.DATA_CHANGED triggers as soon as you enter the value and move away to different cell. Parameter ER_DATA_CHANGED of the handler method of DATA_CHANGED would have MT_GOOD_CELLS and MT_BED_CELLS. Based on this you can validate the values and update the Protocol table using the method ADD_PROTOCOL_ENTRY.
If you have to modify other cells based on the entered cells, you need to use this DATA_CHANGED method, because here you can get / change the data of the cell using the method GET_CELL_VALUE & MODIFY_CELL. in this method, the entered data is not yet visible in your ALV data table.
DATA_CHANGED_FINISHED triggers after the data has been updated in the ALV data table. So, if you wish to change the other cells it too late. You need to modify the table and call the refresh method to actually refresh the data.
Regards,
Naimesh Patel -
How to suppress the protocol dialog screen in ALV grid ?
To check the values in the ALV grid we make use of the method add_protocol_entry from the class interface CL_ALV_CHANGED_DATA_PROTOCOL. The coloring of the wrong cells in the ALV grid is a nice feature but the popup screen that appears on every entry that is incorrect is not so nice. Is there a possibility to suppress this dialog screen without stopping the coloring feature? Or is there an other way to get this coloring feature in the specific cells of the ALV grid. We have already tried the emphasize option in the field catalog but in this case the coloring of a cell disappears when the cursor is set on the colored field in the ALV grid.
I hope somebody can help us.
Thanks and greetings,
Ad Pegels
Suiker Unie
NetherlandsAs I understand by adding the PROTOCOL you are trying to validate some fields and display those with a different color.
Instead, if you can validate and can change the color manually I think the pop ups can be avoided. All you have to do is to add a nested internal table to the main internal table that has the display data. This nested table will be of type LVC_T_STYLE. You can add rows, one for each field that you want to display in a different color and also spcify the style in which you want to display.
Once you do that those fields should be displayed with different colors.
Regards,
Ravi
Note : Please allocate points if you find this useful. -
hi,
Hi,
I am displaying some fields from VBAP in ALV gid and have give drop down check box to storage location making it editable so if the user changes Storage location of
some entries and clicks SAVE button, when we click save button i need to capture all the rows that were been changed and update VA02 using these records through bapi.
but iam not able to capture this SAVE event but iam able to capture Enter and cursor event.
i have written following code for this
LOCAL CLASSES: Definition
class lcl_event_receiver: local class to handle event CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.
PRIVATE SECTION.
ENDCLASS. "lcl_event_receiver DEFINITION
LOCAL CLASSES: Implementation
class lcl_event_receiver (Implementation)
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_data_changed.
DATA: l_error_in_data TYPE c.
PERFORM handle_data_changed USING er_data_changed l_error_in_data.
*§7.Display application log if an error has occured.
IF l_error_in_data EQ 'X'.
CALL METHOD er_data_changed->display_protocol.
ENDIF.
ENDMETHOD. "handle_data_changed
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
*& Form handle_data_changed
Identify columns which were changed and check input
-->P_ER_DATA_CHANGED text
FORM handle_data_changed USING p_er_data_changed
TYPE REF TO cl_alv_changed_data_protocol
p_error_in_data TYPE c.
DATA : lw_mod_cell TYPE lvc_s_modi ,
l_value TYPE lvc_value ,
l_lgort TYPE lgort_d.
SORT p_er_data_changed->mt_mod_cells BY row_id .
LOOP AT p_er_data_changed->mt_mod_cells INTO lw_mod_cell
WHERE fieldname = 'LGORT'.
CALL METHOD p_er_data_changed->get_cell_value
EXPORTING
i_row_id = lw_mod_cell-row_id
i_fieldname = 'LGORT'
IMPORTING
e_value = l_value.
SELECT SINGLE lgort FROM t001l INTO l_lgort WHERE werks = p_werks
AND lgort = l_value.
IF sy-subrc NE 0.
In case of error, create a protocol entry in the *application log.
CALL METHOD p_er_data_changed->add_protocol_entry
EXPORTING
i_msgid = '0K'
i_msgno = '000'
i_msgty = 'E'
i_msgv1 = text-003
i_msgv2 = l_value
i_msgv3 = text-004
i_fieldname = lw_mod_cell-fieldname
i_row_id = lw_mod_cell-row_id.
p_error_in_data = 'X'.
EXIT.
ELSE.
*§5b.If the value is valid change values of
cells.
CALL METHOD p_er_data_changed->modify_cell
EXPORTING
i_row_id = lw_mod_cell-row_id
i_fieldname = lw_mod_cell-fieldname
i_value = l_value.
READ TABLE t_list1 INTO w_list1 INDEX lw_mod_cell-row_id.
IF sy-subrc EQ 0.
*comparing old value with the changed value
IF w_list1-lgort <> l_value.
MOVE: w_list1-werks TO w_list3-werks,
w_list1-matnr TO w_list3-matnr,
w_list1-arktx TO w_list3-arktx,
w_list1-vbeln TO w_list3-vbeln,
w_list1-posnr TO w_list3-posnr,
w_list1-pstyv TO w_list3-pstyv,
w_list1-vstel TO w_list3-vstel,
w_list1-auart TO w_list3-auart,
w_list1-kwmeng TO w_list3-kwmeng,
w_list1-vrkme TO w_list3-vrkme,
w_list1-mbdat TO w_list3-mbdat,
l_value TO w_list3-lgort.
APPEND w_list3 TO t_list3.
*t_list3 will contain all the records that are changed
CLEAR w_list3.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
*& Module STATUS_0100 OUTPUT
text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.
IF go_custom_container IS INITIAL.
create a custom container control for our ALV Control
CREATE OBJECT go_custom_container
EXPORTING
container_name = g_cont_on_main
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
IF sy-subrc NE 0.
Display error message.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = sy-repid
txt2 = sy-subrc
txt1 = 'The control could not be created'.
ENDIF.
create an instance of alv control
CREATE OBJECT go_grid
EXPORTING
i_parent = go_custom_container.
*If display or change radio button is cheked
IF ( p_chng = 'X' OR p_disp = 'X' ) .
Set a titlebar for the grid control
g_layout-grid_title = 'Sales Orders'.
g_layout-excp_fname = 'TRAFFIC_LIGHT'.
Define a drop down table.
PERFORM set_drdn_table.
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_layout = g_layout
CHANGING
it_outtab = t_list1
it_fieldcatalog = t_fieldcat1
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
register ENTER and CURSOR to raise event DATA_CHANGED.
(Per default the user may check data by using the check icon).
CALL METHOD go_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
CALL METHOD go_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CREATE OBJECT g_event_receiver.
SET HANDLER g_event_receiver->handle_double_click FOR go_grid.
SET HANDLER g_event_receiver->handle_hotspot_click FOR go_grid .
SET HANDLER g_event_receiver->handle_data_changed FOR go_grid .
ENDIF.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = go_grid.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
text
MODULE user_command_0100 INPUT.
ok_code = sy-ucomm.
CASE ok_code.
WHEN 'EXIT'.
PERFORM exit_program.
WHEN 'SAVE'.
PERFORM update_sales_order using t_list3[].
endcase.
Thanks in Advance,
SiriHi Sirisha,
You can get the event code for Enter because you have regitered in the event reciever .
But for the SAVE you will have to set in the PF-status of the screen and not the ALV-grid save .
Please award if helpful. -
Hi All,
We've created an ALV grid using classes in R3 and we're testing it in WebGUI. All of those scenarios are working fine in R3 however the behavior in WebGUI is different. We're encountering a problem wherein the cellstyles are not being reflected (eg. a particular cell for a particular row should be grayed out if a particular field has this value). Furthermore, if we enter a value in this field, it should automatically populate values for other fields (eg. column name - PERNR. Once pernr is entered; column name - NAME should have a value automatically). Another thing is, the Refresh button is missing in WebGUI. One more problem is that the error message for that particular column was not shown. We're using the add_protocol_entry method, so it should generate a pop-up screen.
Any solution for all these problems? Are these problems limitations of the ALV Grid in WebGUI?
We'll appreciate all your responses. Thanks a lot.Have a look at example code: BCALV_GRID_01, where they suppress the error by catching it...
If you are using the ABAP Grid Control (OO object), you can still create the ALV list as a spool listing for the background job.
The easiest way to do this is to put all the create object statements and method calls for the custom container and ALV grid object inside a subroutine (for example, present_grid).
All that is required is a simple check of the sy-batch variable to determine if the program is being executed in the foreground or background.
e.g. if sy-batch is initial.
call screen 0100.
else.
perform present_grid.
endif.
In a PBO module of screen 0100, the subroutine present_grid is also performed.
The set_table_for_first_display method will be invoked in the routine present_grid, however, due to the job being executed in the background, the ALV list output will be written as spool output for the background job. -
Validating in ALV grid output for double entry
Hi All,
I am trying to validate the ALV output while adding records to the screen.
I need to validate if the same primary key exist while user is creating a new record in the ALV output. If the same record is entered many time ( with the same primary key), it should pop up some error and i am calling
call method pr_data_changed->add_protocol_entry.
But i'm not able to apply the logic for 2 fields as primary key.
I check the method check_double_entry in program BCALV_EDIT_04. it does the same but it checks i field 'FLDATE' as primary key.
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.
Could you pls help me how to use this logic in case where more than 1 field is primary key.
Regards,
Santos PHi
ALV option is available from 4.7 onwards only.
the following needs to be followed in 4.7 to get in ALV:
We can get the results in ALV format just by changing the IMG settings.
Go to IMG under Materials Management -> Purchasing ->Reporting -> Maintain Purchasing Lists -> Scope of List -> Define Scope of List. Select any one option & double click. A new screen will display with lot of check boxes. in the end will find a check box for "Settings for ALV grid control. Just tick that box & save this as new name like BEST_ALV.
regards
Srinivas -
Function code for dropdown on OO ALV Grid to trigger user_command
Hi Experts,
I know we can add a dropdown to a column of an OO ALV Grid, set values to the dropdown list and allow the user to select some these values.
However , what I'm not sure is that if we can *assign a function code to the dropdown * which would then trigger the event user_command ( PAI ) of the ALV class so I can handle the changes to when a particular value is selected from a dropdown list, just like we do in normal dialogs.
Now I know that I can register the 'Enter' event and handle the data changes in data_changed event, but that is something I want to avoid the user from doing as far as possible to make the report more user friendly.
Awaiting your valuable inputs and would really appreciate your help.
Thanks & regards,
AdvaitHi Advait,
No problem. Yes, this functionality requires changing the focus to other cell.
I think there is other solution. As the dropdown is kind of F4 activity try this way:
data: it_f4 type lvc_t_f4,
wa_f4 type lvc_s_f4.
wa_f4-FIELDNAME = 'CONNID'.
wa_f4-REGISTER = 'X'.
wa_f4-GETBEFORE = 'X'.
wa_f4-CHNGEAFTER = 'X'.
append wa_f4 to it_f4.
"register F4 event
CALL METHOD g_alv_grid_ref->register_f4_for_fields
EXPORTING
it_f4 = it_f4.
"Once you try to pick the value HANDLE_DATA_CHANGED event will be triggered
"Definition
methods:
handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed e_onf4 e_onf4_before e_onf4_after,
"Implementation
METHOD handle_data_changed .
DATA: ls_mod_cells TYPE lvc_s_modi.
IF e_onf4_before = 'X'.
MESSAGE 'Data changed before F4' TYPE 'I'.
ENDIF.
IF e_onf4 = 'X'. "if event triggered by F4
MESSAGE 'Data changed on F4' TYPE 'I'.
ENDIF.
IF e_onf4_after = 'X'.
MESSAGE 'Data changed after F4' TYPE 'I'.
ENDIF.
"here you know which cell was modified
LOOP AT er_data_changed->mt_mod_cells INTO ls_mod_cells.
"just example test case, here you can implement your code for modified cells
IF ls_mod_cells-value >=5.
CALL METHOD er_data_changed->add_protocol_entry
EXPORTING
i_msgid = 'SABAPDOCU'
i_msgty = 'E'
i_msgno = '888'
i_msgv1 = 'Only numbers below 5 are possibe'
i_msgv2 = 'Please correct'
i_fieldname = ls_mod_cells-fieldname
i_row_id = ls_mod_cells-row_id.
CALL METHOD er_data_changed->modify_cell
EXPORTING
i_fieldname = ls_mod_cells-fieldname
i_row_id = ls_mod_cells-row_id
i_value = space.
ENDIF.
ENDLOOP.
ENDMETHOD. "handle_data_changed
This approach works fine for picking value from input help. Never tried it for dropdown list. You have to try it out.
Regards
Marcin -
Determining Duplicate Entries in Editable ALV Grid
Hopefully this question is not as obvious as it may seem at first. Thanks for any input or ideas...read carefully, it is not just a simple duplicate check with which I'm having a problem.
I have an editable ALV grid and I need to ensure that the user doesn't try to enter the same material number twice. I used the program BCALV_EDIT_03 and 04 as a model. I can tell if in my session a user is trying to put in the material number twice. Not a problem. I can also tell if the user is trying to add a material to the ones already on the grid that is a duplicate. That is not a problem either. Here is the catch...and I'd like to point out that BCALV_EDIT_04 has the same problem.
The user enters line 10 with material 0245 and line 20 with 0345. There is no duplicate. Then they say, 'Oooops, I got them backward' and then move 0345 to line 10 and 0245 to line 20. When you hit enter, the change handler says that line 10 and 20 were changed and the field MATNR was changed. It then compares the new fields to what is already in the grid...low and behold the grid already has these two entries and the protocol adds the error for both lines.
I will add the code here, but it is pretty much exactly as in BCALV_EDIT_04. If you want to see the error in that program execute it, put in two new lines with the same airline and two different dates and hit save. Everything is fine. Then swap the dates and hit Save again...it will say these are duplicates, which they are not...this program is not saving to the database. The only difference between mine and bcalv_edit_04 is that mine uses an 'ENTER' event and not a 'SAVE'.
I'm looking for good ideas on how to compare the two...the mt_good_cells (session active) and the grid itself to know when a user has 'moved' data. The current workaround is for the user to copy the line and then reapply it...but that seems a bit glitchy.
Thanks in advance, I appreciate any sage advice. : )
METHOD check_double_entries.
DATA: lt_good_cells TYPE lvc_t_modi,
ls_good TYPE lvc_s_modi,
l_matnr TYPE matnr,
l_del_row TYPE lvc_s_moce,
ls_rosi LIKE LINE OF i_rosi,
l_reentered TYPE c.
LOOP AT pr_data_changed->mt_good_cells INTO ls_good.
CASE ls_good-fieldname.
WHEN 'MATNR'.
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_matnr.
READ TABLE lt_good_cells WITH KEY
value = l_matnr
TRANSPORTING NO FIELDS.
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 = ls_good-fieldname
i_row_id = ls_good-row_id.
error_in_data = 'X'.
ELSE.
ls_good-value = l_matnr.
APPEND ls_good TO lt_good_cells.
ENDIF.
ENDCASE.
ENDLOOP.
LOOP AT lt_good_cells INTO ls_good.
l_matnr = ls_good-value.
READ TABLE i_rosi WITH KEY matnr = l_matnr
TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
l_reentered = space.
LOOP AT pr_data_changed->mt_deleted_rows INTO l_del_row.
READ TABLE i_rosi INTO ls_rosi INDEX l_del_row-row_id.
IF sy-subrc NE 0.
MESSAGE i000(0k) WITH text-e01.
ELSEIF ls_rosi-matnr 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.
ENDMETHOD. "check_double_entriesHi Greg,
please check your posting in the prview tab. If the code is not formatted, you posted too much. Reduce and try again, then somebody may be willing to read.
Regards,
Clemens -
Multiple Input Rows In ALV Grid (Editable)
Hi,
I have an editable ALV grid and need to have multiple blank rows ready for input. Something similar to what happens when you click the "New Entries" button in SM30 (Table Maintainance).
There is a local function for appending lines in the ALV grid toolbar but this only allows a single entry.
I have replaced the local function with my own button (same icon etc) and on user_command event, I am appending several blank lines to my output table.
However these lines are not being shown on the screen. I have looked through the layout and field catalog but there is no field to allow blank lines to be shown.
My 2 questions are:
1. Is there some standard way of entering multiple entries in ALV Grid Editable.
2. If not then how to allow blank lines to be shown as ready for input.
Also if someone could suggest a way to do error checking for all entries on the screen especially duplicate entries I will be extremely grateful.
Many Thanks,
PreetHi, Preet!
You can easily do whatever checks you wish. You should declare an event handling method for event DATA_CHANGED and call the ADD_PROTOCOL_ENTRY method of the ER_DATA_CHANGED event parameter (it's an object of the class CL_ALV_CHANGED_DATA_PROTOCOL). You must not forget to set handler for your ALV grid.
For example, this piece of code checks for all changed fields resulting in error message if they are initial. In short, this makes all the fields obligatory.
METHODS: on_data_changed FOR EVENT data_changed OF cl_gui_alv_grid IMPORTING er_data_changed.
SET HANDLER your_object->on_data_changed FOR your_alv_grid.
METHOD on_data_changed.
DATA: s_mod_cell TYPE lvc_s_modi.
LOOP AT er_data_changed->mt_mod_cells INTO s_mod_cell.
IF s_mod_cell-value IS INITIAL.
* issue message 'Make an entry in all required fields'
CALL METHOD er_data_changed->add_protocol_entry
EXPORTING i_msgid = '00'
i_msgno = '055'
i_msgty = 'E'
i_fieldname = s_mod_cell-fieldname
i_row_id = s_mod_cell-row_id.
ENDIF.
ENDMETHOD.
Furthermore, if you make your class inherited from CL_GUI_ALV_GRID you can make use of protected attribute MT_OUTTAB which is a data object referencing your output table. Then you can have:
FIELD-SYMBOLS: <outtab> TYPE STANDARD TABLE.
ASSIGN me->mt_outtab->* TO <outtab>.
* do whatever you want with <outtab>
Hope this helps.
Kind regards,
Igor
P.S. Regarding the blank lines that you need, what's wrong with standard ALV grid buttons "Append row" and "Insert row" which appear whenever the grid is editable (unless you deliberately remove them)? They work just fine with me (just like on SM30). I don't see reason for programatically appending lines to your internal table. -
Mark fields (columns) in editable ALV Grid as mandatory
Hi,
could you please help me to set up a column in an editable alv grid as mandatory? I had a look in several references and also did not find anything in the fieldcatalog structure.
Best regards,
FabianHello Fabian
Here is some coding to explain what I meant.
*& Report ZUS_SDN_ALV_ERROR_LOG
REPORT zus_sdn_alv_error_log.
DATA:
er_data_changed TYPE REF TO cl_alv_changed_data_protocol.
START-OF-SELECTION.
* Dynpro is empty (contains no elements)
CALL SCREEN '0100'.
END-OF-SELECTION.
*& Module PBO_0100 OUTPUT
* text
MODULE pbo_0100 OUTPUT.
* Event DATA_CHANGED was fired due to changes in the editable ALV grid
IF ( er_data_changed IS BOUND ).
* User did not change any values
ELSE.
CREATE OBJECT er_data_changed
* EXPORTING
* I_CONTAINER =
* I_CALLING_ALV = <your ALV grid instance>
ENDIF.
* That is how your code probably looks like
* LOOP AT gt_outtab INTO gs_outtab.
* IF ( gs_outtab-obligatory IS INITIAL ).
* CALL METHOD go_alvlog->add_protocol_entry
* EXPORTING
* i_msgid = '00'
* i_msgty = 'E'
* i_msgno = '398'
* I_MSGV1 = 'Field OBLIGATORY must not be empty'
** I_MSGV2 =
** I_MSGV3 =
** I_MSGV4 =
* i_fieldname = 'OBLIGATORY'
** I_ROW_ID =
* I_TABIX = syst-tabix
* ENDIF.
* ENDLOOP.
* Generate a protocol for testing purposes
DO 5 TIMES.
CALL METHOD er_data_changed->add_protocol_entry
EXPORTING
i_msgid = '00'
i_msgty = 'E'
i_msgno = '398'
i_msgv1 = 'Field OBLIGATORY must not be empty'
* I_MSGV2 =
* I_MSGV3 =
* I_MSGV4 =
i_fieldname = 'OBLIGATORY'
i_row_id = syst-index
i_tabix = syst-index
ENDDO.
CALL METHOD er_data_changed->display_protocol
* EXPORTING
* I_CONTAINER =
ENDMODULE. " PBO_0100 OUTPUT
Please note that this report dumps as soon as you close the log popup. However, this will not happen within your event handler method.
Regards
Uwe -
ALV grid modifying cell content
Hi ,
I'm woking on a class based ALV GRID program.
In it i have to change the content of one cell when another cell content is changed.
I have done the using
1.Handle data changed in grid
METHOD handle_data_changed.
PERFORM data_changed USING er_data_changed.
ENDMETHOD.
*2
DAta : pw_data_changed2 TYPE REF TO
cl_alv_changed_data_protocol.
CALL METHOD pw_data_changed2->modify_cell
EXPORTING i_tabix = pwl_row_id
i_fieldname = pw_fldname
i_value = pw_fldvalue.
The problem is the cell contents are changing only when i press enter button. Is there any way as soon as i change the contents of one cell other cell contents also changes.
Regards
Srikanthhanks for the suggetions .
When I add the
CALL METHOD w_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
My earlier statements to display the error messages from
CL_ALV_CHANGED_DATA_PROTOCOL are not working (CL_ALV_CHANGED_DATA_PROTOCOL=>ADD_PROTOCOL_ENTRY).
But when I comment
CALL METHOD w_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
and press enter then the error messages in the popup window are displayed.
I tried using CL_GUI_CFW=FLUSH also. But it also not working.
why CL_ALV_CHANGED_DATA_PROTOCOL=>ADD_PROTOCOL_ENTRY is not working when i add mc_evt_modified . -
Hi,
I have used ALV grid for accepting user inputs and therby triggering certain transactions. I have made some validations on the user inputs using event data_changed of CL_GUI_ALV_GRID.
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.
Program reports errors without any problem for the first time when the user enters data and press Enter key.
The problem is when the user changes data on the input screen, internal table er_data_changed will only get the changed values which can be validated. I want to get whole table to validate due to some dependencies.
For ex: I have validation on field Doc# which will check if the line item# entered on screen is valid. first time, it checks fine but if the user changes item# again, er_data_changed will only capture this field and I dont have any validation on this field.
Please let me know how to handle this issue.
Sample code given below:
LOOP AT er_data_changed->mt_good_cells INTO ls_good.
CASE ls_good-fieldname.
check if values in columns of this row was changed
WHEN 'VBELN'.
CALL METHOD check_item_no
EXPORTING
ps_good_item_no = ls_good
pr_data_changed = er_data_changed.
Regards
KasiStep 1 - Create a screen using screen painter in the report program.
Step 2 -Set the size of the screen.
Step 3 -Place a custom control on the screen set its name to C_CONTAINER and set the size of the custom control .
Step 4 -Save and activate the screen.
Step 5 -Code the Data Declarations
o_container_alv type REF TO cl_gui_custom_container,
o_alv_grid TYPE REF TO cl_gui_alv_grid,
Step 6- Define the Receiver Class
*Event handler (local class) definition
CLASS lcl_event_receiver DEFINITION.
*Object for changed data
PUBLIC SECTION.
METHODS:
*Method to Handle Changed Data
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.
METHODS:
*Method that check data and display message
check_data
IMPORTING
pr_row TYPE lvc_s_modi
pr_msg TYPE symsgno
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
ENDCLASS. "lcl_event_receiver DEFINITION
Step 7- Create the Reference and implement the Class
DATA:
*Object declaration for local class
o_event_receiver TYPE REF TO lcl_event_receiver.
*Event handler (local class) implementation
CLASS lcl_event_receiver IMPLEMENTATION.
*Method Check Data to display Error Message
METHOD check_data.
Get the particular cell value in this case it is
of labels
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id = pr_row-row_id
i_fieldname = c_labels
IMPORTING
e_value = v_value.
Checking if labels value is 0 or initial
IF v_value IS INITIAL OR v_value EQ 0 .
v_flg_check = c_flg_x.
*Call method to display message
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid = c_msg_id
i_msgty = c_msg_typ_e
i_msgno = pr_msg
i_msgv1 = pr_row-value
i_fieldname = pr_row-fieldname
i_row_id = pr_row-row_id.
ENDIF .
ENDMETHOD. "check_data
*Method to handle change data
METHOD handle_data_changed.
*Local Data Declarations
DATA:
l_rec_mod_cells TYPE lvc_s_modi.
*Loop at all modified lines of ALV grid
LOOP AT er_data_changed->mt_mod_cells INTO l_rec_mod_cells.
Check data needs to be fired only when we have checked
the checkbox
IF l_rec_mod_cells-fieldname = c_select AND
l_rec_mod_cells-value = c_flg_x.
CALL METHOD check_data
EXPORTING
pr_row = l_rec_mod_cells
pr_msg = c_203
pr_data_changed = er_data_changed.
ENDIF.
ENDLOOP.
ENDMETHOD. "handle_data_changed
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
Step 8 - Display the ALV .PBO needs to implemented for the same
In PBO
Create the Object References
CREATE OBJECT o_container_alv
EXPORTING container_name = v_container_name.
CREATE OBJECT o_alv_grid
EXPORTING i_parent = o_container_alv.
If you wish you can exclude some of the Functionallity Like Create New
l_wa_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
APPEND l_wa_exclude TO fp_i_exclude.
l_wa_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
APPEND l_wa_exclude TO fp_i_exclude.
l_wa_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
APPEND l_wa_exclude TO fp_i_exclude.
l_wa_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
APPEND l_wa_exclude TO fp_i_exclude.
l_wa_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
APPEND l_wa_exclude TO fp_i_exclude.
l_wa_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
APPEND l_wa_exclude TO fp_i_exclude.
l_wa_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
APPEND l_wa_exclude TO fp_i_exclude.
l_wa_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
APPEND l_wa_exclude TO fp_i_exclude.
l_wa_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
APPEND l_wa_exclude TO fp_i_exclude.
l_wa_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
APPEND l_wa_exclude TO fp_i_exclude.
Call The Method to display the ALV and set the handler for the Receiver Object
CALL METHOD o_alv_grid->set_table_for_first_display
EXPORTING
is_layout = l_rec_layout
it_toolbar_excluding = i_exclude
CHANGING
it_fieldcatalog = fp_i_field_cat
it_outtab = fp_i_final_data.
CREATE OBJECT o_event_receiver.
SET HANDLER o_event_receiver->handle_data_changed FOR o_alv_grid.
This receiver object handles the error if encountered -
ALV Grid - Add/Delete/Change Values
Hi,
I have an ALV Grid with editable fields. I know want to process the changed, deleted and added lines.
Is it not possible to get the shown ALV table back?
In the event DATA CHANGED I have only attributes and methods of CL_ALV_CHANGED_DATA_PROTOCOL. So I have a method to get deleted, changed and added rows. But this event is only thrown, when I press enter or something else, but not when I´m pressing the icon for "add" or "delete".
End when the event is thrown, i´m only getting the changed data. In some case it´s not possible to react in the right way.
For example:
I have an internal table with 5 lines. I now build the alv grid with that table. When I´m now adding a line with the "add" Icon, the event is not thrown. But if I press enter, I can handle the event. In the event methods I now have one line in added data. But when I´m deleting and adding again, it sometimes "forget" some actions I have done. Isn´t there a better way to compare the changed data in ALV with my "real" internal table?
Next example:
If I´m adding a new line to the alv, I can compare the key of that line with the exisiting keys of my internal table. If the user has typed in a line with the same key, I can throw and error message.
But when the user is changing a line it should be possible to update that line. But how to compare, if the line is a new addewd line or a changed line?
I hope it´s not too complicated to understand!
Reward points guaranteed!As we can now make our ALV Grid editable we may require controlling input data. The ALV Grid has events data_changed and data_changed_finished. The former method is triggered just after the change at an editable field is perceived. Here you can make checks for the input. And the second event is triggered after the change is committed.
You can select the way how the control perceives data changes by using the method register_edit_event. You have two choices:
1. After return key is pressed: To select this way, to the parameter i_event_id pass cl_gui_alv_grid=>mc_evt_enter.
2. After the field is modified and the cursor is moved to another field: For this, pass cl_gui_alv_grid=>mc_evt_modifies to the same parameter.
To make events controlling data changes be triggered, you must select either way by calling this method. Otherwise, these events will not be triggered.
To control field data changes, ALV Grid uses an instance of the class CL_ALV_CHANGED_DATA_PROTOCOL and passes this via the event data_changed. Using methods of this class, you can get and modify cell values and produce error messages. Here are some of those methods:
get_cell_value: Gets the cell value. You pass the address of the cell to the interface.
modify_cell : Modifies the cell value addressed via parameters.
add_protocol_entry : Add a log entry. You make use of standard message interface with message type, message id, etc
protocol_is_visible : Make the error table visible or not.
refresh_protocol : Refreshing log entries.
Table 16 Methods to use for controlling data changes
With the reference of the instance, you can reach information about modifications. These useful attribute tables are:
MT_MOD_CELLS
Contains addresses of modified cells with row_ids and fieldnames.
MP_MOD_ROWS
Contains modified rows. Its type is generic.
MT_GOOD_CELLS
Contains cells having proper values
MT_DELETED_ROWS
Contains rows deleted from the list
MT_INSERTED_ROWS
Contains rows inserted to the list
Rgds
Mohit -
ALV grid abort processing, if wrong value
Hello,
i've a editable alv grid.
Is it possible to abort at event data_changed/data_changed_finished, if an value is wrong (f.e. to high < 500), and write the old value back.
Best regards,
TomSdHello Thomas
The sample report <b>ZUS_SDN_ALVGRID_EDITABLE_10</b> provides a possible (perhaps not the most elegant) solution for your problem.
*& Report ZUS_SDN_ALVGRID_EDITABLE_10
*& Description: Reset false values entered in editable ALV list
*& to original values
*& Example: Column SORT_KEY allows values from '000'-'150'
* -> reset if value > '010'
*& Thread: ALV grid abort processing, if wrong value
*& Link: https:||<a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="669430"></a>
REPORT zus_sdn_alvgrid_editable_10.
TYPE-POOLS: abap.
INCLUDE <icon>. " NOTE: replace by TYPE-POOLS: icon. on >= 6.20
DATA:
gd_repid TYPE syrepid,
gd_okcode TYPE sy-ucomm,
gs_layout TYPE lvc_s_layo,
gt_fcat TYPE lvc_t_fcat,
go_docking TYPE REF TO cl_gui_docking_container,
go_grid TYPE REF TO cl_gui_alv_grid.
TYPES: BEGIN OF ty_s_outtab.
INCLUDE TYPE knb1.
TYPES: END OF ty_s_outtab.
TYPES: ty_t_outtab TYPE STANDARD TABLE OF ty_s_outtab
WITH DEFAULT KEY.
DATA:
gt_outtab TYPE ty_t_outtab,
gt_outtab_pbo TYPE ty_t_outtab.
* CLASS lcl_eventhandler DEFINITION
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-DATA:
mo_data_changed TYPE REF TO cl_alv_changed_data_protocol.
CLASS-METHODS:
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING
er_data_changed
e_onf4
e_onf4_before
e_onf4_after
e_ucomm
sender,
handle_data_changed_finished
FOR EVENT data_changed_finished OF cl_gui_alv_grid
IMPORTING
e_modified
et_good_cells,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING
e_ucomm,
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING
e_object
e_interactive.
ENDCLASS. "lcl_eventhandler DEFINITION
* CLASS lcl_eventhandler IMPLEMENTATION
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_data_changed.
* define local data
DATA:
ld_idx TYPE i,
ls_cell TYPE lvc_s_modi,
ls_msg TYPE symsg.
FIELD-SYMBOLS:
<lt_outtab> TYPE ty_t_outtab,
<ls_outtab> TYPE ty_s_outtab.
ASSIGN er_data_changed->mp_mod_rows->* TO <lt_outtab>.
LOOP AT er_data_changed->mt_mod_cells INTO ls_cell
WHERE ( fieldname = 'ZUAWA' ).
ld_idx = syst-tabix.
IF ( ls_cell-value <= '010' ).
READ TABLE <lt_outtab> ASSIGNING <ls_outtab> INDEX ld_idx.
MODIFY gt_outtab FROM <ls_outtab> INDEX ls_cell-row_id. " !!!
ELSE.
CLEAR: ls_msg.
ls_msg-msgv1 = 'Value'.
ls_msg-msgv2 = ls_cell-value.
ls_msg-msgv3 = 'too high (> 010)'.
CALL METHOD er_data_changed->add_protocol_entry
EXPORTING
i_msgid = '00'
i_msgty = 'E'
i_msgno = '398'
i_msgv1 = ls_msg-msgv1
i_msgv2 = ls_msg-msgv2
i_msgv3 = ls_msg-msgv3
* I_MSGV4 =
i_fieldname = ls_cell-fieldname
i_row_id = ls_cell-row_id
i_tabix = ls_cell-tabix.
DELETE er_data_changed->mt_mod_cells INDEX ld_idx.
DELETE er_data_changed->mt_good_cells INDEX ld_idx.
ENDIF.
ENDLOOP.
IF ( syst-subrc = 0 ).
er_data_changed->display_protocol( ).
ENDIF.
** cl_gui_cfw=>set_new_ok_code( 'REFRESH' ). " not possible on 4.6c
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'DUMMY'
* IMPORTING
* RC =
ENDMETHOD. "handle_data_changed
METHOD handle_data_changed_finished.
* define local data
DATA:
ls_outtab TYPE ty_s_outtab,
ls_cell TYPE lvc_s_modi.
ENDMETHOD. "handle_data_changed_finished
METHOD handle_user_command.
ENDMETHOD. "handle_user_command
METHOD handle_toolbar.
* define local data
DATA:
ls_button TYPE stb_button.
ls_button-function = 'DEFAULT'.
ls_button-icon = icon_mass_change.
ls_button-quickinfo = 'Set default value for column'.
APPEND ls_button TO e_object->mt_toolbar.
ENDMETHOD. "handle_toolbar
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
START-OF-SELECTION.
SELECT * FROM knb1 INTO TABLE gt_outtab UP TO 20 ROWS
WHERE bukrs = '1000'.
gt_outtab_pbo = gt_outtab. " store PBO data
* Create docking container
CREATE OBJECT go_docking
EXPORTING
parent = cl_gui_container=>screen0
ratio = 90
EXCEPTIONS
OTHERS = 6.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Create ALV grid
CREATE OBJECT go_grid
EXPORTING
i_parent = go_docking
EXCEPTIONS
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Build fieldcatalog
PERFORM build_fieldcatalog.
PERFORM set_layout.
SET HANDLER:
lcl_eventhandler=>handle_toolbar FOR go_grid,
lcl_eventhandler=>handle_data_changed FOR go_grid,
lcl_eventhandler=>handle_data_changed_finished FOR go_grid.
* Display data
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layout
CHANGING
it_outtab = gt_outtab
it_fieldcatalog = gt_fcat
EXCEPTIONS
OTHERS = 4.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
go_grid->set_toolbar_interactive( ).
CALL METHOD go_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter
EXCEPTIONS
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.
* Link the docking container to the target dynpro
gd_repid = syst-repid.
CALL METHOD go_docking->link
EXPORTING
repid = gd_repid
dynnr = '0100'
* CONTAINER =
EXCEPTIONS
OTHERS = 4.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* ok-code field = GD_OKCODE
CALL SCREEN '0100'.
* Flow logic (no elements on screen):
* PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
* PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
END-OF-SELECTION.
*& Module STATUS_0100 OUTPUT
* text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
* SET TITLEBAR 'xxx'.
CALL METHOD go_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.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE user_command_0100 INPUT.
TRANSLATE gd_okcode TO UPPER CASE.
* Fetch changes on ALV grid
go_grid->check_changed_data( ).
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
WHEN 'DUMMY'. " do nothing but pass PAI -> list refresh at PBO
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form BUILD_FIELDCATALOG_KNB1
* text
* --> p1 text
* <-- p2 text
FORM build_fieldcatalog .
* define local data
DATA:
ls_fcat TYPE lvc_s_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
i_structure_name = 'KNB1'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = gt_fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
" Set required fields editable
LOOP AT gt_fcat INTO ls_fcat
WHERE ( fieldname = 'ZUAWA' OR
fieldname = 'BUSAB' ).
ls_fcat-edit = abap_true.
MODIFY gt_fcat FROM ls_fcat.
ENDLOOP.
DELETE gt_fcat WHERE ( fieldname = 'ZINRT' ).
ENDFORM. " BUILD_FIELDCATALOG
*& Form SET_LAYOUT
* text
* --> p1 text
* <-- p2 text
FORM set_layout .
CLEAR: gs_layout.
gs_layout-cwidth_opt = abap_true.
gs_layout-zebra = abap_true.
** gs_layout-stylefname = 'CELLTAB'.
ENDFORM. " SET_LAYOUT
Regards,
Uwe -
ALV GRID Edit Validations (how to do your own)
Hi folks, I am using ALV Grid to enter some data, I would like to do some validations on save and also adjust data in the table and validate it upon another few buttons.
All is good and works fine using the standard events, however these events are only triggered if you directly change the data yourself, <b>I need validates once a button is hit</b>.
I have been playing with the following methods, and the cells are returned in the "good" list and the mod list (as expected), but the cell on the screen is not highlighted in red, and if you change something on the screen, the messages you have added are then lost.
CALL METHOD p_grid->change_data_from_inside
EXPORTING
it_style_cells = lt_modi.
Has anyone added there own custom validations upon hitting a button - in a manner that the red cell border is shown?
I have tried both of these handlers:
CALL METHOD p_defn-grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
**Own event on enter or ucomm
CALL METHOD p_defn-grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
I am adding in my messages in event data_changed, using method add_protocol_entry of class cl_alv_changed_data_protocol - this is passed to me in the data_changed event.
I have also looked at the data_changed_finished event, but cant get anything from that either - it doesnt even keep my good fields.
Ps I have also played with the layout setting layout-val_data = 'X' and space and "C" - but the messages are still not kept, and cells not bordered in red.
The solution may have something to do with triggering the event manually somehow - but i cant find a way to call a method that would do it as they are all private!
thanks in advance - this is a tricky one!Adobe Pat 206
You cannot create a Premiere Elements (any version) DVD Template from scratch using Photoshop Elements (any version). To do that you need Photoshop CS or higher. The reason for "higher" is that earlier Photoshop versions do not support Layers Groups within the Layer Groups.
But, providing you find a version of Photoshop Elements on a given computer operating system that will open the Photoshop Layer Groups in its key structure (.psd file), you can use Photoshop Elements to edit (not create from scratch) the .psd file for the main and scene menus of a given existing Adobe theme. I am careful on my language here since there have been recent difficulties getting Photoshop Elements to do this job which it once did without issue.
The process is easy enough, but very detail dependant, with strict requirements for names files as well as Layer Groups, sublayers groups, and layers in the .psd file. To give you an idea of what is involved, please check out two articles I have written related to Premiere Elements DVD Template creation and customization.
http://www.elementsvillage.com/forums/showthread.php?t=56244
http://www.atr935.blogspot.com/2013/05/pe-one-page-14-scene-buttons-dvd-menu.html
Not placing the new menu in the correct directory and any error in spelling and such are just some of the ingredients for failure in this type of project.
Unless you want to add extra buttons to a menu, it might be easier for you to explore customization opportunties in the Movie Menu section of the program. See Tools/Movie Menus. The Movie Menus customization area should look like this
Note that the Adjustments...Menu Background shows Video or Stills among other things.
If you have questions on anything that I have written, please ask me here in your thread.
You can also check out the Adobe documentation on this type of topic.
http://help.adobe.com/en_US/premiereelements/using/WS09e4b3c48f3a79fc19b622510385d4355c-7e 0c.html
Thanks.
ATR
Maybe you are looking for
-
Can you have two seperate acounts on one MAC and if so how do you do it?
Can you have two seperate acounts on one MAC and if so how do you do it?
-
Can I restore a iPhone back up from time machine and if so how?
I have upgraded my iphone to IOS 7 this morning. However as I was backing up my phone, the cable I was using was removed from the macbook. I now have a iPhone back up that is corrupted, and when i try and restore my settings to the new IOS7 upgraded
-
Using Nightly 28.0a1, I'm having a problem with the text box fields when typing. I use Hacker's Keyboard which has onscreen arrow keys and I find it more convenient than fiddling with a tiny cursor thumb when editing text. On the Play Store Firefox i
-
I usually get pdf files (ebooks) with my mail which I save for reading later. I am unable to do it on my iPad Mini. Can someone tell me how to save these files so I can look them up later, with Adobe Reader app, or maybe some other app/folder. This a
-
Hi One of my client who has a full Oracle E-Biz suite in cluding finacials, PO, Inventory, manufacturing and projects is seeking advise on the following issues. In essence the client want's to perform some window dressing which should be out of their