Skip to Content
Author's profile photo Former Member

SAP Standard Interface (SAP ESR Content/ Package) Enhancement in PI

Motivation:

In a preeminent SAPC(SAP Consulting) project, integration part should also be treated as high priority same as business functionality. A bad case is that one project which would GoLive with ERP 6.0 EHP7 and other latest SAP products, but lack of good integration management. Then after GoLive end user and IT person always complained that why we used latest product, but performance deficiency, interface errors and even business process issues happen frequently. After investigation, major reason is that chaotic integration design and wrong PI usage. It just like a brilliant machine but with a rusty cable, so how can we expect such collocation could work together without obstruction. So please no not just blame why PI is difficult to use.

As SAP always push forward SOA platform so far (Integration as Service coming now for cloud integration), so it is very important to take care of SOA governance. From PI/PO perspective, that should be how to design interface and how to governance interface etc. A responsible integration architect/ integration lead in one project should well control interface usage type (IDoc, Proxy, RFC, WS etc.), interface naming conversion, QoS, interface version and also interface enhancement.


So in this document, we will focus on how to do the enhancement of SAP standard interface base on the SAP ESR content/package. Because this part almost happen in every integration project, especially for SAP RDS (Rapid Develop Solution), PoC(Proof of Concept) project which use SAP predefined ESR package with customized requirement. For example, in MFG(manufacturing) solution,like SAP ME,MII and SAP TM/EWM/SNC, it is very common that customer need to add some customized field under SAP standard interface.


For IDoc and RFC interface, it is easy to create ZIDoc and ZRFC as enhancement in Backend system, then import into PI ESR do the following PI implementation. Because they are fulfit Inside-out interface develop strategy. Following document will demonstrate another situation which is Outside-in interface develop strategy. From PI point of view that is so-called ABAP Proxy, we should first enhance interface in ESR, then generate proxy in Backend system; From whole SAP ES(enterprise service) develop point of view is that all related ES enhancement even not go through PI, like pure WebService interfaces or POL(Process Object Layer) interfaces which use ESR as interface repository.

/wp-content/uploads/2015/02/0_645273.png

Reading Tips:

Due to SCN Web format reason, it is not clear to see the picture until you double-click on it. You can just choose “View as PDF” on the right “Action” tab, then all the picture in clear mode. Or directly via http://scn.sap.com/docs/DOC-62041.pdf


Demonstration Description/ Requirement:

