0% found this document useful (0 votes)
337 views105 pages

Introduction To EDI and ALE:: Advantages

This document discusses EDI (Electronic Data Interchange) and ALE (Application Link Enabling) in SAP. It defines EDI as the electronic exchange of business documents between computer systems using a standard format over a network. The document outlines the advantages of EDI, describes the inbound and outbound EDI processes, and explains key concepts like IDocs, ports, partner profiles, and message control. It also provides transaction codes for setting up and processing IDocs between two systems for both standard and custom IDoc exchanges.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
337 views105 pages

Introduction To EDI and ALE:: Advantages

This document discusses EDI (Electronic Data Interchange) and ALE (Application Link Enabling) in SAP. It defines EDI as the electronic exchange of business documents between computer systems using a standard format over a network. The document outlines the advantages of EDI, describes the inbound and outbound EDI processes, and explains key concepts like IDocs, ports, partner profiles, and message control. It also provides transaction codes for setting up and processing IDocs between two systems for both standard and custom IDoc exchanges.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 105

Introduction to EDI and ALE:

EDI (Electronic Document interchange) - EDI is the electronic exchange of business documents
between the computer systems of business partners, using a standard format over a
communication network.
EDI is also called paperless exchange.

Advantages:

Reduced Data entry errors


Reduced processing time
Availability of data in electronic form
Reduced paperwork
Reduced Cost
Reduced inventories and better planning
Standard means of communications
Better business process

EDI has two process


1. Outbound process
2. Inbound process

Outbound Process:
1.Application document is created.
2. IDOC is generated
3.Idoc is transferred from SAP to Operating system layer
4.Idoc is converted into EDI standards
5.Edi document is transmitted to the business partner
6.The Edi Subsystem report status to SAP

Inbound Process:
1.EDI transmission received
2.EDI document is converted into an IDOC
3.IDOC is transferred to the SAP layer
4.The application document is created
5.The application document can be viewed.

IDOC:
IDOC is a container that can be used to exchange data between any two processes.

Each IDOC is assigned a unique number for tracking and future reference.

IDOC consists of several segments, and segments contain several fields.

IDOC contains the following three types of records...


1. One Control Record.
2. One or many Data Record
3. One or many Status record.
In IDOCs the following terms are to be known.

PORT:
Port is used in the outbound process to determine the name of the EDI subsystem program, the
directory path where the IDOC file will be created at the operating system level, the IDOC file
names and the RFC destinations.

RFC Destination:
Used to define the characteristics of communication links to a remote system on which a
functions needs to be executed.

Partner Profile:
Partner profile specified the various components used in an outbound process (Partner number,
IDOC type, message type, Port, Process code), the mode in which it communicates with the
subsystem (batch or immediate) and the person to be notified in case of errors.

Message Control
Used in pricing, account determination, material determination, and output determination. The
message control component enables you to encapsulate business rules with out having to write
ABAP programs.

TO Process IDOCS the following TCODES will be used.

On both sides:

Logical System Names SALE


Setup RFC destinations SM59
Port Destinations WE21

In Source system:

Segment Creation WE31

Basic IDOC Type Creation WE30

Message Type Creation WE81

Assign Message Type To Basic IDOC Type WE82

Distribution Model BD64

Writing Report Program SE38


Partner Profile WE20
Message control NACE

Check IDOCs WE02, WE05


In Destination System:

Creating FM SE37

Assign FM to Logical Message WE57

Define I/P method for Inbound FM BD51

Create Process Code WE42

Generate Partner Profile BD64

Standard IDOC:

MASTER Data is the data that exists in the organization like employee details, material master, customer
master, vendor master etc.

Master data can be transferred by two methods:

1. Triggering through stand-alone programs


2. Triggering through change pointers

Data Transfer using Standalone programs:

A material is created in R3SCLNT800 and should be transferred to R3SCLNT810.

Step1: Define Logical Systems T.code SALE

Path: ALE--> Basic settings  Logical Systems  Define Logical systems


Step 2: Assign Client to the logical system T.code: SALE

Path: ALE--> Basic Settings  Logical Systems  Assign client to Logical System
Step 3:Create RFC Destination Tcode: SM59

Note: Provide Connection type as ‘3’ indicating connection to R/3 system


Enter the following details.
Step 4: Define port Tcode: we21

Port is the medium in which data is transferred.


Step 5:Maintain Partner Profiles Tcode: WE20

In partner profile we specify the names of the partners which are allowed to exchange IDocs .
Double Click on the Message type MATMAS the following opens.

Enter the details for Receiving port, Pack size and Basic type.
Step 6: Create Customer Distribution model Tcode: BD64

Click on the Create button and enter the short text, Technical name etc as shown below
Now select the created model view and click on Add message type button .A pop up box appears, enter
Sending system, receiving system and message type.

Save the Distribution model

Generate Partner Profiles


Click the menu item ‘Generate Partner Profiles’.

It leads to the next transaction where in the selection screen you have to provide Model view name,
Partner System logical system and execute.

Then, you will be intimated about the partners, port creation, and outbound parameters creation.

Distribute Customer Distribution Model

In the menu item ‘Distribute’ to the destination client.

Popup window appears , press Enter.

Generate Partner Profiles in partner system (in bound system)

Transaction: BD82
Provide Model view and logical system of Partner system to this system (our Outbound system)

