File to ile using udfs
hi
can any one provide me
sample file to file scenarios using
udfs
regards
ram
Hi Ramu,
Check out this links for simple fie-to-file scenario
File-XI-File scenario and complete walk through for starters (Part1)
Introduction to simple(File-XI-File)scenario and complete walk through for starters(Part1)
Introduction to (File-XI-File) scenario and complete walk through for starters (Part2)
Introduction to simple (File-XI-File)scenario and complete walk through for starters(Part2)
File Receiver with Content Conversion
Similar Messages
-
File to file transfer using UDF
Hi
i am doing one scenario,file tofile transfer using UDF.
I will write one UDF which will read the whole content from text file and write to the target path.Ok.so i am mentioning both sender and reciver URL in UDF.is this the correct way.
then if am writing URL in UDF then is it again need to create communication channel for both.
and how i will do mapping using UDF..plz let me know weather my concept is correct or notHi,
You can do this with out UDF and through File--File Simple Scenario
What is your Typical requirement to use the UDF here.
If there is no Specific UDF Requirement means , we can follow Normal Scenario to pick the file from One place and to place it at another folder
File to File scenario:
Introduction to simple(File-XI-File)scenario and complete walk through for starters(Part1) - File to File Part 1
Introduction to simple (File-XI-File)scenario and complete walk through for starters(Part2) - File to File Part 2
https://www.sdn.sap.com/irj/sdn/wiki?path=/display/xi/flatFILETOFLATFILE&
REgards
Seshagiri -
Same file name from sender to receiver file adapter with out using UDF
Hi All,
I am working on FILE TO FILE. My requirement is same file name from sender to receiver file adapter. Is it possible to do using only Adapter Specific message properties? i mean with out using UDF.
Thanks
KarthikHi,
>>>Is it possible to do using only Adapter Specific message properties?
yes
just enable Adapter Specific message properties in sender and receiver channel for file name
and you're done
Regards,
Michal Krawczyk -
Error in mappingwith dynamic configuration using udf
Hi All,
Good Morning,
i am working with ABAP proxy to file scenarion but here according my client requirement i am using udf for file dynamic configuration.
In mapping, i mapped the field from "Filename" to message type tag(receiver file header) "/ns0:MTxxxxxxDataFile". between there two fields i am using the following udf for dynamic configuration. but i got error after testing with test data in mapping that is also mentioned below.
plz help me to solve the error. i will be wait for ur immediate response this sis very urgent.
very thankfull to immediate response.
UDF:
i am not puting any packages here.
public String putFileNameInHeader1(String a,Container container){
//write your code here
DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File", "FileName");
conf.put(key, a);
return "";
ERROR:
12:21:30 Start of test
Compilation of MMSAPLegacySalesDataToCOGNOS successful Runtime exception during processing target field mapping /ns0:MTCOGNOSLegacySalesDataFile. The message is: Exception:[java.lang.NullPointerException] in class com.sap.xi.tf._MMSAPLegacySalesDataToCOGNOS_ method putFileNameInHeader1$[cd00000038, com.sap.aii.mappingtool.tf3.rt.Context@f300f30] com.sap.aii.mappingtool.tf3.MessageMappingException: Runtime exception during processing target field mapping /ns0:MTCOGNOSLegacySalesDataFile. The message is: Exception:[java.lang.NullPointerException] in class com.sap.xi.tf._MMSAPLegacySalesDataToCOGNOS_ method putFileNameInHeader1$[cd00000038, com.sap.aii.mappingtool.tf3.rt.Context@f300f30] at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:350) at com.sap.aii.mappingtool.tf3.AMappingProgram.start(AMappingProgram.java:401) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:142) at com.sap.aii.mappingtool.tf3.AMappingProgram.execute(AMappingProgram.java:105) at com.sap.aii.ibrep.server.mapping.ServerMapService.transformInternal(ServerMapService.java:431) at com.sap.aii.ibrep.server.mapping.ServerMapService.execute(ServerMapService.java:169) at com.sap.aii.ibrep.sbeans.mapping.MapServiceBean.execute(MapServiceBean.java:52) at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0_0.execute(MapServiceRemoteObjectImpl0_0.java:301) at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0_0p4_Skel.dispatch(MapServiceRemoteObjectImpl0_0p4_Skel.java:146) at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:313) at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:199) at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:136) at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33) at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(AccessController.java:215) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170) Root Cause: com.sap.aii.utilxi.misc.api.BaseRuntimeException: Exception:[java.lang.NullPointerException] in class com.sap.xi.tf._MMSAPLegacySalesDataToCOGNOS_ method putFileNameInHeader1$[cd00000038, com.sap.aii.mappingtool.tf3.rt.Context@f300f30] at com.sap.aii.mappingtool.tf3.rt.FunctionWrapper.calculateCurrentValue(FunctionWrapper.java:83) at com.sap.aii.mappingtool.tf3.rt.FunctionWrapper.cacheValue(FunctionWrapper.java:59) at com.sap.aii.mappingtool.tf3.rt.FunctionWrapper.gotoNextContext(FunctionWrapper.java:37) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:252) at com.sap.aii.mappingtool.tf3.AMappingProgram.start(AMappingProgram.java:401) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:142) at com.sap.aii.mappingtool.tf3.AMappingProgram.execute(AMappingProgram.java:105) at com.sap.aii.ibrep.server.mapping.ServerMapService.transformInternal(ServerMapService.java:431) at com.sap.aii.ibrep.server.mapping.ServerMapService.execute(ServerMapService.java:169) at com.sap.aii.ibrep.sbeans.mapping.MapServiceBean.execute(MapServiceBean.java:52) at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0_0.execute(MapServiceRemoteObjectImpl0_0.java:301) at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0_0p4_Skel.dispatch(MapServiceRemoteObjectImpl0_0p4_Skel.java:146) at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:313) at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:199) at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:136) at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33) at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(AccessController.java:215) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170) Root Cause: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60) at java.lang.reflect.Method.invoke(Method.java:391) at com.sap.aii.mappingtool.tf3.rt.FunctionWrapper.calculateCurrentValue(FunctionWrapper.java:75) at com.sap.aii.mappingtool.tf3.rt.FunctionWrapper.cacheValue(FunctionWrapper.java:59) at com.sap.aii.mappingtool.tf3.rt.FunctionWrapper.gotoNextContext(FunctionWrapper.java:37) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:252) at com.sap.aii.mappingtool.tf3.AMappingProgram.start(AMappingProgram.java:401) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:142) at com.sap.aii.mappingtool.tf3.AMappingProgram.execute(AMappingProgram.java:105) at com.sap.aii.ibrep.server.mapping.ServerMapService.transformInternal(ServerMapService.java:431) at com.sap.aii.ibrep.server.mapping.ServerMapService.execute(ServerMapService.java:169) at com.sap.aii.ibrep.sbeans.mapping.MapServiceBean.execute(MapServiceBean.java:52) at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0_0.execute(MapServiceRemoteObjectImpl0_0.java:301) at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0_0p4_Skel.dispatch(MapServiceRemoteObjectImpl0_0p4_Skel.java:146) at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:313) at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:199) at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:136) at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33) at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(AccessController.java:215) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170) Caused by: java.lang.NullPointerException at com.sap.xi.tf._MMSAPLegacySalesDataToCOGNOS_.putFileNameInHeader1$(_MMSAPLegacySalesDataToCOGNOS_.java:853) ... 26 more RuntimeException in Message-Mapping transformation: Runtime exception during processing target field mapping /ns0:MTCOGNOSLegacySalesDataFile. The message is: Exception:[java.lang.NullPointerException] in class com.sap.xi.tf._MMSAPLegacySalesDataToCOGNOS_ method putFileNameInHeader1$[cd00000038, com.sap.aii.mappingtool.tf3.rt.Context@f300f30]
12:21:35 End of testHi Sai,
First of all, this UDF is pretty well knaown so there is no error in this UDF or your configuration for this UDF. I can suggest you something that at the time of configuration in IR, give a context object for that particular field of that file and then use the contect object name everywhere to refer that field. and also check the message type config for correction for my sake.
There is also a possibility that of the input data. i guess you are sending the input file from Cognos and you making the file and putting some where in XI directory and want these to process something and generate with some new desired filename. Check the input because i guess its finding NOTHINg as an Input. check once again.
Hope this will help you.
Regards
Aashish Sinha
PS : Reward points if helpful. -
Performance problem in Mapping Designer using UDF with external imports
Hello,
we do have a big performance problem in developing (not in execution) graphical Mappings as far as we use "user defined functions" (UDF) with include-entries referencing to jar files which are imported as "imported archives".
For example the execution of invice mapping with a little bit bigger test file in the Mapping designer:
- after opening, not in change mod: 6 seconds
- after switching to change mod: 37 seconds (that's clear, now everything is compiled first)
- after adding "com.seeburger.functions.permstore.CounterFactory;" into the "import" field of one UDF, no other change: 227 seconds
- after saving and submiting the changlist (no longer in change mode): 6 seconds
- after switching to change mode: 227 seconds
So execution speed of testing (and also when watching queues) only increases in changemod more then three minutes when using UDF with imports, referencing to external JAR files. It doesn't depend on Seeburger functions (we are using XI also for EDIFACT, so we also use some Seeburger functions), I can reproduce it with any other JAR file which is used from a UDF.
Using java included functions like "java.text.NumberFormat;" in "Import" doesn't slow down the testing.
Can anybody reproduce this? We are using XI 3.0 SP19 on a AIX machine, so we also have to use the Java version from IBM.
cu
ManfredProblem was fixed by a upgrad of the JDK.
-
Creating PDF file in XI using iText
Hi all,
I am trying to create a PDF file in XI using itext. The PDF file is getting created in my target ftp server but I am not able to open the PDF. It is throwing the below error while opening.
"Adobe Reader could not open the sample.pdf because it is either not a supported file or because the file has been damaged(for example,it was sent as an e mail attachment and wasn't correctly decoded)"
I am using the below code in my udf
String filename= "Sample.pdf";
try
Document document= new Document();
PdfWriter pdfwriter=PdfWriter.getInstance(document,new FileOutputStream(filename));
document.open();
document.add(new Paragraph("Hi How are you?"));
document.close();
DynamicConfiguration conf = (DynamicConfiguration) container
.getTransformationParameters()
.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key = DynamicConfigurationKey.create( "http://sap.com/xi/XI/System/File", "FileName");
conf.put(key,filename);
catch(Exception e)
return "";
Kindly let me know if you have any information on this.
With Regards
jaisu.
Edited by: jaisu118 on Feb 12, 2010 8:04 AMhi,
I had used custom adapter module for creating the PDF file.
you have to use java mapping if you want to create pdf without using adapter module.
You need to import iText library available at http://itextpdf.com/.
How to use external jar files ??
External Jar files in UDF
code may look like this:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
//1. AbstractTransformation class is imported.
// The associated jar file is: com.sap.xpi.ib.mapping.lib.jar
import com.sap.aii.mapping.api.AbstractTransformation;
import com.sap.aii.mapping.api.DynamicConfiguration;
import com.sap.aii.mapping.api.DynamicConfigurationKey;
import com.sap.aii.mapping.api.StreamTransformationException;
import com.sap.aii.mapping.api.TransformationInput;
import com.sap.aii.mapping.api.TransformationOutput;
import com.sap.aii.mapping.api.InputHeader;
public class xyz extends AbstractTransformation {
public void transform(TransformationInput inp, TransformationOutput out) throws StreamTransformationException {
getTrace().addInfo("JAVA Mapping Called");
InputStream inData = inp.getInputPayload().getInputStream();
// pdf conversion code
out.getOutputPayload().getOutputStream().write(outData.getBytes("UTF-8"));
check http://help.sap.com/javadocs/pi/SP3/xpi/index.html for java mapping api.
Thanks. -
Unable to load project after delete some path with files but not used at all
Im using the demo of Premiere Pro CC last demo download today.
All the fuc**ng day editing some videos, and saved, then I deleted som efolder containing some video files (almost not used) then when I try to open premiere the project I were working, premiere opens, load and freezes and nothing happens, it keeps on the main area withouht any windows, and I cant get my 10 hours of work What happening with thei premiere ? And Im unable to open the project in Premiere CC 7.0 from another computer as saif it was done using new version.
I NEED A SOLUTION !
Or never never more use premiereI NEED A SOLUTION !
Don't do this mid stream in EDIT
... I deleted som efolder containing some video files (almost not used)...
TRY - Go to you Back Up project file or an Auto save and hope that recovers some of your work afterrestoring what you deleted. -
How do I view ipod music files with out using I tunes?
I trying to view my Ipod music files without using itunes. But when I conect my Ipod to my pc I can only view contacts, notes, and caladar through the driver.
How do I view ipod music files with out using I tunes?they should be under ur my music folder if u have windows
-
How to upload Excel file in BI using function module in abap program
How to upload Excel file in BI using function module in abap program?
Hi Anuj,
To upload the file , you can try a standard program "RSEPSFTP" .
while you execute the program , a selection screen appears in which the inputs should be give as
RFC destination - The target server name
FTP command- PUT
local file - your file name
local directory - path of your local file
remote file - your target file name
remote directory - where it has to be stored
Hope this is useful for you
Thanks & regards
Anju -
Cannot Delete CPTL file from Desktop using Vista
Hi All,
I cannot Delete CPTL file from Desktop using Vista. Explorer
crashes. It is a Captivate 2 file.
I have tried (with no luck):
- logging in as a different user and deleting the file.
- running explorer as an Administrator
- uninstalling Captivate.
Anyone got any ideas?
Cheers,
RaefHi Raef,
That is a strange issue. Here are a couple more ideas you
could try:
- Have you tried renaming the file (including suffix)?
- Have you rebooted?
- Do you get any error messages when trying to delete, such
as "Acess Denied"?
- Is your machine networked? Is it possible someone else has
the file open?
- Can the file be moved to another location or put in a
folder (and then deleted)?
- Have you tried using the Command Prompt / DOS mode to
delete the file?
It sounds like it could be a Vista issue so I would look at
the Microsoft Vista forums too. Sorry I do not have an exact
answer.
IHTH,
Aaron -
Hi, I am using HP11 and iPlanet web server. When trying to upload files over HTTP using FORM ENCTYPE="multipart/form-data" that are bigger than a few Kilobytes i get a 408 error. (client timeout). It is as if the server has decided that the client has timed out during the file upload. The default setting is 30 seconds for AcceptTimeout in the magnus.conf file. This should be ample to get the file across, even increasing this to 2 minutes just produces the same error after 2 minutes. Any help appreciated. Apologies if this is not the correct forum for this, I couldn't see one for iPlanet and Web, many thanks, Kieran.
Hi,
You didnt mention which version of IWS. follow these steps.
(1)Goto Web Server Administration Server, select the server you want to manage.
(2)Select Preference >> Perfomance Tuning.
(3)set HTTP Persistent Connection Timeout to your choice (eg 180 sec for three minutes)
(4) Apply changes and restart the server.
*Setting the timeout to a lower value, however, may prevent the transfer of large files as timeout does not refer to the time that the connection has been idle. For example, if you are using a 2400 baud modem, and the request timeout is set to 180 seconds, then the maximum file size that can be transferred before the connection is closed is 432000 bits (2400 multiplied by 180)
Regards
T.Raghulan
[email protected] -
How to send multiple files in parallel using ftp with single connection
Hi.
i have written code for file upload manager using ftp..
it perfectly working with sequence file uploading in single connection..
And i tried to upload multiple files with parallel processing in a single connection.... but it is not working properly.. i also used thread concept
but single file only transfered and connection refused...
my code here...
//////////////////// main class //////////////////////////////////////////
ftp.connect();
ftp.login();
String [] archivos = new String[100];
File dir = new File("C:\\Files Uploading\\");
archivos = dir.list();
for (int s=0; s<archivos.length;s++)
//Start Data Transfer Here
new DataTransfer(archivos[s]).start();
Thread.sleep(1000);
/////////////////////// thread class ////////////////////////////////
class DataTransfer extends Thread
String FileName="";
String LocalPath="",RemotePath="";
public DataTransfer(String fname)
FileName = fname;
LocalPath = "C:\\Files Uploading\\" + FileName;
RemotePath = FileName;
System.out.println(LocalPath);
public void run()
System.out.println("DataTransfer Started");
/File Transfer Here
try
FileInputStream input = new FileInputStream(LocalPath);
Ftp_Client.storeFile(RemotePath,input);
System.out.println("Successfully sent : " + RemotePath);
catch (Exception exc)
System.out.println(exc.getMessage());
System.out.println("DataTransfer Ended");
}otherwise tell me any other alternate wayAnd i tried to upload multiple files with
parallel processing in a single connection....
but it is not working properly.FTP isn't a multiplexing protocol. How could it work at all? -
I have dragged 2 files to the trash bin but I cannot delete them from the trash bin. It keeps telling me these files are in use when they are not. How do I delete these files? One is a txt file and the other is an xls file
From the Finder menu select 'Secure Empty Trash'. If this or the suggestion above doesn't resolve the problem take a look at the various suggestions in this link:
http://www.thexlab.com/faqs/trash.html -
How do I access my encrypted User Account files from my Back Up hard drive? Time Machine was used to create the back up disk; File Vault was used to encrypt the files.
Thanks. I will try going through TM. Since my Simpletech is on the way out, I'll be plugging in a new external hard drive (other than the back-up drive) and trying to restore the library to the new drive. Any advice or warning if this is NOT the right thing to do?
Meanwhile, that is a great tip to do an alternate back-up using a different means. It's been tough to figure out how to "preserve access" to digital images and files for posterity, knowing the hardware will always fail/obsolesce sooner or later, and that "clouds" are only as good as their consistent and reliable accessibility. Upping the odds with redundancy will help dull the edge of my "access anxiety", though logically, it can never relieve it. Will look into
Carbon Copy Cloner. -
When I have video clips on my timeline, they do not play in the monitor screen. I hear the sound track but can not see the image. To test if my new files are somehow the problem, I went back and used video files that I used successfully a year ago, and they no longer play in the monitor window. I hear the sound track, but do not see any video. Have I changed some setting that controls video playback in the monitor window?
Randy Ruttger
Thanks for the follow up.
Missing in this equation were the version of Premiere Elements that you were using and the computer operating system on which it was running. But...
The deed is done. But.....Until now and after you went ahead and moved to version 12, we now learn what version of Premiere Elements you were using. We still do not know the computer operating system involved.
You just said Premiere Elements 10. Premiere Elements 10 is hit by a serious known display issue if the computer uses a NVIDIA GeForce video card/graphics card. In this issue, the only remedy is to roll back the driver version to about May 2013. The description of the problem and how to do the roll back are described in one of the Announcements at the top of this forum. What video card/graphics card does your computer use?
On another front, Adobe will be releasing a new version of Premiere Elements any day now. No one but Adobe knows the feature set for the new version. That type of information is announced at the moment of release of the new version.
So the remedy to the problem that you presented in this thread could have been...
1. Rolling back the NVIDIA GeForce driver version to about May 2013 if possible (Windows 8 or 8.1 64 bit, may not be possible)
2. Move to another version of Premiere Elements (which you did)
I offer the above for consideration so that you can review your decisions. We are pleased to learn that Premiere Elements 12/12.1 works for you.
Please do not hesitate to ask questions and ask for clarifications, but remember that the answers are in the details.
Best wishes,
ATR
Maybe you are looking for
-
Help!!!! My Nano only loads on the F drive, not recognized by Itunes
I have 2 ipods that have always worked with my itunes. I recently updated and have Itunes 7.0 and now my itunes won't recognize my nano. I have tried signing out of the itunes account, re-starting my computer and trying different USB ports but it sti
-
Elite and Gamers Club Unlocked Membership question
Hello, We recently became Elite members though wasn't looking to join. We were Gamers Club Unlocked Members from darn near day one, but now we cannot see the status of the Gamers Club Unlocked. Did the Elite replace my Gamers Club Unlocked? I have 5
-
How to create an excel and how to export data to that excel ALBPM
Hi, anyone can u please give me some idea to create and export the data to excel.i have creatde COM Bridge as external resource.
-
TDMS Excel Add-in Does not support new Excel 2007 Row Limit
First off I would like to say the TDM/TMDS format is really useful. It allows you to do all kinds of things that would be a real pain if you tried to do it with tab delimited spreadsheets. You can format data into excel sheets for analysis with seper
-
NForce 3: Problems with Maxtor Diamond Max 10 16MB Cache?
I heard that the NForce 3 chipset does have problems with these hard drives. Could anyone tell me more about it? I'd like to get 2 of these 250GB drives for my system, replacing my older 80GB Diamond Max 9 discs. Do these discs run normally, or won't