Add one customized field(ZLEON_ID) under standard AribaNetWork SAP interface(Interface Name: MIAbs_Async_LastUpdate_File, Interface Namespace:http://ariba.com/xi/ASN/ERPInvoice)

/wp-content/uploads/2015/02/1_645274.png

Step by Step:

1. Find the interface which would be enhanced;

In this demo, it is following standard AribaNetWork SAP interface(Interface Name: MIAbs_Async_LastUpdate_File, Interface Namespace:http://ariba.com/xi/ASN/ERPInvoice ,corresponding Data Type: DT_LastUpdate_File). So we will add ZLEON_ID field under

DT_LastUpdate_File.

/wp-content/uploads/2015/02/2_645292.png

/wp-content/uploads/2015/02/3_645276.png

Data Type in ESR DT_LastUpdate_File Type
SAP Standard SystemID String
SAP Standard Date String
SAP Standard Time String
Enhancement/ Customized ZLEON_ID String


2. Create customized SWCV and maintain SAP standard SWCV as its prerequisite software component in SLD;

In this demo: create TUCC_INTERFACE SWCV, and set AribaNetWork 12 as its prerequisite SWCV.

Note: It is not recommended to change SAP standard SWCV in ESR directly, even if you could while you change it into Modifiable. But it will break up SAP SWCV Lifecycle Management and will bring risk in the future develop. So we should create own SWCV, and mark SAP standard one as prerequisite under Dependencies tab.

/wp-content/uploads/2015/02/4_645277.png

3. In ESR, also maintain SAP standard SWCV as Underlying SWCV.

In the demo: set ARIBA_SUPPLIER_CONN_ADAPTER_12S2 as TUCC_INTERFACE‘s underlying SWCV.

/wp-content/uploads/2015/02/5_645281.png

4. Create Data Type Enhancement in own SWCV;

In the demo: Create Data Type Enhancement Ariba_SAP_Interface_Enhancement2 under TUCC_INTERFACE. Customized field named ZLEON_ID in DT Enhancement.

/wp-content/uploads/2015/02/6_645282.png

/wp-content/uploads/2015/02/7_645283.png

5. Generate and Active corresponding proxy in Backend system via SPROXY;

Note: During proxy generation, error may happen. Said source Namespace:http://ariba.com/xi/ASN/ERPInvoice ,corresponding Data Type: DT_LastUpdate_File not exist on system. Need to generate the standard DT firstly, then generate Enhancement DT.

While generation completed, you will see ZXLEONZLEON_ID(ZXLEON is prefix) in Internal View.

/wp-content/uploads/2015/02/8_645285.png

6. Check if enhancement successfully in standard SWCV.

While generation completed and successfully, you will see ZXLEONZLEON_ID(ZXLEON is prefix) in standard SWCV ARIBA_SUPPLIER_CONN_ADAPTER_12S2 SWCV. Now standard interface MIAbs_Async_LastUpdate_File enhanced with one customized field named ZLEON_ID.

/wp-content/uploads/2015/02/9_645284.png

/wp-content/uploads/2015/02/10_645286.png

7. Following ABAP developing as normal;

While enhancement completed and successfully, you can implement proxy method via customized ABAP code or BAdI enhancement spot as normally Proxy development.

/wp-content/uploads/2015/02/11_645290.png

Summery:

We do see some bad enhancement cases in real project.

1.Directly change SAP package for the current requirement:

In the future, if same SAP interface used in other business requirement. Then it will confuse new developer, why some customized field exist and which ones are standard. More worse, such behavior(break up SAP SWCV Lifecycle) will endanger system upgrade/migration.

2.Create new customized SWCV as enhancement:

Totally customer management, not in SAP SOA governance. It is difficult to reuse exist interface in the future while new developer don’t know details about  old customized SWCV, more and more SWCV will be created by customer. Instead, you can search all the SAP ES interface via ES-Workplace | SAP and  maintain enhancement under SAP standard ones.

Assigned Tags

      7 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Former Member
      Former Member

      Correct guidance for interface enhancement, now we know what is usage purpose of Data Type Enhancement in ESR. Bad case 2 I have done before... 🙁

      Author's profile photo Dipen Pandya
      Dipen Pandya

      Hi Leon Li,

      Thanks for sharing.

      Clear, helpful and better approach for enhancing.

      BR,

      Dipen.

      Author's profile photo Former Member
      Former Member

      Thanks LEON.

      It is important to deal with integration in any project, no only done by PI but also other middleware. But in fact, normally the lead of project is from business part,so...

      In same big project, integration lead will be most important to sett up architecture.

      Author's profile photo Former Member
      Former Member

      Always some misunderstanding in project consulting, can't agree u more about the importance of integration part.

      Author's profile photo Former Member
      Former Member

      Yes, this is real situation vs ideal situation. Most of time, even there is not identity PI expert during one project. ABAPer will also handle the integration part. It is hard to say which one should be better. Maybe case by case.

      But in the future, more complex SAP integration options. Integration will play more important role.

      Jim

      Author's profile photo Deviprasad p
      Deviprasad p

      Nice blog

      Author's profile photo Bhavana C
      Bhavana C

      Hello Qingfeng Li,

      I have a question...Could you please throw some light on how to do mapping for this custom added field in Message mapping/XSLT mapping ?

      I am using XSLT mapping in my case, i am seeing xml structure from SPROXY like below but not sure how to read the value from this custom field as this is showing at the same level as Item segment.

      <?xml version="1.0" encoding="UTF-8"?>

      <ns0:InvoiceRequest xmlns:ns0="http://sap.com/xi/SAPGlobal20/Global">

         <MessageHeader>

            <ID schemeID="Token 1" schemeAgencyID="Token 2">Token 3</ID>

            <CreationDateTime>1999-05-31T13:20:00Z</CreationDateTime>

            <SenderBusinessSystemID>Token 4</SenderBusinessSystemID>

            <SenderParty>

               <InternalID schemeAgencyID="Token 5">Token 6</InternalID>

               <StandardID schemeAgencyID="Tok">Token 8</StandardID>

               <StandardID schemeAgencyID="Tok">Token 10</StandardID>

            </SenderParty>

            <RecipientParty>

               <InternalID schemeAgencyID="Token 11">Token 12</InternalID>

               <StandardID schemeAgencyID="Tok">Token 14</StandardID>

               <StandardID schemeAgencyID="Tok">Token 16</StandardID>

            </RecipientParty>

         </MessageHeader>

         <Invoice>

            <ID>Token 17</ID>

            <BillToID>Token 18</BillToID>

            <TypeCode>Token</TypeCode>

            <DateTime>1999-05-31T13:20:00Z</DateTime>

            <CancellationInvoiceIndicator>true</CancellationInvoiceIndicator>

            <AcceptanceStatusCode>To</AcceptanceStatusCode>

            <Note>String 21</Note>

            <GroupID>Token 386</GroupID>

            <Item>

               <ID>Token 496</ID>

               <BillToID>Token 497</BillToID>

               <TypeCode>Token</TypeCode>

            </Item>

         </Invoice>

         <ns1:CustomField1 xmlns:ns1="http://xxxx/xxx/ABC/Interface1">String 566</ns1:CustomField1>

      </ns0:InvoiceRequest>