Execute, again you will be intimated about the creation of inbound parameters.

NOTE:
You cannot maintain a message type between the same sender and receiver in more than one customer
distribution model.
Only the owner is authorized to modify the model.

Step 7: Creation of material T.code MM01.

Enter the details as shown below and create a material.


Step 8: Send the created material. T.code BD10

Enter the material created or changed, message type and the destination system as follow and execute.

We get the information as 1 master Idoc created, 1Communication Idoc created.

Step 9: View the IDocT.code we05


Technical Settings In the Receiving system R3SCLNT810.

Partner Profile T.code WE20

For the partner add the message type .here the message type is MATMAS
Double click on the message type and enter the processing code (MATM) and select Trigger
Immediately radio button, save.
Get the material T.code BD11.

Enter the material created or changed, and the Message as shown below.

If every thing is fine IDOC will be created.

View the Idoc in the T.code We09.

Data Transfer by Change Pointers:

Steps from 1 to 6 are same as stand alone programs.

Step1: Define logical system

Step2: Assign logical system to the client


Step3: Create RFC Destination

Step4: Define Port

Step5: Generate partner profiles

Step6:Create Customer Distribution model

The following are the additional steps for Change pointers

Note (The following steps are to be maintained in both the sending and receiving systems)

Step 1: Activate change pointers generally T.Code BD61

Check the box so that change pointers get activated and keep track the changes to

trigger ALE process.

Step 2: Activate change pointers for the message type T.code BD50

Step3: Change Document should be checked at data element level


Step4: Run the program RBDMIDOC or the T.code BD21

Enter message type and execute.

Create or change a material and check for the Idoc creation in the T.code WE09.

IDOC processing in the same instance of R/3 Clients.

For example two clients in the same R/3 instance.

Client 900.

Client 800.

To transfer the data between two clients the table structures and their data types should be match.

In this example, Client 900 is Source system, and Client 800 is destination system.
In Client 900 I have created a customized table and inserted some records.

In Client 800 I have created only table.

1.Standard IDOC:

Custom Idoc:

Common Steps in Both Clients:

Creating the Logical System Names and Assigning to Clients:

Go to TCODE SALE.

IMG path IDoc Interface / Application Link Enabling (ALE) -> Basic Settings -> Logical
Systems -> Define Logical System

Click on Display / Change Button


Click on New Entries

Specify the Logical System name and description.

Note: Logical System Naming convention is <SID>CLNT<NNN>


Click on Save and Back buttons

Now you will come back to the IMG path screen. Click on Assign Logical System to client.

Click on Display / Change Button


Click on New Entries

Click on Save and Back.

Creating the RFC Connection Names:

Go to TCODE SALE. Direct TCODE SM59

IMG Path IDoc Interface / Application Link Enabling (ALE) ->Communication -> Create RFC
Connections
Click on Create button.

Specify all the details in RFC connection screen

Click on Logon Security tab and specify the details.


Click on the Special options tab and specify the details which you want.

Now click on Test Connection button

It show the connection log in next screen


Click on Back

Click on Remote Logon Button

Depends upon your settings the destination client will open. If you check the Current user option
under Logon/ Security tab, then it will show the screen directly without asking the user name and
password details.
Creating RFC ports:

Go to TCODE WE21

Select the Transactional RFC in left side tree and click on Create button

In dialog box you can select either Generate port name or own port name. If you select Generate
Port name system will generate automatically. Here I selected Own port name. Click on
continue.
Specify the description and RFC destination name.

Click on Save.
Repeat the same above process in other client. By using opposite client instead of 900 specify
800.

In Client 900 steps:

Creating table structure:

 Go to TCODE SE11.

 Specify table name as ZSTUDENTS.

 In Delivery and Maintenance tab set attributes as “Display Maintenance Allowed”

 The table fields are.

 Insert some records in table.

Creating IDOC Segments:

Go to TCODE WE31.

Specify a name and Click on Create Button.


Here specify all the ZSTUDENTS table fields and their types as shown below.

Click on SAVE button, then it will show dialog box with user name, press continue.
Specify your package name and click on save.

Specify your request and press “Continue”.


Click on Back button, and then you will see the created segment.

Creating Basic IDOC Type:

Go to TCODE WE30

Specify a name to your IDOC and click on create button.


In next dialog box select create new option and specify the description of IDOC and click on continue.

Click on Create segment in the screen.

In dialog box specify the segment name which you created and check mandatory check box.
Click on SAVE and BACK button.

Go to menu EDIT ->Click Set Release

In next dialog box, click on Yes.


Creating Message Type:

Go to TCODE WE81.

Click on Display / Change button.

Click on New Entries button.


Specify a message type name and Description and click on SAVE button.

Click on Back and Save

Assign Message Type to Basic IDOC Type:

Go to TCODE WE82

Click on Display / Change Button


Click on New Entries, Specify the Message Type and Basic IDOC Type and Release version. Click on
Save.

Click on Back.

Note:

 Here the Release version you can find in this way

Creating Model View and Distributing and Generating Partner profile:

Go to TCODE BD64

Click on Display/ Change button


Click on Edit menu -> Model View -> Create

Specify description of model view and technical name in dialog box and press continue.
Select your model view and click on Edit menu -> Add Message type

In dialog box specify the sender, receiver, message type and click on continue.
Now your Model View looks like

Click on Environment Menu -> Generate Partner profile


It will show the following screen, click on execute.

It will show the partner profile log in next screen.


Click on Back button 2 times, it will take back to Distribution Model screen.

Click on Edit Menu -> Model View -> Distribute.


In displayed dialog box select the partner system and click continue

Then it will show the Log of Model View Distribution.


Click on Back button.

To check partner profile Go to TCODE WE20

In displayed screen select the partner system in left side tree under Partner Type LS.

Write a Report Program in SE38 to create IDOC control records and transfer it to destination
partner system.

The following is the program to generate the IDOC control records and process it.

*&---------------------------------------------------------------------*
*&Report ZSHAN_IDOC_STUD
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZSHAN_IDOC_STUD.
TABLES: ZSTUDENTS.
DATA : S_CTRL_REC LIKE EDIDC, "Idoc Control Record
S_ZSHSTUSEG LIKE ZSHSTUSEG. "CUSTOMER Header Data
DATA : T_ZSTUDENTS LIKE ZSTUDENTS OCCURS 0 WITH HEADER LINE.
DATA : T_EDIDD LIKE EDIDD OCCURS 0 WITH HEADER LINE. "Data Records
DATA : T_COMM_IDOC LIKE EDIDC OCCURS 0 WITH HEADER LINE. "Generated
Communication IDOc
CONSTANTS :C_ZSHSTUSEG LIKE EDIDD-SEGNAM VALUE 'ZSHSTUSEG'.
CONSTANTS: C_IDOCTP LIKE EDIDC-IDOCTP VALUE 'ZSHSTUDIDOCS'.
*** Selection Screen
SELECT-OPTIONS : S_STUID FOR ZSTUDENTS-ZSTUID OBLIGATORY.
PARAMETERS : C_MESTYP LIKE EDIDC-MESTYP DEFAULT 'ZSHSTUDMT', "Message Type
C_RCVPRT LIKE EDIDC-RCVPRT DEFAULT 'LS', "Partner type
of receiver
C_LOGSYS LIKE EDIDC-RCVPRN DEFAULT 'IT3CLNT800',
C_RCVPOR LIKE EDIDC-RCVPOR DEFAULT 'PORTSH800',
C_SNDPRN LIKE EDIDC-SNDPRN DEFAULT 'IT3CLNT900',
C_SNDPRT LIKE EDIDC-SNDPRT DEFAULT 'LS'. "Destination System
***START-OF-SELECTION
START-OF-SELECTION.
PERFORM GENERATE_DATA_RECORDS.
PERFORM GENERATE_CONTROL_RECORD.
PERFORM SEND_IDOC.
*&---------------------------------------------------------------------*
*&Form GENERATE_DATA_RECORDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GENERATE_DATA_RECORDS .
SELECT * FROM ZSTUDENTS
INTO TABLE T_ZSTUDENTS
WHERE ZSTUID IN S_STUID.
IF SY-SUBRC NE 0.
MESSAGE E398(00) WITH 'No Students Found'.
ENDIF.
PERFORM ARRANGE_DATA_RECORDS.
ENDFORM." GENERATE_DATA_RECORDS
*&---------------------------------------------------------------------*
*&Form GENERATE_CONTROL_RECORD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GENERATE_CONTROL_RECORD .
S_CTRL_REC-RCVPOR = C_RCVPOR. "Receiver Port
S_CTRL_REC-MESTYP = C_MESTYP. "Message type
S_CTRL_REC-IDOCTP = C_IDOCTP. "Basic IDOC type
S_CTRL_REC-RCVPRT = C_RCVPRT. "Partner type of receiver
S_CTRL_REC-RCVPRN = C_LOGSYS. "Partner number of receiver
S_CTRL_REC-SNDPRT = C_SNDPRT. "Sender Partner type
S_CTRL_REC-SNDPRN = C_SNDPRN. "Sender Partner Number
ENDFORM." GENERATE_CONTROL_RECORD
*&---------------------------------------------------------------------*
*&Form SEND_IDOC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SEND_IDOC .
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
MASTER_IDOC_CONTROL = S_CTRL_REC
* OBJ_TYPE = ''
* CHNUM = ''
TABLES
COMMUNICATION_IDOC_CONTROL = T_COMM_IDOC
MASTER_IDOC_DATA = T_EDIDD
EXCEPTIONS
ERROR_IN_IDOC_CONTROL = 1
ERROR_WRITING_IDOC_STATUS = 2
ERROR_IN_IDOC_DATA = 3
SENDING_LOGICAL_SYSTEM_UNKNOWN = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
COMMIT WORK.
LOOP AT T_COMM_IDOC.
WRITE:/ 'IDoc Generated - ', T_COMM_IDOC-DOCNUM.
ENDLOOP.
ENDIF.
ENDFORM. " SEND_IDOC
*&---------------------------------------------------------------------*
*&Form ARRANGE_DATA_RECORDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ARRANGE_DATA_RECORDS .
DATA: W_INDEX1 LIKE SY-TABIX,
W_INDEX2 LIKE SY-TABIX.
SORT T_ZSTUDENTS BY ZSTUID.
LOOP AT T_ZSTUDENTS.
S_ZSHSTUSEG-ZSTUID = T_ZSTUDENTS-ZSTUID.
S_ZSHSTUSEG-ZSNAME = T_ZSTUDENTS-ZSNAME.
T_EDIDD-SEGNAM = C_ZSHSTUSEG.
T_EDIDD-SDATA = S_ZSHSTUSEG.
APPEND T_EDIDD.
CLEAR T_EDIDD.
ENDLOOP.
ENDFORM." ARRANGE_DATA_RECORDS

