1. 1. Enable safe typing in the binding (this, more than often, will safe you headache of dealing w/ date and other numerical problem when converting one message to another in BizTalk (to and from SAP)
  2. 2. When pulling data from something like BAPI_EMPLOYEE_GETDATA that returns things back in an array, make sure you pass an empty node of the array that you are interested in inside the REQUEST message.  For example, in BAPI_EMPLOYEE_GETDATA... if you are interested in ARCHIVELINK and  PERSONAL_DATA being returned in the RESPONSE message, construct the REQUEST message like so:

      <!—Here is the tricky part, need to add these empty placeholders -->
        <ns1:BAPITOAV0 xmlns:ns1=”…” />
        <ns1:BAPIP0002B xmlns:ns1=”…” />
    and pass it to BizTalk to pass to SAP.  SAP will then return the two nodes w/ the appropriate content.
  3. Use Add Generated Item, Consume Adapter Service to create the appropriate SAP binding file.


Note to self…

When you see this Application event log entry:

Event Type:         Warning 
Event Source:       BizTalk Server 2009 
Event Category:     (1) 
Event ID:           5743 
Date:               6/26/2009 
Time:               8:06:42 PM 
User:               N/A 
Computer:          CSD-Labs 
The adapter failed to transmit message going to send port "SAPPortBilling" with URL "sap://CLIENT=999;LANG=EN;@a/". It will be retransmitted after the retry interval specified for this Send Port. Details:"System.ArgumentNullException: Value cannot be null. 
Parameter name: key 
   at System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument) 
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) 
   at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.CreateChannelFactory[TChannel](IBaseMessage bizTalkMessage) 
   at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.InitializeValues(IBaseMessage message) 
   at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2..ctor(IBaseMessage message, WcfTransmitter`2 transmitter) 
   at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfTransmitter`2.GetClientFromCache(String spid, IBaseMessage message) 
   at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfAsyncBatch`2.BatchWorker(List`1 messages)". 

Make sure you have entered something in the Action part when configuring BizTalk SAP Adapter Send Port.