How to display text type(Basic Texts) for product in CRM WebUI
hi,
I am new to CRM WebUI. We have Basic Texts (note type) configured for CRM Products. We want to store long desciption of product information here. I have added it through text types and text determination procedure configurations
1. CRM > Basic Functions > Text Management > Define Text Objects and Text Types and
2. CRM > Basic Functions > Text Management > Define Text Determination Procedure.
I can see my text type comming in SAPGUI. I have a business requirement to show this text type on the WebUI...
Please let me know how to make it appear on the product maintainance page in WebUI.
regards
Raghavendra
It should be available in std view. If not you can make the Assignment Block visisble in your Overview Page (Component - PRDTXT, View - ListWindow). You will get a Assignment Block named Notes.
Hope this is what you are looking for.
Regards,
Alin
Similar Messages
-
How to display texts automatic. besides entered value for a field in Trans.
How to display texts automatically besides the entered value for a field in a standard transaction screen. For example you have a value table and a text table associated to it. Then on entering the value field and pressing enter the text associated should get displayed immediately besides the value. Like if you have 'LOC' as the value and 'Location' as the text associated to it, on entering this value 'LOC', you automatically get the text 'Location' printed besides it automatically in a transaction screen ?
Message was edited by: Sarika KediaHi sarika,
Welcome to SDN.
1. first of all, such display of text,
is not automatic.
(it appears to be automatic)
2. At design time,
a) take one extra field for text
and mark it as OUTPUT ONLY
3. Then in PBO coding,
call some module, and in that module
write code
4. The code should be to
select from TEXT Table
into the work area.
EG. THE SCREEN TEXT FIELD NAME IS
T510A-FIELDNAME.
CLEAR t510a.
SELECT SINGLE * FROM t510a INTO t510a
WHERE trfar = FIELVALUE.
5. This will take care of
displaying the text value of that field.
regards,
amit m. -
How to get Text for nodes in Tree Structure
Hi Friends,
How to get Text for nodes in Tree Structure
REPORT YFIIN_REP_TREE_STRUCTURE no standard page heading.
I N I T I A L I Z A T I O N
INITIALIZATION.
AUTHORITY-CHECK OBJECT 'ZPRCHK_NEW' :
ID 'YFIINICD' FIELD SY-TCODE.
IF SY-SUBRC NE 0.
MESSAGE I000(yFI02) with SY-TCODE .
LEAVE PROGRAM.
ENDIF.
class screen_init definition create private.
Public section
public section.
class-methods init_screen.
methods constructor.
Private section
private section.
data: container1 type ref to cl_gui_custom_container,
container2 type ref to cl_gui_custom_container,
tree type ref to cl_gui_simple_tree.
methods: fill_tree.
endclass.
Class for Handling Events
class screen_handler definition.
Public section
public section.
methods: constructor importing container
type ref to cl_gui_custom_container,
handle_node_double_click
for event node_double_click
of cl_gui_simple_tree
importing node_key .
Private section
private section.
endclass.
*& Classes implementation
class screen_init implementation.
*& Method INIT_SCREEN
method init_screen.
data screen type ref to screen_init.
create object screen.
endmethod.
*& Method CONSTRUCTOR
method constructor.
data: events type cntl_simple_events,
event like line of events,
event_handler type ref to screen_handler.
create object: container1 exporting container_name = 'CUSTOM_1',
tree exporting parent = container1
node_selection_mode =
cl_gui_simple_tree=>node_sel_mode_multiple.
create object: container2 exporting container_name = 'CUSTOM_2',
event_handler exporting container = container2.
event-eventid = cl_gui_simple_tree=>eventid_node_double_click.
event-appl_event = ' '. "system event, does not trigger PAI
append event to events.
call method tree->set_registered_events
exporting events = events.
set handler event_handler->handle_node_double_click for tree.
call method: me->fill_tree.
endmethod.
*& Method FILL_TREE
method fill_tree.
data: node_table type table of abdemonode,
node type abdemonode.
types: begin of tree_node,
folder(50) type c,
tcode(60) type c,
tcode1(60) type c,
tcode2(60) type c,
text(60) type c,
text1(60) type c,
text2(60) type c,
end of tree_node.
data: wa_tree_node type tree_node,
t_tree_node type table of tree_node.
wa_tree_node-folder = text-001.
wa_tree_node-tcode = text-002.
wa_tree_node-text = 'Creditors ageing'.
wa_tree_node-tcode1 = text-003.
wa_tree_node-text1 = 'GR/IR aging'.
wa_tree_node-tcode2 = text-004.
wa_tree_node-text2 = 'Bank Balance'.
append wa_tree_node to t_tree_node.
clear wa_tree_node .
wa_tree_node-folder = text-005.
wa_tree_node-tcode = text-006.
wa_tree_node-text = 'Creditors ageing'.
wa_tree_node-tcode1 = text-007.
wa_tree_node-text1 = 'Creditors ageing'.
wa_tree_node-tcode2 = text-008.
wa_tree_node-text2 = 'Creditors ageing'.
append wa_tree_node to t_tree_node.
clear wa_tree_node .
wa_tree_node-folder = text-009.
wa_tree_node-tcode = text-010.
wa_tree_node-text = 'Creditors ageing'.
wa_tree_node-tcode1 = text-011.
wa_tree_node-text1 = 'Creditors ageing'.
wa_tree_node-tcode2 = text-012.
wa_tree_node-text2 = 'Creditors ageing'.
append wa_tree_node to t_tree_node.
clear wa_tree_node .
node-hidden = ' '. " All nodes are visible,
node-disabled = ' '. " selectable,
node-isfolder = 'X'. " a folder,
node-expander = ' '. " have no '+' sign forexpansion.
loop at t_tree_node into wa_tree_node.
at new folder.
node-isfolder = 'X'. " a folder,
node-node_key = wa_tree_node-folder.
clear node-relatkey.
clear node-relatship.
node-text = wa_tree_node-folder.
node-n_image = ' '.
node-exp_image = ' '.
append node to node_table.
endat.
at new tcode .
node-isfolder = ' '. " a folder,
node-n_image = '@CS@'. "AV is the internal code
node-exp_image = '@CS@'. "for an airplane icon
node-node_key = wa_tree_node-tcode.
node-text = wa_tree_node-text .
node-relatkey = wa_tree_node-folder.
node-relatship = cl_gui_simple_tree=>relat_last_child.
endat.
append node to node_table.
at new tcode1 .
node-isfolder = ' '. " a folder,
node-n_image = '@CS@'. "AV is the internal code
node-exp_image = '@CS@'. "for an airplane icon
node-node_key = wa_tree_node-tcode1.
node-relatkey = wa_tree_node-folder.
node-relatship = cl_gui_simple_tree=>relat_last_child.
node-text = wa_tree_node-text1.
endat.
append node to node_table.
at new tcode2 .
node-isfolder = ' '. " a folder,
node-n_image = '@CS@'. "AV is the internal code
node-exp_image = '@CS@'. "for an airplane icon
node-node_key = wa_tree_node-tcode2.
node-relatkey = wa_tree_node-folder.
node-relatship = cl_gui_simple_tree=>relat_last_child.
node-text = wa_tree_node-text2.
endat.
append node to node_table.
endloop.
call method tree->add_nodes
exporting table_structure_name = 'ABDEMONODE'
node_table = node_table.
endmethod.
endclass.
*& Class implementation
class screen_handler implementation.
*& Method CONSTRUCTOR
method constructor.
create object: HTML_VIEWER exporting PARENT = CONTAINER,
LIST_VIEWER exporting I_PARENT = CONTAINER.
endmethod.
*& Method HANDLE_NODE_DOUBLE_CLICK
method handle_node_double_click.
case node_key(12).
when 'Creditors'.
submit YFIIN_REP_CREADITORS_AGING via selection-screen and return.
when 'Vendor'.
submit YFIIN_REP_VENDOR_OUTSTANDING via selection-screen and return.
when 'Customer'.
submit YFIIN_REP_CUSTOMER_OUTSTANDING via selection-screen and
return.
when 'GR/IR'.
submit YFIIN_REP_GRIR_AGING via selection-screen and return.
when 'Acc_Doc_List'.
submit YFIIN_REP_ACCOUNTINGDOCLIST via selection-screen and return.
when 'Bank Bal'.
submit YFIIN_REP_BANKBALANCE via selection-screen and return.
when 'Ven_Cus_Dtl'.
submit YFIIN_REP_VENDORCUST_DETAIL via selection-screen and return.
when 'G/L_Open_Bal'.
submit YFIIN_REP_OPENINGBALANCE via selection-screen and return.
when 'Usr_Authn'.
submit YFIIN_REP_USERAUTHRIZATION via selection-screen and return.
endcase.
endmethod.
endclass.
Program execution ************************************************
load-of-program.
call screen 9001.
at selection-screen.
Dialog Modules PBO
*& Module STATUS_9001 OUTPUT
text
module status_9001 output.
set pf-status 'SCREEN_9001'.
set titlebar 'TIT_9001'.
call method screen_init=>init_screen.
endmodule. " STATUS_9001 OUTPUT
Dialog Modules PAI
*& Module USER_COMMAND_9001 INPUT
text
module user_command_9001 input.
endmodule. " USER_COMMAND_9001 INPUT
*& Module exit_9001 INPUT
text
module exit_9001 input.
case sy-ucomm.
when 'EXIT'.
set screen 0.
endcase.
endmodule.
exit_9001 INPUTyou can read the table node_table with nody key value which imports when docubble click the the tree node (Double clifk event).
Regards,
Gopi .
Reward points if helpfull. -
How to extract TEXT for archived Purchase Orders ?
Hi Friends,
Can any one tell me how to extract TEXT for archived Purchase Orders ?
I have used READ_TEXT but that is not fetching texts for archived PO's. Whenever I am trying to fetch data from STXH against archived PO, no value is coming and resulting SY_SUBRC <> 0.
Any demo code will be highly appreciated.
Thanks in advance..
SivajiHi,
You can see that table STXH is linked to archiving object MM_EKKO (you can see it in tcode DB15).
My suggest is that you must get the data. See the demo object BC_SBOOK in tcode AOBJ. You can see the report to reload data. The object is get the data in an internal table. So for report SBOOKR you can see this function module:
* get data records from the data container
* SBOOK
CALL FUNCTION 'ARCHIVE_GET_TABLE'
EXPORTING
archive_handle = lv_handle
record_structure = 'SBOOK'
all_records_of_object = 'X'
TABLES
table = lt_sbook_tmp
EXCEPTIONS
end_of_object = 0. "not entries of this type
* check lt_sbook_tmp entries against selections. Delete not
* requested entries
LOOP AT lt_sbook_tmp ASSIGNING <ls_sbook>
WHERE carrid IN s_carrid
AND connid IN s_connid
AND fldate IN s_fldate.
APPEND <ls_sbook> TO lt_sbook.
ENDLOOP.
REFRESH lt_sbook_tmp.
The idea is that you get the same data that you handle in READ_TEXT (because you don't have the data in database) and recovery the text.
I hope this helps you
REgards
Eduardo -
How to display text on last but one page in SAPSCRIPTS
how to display text on last but one page in SAPSCRIPTS
u have create one Foooter window , this has to be called in only One Page.So hardcode /assign this window to only one PAGE number.
regards
Prabhu -
How we enter text for materials in purchase order smartform
hi guru
how we enter text for materials in purchase order smartform
my requirement is create smartform for purchase order.
in this i have to create item-text, by using which tcode we can give item data
plz give more expalnation for this plzzzzzzzzzHi,
You can use read_text function module for readind text of material and store this value in internal table later pass this internal table to smartform will solve your problem.
otherwise there is direct option for text element property that is include text u can use that also
Regards
Gagan -
How to display text on last but one page
how to display text on last but one page
Hi Preeti,
If u r working on a smartform then click on th window go to the condition tab there
at the end u will find events click on the the event on which u want to trigger the
print.
If u r working on a script then create a text element and call this text elemtn at
the end of processing of the main window, this will make sure that thetext element
is triggered only at the end.
I hope that helps u , if not pls let me know.
Regards,
Vaibhav B Gawali. -
How to display the selection screen fields for selected checkboxes
Hi all,
I have 7 checkboxes, for each check box we have some seletion screen fields.if i select first check box,i want to display first slection screen fields only.
and if we select more than one check box how to display the selection screen fields for selected check boxes,please help me this
Thanks
sriman.hi,
Try this code
report z_13317_sdn2.
tables : mara, marc, dd03l.
parameters : p_chk1 as checkbox user-command ABC,
p_chk2 as checkbox user-command PQR,
p_chk3 as checkbox user-command XYZ.
select-options : s_matnr for mara-matnr modif id A,
s_ersda for mara-ersda modif id A,
s_werks for marc-werks modif id B,
s_lvorm for marc-lvorm modif id B,
s_tab for dd03l-tabname modif id C.
data: v_chk1,
v_chk2,
v_chk3.
at selection-screen output.
loop at screen.
if screen-group1 = 'A' or
screen-group1 = 'B' or
screen-group1 = 'C'.
screen-input = 0.
modify screen.
endif.
endloop.
loop at screen.
if v_chk1 = 'X'.
if screen-group1 = 'A'.
screen-input = 1.
modify screen.
endif.
endif.
if v_chk2 = 'X'.
if screen-group1 = 'B'.
screen-input = 1.
modify screen.
endif.
endif.
if v_chk3 = 'X'.
if screen-group1 = 'C'.
screen-input = 1.
modify screen.
endif.
endif.
endloop.
at selection-screen.
if sy-ucomm = 'ABC'.
if v_chk1 = ' '.
v_chk1 = 'X'.
else.
v_chk1 = ' '.
endif.
endif.
if sy-ucomm = 'PQR'.
if v_chk2 = ' '.
v_chk2 = 'X'.
else.
v_chk2 = ' '.
endif.
endif.
if sy-ucomm = 'XYZ'.
if v_chk3 = ' '.
v_chk3 = 'X'.
else.
v_chk3 = ' '.
endif.
endif.
Regards,
Sailaja. -
How do you make suggestions to apple for product improvement?
how do you make suggestions to apple for product improvement?
http://www.apple.com/feedback/
They read all feedback but won't reply. -
Replicating Custom Fields for Products in CRM from ECC
Hi All,
I am having difficulty in replicating SAP standard field values from ECC to custom fields for products in CRM. This is what i did:
1. I created a new settype(ZMASTER_INFO) with a single attribute(ZIND_STD) and added
this new settype to MAT_HAWA. (As all our materials fall under this material type).
2. I am looking to map SAP standard field from ECC to this custom field of mine.
I wrote the code in CRM BADI
'ZPRODUCT_CUSTOMER2->MAP_R3_TO_CRM_MATERIAL' with the following code:
DATA: ls_ZMASTER_INFO TYPE ZMASTER_INFO_maintain.
DATA: ls_category_bdoc TYPE COMT_PROD_CAT_REL_MAINTAIN,
ls_category TYPE COMT_PROD_CAT_REL,
lt_categories TYPE COMT_PROD_CAT_REL_TAB,
ls_settype TYPE COMT_settype_ext,
ls_cat_settype_rel TYPE COMT_CAT_FRAG_REL,
lt_cat_settype_rel TYPE COMT_CAT_FRAG_REL_TAB,
lt_cat_settype_rel_all TYPE COMT_CAT_FRAG_REL_TAB.
LOOP AT lt_cat_settype_rel_all INTO ls_cat_settype_rel.
CALL FUNCTION 'COM_SETTYPE_READ_SINGLE'
EXPORTING
IV_SETTYPE_GUID = ls_cat_settype_rel-frgtype_guid
IMPORTING
ES_SETTYPE = ls_settype
EXCEPTIONS
NOT_FOUND = 1
NO_IMPORT_VALUES = 2
NO_TEXT_FOUND = 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.
CASE ls_settype-frgtype_id.
WHEN 'ZMASTER_INFO'.
ls_ZMASTER_INFO-relation-owner = 'X'.
ls_ZMASTER_INFO-relation-logsys = cs_product_bdoc-header-com_product-logsys.
ls_ZMASTER_INFO-data-ZZ0010 = is_mara-STD_DESCR.
ls_ZMASTER_INFO-DATA_X-ZZ0010 = 'X'.
APPEND ls_ZMASTER_INFO TO cs_product_bdoc-data-ZMASTER_INFO.
APPEND ls_settype-FRGTYPE_GUID TO cs_product_bdoc-data-MNT_SETTYPE.
ENDCASE.
ENDLOOP.
Since in ECC i am not having any custom fields i did not write any code in ECC for TPS34 and TBE24. I just wrote this BADI in CRM and using the field S_MARA-STD_DESCR.
I am not sure if i need to write the code in ECC. COUld anyone please confirm if i need the code in ECC?
Also in the CRM BADI, lt_cat_settype_rel_all is EMPTY. Not sure how this gets its value.
Could anyone please suggest if i am missing anything here? Any help is appreciated.
Thanks,
Karuna.Hi Karuna,
One more solution is to change the BDoc data content before it hit the Database.
this can be done in badi: Data_Exchange_badi (if u dont find this try with following search string: xchange)
In the above mention badi you will find a method which is used to populated the contend jst after bdoc in CRM is being populated by R/3 data.
Best Regards,
Pratik Patel
<b>Reward with Points!</b> -
How to display text variable of type customer exit
Hi to all,
I have created a query in query designer which display sales value according to plant.
There i have also used a variable which will take input from user and restricted on 0CALDAY.
I have also created 2 text variable to display the text for sales based on input in variable.
I need when user enter the 01.02.2010 - 31.12.2010 value in variable , text variable should display SALES FROM 01.02.2010 TO 31.12.2010
i knew how to do that by using text variable of processing type customer exit.
But display of text variable is like SALES FROM 01022010 TO 31122010 ,
But i need that SALES 01.02.2010 TO 31.12.2010
i shall be thankfull to you for this.
Regards
Pavneet Rana
Edited by: pavneet rana on Dec 22, 2010 7:46 AM
Edited by: pavneet rana on Dec 22, 2010 8:03 AMHi,
Give Description on Sales Amount as SALES FROM &ZVAR_YEAR1& TO &ZVAR_YEAR2&.
ZVAR_YEAR1 & ZVAR_YEAR2 are the two text variables. These two variables should NOT be input enabled.
In the Exit - under I_STEP = 2, write the below code.
WHEN 'ZVAR_YEAR1'.
DATA: l_s_range TYPE rs_s_range,
loc_var_range TYPE rrs0_s_var_range.
READ TABLE i_t_var_range INTO loc_var_range WITH KEY vnam = 'ZVAR_INPUT_CALDAY'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = loc_var_range-low.
APPEND l_s_range to e_t_range.
WHEN 'ZVAR_YEAR2'.
DATA: l_s_range TYPE rs_s_range,
loc_var_range TYPE rrs0_s_var_range.
READ TABLE i_t_var_range INTO loc_var_range WITH KEY vnam = 'ZVAR_INPUT_CALDAY'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = loc_var_range-high.
APPEND l_s_range to e_t_range. -
How to display text in script as same as text in news paper
Hi Expets
I have a requirement i need to display text in script as same as text displayed in news paper
with out creating any windows. iie ( Abcdef should be in one cloum after some space i need to display 1234)
please let me know how can i achieve this
Ex
1.
hi abcdef 12345
abcedf 12345
abcedf 12345
Regards
Suresh
Edited by: suribabu124 on Jun 15, 2010 7:55 AMHi,
If you need to print a form like news paper you need go for multiple main windows.We know that we can use 99 main windows in one page.first create one main window and then leave a space then create one more window and select window type as mainwindow.
while populating data,after completion of one main window the control will move to next main window,which is in the same page.
Like this you need to analyse and code according to your requirement. -
How to display TEXT vertically in SMART FORM
Hai,
I need to display the column name of a table vertically (readable from bottom to top) in smart form.
Could any one please tell me how to do this?
Thanks & Best Regards,
Maniyam Bhaskar.Hi,
Go through these threads for the discussions happened on similar issue... hope it helps you..
how to print text vertically in smart forms
vertical and horizontal printing in same page with smartforms or sapscript
Good luck
Narin -
How to display TEXT more than 500 char in a report as multiple lines.
Hi Friends,
i have a requirement like i should display Texts of length more than 500 Characters in a report( ALV LIST) as multiple lines
I am fetching the data Using FM READ_TEXT
the output im currently geeting with 150 Char in lenth as a single line
How we can split the text into multiple lines in a report
first i would like to know is it possible? if possible please give your valuable suggitions if not is there any alternative way to do this task.
Thanks & regards
kumar.Hi,
This is possible but the Solution might not look Standard/Appropriate to you.
In ALV, you can have Multiple Line Output...There is a Field in the Field Catalogue..called as Row_position...this is by default 0...which means Single row/Line ALV output....You can have this Value in the Range of 0 to 3.......A ALV field with row_position 1, will be displayed in the second line for every record...i.e. you will have multiple line for a single record of ALV.
In your case......you can use this but you need to split your field in two fields.....but you may end up spliting a single word....but for that also you can design the logic of splitting the Fiel value at SPACE only......
This may work.......and Sorry if not work...... -
How to display text in addition to average group result
Hi All,
This is probably really simple but i need your help.
What i have done:
I have 4 questions which each one has 5 radio box options. For each group of questions, i have put a value of 1-5 for the radio boxes.
What i am trying to do:
What i want to do is calculate the total for the group results as an average and display some additional text. T
The averaging for the group results is working, but i dont know how to add the additional text for the 1-5 values returned.
For example, if the average for all 4 questions turns out to be 3, i want the text box to not only display 3 but state Moderate - 3; or something like 3 - Moderate.
Any help would be greatly appreciated.
Thank you,
GregLike in Excel you need to add some additional code but with JavaScript it is a lot more code. Unless you use a hidden field to hold the computed average, you need to provide all the code to perform the average, that is sum all the fields and divide by the number of fields. Once you have that value you can concatenate the text to the number. Or you could have one text field with the computed average and a second text field with the text. You will also have to deal with the average not always being a whole number. If you change the number of decimal places for your solution, you will see this.
function GetField(cName) {
// get object for field with cName;
// return object or null if not found;
var oField = this.getField(cName);
if(oField == null) app.alert("Field named " +cName + " not found.", 0, 0);
return oField;
} // end GetField function;
function Sum(aNames) {
// get sum of the fields in aNamee array;
var nSum = 0; // sum of fields;
var nValue; // value or a single field;
// process array of field names;
for(i = 0; i < aNames.length; i++) {
var nValue = GetField(aNames[i]).valueAsString;
if(isNaN(nValue) == false) nSum += Number(nValue);
} // get next field name;
return nSum;
} // end Sum function;
function Average(aNames) {
// compute average of the values of array of field names;
var nAverage = "";
var nSum = Sum(aNames); // get sum of field values;
if(aNames.length > 0) nAverage = nSum / aNames.length;
return nAverage;
} // end Average function;
// array of field names to average;
var aFields = new Array("Value.0", "Value.1", "Value.2", "Value.3", "Value.4");
// compute average using the function and place result in a variable;
var nAverage = Average(aFields);
// array of text for value of average;
var aResult = new Array("Zero average", "Poor", "Better", "Mid point", "Better", "Best");
// display computed average and text;
event.value = nAverage + " " + aResult[Math.floor(nAverage)];
Maybe you are looking for
-
Hi, I am new to flex. I am developing a web application in flex. I want to do the photo uploading functionality in flex and action script3. I have to do that like "Applet photo uploader" Like what we have in facebook photo uploader. Means on left I h
-
Can I Use A Pre-Paid Phone As My Upgrade??
I need to upgrade my phone, I purchased a prepaid phone from virgin mobile earlier this year, and was wondering if there was a way I could just use that for my new upgrade instead of having to fork out more money for yet another new phone.
-
MGP compose postponed because of unprocessed data in the in_queue
Could anybody shed some light on what does this mean? "MGP compose postponed for B010MRM because of unprocessed data in the in_queue" Thanks in advance, dliu We saw this one in the "Moblile Manager" Data Synchronization > MGP Apply/Compose Cycles > M
-
I have some problems to send a PDF FILE to a http server using if_http_client class with for example methods : CALL METHOD client->request->set_header_field CALL METHOD client->send CALL METHOD client->receive I dont want to use FM SO_NEW_DOCUMENT_A
-
Deleted sales order remains in document flow
Hello! The problem: We had sales order with reference to a contract. We deleted the sales order (it doesn't appear in VBAK anymore), but, the sales order still appears in VBFA (if we see the document flow for the contract, the sales order still appea