Now execute the program, and specify the range of records to transfer
Go to TCODE WE02 to check the generated IDOC control records.

Click on Execute
In Client 800 Steps:

Function Module Creation:

Create a Function Module to update the table from the IDOC segments

Go to SE37

Specify a name and click on create.

In dialog box specify function group and description, and click on save.
Specify the Import parameters in Import tab

Specify the Export parameters in Export tab

Specify the Table parameters in Tables tab


Specify the Exceptions in Exception tab

Click on Source code Tab.

Write the following code in Source code tab.


FUNCTION ZSHAN_IDOC_ZSHSTUDMT.
*"--------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(INPUT_METHOD) LIKE BDWFAP_PAR-INPUTMETHD
*" REFERENCE(MASS_PROCESSING) LIKE BDWFAP_PAR-MASS_PROC
*" EXPORTING
*" REFERENCE(WORKFLOW_RESULT) LIKE BDWF_PARAM-RESULT
*" REFERENCE(APPLICATION_VARIABLE) LIKE BDWF_PARAM-APPL_VAR
*" REFERENCE(IN_UPDATE_TASK) LIKE BDWFAP_PAR-UPDATETASK
*" REFERENCE(CALL_TRANSACTION_DONE) LIKE BDWFAP_PAR-CALLTRANS
*" TABLES
*" IDOC_CONTRL STRUCTURE EDIDC
*" IDOC_DATA STRUCTURE EDIDD
*" IDOC_STATUS STRUCTURE BDIDOCSTAT
*" RETURN_VARIABLES STRUCTURE BDWFRETVAR
*" SERIALIZATION_INFO STRUCTURE BDI_SER
*" EXCEPTIONS
*" WRONG_FUNCTION_CALLED
*"--------------------------------------------------------------------
* Include File containing ALE constants
INCLUDE MBDCONWF.
TABLES : ZSTUDENTS.
DATA : W_ZSHSTUSEG LIKE ZSHSTUSEG.
DATA : T_ZSTUDENTS LIKE ZSTUDENTS OCCURS 0 WITH HEADER LINE.
WORKFLOW_RESULT = C_WF_RESULT_OK.
LOOP AT IDOC_CONTRL.
IF IDOC_CONTRL-MESTYP NE 'ZSHSTUDMT'.
RAISE WRONG_FUNCTION_CALLED.
ENDIF.
* Before reading a new entry, clear application buffer
LOOP AT IDOC_DATA WHERE DOCNUM EQ IDOC_CONTRL-DOCNUM.
W_ZSHSTUSEG = IDOC_DATA-SDATA.
MOVE-CORRESPONDING W_ZSHSTUSEG TO T_ZSTUDENTS.
INSERT INTO ZSTUDENTS VALUES T_ZSTUDENTS.
ENDLOOP.
UPDATE ZSTUDENTS FROM T_ZSTUDENTS.
IF SY-SUBRC EQ 0.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-MSGTY = 'I'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '004'.
IDOC_STATUS-MSGV1 = T_ZSTUDENTS-ZSTUID.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
ELSE.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-MSGTY = 'E'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '005'.
IDOC_STATUS-MSGV1 = T_ZSTUDENTS-ZSTUID.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
WORKFLOW_RESULT = C_WF_RESULT_ERROR.
RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
APPEND RETURN_VARIABLES.
CLEAR RETURN_VARIABLES.
ENDIF.
ENDLOOP.
ENDFUNCTION.

Click on Save and Activate.

Assign FM to Logical Message:

Go to TCODE WE57

Click on Display / Change button.

Click on New Entries Button


Specify created FM name, Function Type, Basic Type (IDOC), Message Type, and Direction and click on
SAVE button.

Click on Back button.

Define Input Method for Inbound Function Module:

Go to TCODE BD51

Click on Display / Change button


Click on New Entries

Specify FM name and Input Types as 2. And Click on Save and Back buttons.
Creating Process Code:

Go to TCODE WE42

Click on Display / Change Button

Click on New Entries button


Specify a process code name, Description and select the options processing with ALE services,
Processing by Function Module.

Click on save button

In next screen select the FM name and click on SAVE button and Click on BACK button.
It will take to you previous screen. Double Click on Logical Message in left side tree.

Click on Display / Change button


Click on New Entries button

Specify the Message Type and Click on Save button


Click on Back button

Generating the Partner Profile:

Go to TCODE BD64.

Select the Model View which you distributed in client 900.


Click on Environment Menu -> Generate Partner Profile

It will show the next screen, in that click on Execute button


It will show the Partner Profile details

To check the partner profile details. Go to TCODE WE20. Select the partner system name.
Transferring the IDOC control records from Client 900 to 800:

In source system, go to TCODE SE38. (In client 900)

Execute the Report program which you created.

Check in Destination System: (Here client 800)

Go to TCODE WE02
Check in ZSTUDENTS table in SE11.

Custom Idoc:

1.Business Case

