MAP is part of SS7 Stack ... i have said it so many times.. let me explain it further. You guys keep thinking as if MAP is a program which will let you do what I once demo'd , it used SMPP , MAP was underlay ...some explanation : What is MAP & DIfference of SMPP and MAP
SMPP is used on IP networks, while MAP is part of SS7 stack - being used on SS7 networks. SMPP is usually used between SMS providers, or provided by telco for their VAS services. On the other hand, MAP is used by SMSC equipment in telco infrastructure.
Usually telecom operators have SMSC that can accept SMPP connections. Once some VAS client submits message to SMSC over SMPP, SMSC will deliver this message to the subscriber using MAP.
So, you can actually use SMPP client on your machine and connect to SMSC of the telco (of course, once you agreed with telco about this). This is actually a good example for understand what is SMPP / MAP relation. In such case, if you run the SMPP client and connect to SMSC (either over public internet or over some VPN), you play the "ESME" role. Once you've connected (in SMPP terminology, you "bound successfully", using correct credentials in BindSM packet), you can send an SMS message using SubmitSM packet.
So, ESME sends "SubmitSM" packet, containing all required SMS data (source-address (originator), destination address, message text, etc). Telco's SMSC will analyse your submit packet, and if there is nothing wrong , will revert you back sending SubmitSMResp packet, together with MessageID (unique identifier of the message).
Now SMSC has to really deliver the message to the subscriber - and it will use MAP protocol. First, SMSC will send MAP_SendRoutingInfo packet to discover the address of MSC where subscriber is currently registered. HLR (Home location register) will revert back with such information. Then SMSC will issue MAP_ForwardShortMessage, sending message content to the MSC and IMSI, both provided in response received by HLR. MSC will (hopefully) contact mobile device of targeted subscriber, and send "acknowledge" (confirmation sent by mobile device, saying "I got the message") back to SMSC.
Once this process has finished, SMSC will again use SMPP , to let your SMPP client know that message has been delivered - you will receive "DeliverSM" SMPP packet with previous MessageId identifier, saying "your message has been delivered succesfully".
Note that this is just one generic "use-case", there are lot of differnet flows out there, such as using DeliverSM instead of SubmitSM, retries on MAP in case there is no positive acknowledge from MSC etc etc. I just used this example trying to explain the the common usage of SMPP together with MAP - I hope you got the picture what is the role of each protocol.