How to create node
Hi,
I am doing one file to file scenario.
My file structure will be like this.
MT_FILE
->FILE
->LINE01
-> FIELD 1
-> FIELD 2
-> FIELD 3
-> FIELD 4.
IF all the fields are containing values then its working fine.
if at all last field is filled with space the sender adapter is picking the file well and when i see in payload node has not been generated even i have given filed occurence as 1 to 1.
I have kept Fields optional as YES in file content conversion of sender.
as node field4 has not been generated my reciever communication channel is not working.
Would appreciate your suggests.
Chandra,
Do you use a fieldFixedLenghts
Try this
NameA.missingLastfields add
I
f this doesn't work try using the NameA.additionalLastFields also with te above
Check the last line in the following link
http://help.sap.com/saphelp_nw04/helpdata/en/2c/181077dd7d6b4ea6a8029b20bf7e55/content.htm
Similar Messages
-
How to create Node, Attributes and Table Dynamically?
Hi All,
How to create node and attributes dynamically, and with this node i want to create table dynamically?? Any related code please?
Thanks
Venkat.HI
I guess you are asking the same thing in some other post also .
use the code as mentioned there also.
data: wd_node_info type ref to if_wd_context_node_info,
wd_node type ref to if_wd_context_node,
lr_container type ref to cl_wd_uielement_container,
lv_tablename type string,
lt_db_data type ref to data,
lr_table type ref to cl_wd_table,
ls_attribute type wdr_context_attribute_info.
field-symbols: <lt_data> type any table.
wd_node_info = wd_context->get_node_info( ).
CALL METHOD WD_NODE_INFO->ADD_NEW_CHILD_NODE
EXPORTING
*STATIC_ELEMENT_TYPE = 'ZDEALER'
NAME = 'NODE'
IS_MULTIPLE = ABAP_TRUE
IS_INITIALIZE_LEAD_SELECTION = ABAP_FALSE
RECEIVING
CHILD_NODE_INFO = wd_node_info.
wd_node = wd_context->get_child_node( name = 'NODE' ).
wd_node_info = WD_node->GET_NODE_INFO( ).
data dyn_attr_info type wdr_context_attribute_info.
DYN_ATTR_INFO-NAME = 'X1'. "Attribute Name
DYN_ATTR_INFO-TYPE_NAME = 'STRING' ." Data Element(CHAR20) ( Type Of Attribute )
DYN_ATTR_INFO-NODE_INFO = wd_node_info.
CALL METHOD wd_node_info->ADD_ATTRIBUTE
EXPORTING
ATTRIBUTE_INFO = DYN_ATTR_INFO.
DYN_ATTR_INFO-NAME = 'X2'. "Attribute Name
DYN_ATTR_INFO-TYPE_NAME = 'STRING' ." Data Element(CHAR20) ( Type Of Attribute )
DYN_ATTR_INFO-NODE_INFO = wd_node_info.
CALL METHOD wd_node_info->ADD_ATTRIBUTE
EXPORTING
ATTRIBUTE_INFO = DYN_ATTR_INFO.
lr_container ?= view->get_root_element( ).
cl_wd_matrix_layout=>new_matrix_layout( container = lr_container ).
" Creating internal table with the same structure as our dynamic context node
CALL METHOD CL_WD_table=>new_table
EXPORTING
bind_data_source = 'NODE'
ID = 'TABLE'
RECEIVING
control = lr_table.
cl_wd_matrix_head_data=>new_matrix_head_data( element = lr_table ).
*lr_table->bind_data_source( path = 'NODE' ).
data lr_table_col type ref to cl_wd_table_column.
data lr_table_col1 type ref to cl_wd_table_column.
data lr_text_view type ref to cl_wd_text_view.
data lr_input_field type ref to cl_wd_input_field.
DATA lr_column_name_header TYPE REF TO cl_wd_caption.
lr_input_field = cl_wd_input_field=>new_input_field(
bind_value = 'NODE.X1' ID = 'INP' ).
LR_TABLE_COL = cl_wd_table_column=>new_table_column( id = 'COL1' ).
lr_table->add_column( the_column = lr_table_col ).
lr_column_name_header ?= cl_wd_caption=>new_caption( text = 'X1').
lr_table_col->set_table_cell_editor(
THE_TABLE_CELL_EDITOR = lr_input_field ).
lr_table_col->set_header( lr_column_name_header ).
lr_text_view = cl_wd_text_view=>new_text_view(
bind_text = 'NODE.X2' ID = 'TXT' ).
LR_TABLE_COL1 = cl_wd_table_column=>new_table_column( id = 'COL2' ).
lr_table->add_column( lr_table_col1 ).
lr_column_name_header ?= cl_wd_caption=>new_caption( text = 'X2').
lr_table_col1->set_table_cell_editor(
THE_TABLE_CELL_EDITOR = lr_text_view ).
lr_table_col1->set_header( lr_column_name_header ).
lr_container->add_child( lr_table ).
cl_wd_matrix_head_data=>new_matrix_head_data( element = lr_table ).
thanks
sarbjeet singh -
HOW TO CREATE NODES IN A TREE DYNAMICALLY
Hi Experts,
How to create node in a tree dynamically......
my requirement is in tree there should be nodes which should contain some applications....
plz explain clearly na......
help me in this ......
waiting for u r response .....
Regars,
ShilpaHi shilpa,
These may help you...
Re: dynamic generation of Tree UI element
dynamic programming part in below link
http://help.sap.com/saphelp_nw2004s/helpdata/en/21/ad884118aa1709e10000000a155106/content.htm
try to search on Tree node creation in below link
http://www.sap-press.de/download/dateien/1103/sappress_maximizing_web_dynpro_for_java.pdf
regards,
Pradeep
Edited by: pradeep bondla on Jun 26, 2008 3:39 PM -
How to create a node with attributes at runtime in webdynpro for ABAP?
Hi Experts,
How to create a node with attributes at runtime in webdynpro for ABAP? What classes or interfaces I should use? Please provide some sample code.
I have checked IF_WD_CONTEXT_NODE_INFO and there is ADD_NEW_CHILD_NODE method. But this is not creating any node. I this this creates only a "node info" object.
I even check IF_WD_CONTEXT_NODE but i could not find any method that creates a node with attribute.
Please help!
Thanks
GopalHi
I am getting the following error while creating a dynamic context node with 2 attributes. Please help me resolve this problem.
Note
The following error text was processed in the system PET : Line types of an internal table and a work area not compatible.
The error occurred on the application server FMSAP995_PET_02 and in the work process 0 .
The termination type was: RABAX_STATE
The ABAP call stack was:
Method: IF_WD_CONTEXT_NODE~GET_STATIC_ATTRIBUTES_TABLE of program CL_WDR_CONTEXT_NODE_VAL=======CP
Method: GET_REF_TO_TABLE of program CL_SALV_WD_DATA_TABLE=========CP
Method: EXECUTE of program CL_SALV_WD_SERVICE_MANAGER====CP
Method: APPLY_SERVICES of program CL_SALV_BS_RESULT_DATA_TABLE==CP
Method: REFRESH of program CL_SALV_BS_RESULT_DATA_TABLE==CP
Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE_DATA of program CL_SALV_WD_C_TABLE_V_TABLE====CP
Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE of program CL_SALV_WD_C_TABLE_V_TABLE====CP
Method: IF_SALV_WD_COMP_TABLE_DATA~UPDATE of program CL_SALV_WD_C_TABLE_V_TABLE====CP
Method: IF_SALV_WD_VIEW~MODIFY of program CL_SALV_WD_C_TABLE_V_TABLE====CP
Method: IF_SALV_WD_COMPONENT~VIEW_MODIFY of program CL_SALV_WD_A_COMPONENT========CP
My code is like the following:
TYPES: BEGIN OF t_type,
CARRID TYPE sflight-carrid,
CONNID TYPE sflight-connid,
END OF t_type.
Data: i_struc type table of t_type,
dyn_node type ref to if_wd_context_node,
rootnode_info type ref to if_wd_context_node_info,
i_node_att type wdr_context_attr_info_map,
wa_node_att type line of wdr_context_attr_info_map.
wa_node_att-name = 'CARRID'.
wa_node_att-TYPE_NAME = 'SFLIGHT-CARRID'.
insert wa_node_att into table i_node_att.
wa_node_att-name = 'CONNID'.
wa_node_att-TYPE_NAME = 'SFLIGHT-CONNID'.
insert wa_node_att into table i_node_att.
clear i_struc. refresh i_struc.
select carrid connid into corresponding fields of table i_struc from sflight where carrid = 'AA'.
rootnode_info = wd_context->get_node_info( ).
rootnode_info->add_new_child_node( name = 'DYNFLIGHT'
attributes = i_node_att
is_multiple = abap_true ).
dyn_node = wd_context->get_child_node( 'DYNFLIGHT' ).
dyn_node->bind_table( i_struc ).
l_ref_interfacecontroller->set_data( dyn_node ).
I am trying to create a new node. That is
CONTEXT
- DYNFLIGHT
CARRID
CONNID
As you see above I am trying to create 'DYNFLIGHT' along with the 2 attributes which are inside this node. The structure of the node that is, no.of attributes may vary based on some condition. Thats why I am trying to create a node dynamically.
Also I cannot define the structure in the ABAP dictionary because it changes based on condition
Message was edited by: gopalkrishna baliga -
How to create reports servers with the same name in two nodes in Reports
Greetings
We are migrating Oracle Application Server 10g (9.0.4) to a better hardware infrastructure with high availability. We want to provide 2 new Oracle Application Server 10g (9.0.4) in High availability and we want to avoid modify the existing forms and reports code, but the code is looking for a specific reports server name when calling reports, but I couldn't create the same reports server name in the both oas machines, I could create the reports server in only one node. I want to create a reports server with the same name in both nodes but it is not possible. I know that there is a procedure to do that in 10.1,2 (Note 437228.1, How to Create Two Reports Servers With the Same Name in the Same Subnet) but I couldn't find the equivalent procedure in 9.0.4.
Anybody kwows how to create a reports server with the same name in two nodes using 10g (9.0.4)
Thanks
Ramiro Ortiz.Hello.
I applied the patch 4092150 on my oas 9.0.4.2 and I modified my rwnetwork.conf file changing the port to 14022 by following the note "How to Create Two Reports Servers With the Same Name in the Same Subnet? [ID 437228.1]" but I am facing the same error rep-56040 "server already exists in the network".
When I run osfind command I get the following information (My reports server is senarep and I want to create it on SNMMBOGOAS10):
osfind: Found 2 agents at port 14000
HOST: SNMVBOGOAS10.sena.red
HOST: SNMVBOGOAS09.sena.red
osfind: There are no OADs running on in your domain.
osfind: There are no Object Implementations registered with OADs.
osfind: Following are the list of Implementations started manually.
HOST: SNMVBOGOAS10.sena.red
REPOSITORY ID: IDL:oracle/reports/server/EngineComm:1.0
OBJECT NAME: senarep2
REPOSITORY ID: IDL:oracle/reports/server/ServerClass:1.0
OBJECT NAME: senarep2
HOST: SNMVBOGOAS09.sena.red
REPOSITORY ID: IDL:oracle/reports/server/EngineComm:1.0
OBJECT NAME: senarep
REPOSITORY ID: IDL:oracle/reports/server/ServerClass:1.0
OBJECT NAME: senarep
Any Ideas? -
How to create one more server node for SAP J2EE server?
Hi,
Can any one please suggest how to create one more server node for SAP J2EE server? I am using WAS700.
Thanks and Regards,
Smriti.Hai,
Login into the Configtool(C:\usr\sap\SID\DVEBMGS<inst no>\j2ee\configtool) if ABAP+JAVA stack or C:\usr\sap\SID\JC<inst no>\j2ee\configtool) if JAVA stack
click on the instance and and select the addserver button on the top to create a servernode for J2EE server.
Thanks and Regards, -
How to create Event Node in smartform
Hi Experts,
could you please tell me how to create event node in smartform
Thanks in Advance,
Thanks&Regards
GeethaHI,
plz explain your problem in deeply.
And as per me you first create page and righ click on it
Then create window as per your requirement.
if you want to put condition ot events true or false Righ click on your window
then goto flow logic -> Altenative
You can found 2 events in Condition.
So you can assign this events.If you want to put condition or event on test then goto Text here in General Attributes in bottom side you can find even on page.
Try it. -
How to create client and server app using node.js in firefox os.
I want to create a client and server app using node.js for firefox os. Please suggest me how to create a apps.
I want to send a request from client to server and based on client request, service reply to client.
If any links available, Please share it.
ThanksHi sb00349044,
The SUMO forums focuses on end-user support.
For questions about developing for Firefox OS, you will find better guidance in MDN, StackOverflow, and mailing lists:
* [https://developer.mozilla.org/en-US/Firefox_OS MDN - Firefox OS]
* [http://stackoverflow.com/questions/tagged/firefox-os StackOverflow - Firefox OS]
* [https://lists.mozilla.org/listinfo Mailing Lists at Mozilla]
Thanks,
- Ralph -
ABAP MAPPING Querry - How to create Different Target NODE NAME as of Source
Hi,
In abap Mapping
<b>DATA READ FROM SOURCE XML NODE into <u>incode</u></b> ******
data: incode type ref to if_ixml_node_collection.
incode = idocument->get_elements_by_tag_name( 'BUSINESS_DAY' ).
<b>CREATE OUTPUT XML NODE WITH SAME NAME AS <u>'BUSINESS_DAY'</u></b> **
data: outcode type ref to if_ixml_node.
outcode = incode->get_item( index = 0 ).
data irc type i.
irc = msgtype->append_child( outcode ).
*<b>BUT TO CREATE OUTPUT XML NODE WITH <u>DIFFERENT NAME AS 'BUSS_DAY'</u></b>*
data: ws_val type string VALUE 'xyz'.
data: elementsender type ref to if_ixml_element.
elementsender = odocument->create_simple_element(
name = 'BUSS_DAY'
value = ws_val
parent = msgtype ).
<b>Please guide me how I can assign <u>incode</u> value to ws_val.
So that I can generate <u>OUTPUT XML NODE with different name as of SOURCE XML NODE</u></b>
i.e. How to create Different Target NODE NAME as of
Source with same Data
<Note>: I am using "How to... Use ABAP Mapping in XI 3.0 ver.1.00" and to create different NODE name as of source
is not given in it.
Thanks & Regards.Hi ABAPers,
Please Guide Me .....
<u>This is ABAP Mapping problem in XI.</u>
<b>How can I read data from incode into ws_val.</b>
data: <b>ws_val</b> type string
data: <b>incode</b> type ref to if_ixml_node_collection.
<b>incode</b> = idocument->get_elements_by_tag_name( 'BUSINESS_DAY' ).
Best Regards -
How to create a node in the transaction?
Hi !
In R/3 , How can i create a node underwhich I want to assign my generic datasource?
I went to RSA5, there create node is hidden under hierarchy menu item.
Waiting for your reply.
Regards
DuraiHi Vineet,
There is no way to create a node in the interface. But DDIC type interface can be created with similar structure to the node in the ABAP Web Dynpro Component.
Ranganathan. -
How to create a new tree node with the initial edit function
Hi all,
I would like to mimic the Windows system when the user creates a new node. The newly created node should be in the edit mode, i.e.it should
be highlighted and the cursor should be appear at the end of
the newly created node name.
I have the folloing code after I create the new node and set its selection:
TreePath selectionPath = getTree().getSelectionPath();
tree.startEditingAtPath(selectionPath);
However, this only partially does what I want, the cursor does not appear at the end of the node's name and I am not sure how to select the text name of the new node.
I hope someone can help.
KanitaI haven't tried myself but my guess is that you need to customize your tree cell editor for putting
cursor at specific position, etc. -
How to create second database at ASM in 4 node RAC system
Hi Experts,
we use 4 nodes RAC (11.0.1) with 10.2.0. 4 database in red hat5.0
we want to add second database at ASM in RAC system based on manager decision.
how do I add second database in ASM with exist database?
Do I need to created new ASM insatnce?
how to create two new diskgroup? is it under existing ASM instance or new ASM instance?
how to reset ASM properity to support ( or new) ASM instance and two database?
Do I need to configure AMS again after added more space into ASM?
I could not find ducument that add seconf database into ASM in RAC system.
I want add second database by dbca. any experience for add second database in ASM RAC ?
Thanks for help!
JImHi... I'm in the same situation.
I need to add a new second database on a RAC installation based on already available ASM instance.
I'm using 11gR2.
I read your suggested documentation. Then I typed asmca and analyzed my asm configuration:
As you can see I have a DISK GROUP NAME with several FREE space.
!http://img522.yfrog.com/img522/8405/dbca20100203173248.jpg!
If I select Volumes tab the following is my current configuration:
!http://img682.yfrog.com/img682/562/dbca20100203173343.jpg!
Selecting Create button, I can insert some values as you can see:
!http://img403.yfrog.com/img403/9889/dbca20100203173403.jpg!
First question:
Is this the right way to create space for a new database ? Consider that running dbca.. no DISK GROUP NAME is available.
Second question:
When I created my first database on this DISK GROUP NAME no volumes were created. Why now I have to do it ? Is this necessary to really separate datafiles coming from different databases ? -
How to create Hierarchy Tree Node structure?
Hi experts,
I want to know how to create a tree with kind of below Structure:
Root A
NodeA1
ITEMA1_IT1
ITEMA1_IT2
ITEMA1_IT3
NodeA2
ITEMA2_IT1
ITEMA2_IT2
NodeA3
ITEMA3_IT1
ITEMA3_IT2
ITEMA3_IT3
ITEMA3_IT4
So when i click on Root A it shows me, NODEA1, NODEA2 & NODEA3....
when further i click on NODEA1, it shows me items like ITEMA1_IT1,ITEMA1_IT2, ITEMA1_IT3.
when further i click on NODEA2, it shows me items like ITEMA2_IT1,ITEMA2_IT2.
SO item will get loaded when i click on perticular node.
how its possible.
I have gone through SDN so many threads, bt i didn't get exactly for webdynpro ABAP.
Please guide me for the same.
Thanks ,
Saurin ShahHi,
you can create the tree you wanted as follows:
1) create a node under your context say "root_node" with cardinality 1..1
2) now create an attribute under it called "text" with type string.
3) now create three nodes under this "root_node" called nodeA1 nodeA2 and nodeA3 with cardinality 0..n
4) now under nodeA1 , nodeA2 and nodeA3 create an attribute called "text" with type string...so each node will have one attribute called "text" of type string...
5) now create a node under nodeA1 called "itemA1" with cardinlity 0..n
6) now create an attribute called "text" of type string under this node "itemA"...
7) repeat step 5 and 6 for the other two nodes...nodeA2 and nodeA3
8) now create six supply functionsthese functions will supply the text values for your nodes-
I created like this:
FILL_ITEM1
FILL_ITEM2
FILL_ITEM3
FILL_NODEA1
FILL_NODEA2
FILL_NODEA3
Note:*******************my view is called MAIN******************
hence the coding is
data
lt_elements type if_main=>elements_nodea1.
if you view is called view1...than the data declaration would be
data
lt_elements type if_view1=>elements_nodea1.
9) go to each node and assign the supply function respectively....you can assign this by going to context tab and selecting the node you want to assign the supply function to and just type in the name of the supply funciton or do the help for that field by clicking on the little square btn...
10) now we go the layout tab and put the tree ui on the layout....bind the datasource property to the context node "root_node"
and bind the rootText property to the attribute "text" of the root_node...
11) now right click on this tree ui element under the ROOTUIELEMENTCONTAINER and select "insert node type" ...a box will appear where you can see it has two types of node for you....one is tree_node_type and other one is tree_item_type...
create three nodes with tree_node_type with names "nodeA1" nodeA2 and nodeA3 and three with tree_item_type with names "itemA1" itemA2 and itemA3...
12) now bind all these node types and item types data sources and texts with corresponding nodes and attributes under your context...
so nodeA1datasource will get bind to context nodeA1 and itemA1 data source will get bind to itemA1 from context..and so on...
13) now in the wddoinit method: I setup the text for the root node.....
DATA lo_nd_root_node TYPE REF TO if_wd_context_node.
DATA lo_el_root_node TYPE REF TO if_wd_context_element.
DATA ls_root_node TYPE wd_this->element_root_node.
DATA lv_root_txt TYPE wd_this->element_root_node-root_txt.
navigate from <CONTEXT> to <ROOT_NODE> via lead selection
lo_nd_root_node = wd_context->get_child_node( name = wd_this->wdctx_root_node ).
get element via lead selection
lo_el_root_node = lo_nd_root_node->get_element( ).
@TODO fill attribute
lv_root_txt = 'Root Node'.
set single attribute
lo_el_root_node->set_attribute(
name = `ROOT_TXT`
value = lv_root_txt ).
hope this will give you the solution you are looking for...
Thanks...
AS........... -
How get context value form a dynamic created node
Hi all,
I have build my own dynamic view. In this view I use also a dynamic created Node. When I have more rows in my Node I see every row with context of the last row of the dynamic Node.
this is the source I use.
for (int x = 0; x < dynTabNode.size(); x++)
dynTabNode.setLeadSelection(x);
IWDGroup group = (IWDGroup)view.getElement("Group_name");
IWDAttributeInfo aiName = wdContext.getChildNode("DayNode", IWDNode.LEAD_SELECTION).getNodeInfo().getAttribute("Name");
IWDCaption name = (IWDCaption) view.createElement(IWDCaption.class, null);
name.bindText(aiName);
group.addChild(name);
for (int i = 8; i < 18; i++)
int teller = i * 100;
IWDGroup group1 = (IWDGroup)view.getElement("hour" + teller);
for (int z = 0; z < 12; z++)
IWDImage image = (IWDImage) view.createElement(IWDImage.class, "Image" + teller + "_" + x);
image.setWidth("10");
image.setHeight("24px");
image.setBorder(0);
IWDAttributeInfo att = dynTabNode.getNodeInfo().getAttribute("hour" + teller);
image.bindSource(att);
group1.addChild(image);
teller = teller + 5;
How can I read my Node row for row?
Richard
Edited by: Armin Reichert on Jul 28, 2008 5:03 PMThe reason is that all these Caption UI elements are bound against the same context attribute. At runtime this will be resolved to the attribute value of the lead-selected node element. In this example you can fix this by not binding the "text" property but setting it to the attribute value of the iterated node element:
for (int x = 0; x < dynTabNode.size(); x++)
dynTabNode.setLeadSelection(x);
IWDGroup group = (IWDGroup)view.getElement("Group_name");
IWDCaption name = (IWDCaption) view.createElement(IWDCaption.class, null);
IWDNode dayNode = wdContext.getChildNode("DayNode", IWDNode.LEAD_SELECTION);
String text = (String) dayNode.getElementAt(x).getAttributeValue("Name");
name.setText(text);
IWDAttributeInfo aiName = dayNode.getNodeInfo().getAttribute("Name");
name.bindText(aiName);
group.addChild(name);
(I assume here that the node "DayNode" has the same size as dynTabNode. No idea if this assumption is correct)
But this would not help for editable elements where you need to bind the edited property.
Armin -
How to create new node in feature
Dear Members,
Culd any one help me out .........
How to create new node in features..
Example: NUMKR
On defaulting which option to select to create new node?
Return value
field for decision operation
sub feature
programme
debugging operation
error operation
comment
How to proceed................????????????hi,
Where you can select the option field for decision operation then select the filed which you want like personal area, subarea, employee group and subgroup.
and then select the node and then goto create and assign the return value by selecting the option ' Return value'.
NUMKR -> FILED - PERSKGemployee group) -> field PERSK(employee sub group) and --> return value.
thanks,
Vasu.
Maybe you are looking for
-
Is it possible to see the timestamp from the camera in my timeline?
I have been given notes to look out for certain things according to the time on the camera from when the clip was recorded. I can see the start and end times for my clips where I import the media clips. I can also see the camera time ticking up when
-
How to make outer join in Sub Query?
Hi! I'm facing one problem. Can anyone tell me - how to make outer join in sub query? I'm pasting one sample code - select e.empno, e.ename,e.job,e.sal,d.deptno,d.dname from d_emp e, d_dept d where e.deptno(+) = ( case
-
Functional module for Getting Material classification data.
Please tell me Functional module for Getting Material classification data like class type , class, characteristics and characteristics values for material.
-
Hi, I just recently had a faulty 1st gen ipod 16gb the audio/headphone jack wasn't working it would cut in an out all the time, so I took it to the apple store "Comp now" in Geelong, they told me what i was up against and what not the price which was
-
OCR - possible double downsampling?
Hi, I'm experimenting to find out the best settings to digitizing papers for archival. Right now, I have them scanned at 300 dpi, converted to PDF using Acrobat, and in Acrobat I OCR them so that I can search and highlight etc. I prefer the retain im