SAP R/3 systems send out data through IDoc (Intermediate Document), which in internally has segments
and fields containing the data. But sometimes, these fields are not sufficient for a specific end-to-end
business scenario as far as data transfer is concerned. So in such scenario, either few fields are to be
added or subtracted, or completely new structure- IDoc needs to be created. This are called as Custom –
IDOC Types. Following blog gives out step-by-step approach for creation of the same.

2.Development of IDOC types

2.1 Creation of Segment Types

Run T-code ‘WE31’ to create segment type, which has fields to contain the data and are added to the
segment type in the same transaction. The data stored contained into the segment mesh is finally stored
in EDISEGMENT table.
Add your custom fields as per business scenario.

To make it available to other transactions, release the segment created.

Go to Edit -> Set Release

2.2 Creation of IDoc type

Run T-code ‘WE30’ to create custom IDoc type. Enter the name of custom IDoc you want to create
and click on red box for creation.
Now, it takes you to following screen. Here you can add description for your IDoc type. Also you can
specify name of existing IDoc for Copy or Successor mode.

Now, you can maintain attributes of the custom IDoc, which consists of attaching segment type created
above to the IDoc type. Also specifying the details of frequency of these segments getting filled i.e.
Maximum and Minimum number. Fill the necessary details and release this IDoc type as well.

2.3 Creation of logical message types

Run T-code ‘WE81’ to create the logical message types. Go to Edit mode and click New Entry to go to
following screen.

Save the entered data.

2.4 Linking Message type and IDoc type.

Run T-Code ‘WE82’. Now we have to link these created IDoc types and Message types. Enter the
message type name, Basic IDoc type (ZCUST_IDC) and release type to be linked. In the data transfer
through ALE, these message types represent the IDOC structure.
Extension field above will be used as per the Extended IDoc type scenario i.e. in case of addition of few
more fields into the existing IDoc type.

Hence, now our Creation of Custom IDoc is ready to use in ALE scenarios.

ALE/IDOC Scenario using the custom Idoc

Aim: Transfer the data from one system to another using user customized IDOC.

Sender System:

Server: 172.25.8.185

Client: 200

Data from Z table: zsach1

ReceiverSystem:

Server: 172.25.9.198

Client: 800

Data from Z table: zsach1

Data is fetched from Z table on the sender system and inserted it in the Z table of Receiver system using
ALE/IDOC.

Settings on the Sender End

Table Creation T – Code SE11.The table contains data that is to be sent to Receiver.
ALE Configuration

T-Code – SALE

Defining Logical System

200 is our sender

800 is our receiver

Assigning Client to Logical System


200 is our sender

800 is our receiver

Defining Target System for RFC Calls (Tcode – SM59)


Click on R/3 Connections and then Create TAB

Step 1

Step 2

Save and test the connection.

Defining Port
The sender system is connected to the receiver system through this Port.

Defining Partner Profiles

The partner for client 200(Sender) is the client 800 (Receiver)

Since this is a sender we have to define only Outbound Parameters in this case.

Here you can see the Message type is Z message type.

2. Maintaining Distribution Model ( TCode BD64 )


Create new Distribution Model
Add Message Type
Now Distribute this Model View

Distribute it from Edit  Model View  Distribute

Defining the Z Segment type


Tcode – WE31

Defining the Basic Type

T Code WE30

Click on New
This will take you to next screen as follows

Here you have connected the basic type to the segment type.
Enter again and this will take you to screen as follows

This shows the relation between the basic and the segment types.

Next you need to make the entry of the segment in the system table.

Tcode : WE81

Next is the following entry which is required.


Here you are specifying the message type and the basic type and the release version.

This is all about the configuration you need to do on the sender side.

Now on the sender side you also need a program that will fetch the required data, couple it in the
IDOC format and post it.

Here is a small piece of code that could be useful.

*&---------------------------------------------------------------------*
*&Report ZSACH_CUST_IDOC *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
report zsach_cust_idoc .
parameters :p_logsys like tbdlst-logsys.
data :gen_segment like edidd-segnam value 'ZSACH'.
data :control_dat like edidc,
gen_data like z1hdr .
tables :zsach1.
data: begin of inttab occurs 0,
lname type z1hdr-lname,
fname type z1hdr-fname,
end of inttab.
data :
int_edidd like edidd occurs 0 with header line,
int_edidc like edidc occurs 0 with header line.
select * from zsach1 into corresponding fields of table inttab.
ifsy-subrc ne 0.
message 'no data' type 'I'.
exit.
endif.
control_dat-mestyp = 'ZSACH'.
control_dat-idoctp = 'ZSACH'.
control_dat-rcvprt = 'LS'.
control_dat-rcvprn = p_logsys.

loop at inttab.
gen_data-lname = inttab-lname.
gen_data-fname = inttab-fname.
* GEN_DATA-SSN = INTTAB-SSN.
* GEN_DATA-DOB = INTTAB-DOB.
int_edidd-segnam = gen_segment.
int_edidd-sdata = gen_data.
appendint_edidd.
endloop.
call function 'MASTER_IDOC_DISTRIBUTE'
exporting
master_idoc_control = control_dat
* OBJ_TYPE = ''
* CHNUM = ''
tables
communication_idoc_control = int_edidc
master_idoc_data = int_edidd
exceptions
error_in_idoc_control =1
error_writing_idoc_status =2
error_in_idoc_data =3
sending_logical_system_unknown =4
others =5
.
ifsy-subrc<> 0.
message id sy-msgid type sy-msgty number sy-msgno.
else.
loop at int_edidc.
write :/ 'IDOC GENERATED',int_edidc-docnum.
endloop.
commit work.
endif.

Settings on the receiver side.

The ALE configuration is same as we did it on the sender side. Please refer to earlier pages.

The receiver specific differences are mentioned below.

T-Code – SALE

200 is our sender

800 is our receiver

Steps

Defining Logical System (Same as sender)

Assigning Client to Logical System (Same as sender)

Defining Target System for RFC Calls (Tcode – SM59) (Same as sender)
Defining Port(Same as sender)

Defining Partner Profiles – Here we are accepting the data from Sender system. Hence we need to
configure it as Inbound.

Click on the sign above to go to next screen.


Here the message type is to be created again as it was created on the sender side.

The following steps are repeated, as done on the sender side, on the receiver end

Tcode WE30

Tcode WE31

Tcode WE82

Tcode WE81

Here on the receiver end, we need to specify a process code at the time of defining the partner profile.

Process code is something that has the logic defined about what to be done after receiving the IDOC.

In our case, on receipt of the IDOC, we are updating the Z Table. i.e Inserting the data from the IDOC into
the Z Table.
Creating a Process Code

Tcode – WE42
The logic associated is coded in the Function Module which is specified in the Identification Field above.

Also the processing type is selected as Processing by Function Module as above.

The function Module is specified in the following screen.


To have your function Module in the above drop down list, the entry is to be made using the following
transaction

TCode – BD51

Once the entry is done here, the function module appears in the drop down list in the previous stage.

Also it is important to make the following entry

Tcode WE57

Function Module will look something as below:


Source Code
functionz_idoc_input_sach .
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(INPUT_METHOD) LIKE BDWFAP_PAR-INPUTMETHD
*" VALUE(MASS_PROCESSING) LIKE BDWFAP_PAR-MASS_PROC
*" VALUE(NO_APPLICATION_LOG) LIKE SY-DATAR OPTIONAL
*" VALUE(MASSSAVEINFOS) LIKE MASSSAVINF STRUCTURE MASSSAVINF
*" OPTIONAL
*" EXPORTING
*" VALUE(WORKFLOW_RESULT) LIKE BDWF_PARAM-RESULT
*" VALUE(APPLICATION_VARIABLE) LIKE BDWF_PARAM-APPL_VAR
*" VALUE(IN_UPDATE_TASK) LIKE BDWFAP_PAR-UPDATETASK
*" VALUE(CALL_TRANSACTION_DONE) LIKE BDWFAP_PAR-CALLTRANS
*" TABLES
*" IDOC_CONTRL STRUCTURE EDIDC
*" IDOC_DATA STRUCTURE EDIDD
*" IDOC_STATUS STRUCTURE BDIDOCSTAT
*" RETURN_VARIABLES STRUCTURE BDWFRETVAR
*" SERIALIZATION_INFO STRUCTURE BDI_SER
*" EXCEPTIONS
*" WRONG_FUNCTION_CALLED
*"----------------------------------------------------------------------
includembdconwf.
data :it_emp_data like zsach1 occurs 0 with header line.
data :gen_data like zsach1 .
workflow_result = c_wf_result_ok.
data : counter type int4.
select count( * ) from zsach1 into counter.
counter = counter + 1.
loop at idoc_contrl.
ifidoc_contrl-mestyp ne 'ZSACH'.
raisewrong_function_called.
endif.
cleargen_data.
refreshit_emp_data.
loop at idoc_data where docnumeqidoc_contrl-docnum.
ifidoc_data-segnam = 'ZSACH'.
gen_data = idoc_data-sdata.
it_emp_data-mandt = counter.
it_emp_data-lname = gen_data-lname.
it_emp_data-fname = gen_data-fname.
counter = counter + 1.
appendit_emp_data.
else.
message 'ERROR' type 'I'.
endif.
endloop.
endloop.
insert zsach1 from table it_emp_data.
*****
call function 'EDI_DOCUMENT_OPEN_FOR_EDIT'
exporting
document_number = idoc_data-docnum
importing
idoc_control = idoc_contrl
tables
idoc_data = idoc_data
exceptions
document_foreign_lock =1
document_not_exist =2
document_not_open =3
status_is_unable_for_changing = 4
others = 5.
call function 'EDI_CHANGE_DATA_SEGMENTS'
tables
idoc_changed_data_range = idoc_data
exceptions
idoc_not_open =1
data_record_not_exist = 2
others = 3.
data t_itab_edids40 like edi_ds40 occurs 0 with header line.
clear t_itab_edids40.
t_itab_edids40-docnum = idoc_data-docnum.
t_itab_edids40-status = '51'.
t_itab_edids40-repid = sy-repid.
t_itab_edids40-tabnam = 'EDI_DS'.
t_itab_edids40-mandt = sy-mandt.
t_itab_edids40-stamqu = 'SAP'.
t_itab_edids40-stamid = 'B1'.
t_itab_edids40-stamno = '999'.
t_itab_edids40-stapa1 = 'Sold to changed to '.
*t_itab_edids40-stapa2 = t_new_kunnr.
t_itab_edids40-logdat = sy-datum.
t_itab_edids40-logtim = sy-uzeit.
append t_itab_edids40.
call function 'EDI_DOCUMENT_CLOSE_EDIT'
exporting
document_number = idoc_data-docnum
do_commit = 'X'
do_update = 'X'
write_all_status = 'X'
tables
status_records = t_itab_edids40
exceptions
idoc_not_open = 1
db_error =2
others = 3.
endfunction.

Running the Application

Sender system

Execute the program we created earlier


Checking the IDOC

T Code WE02

Checking the data on the Receiver end

Tcode: WE02
The IDOC has arrived here

Checking the Data

Double click on the IDOC

Checking the Database


This way, the data has come to the receiver end successfully.

Extended IDOC:

Usually enhancement takes place when the content in IDocs provided by SAP are not sufficient for the
business process. IDoc extension can take place whenever dictionary table has a new structure appended
required by the business process.

In brief IDoc extension takes place when extra fields are required for the business process.

Let us take a scenario and understand the process of IDoc extension.

In this scenario say visitor is different from the actual customer who has came to the sales office in behalf
of the customer to obtain the quotation or inquiry etc. Or an authorized agent qualified by the actual
customer to order for items. So a field by name NAMEVI (Visitor) is added to Customer master data. As
there is no provision given by SAP to handle this, we need to extend an IDoc.

The standard message type and IDoc type provided by SAP are DEBMAS and DEBMAS05.

Consider the data in the table below for extending the IDoc. These details can be understood in different
sections in the process of extending it.

Basic IDoc type DEBMAS05


Version 4.7
IDoc extension DEBMASEXT
Custom segment Z1KNA1
Fields in Custom Segment Visitor
Parent of Custom Segment E1KNA11

Outbound process

Step1. Customize kna1 table by appending a structure provided by SAP (ZAKNA1)

Component Component Type


VISITOR NAMEVI

Step2: Write a module pool program to update some existing customers to add data for Visitor.

Step3: Create a custom segment


Transaction Code: WE31

Segment type: Z1KNA11 Click (create). Provide short text

Field Name Data element


VISITOR NAMEVI

Save

Step4: Create IDoc extension

Transaction WE30
Object Name DEBMASEXT

Choose Extension

Click and it leads to next screen.


Linked basic type: DEBMAS05

Provide description and enter

Observe all the segments to be copied into your IDoc extension from linked basic

type.
Select E1KNA11 and click (create segment) to obtain a popup window

Provide the required values and observe child segment Z1KNA11 to be added to

parent segment E1KNA11.

Step5: Release segment and IDoc extension

Transaction: WE31

Segment type: Z1KNA11

Path: Edit  Set release

Step6: Assign Basic type to extension / messages

Transaction: WE82

Click , then

Select DEBMAS message type against DEBMAS06 basic type


Click provide the information

Message Type Basic Type Extension Version


DEBMAS DEBMAS06 DEBMASEXT 4.7

Delete the earlier one from which it was copied.

Save.

Observe the result as follows

Step 7: Check and Transport IDoc extension

Transaction: WE30

Object name: DEBMASEXT

Path: Development object -> Check

Ensure that there are no errors or warnings

Now transport

Path: Development -> Transport


Step8: Find suitable user exit for writing code to support IDoc extension

Transaction: SE84.

Click Enhancements

In short text provide *customer*

Find suitable enhancement to be VSV00001

Alternative way

Transaction: SMOD

Click F4 help for Enhancement

Path: F4help -> SAP Applications -> Logistics general -> Logistics Basic Data ->

Business partners -> Vendor Master.

Find the enhancement as VSV00002, which is an approximate user exit.

Now search for different extensions like VSV00001. Then see for its components.

Identify the appropriate user exit to be ‘EXIT_SAPLVV01_001’ (Create Export of

Additional Customer Master Segments). This user exit can be used in outbound ALE

process, meant for filling the data into custom segments.

You have to identify here another user exit as ‘EXIT_SAPLVV02_001’, which is

helpful for inbound ALE process. This user exit can be used to read the segments

and post it to Application repository.

Step9: Develop a project to encapsulate enhancements and components.

Transaction: CMOD.

Enhancement: custex and click Create to provide attributes.

Click Enhancement Assignments.

Provide VSV00001, short text and save.

From the initial screen of the transaction, select components and click change.

Find 4 components to be added.

Activate them.
Select user exit EXIT_SAPLVV01_001 for outbound process and double click it. It leads to function builder.

Double click on provided include program ZXVSVU01 and press enter.

Now, write supporting code for IDoc extension, i.e., populating custom segments in IDoc.

Check the code and activate.

Code in ZXVSVU01

*&---------------------------------------------------------------------*

*& Include ZXVSVU01 *

*&---------------------------------------------------------------------*

*In this scenario, the E1KNA11 has been extended to accommodate

*User-defined fields in the customer table kna1. The name of the

*extended

*segment is z1kna11. There is one custom field: visitor

*&---------------------------------------------------------------------*

*Data declarations

DATA: kna1m like e1kna1m,

kna11 like e1kna11,

z1kna11 like z1kna11,

w_kna1 like kna1.

* make sure you are processing correct message type

checkmessage_typeeq 'DEBMAS'.

* make sure data is added after the correct segment

checksegment_nameeq 'E1KNA1M'.

* since customer number is not passed in this user exit, you need to go

* through the data records to find the customer number

loop at idoc_data.

caseidoc_data-segnam.

when 'E1KNA1M'.
moveidoc_data-sdata to kna1m.

when 'E1KNA11'.

moveidoc_data-sdata to kna11.

endcase. " caseidoc_data-segname.

endloop. " loop at idoc_data.

* select data from the user-defined fields in kna11.

select single *

from kna1 " Customer master table

into w_kna1

where kunnr = kna1m-kunnr.

ifsy-subrceq 0.

* set the idoc extension name for control record

idoc_cimtype = 'DEBMASEX'.

* clear custom fields from kna1 to extended segment

clear z1kna11.

* copy custom fields from kna1 to extended segment

move-corresponding w_kna1 to z1kna11. " field name must be same

* condense all fields of extended segment

condense: z1kna11-visitor.

* populate segment name in the data record, copy data contents into it

* and append the data record to existing data records in

move 'Z1KNA11' TO IDOC_data-segnam. " administrative section

move z1kna11 to idoc_data-sdata. " data section

appendidoc_data.

endif. " ifsy-subrceq 0.

Step 10:
Define Logical System
Assign client to Logical System
Maintain RFC Destination
Maintain Customer Distribution Model
Generate Partner Profiles
Distribute Customer Distribution Model

INBOUND PROCESS

Step 11: Append the custom structure to the table KNA1 similar to the process done

in outbound process.

Step 12.

Define Logical System


Assign client to Logical System
Generate Partner Profiles

Step 13. Execute the transaction to ‘Send Customers’ from Outbound system.

Step 14. Now in the Inbound system, create the project in the similar way as done at

outbound side.

In the user exit EXIT_SAPLVV02_001, find include ‘ZXVSVU02’. Write the code to

supportIDoc extension.

Code in ZXVSVU02

*&---------------------------------------------------------------------*

*& IncludeZXVSVU02 *

*&---------------------------------------------------------------------*

data: kna1m like e1kna1m,

kna11 like e1kna11,

z1kna11 like z1kna11.

data fs_kna1 type kna1.

message i000(0) with 'INBOUND PROCESS CALLED'.

LOOP AT IDOC_data.
caseidoc_data-segnam.

when 'E1KNA1M'.

kna1m = idoc_data-sdata.

when 'E1KNA11'.

kna11 = idoc_data-sdata.

when 'Z1KNA11'.

z1kna11 = idoc_data-sdata.

select single *

from kna1

into fs_kna1

where kunnr = kna1m-kunnr.

ifsy-subrceq 0.

update kna1

set visitor = z1kna11-visitor

wherekunnr = kna1m-kunnr.

else.

idoc_status-docnum = idoc_control-docnum.

idoc_status-status = '51'.

idoc_status-msgty = 'E'.

idoc_status-msgid = 'ZE'.

idoc_status-msgno = '005'.

idoc_status-msgv1 = kna1m-kunnr.

appendidoc_status.

endif. " ifsy-subrceq 0.

endcase. " caseidoc_data-segnam.

endloop. " LOOP AT IDOC_data.


Step 15. Assign FM to extension/Message type

Transaction: WE57

Path: Change  New Entries

Select ‘IDOC_INPUT_DEBITOR’ against DEBMAS06 basic type, to fill extra

information as shown below.

Function Module Basic Type Message Type Extension

IDOC_INPUT_DEBITOR DEBMAS06 DEBMAS DEBMASEXT

Step 16. Execute the transaction to ‘Get Customers’.

Change Pointer in ALE

1. Change Pointers

Change Pointers are log entries to remember all modified records relevant for ALE. Change pointers are
log entries to table BDCP, which are written every time a transaction modifies certain fields.

2. Activate/De-activate change pointers

2.1 Activate change pointers

A) TCODE: BD50 (Activate change pointer for message type)

Below screen shows Activating change pointer for Message Type 'MATMAS'

In above screen if active flag (Check box) is unchecked then Change pointers is deactivated.
B) TCODE: BD66 (Segment Field-Change Document field)

Change Document field should exist in this TCODE align particular Segment type.

The above screen shows the fields in change document.

Message Type: MATMAS

Segment Type: E1MAKTM

The below screen shows actual fields in segment.


C) TCODE: BD61 (Activate change pointers generally)

The Below screen shows how to activate change Pointers generally.

2.2 De-activate change pointers.

If some messages types are no longer to be distributed by change pointers, you can deactivate change
pointers for this message type (by removing active flag in BD50). We can deactivate change pointers for
the message type and reactivate them again in transaction BD50.

Following screen shows how to deactivate change pointers for reduced message types.
Example: I have taken ‘ZMATMAS’. Here the shaded part is shows Deactivate change pointers PUSH
button.

3. Creating IDOC with change pointers.

TCODE: BD21

Purpose: Create IDOC type from change pointers

Program: RBDMIDOC

We can create IDOCS from change pointers with the report RBDMIDOC

The report tells how many master and communication IDocs have been created.

TCODE: BD22

Purpose: Delete Change Pointers

Program: RBDCPCLR
Here we can delete obsolete and processed change pointers in specific time and for specific message
type.
Example:

In above screen I have selected obsolete change pointers for MATMAS message type.

Example:

In below screen I have selected processed change pointers.

Execute

You might also like