These are the steps for custom idoc for outbound as well as inbound.
1st Step: Create a Segment (WE31)
Segment is a structure for passing data in IDoc. It actually contains the IDoc data, just like the DDIC table/structure. Segment is created with all the required fields. Then Save it. But, to actually use this Segment, you have to Release the Segment, otherwise u can’t use the Segment, by menu, EDIT–> Set Release.
Now, if you want to do some change to this Segment, you cant, unless & until you Cancel the Release, by Edit–> Cancel Release.
2nd Step: Create IDOC Type (WE30)
After creating the Segment, now we have to create the IDoc Type. IDOC Type is like an envelop of a letter, which contains the data inside it, & also some more information like address. IDoc type can be Basic Or Extended.
Basic IDoc Type:
Using some SAP existing IDOC type (ex. MATMAS) or Custom IDOC type.
Extension IDOC Type:
When we need some fields extra to an existing IDOC type, then we can extend that Basic Idoc Type by another Segment. This is called Extended idoc type.
3rd Step: Create Message Type (WE81)
Message Type is like the Postman for sending the Letter.
4th Step: Attach Message Type to the IDOC Type (WE82)
5th Step: Create a Function Module (SE37)
Write the Processing logic in a Function Module.
6th Step: Mention the IDOC Type, i.e, 0/1/2 (BD51)
7th Step: Assign the Message Type, IDOC Type & Function Module (WE57)
8th Step: Create a Custom Process Code (WE42)
9th Step: Attach the Function Module to the Process Code (BD67)
10th Step: Execute Inbound IDOC’ s (WE19)
Example Function Module: IDOC_INPUT_ORDERS (Standard FM to create Sales Order).
Usefull links to information about IDOC creation: