76
9/3/2014 Overview of ALE/IDOCs 1 Overview of ALE / EDI / IDOCs

ALE IDOC

  • Upload
    sapgak

  • View
    24

  • Download
    0

Embed Size (px)

DESCRIPTION

ALE IDOC

Citation preview

  • *Overview of ALE/IDOCs*Overview of ALE / EDI / IDOCs

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**EDI What is EDI?Type of EDI process Outbound EDI Process Inbound EDI Process

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs** What is EDI?EDI is electronic exchange of business documents between the computer systems of business partner using a standard format over a communication network EDI is also called a paperless exchange.

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Typical EDI/IDOC Scenario

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Outbound ProcessWith Message ControlDirectly -With out Message Control

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Inbound ProcessWith Function Module

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**EDI ConfigurationHow to Set Up an RFC Destination in SAPThe Port DefinitionsConfigure Partner ProfileConfigure Message Control

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Complete EDI/ ALE scenario

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**ALE What is ALE? Components of ALE. Anatomy of an IDoc. ALE Processing Transactions For Monitoring and Processing IDocs. Questions

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**ALE TerminologyALE - Application Linking & Enabling

    IDoc - Intermediate Document

    EDI - Electronic Data Interchange

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**ALE Objective

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs** ALE!! What is it ??It is a set of Tools, programs and data definitions

    Provides distribution model and technology that enables SAP Customer to interconnect programs across various platforms and systems.

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**

    Features ALE / IDocs Distributed System yet integrated with SAP R/3

    Based on Application-to-Application integration using Message Architecture

    Reliable communication Data is exchanged using IDocs

    Support both R/2, R/3 and External system

    If network problem, message is buffered

    ALE support backward compatibility

    ALE ensure that , data is transferred only once

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**ALE Scenario

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs** What is ALE ? Components of ALE. Anatomy of an IDoc. ALE Processing Transactions For Monitoring and Processing IDocs. Trouble Shooting Questions

    Topics to cover

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Components of ALE Services: Application Services Distribution Services Communication Services

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Application Services

    Services: Application Services Distribution Services Communication Services

    This is where the SAP applications ( SD, FI, MM etc. ) generate their data and documents

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Distribution ServicesServices: Application Services Distribution Services Communication Services

    Recipients Formats and Filters the data Creates IDocs ( Intermediate Documents

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Communication Services

    Services: Application Services Distribution Services Communication Services

    TCP/IPRFCtRFC etc

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**DetermineReceipientsFilter/ConvertData, Create IDOCApplication FunctionsFilter/ConvertDataCarrierApplication LayerDistribution/ ALE LayerCommunication LayerApplicationIn a Nut Shell

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Topics to cover What is ALE ? Components of ALE. Anatomy of an IDoc. ALE Processing Transactions For Monitoring and Processing IDocs. Trouble Shooting Questions

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**IDoc Concept

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**IDoc Structure

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Control recordData RecordStatus RecordIDOC Intermediate Document

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs** The very first record of an IDoc package is always a control record. Thestructure of this control record of the structure EDIDC and describes the contents of the data contained in the package. The control record goes to table EDIDC

    Control Record

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Message Type

    Message Type indicates How to Know what the data MeansData Exchanged by IDOC and EDI is known as MessagesMessage of same kind belong to the same message type.Message types are stored in table EDMSG

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**All records in the IDoc, which come after the control record, are the IDoc data. They are all structured alike, with a segment information part and a data part, which is 1000 character in length, filling the rest of the line. Data & Segment info is stored in EDID4 for release 4.x and EDID3 for release 2.x and 3.x.Data Record

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Status Record

    Information about the IDoc status like:IDoc identification numberStatus number - table verifiedIDoc typeDirectionData and time stamp; Structure: EDIDS

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Status of IDOC

    A two-digit status is assigned to an IDoc to allow the processing to be monitored. The statuses for outbound IDocs are between '01' and '49', while the statuses for inbound IDocs begin with '50'.

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Idoc SegmentsTCODE:WE31

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Idoc TypesTCODE:WE30

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**How to Attach Segments

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Message TypesWE81WE82

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**IDOC Type/ Message Type/ Processing Function Module

    Valid combination of Message type and IDOC type are stored in table EDIMSGCombination of message type and IDOC type determine the processing algorithm. This is usually a function module and is set up in table EDIFCT.

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Topics to cover What is ALE ? Components of ALE. Anatomy of an IDoc. ALE Processing. i.Outbound Processing ii.Inbound Processing Transactions For Monitoring and Processing IDocs. Trouble Shooting Questions

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Outbound Processing

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Outbound processing: directApplication postingALE layerDatabaseApplication document posted simultaneously with IDOCsComm. layerasynch. RFCorEDISystem call FM( INBOUND_IDOC_PROCESS )On destinationComm. layer

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Dispatch control

    Application postingALE layerDatabaseApplication document posted simultaneously with IDocsasynch. RFCorEDIasynch. RFCorEDIComm. layerTechnical comms parameters are definedEDI or aRFC (asynch. remote function call)Send immediately or cumulate and send via batch jobIf batch, packet size is determined

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Scenario analysis

    How does the IDOC look like ?How is data being sent ?How is the data being received ?

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Outbound program developmentProgram logicHow is the IDOC being created ?

    TriggeringHow is the IDOC creation kicked off ?

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Program logic Select data from application tables Fill data into IDOC Pass IDOC to ALE layer (Call function MASTER_IDOC_DISTRIBUTE) Commit Work Receiver determination Segment filtering Version Control Dispatch ControlIDOC programALE layerMASTER_IDOC_DISTRIBUTE

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**MASTER_IDOC_DISTRIBUTE

    Call function MASTER_IDOC_DISTRIBUTEExportingmaster_idoc_control: IDOC control recordTablescommunication_idoc_control: returned information about the distributionmaster_idoc_data: IDOC data segments

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Filling an EDIDD structure

    MOVE Z1SEG to EDIDD-SEGNAMMOVE 10 to Z1SEG-FIELD1MOVE ABC to Z1SEG-FIELD2MOVE Z1SEG to EDIDD-SDATA

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**General Programming rulesDesign Guidelines for creating IDOC data records:

    Left-justified filing of IDOC Fields

    Replacing SAP codes with ISO codescurrency keyscountry keysunit of measureshipping instructionsConverting Currency Amounts

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Left-justified Filling

    All fields must be left-justifiedCharacter fields: automatic

    Non-character fields:Condense statement must be usedCheck IDOC documentation to find out which fields require a condenseAll types unequal to char, cuky, clnt, accp, numc, dats, tims or unit require a condense

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Code Conversions

    Replacing SAP codes with ISO codesCurrency keys: currency_code_sap_to_isoCountry keys: country_code_sap_to_isoUnits of measure: unit_of_measure_sap_to_isoShipping instructions: sap_iso_package_type_codeConversion of currency amountscurrency_amount_sap_to_iso

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Basic Configuration ElementsDefine RFC DestinationsDefine PortsMaintain Customer ModelCreate Partner Profiles

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Maintaining RFC DestinationsTCODE:SM59

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Displaying and Maintaining Ports A port is a logical representation of a communication channel in SAP with the data communicated being IDocs.

    TCODE:WE21

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Partner ProfilesTCODE:WE20

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Partner Profiles-Inbound

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Partner Profiles-Outbound

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**ALE For Transactional data ---- Output DeterminationNACE

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Output Determination -- Output Types

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Output Types -- Details

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Inbound Processing

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Inbound Processing.Application postingALE layerInput controlDatabaseSimultaneously update IDOC's status

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Input ControlApplication postingALE layerInput controlDatabaseSimultaneously update IDOC's statusFor each message type and sender one can definewhen to process (immediate/batch)whether to call application directly or start customer workflowwho should get work items in case of errorIncoming IDOC packets are passed to application

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Application InputApplication postingALE layerInput controlDatabaseSimultaneously update IDOC's statusInbound IDOCs are passed to the application via a standardized function interface

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**SerializationApplication postingALE layerInput controlDatabaseSimultaneously update IDOC's statusWhen processing the inbound IDOC, the application can call an ALE API (function module) to check that the IDOC has not been overtakenIf change No. 1 arrives after change No. 2, the IDOC containing it has been overtaken (by the IDOC containing the later change)

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**FM Assignment to Message Type and IDoc typeTCODE:WE57

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs** Process CodesWE41WE42

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Process Codes in Inbound and OutboundTCODE:WE64

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs** FM For Inbound EDI TCODE:BD67

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Inbound Program DevelopmentINBOUND_IDOC_PROCESSALE layerIDOC_INPUT_

    Read IDOC data Post Application data Send Success info back to ALE layerALE configuration Partner Profiles Process Code Function module attribute Function module registryCall functionReturn VariablesIf ERROR, trigger Version change Segment filter Field conversion

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Basic ScenarioDirect MethodCall Transaction Method

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Advanced ScenarioMass processing SerializationAdvanced Workflow

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Flow Of ProgramRead IDOC-Lock IDOC-Call Inbound Program-Write Status-Commit Work-Unlock IDOC

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Interface of Inbound FMImporting Parameter -Input Method -Mass_processingEXPORT parameter .-Workflow_result-Application_variable-In_Update_task-Call_transaction_done

    Tables parameter : IDOC_ControlIDOC_DATAIDOC_STATUSReturn_variable

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Topics to cover What is ALE ? Components of ALE. Anatomy of an IDoc. ALE Processing Transactions For Monitoring and Processing IDocs. Questions

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Monitoring IDocs The IDoc interface offers 2 different approaches for tracking of data load and data flow:Reports for monitoringWorkflow for notifications Both approaches are based on the concept of status transitions, i.e. an IDoc changes its status from a given value to another value.

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**List Of All IDocs Created. (Default, Additional, EDI)-- WE02/ WE05

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Selection Program For Issuing Output -- WE15

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Test Tool For Idoc Processing (WE19)

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Idoc Search For Business Contents (Database). WE09

    Overview of ALE/IDOCs

  • Overview of ALE/IDOCs**Questions

    Overview of ALE/IDOCs

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Application Link Enabling SAP data interfacing ALE is SAP proprietary technology that enables data communications between two or more SAP systems and or R/3 and external systems.ALE technology facilitates rapid application prototyping and application interface development, thus reducing implementation time. ALE is SAPs solution to support distributed applications.

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 An IDOC Type:is an SAP Data Dictionary defined structureprovides the highest level definition for a filehas a predefined structurerepresents a series of related business documents An IDOC (formally Message):is the occurrence of a message typeis the actual representation of a business transaction Copyright IBM Corporation 2004 Copyright IBM Corporation 2004The IDOC control record is a kind of envelope record that contains information about the IDOC likeIDOC type (what data is in the IDOC)Message type (how is the IDOC being processed)Sender information (who is the sender of that IDOC)Receiver information (who is the receiver of that IDOC)Latest status of EDI processing.EDI standard and version.The only two mandatory fields that must be filled are the Message type (MESTYP) andIDOC type (IDOCTP)Note that you have to use uppercase literals when you fill the two fieldsThe sender information - along with additional information - is automatically filled in by the ALE layer (in function module MASTER_IDOC_DISTRIBUTE)The receiver information is optional:If a receiver is specified, a check is carried out against the Distribution Model if this receiver is valid. If it is, an IDOC is created; otherwise no IDOC will be created. If no receiver is specified, MASTER_IDOC_DISTRIBUTE will determine all valid receivers that are maintained in the distribution model for that message type and create an IDOC for each receiver ! Copyright IBM Corporation 2004 Copyright IBM Corporation 2004The IDOC control record is a kind of envelope record that contains information about the IDOC likeIDOC type (what data is in the IDOC)Message type (how is the IDOC being processed)Sender information (who is the sender of that IDOC)Receiver information (who is the receiver of that IDOC)Latest status of EDI processing.EDI standard and version.The only two mandatory fields that must be filled are the Message type (MESTYP) andIDOC type (IDOCTP)Note that you have to use uppercase literals when you fill the two fieldsThe sender information - along with additional information - is automatically filled in by the ALE layer (in function module MASTER_IDOC_DISTRIBUTE)The receiver information is optional:If a receiver is specified, a check is carried out against the Distribution Model if this receiver is valid. If it is, an IDOC is created; otherwise no IDOC will be created. If no receiver is specified, MASTER_IDOC_DISTRIBUTE will determine all valid receivers that are maintained in the distribution model for that message type and create an IDOC for each receiver ! Copyright IBM Corporation 2004 Copyright IBM Corporation 2004The IDOC data records contain the data of the message. The data records are passed in an internal table and they have to match the structure of the IDOC (sequence of segments, min/max, hierarchy etc.)EDIDD is a generic structure used for all IDOC segments SEGNAM field identifies the segment typeSDATA contains the actual data of the segment Copyright IBM Corporation 2004 Copyright IBM Corporation 2004Status Record- table EDIDS Information we get from Status record:Status number MessageIDoc typeDirectionData and time stampDetailed description of status by code and textLocation of exception in Intermediate DocumentDetector of exception by program and user. The statuses for outbound IDocs are between '01' and '49', while the statuses for inbound IDocs begin from '50'. When an IDoc is created, the IDoc Interface sets the status in the function module EDI_DOCUMENT_CLOSE_CREATE. All additional status records are written explicitly by the function module EDI_DOCUMENT_STATUS_SET. It is possible to have Custom Statuses also.

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004The IDOC control record is a kind of envelope record that contains information about the IDOC likeIDOC type (what data is in the IDOC)Message type (how is the IDOC being processed)Sender information (who is the sender of that IDOC)Receiver information (who is the receiver of that IDOC)Latest status of EDI processing.EDI standard and version.The only two mandatory fields that must be filled are the Message type (MESTYP) andIDOC type (IDOCTP)Note that you have to use uppercase literals when you fill the two fieldsThe sender information - along with additional information - is automatically filled in by the ALE layer (in function module MASTER_IDOC_DISTRIBUTE)The receiver information is optional:If a receiver is specified, a check is carried out against the Distribution Model if this receiver is valid. If it is, an IDOC is created; otherwise no IDOC will be created. If no receiver is specified, MASTER_IDOC_DISTRIBUTE will determine all valid receivers that are maintained in the distribution model for that message type and create an IDOC for each receiver ! Copyright IBM Corporation 2004 Copyright IBM Corporation 2004The first step in creating a new IDOC is to create all the segments that go into that IDOC. There are some rules that have to be followed while creating the segments:The name of that segment type must start with Z1

    For each field in the segment you have to define a field name, a data element for the segment structure and a data element for the segment documentation.

    The data element for the segment structure has to be of data type CHAR

    The IDOC tools create overall three structures:

    Z1nnnnn - field names

    Z2nnnnn - data elements for structure definition

    Z3nnnnn - data elements for documentationIDoc typeIDoc structure typeReceiver port/partner type/partner numberSender port/sender type/sender number

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004The next step is to create the IDOC type by assembling all the necessary segments. Part of our scenario analysis was to define the layout of the IDOC. We should have addressed the following questions:

    Which segments should be used ?What is the hierarchy of the segments ?Which segments are mandatory and which are optional ?How often may a segment be repeated ?

    SAP recommends to create the structures as flat as possible. Usually each level of segment hierarchy results in a looping structure in the corresponding program. Therefore its easier to deal with flat structures.Conceptually the IDOC type describes the technical structure of the message Copyright IBM Corporation 2004 Copyright IBM Corporation 2004Here is how to create a new IDOC type by assembling previously defined segments:Go to the maintenance of IDOC typesIn the ALE-IMG: Extensions->IDOC types -> Maintain IDOC type

    Select creation of new basic IDOC typePut segments into the IDOCSegment -> CreateEnter segment nameEnter attributes (Mandatory/Minimum/Maximum number)

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004Once the IDOC type is defined a message type has to be created. A message type determines how the data in the IDOC is being processed. This allows to use the same IDOC in different scenarios but process the data differently through different message types. A Message Type is the equivalent of a business document type. It characterizes the data being sent across systems, e.g. MATMAS is a message type for Material Master. Here is how to define a new message type :Go to the maintenance of IDOC typesIn the ALE-IMG: Extensions->IDOC types -> Maintain IDOC type

    Go to message type maintenance:Environment -> Message typesTable view -> Display -> ChangeNew entriesCustomer message types should be in the customer name range (starting with Z)

    Last step of the IDOC creation process is to link the new IDOC type with the new message type. Later in the process the message type will be linked to the outbound and inbound programs. With these configurations it is determined how the IDOC is being processed. The relationship between IDOC type and message type is a 1-to-many relationship. That means an IDOC can be associated with multiple message types thus allowing the IDOC to be processed differently, but a message type refers to exactly one IDOC type. Here is how to link the message type with the IDOC type :Go to the maintenance of IDOC typesIn the ALE-IMG: Extensions->IDOC types -> Maintain message type for Intermediate structure

    Choose function EDI: Message types and assignment to IDOC typesLink your message type with your IDOC typeTable view -> Display -> ChangeNew entriesMessage type : ZBasic IDOC type: Z..

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004The IDOC control record is a kind of envelope record that contains information about the IDOC likeIDOC type (what data is in the IDOC)Message type (how is the IDOC being processed)Sender information (who is the sender of that IDOC)Receiver information (who is the receiver of that IDOC)Latest status of EDI processing.EDI standard and version.The only two mandatory fields that must be filled are the Message type (MESTYP) andIDOC type (IDOCTP)Note that you have to use uppercase literals when you fill the two fieldsThe sender information - along with additional information - is automatically filled in by the ALE layer (in function module MASTER_IDOC_DISTRIBUTE)The receiver information is optional:If a receiver is specified, a check is carried out against the Distribution Model if this receiver is valid. If it is, an IDOC is created; otherwise no IDOC will be created. If no receiver is specified, MASTER_IDOC_DISTRIBUTE will determine all valid receivers that are maintained in the distribution model for that message type and create an IDOC for each receiver ! Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004The application drives distribution: ALE does not read application tables to build messages, instead the applications have ALE-calls built in.Data consistency is ensured by the database: the application document and the ALE-document (IDOC) are posted in the same LUW (logical unit of work). Hence if one fails to post, both fail.The following slides give more details on output processing.

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004Dispatch control is where technical parameters are maintained:whether to pass the IDocs to the file interface for EDI-subsystems, or to other systems via asynchronous remote function calls.whether IDocs should be sent immediately or cumulated and sent periodically by a batch job; in the latter case the packet size (see later) is determined here.

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004First step in creating our own ALE scenario is to do a scenario analysis. We have to understand what the data looks like that is going to be exchanged, how we it is being extracted and how it is being processed.We have to consider the following questions:How is the Data Container (IDOC) being structured ?Which data fields have to be transferred ?How many logical groups of data (header vs. line item) do we have ? Do we have hierarchical structures ?Are there any optional or mandatory groups ?How long are the data fields ?

    When should which data be sent ? How does the triggering work ?Where is the data being extracted from ?

    What should the receiver to with the data ? Once we have done our analysis we should have a clear understanding about the IDOC structure. Assuming we have designed the layout of our IDOC it is fairly simple and straightforward to define that IDOC in SAP with the so called IDOC definition tools. There are 4 main steps involved in creating the IDOC:Create segmentsCreate IDOC typeCreate message typeLink message type with IDOC type

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004In implementing an outbound program we have two deals with mainly two issues: Designing the program logic Defining a trigger mechanism for the programThe program logic defines how the data gets extracted from the application tables and how the IDOC is being created.The trigger mechanism defines how the interface (and an ALE scenario is nothing else than a SAP-to-SAP interface) gets kicked off.In the following, we will first focus on program logic and than explore different options to trigger the outbound IDOC creation.

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004The fundamental logic of an outbound IDOC program is fairly simple. It can be subdivided into 3 steps:Select the data from the application tablesFill the data into the IDOC Pass the IDOC to the ALE layerCompared to a traditional interface program the main difference is that the data is selected into the IDOC format and send to the ALE layer as opposed to writing the data out to a flat file. The selection logic itself is the pretty much the same.The entry point into the ALE layer is the function module MASTER_IDOC_DISTRIBUTE. All ALE functionality that was introduced earlier (Receiver determination, Segment filtering, Version Control, Dispatch Control) is buried in that function module. That functionality is totally transparent to a programmer - all he is concerned with is to call MASTER_IDOC_DISTRIBUTE with the appropriate parameters.

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004Lets have a closer look at the function module MASTER_IDOC_DISTRIBUTEConceptually MASTER_IDOC_DISTRIBUTE accepts as a parameter exactly one IDOC. That IDOC is passed in the two structures master_IDoc_control and master_IDoc_data. master_IDoc_control is a one-dimensional data structure (field string) that holds the IDOC control record. We will see shortly the minimal information that needs to go into the IDOC control record.master_IDoc_data is a two-dimensional data structure (table), that holds all the data records of the IDOC to be sent out. We will shortly see what information needs to put into the data records of an IDOC.communication_IDoc_control is a data structure that returns back additional control record information of the IDOC that was created. The most important information passed back is the IDOC number. This data structure doesnt have to be filled before MASTER_IDOC_DISTRIBUTE is called.

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004Since the EDIDD structure is used for all different type of IDOCs containing all sorts of Segments, filling the EDIDD structure is a little bit tricky.First you have to fill the 55-byte header with the Segment name. Second the 1000-byte SDATA field needs to be filled. This is a two-step process (similar to a COBOL - redefine construct):First, fill the data into a field string that has the structure of the segment type you want to fillSecondly, move the whole field string into the SDATA fieldNote: The receiver of the IDOC needs to execute the reverse logic. The SEGNAM information helps to parse out the SDATA field by moving it into a field string that matches the layout of the segment type specified in the SEGNAM field.

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004There are a couple of general rules that have to be followed when constructing the IDOC program:

    All fields must be left-justifiedCurrency Amounts must be convertedAll SAP codes must be converted into ISO codes

    SAP codes that have to be converted include Currency keys, country Keys, Unit of measure and Shipping instructions.

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004All fields in the IDOC are defined with a data type of CHAR. SAP choose that approach to ensure independency of any internal binary representations. All fields have to left-justified.ABAP automatically converts different data types into each other. However, this automatic conversion doesnt produce the desired left-justification for all data types. SAP requires to convert the all data types with the exception of char, cuky, clnt, accp, numc, dats, tims or unit.The easiest way to left-justify the fields is with the Condense statement

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004SAP decided not to use any SAP specific codes in the IDOC. Instead they recommend to use ISO codes. Note: This decision a relict from the EDI world. In an SAP-to-SAP scenario it doesn't make sense, because the receiver program has to do the conversion back into the SAP code ! As long as the sender and receiver have the same assumptions about the codes, there is no technically reason to do code conversions.SAP delivers a set of function modules to do these conversion:Currency keys: currency_code_sap_to_isoCountry keys: country_code_sap_to_isoUnits of measure: unit_of_measure_sap_to_isoShipping instructions: sap_to_iso_package_type_codeThe Currency Amounts has also be converted with the function module currency_amount_sap_to_idocNote: There is a similar set of function modules to do the conversion in the opposite directions (from ISO to SAP). These function modules have to be used on the receiving side.

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004The Remote Function Call is controlled via the parameters of the RFC destination. The RFC destinations must be maintained in order to create an RFC port.The name of the RFC destination should correspond to the name of the logical system in question. The following types of RFC destinations are maintainable:

    R/2 links R/3 links internal links logical destinations CMC link SNA/CPI-C connections TCP/IP links links of the ABAP/4 drivers

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004You specify the technical characteristics of the link between the SAP System and the other system in the port definition.The following port types are supported:Asynchronous RFCR/2 SystemFile interfaceThe ALE interface generates ports automatically. The EDI interface assigns numbers internally for these ports. Hence the ports can be identified explicitly. The system can only generate the numbers if a number range is entered for the number range object EDIPORT in number range 01.

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004Tells the ALE Layer how to send Msg. Between systems.The Partner No. is the logical system name of the other system.The Partner type is LS ( logical system) for ALE.The Partner Class is a free text field that classifies Partners.

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004The first part of input processing mirrors output processing, with version change, segment filter and field value conversion.The IDOC is first written to the database, with a link to the IDOC in the sending system, and then input control takes over:the type of input is determined (function module, workflow, workitem)the input timing is determined (immediate or cumulated and processed in batch)who should be informed in case of errorIf serialization is necessary, the application posting function can call an ALE-API (function module) to determine whether the IDOC has been overtaken (explained later).IDOC processing is complete when an application document is created or changed; to signal this, a success status record is added to the IDOC in the same LUW (logical unit of work) as that in which the application document is processed. The only exception to the above is the with ORDERS and ORDCHG, where a call transaction is first called and then the status is updated.

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004On the inbound side there are 3 major elements that need to be developed to finalize a custom ALE scenario:Inbound function module: The function module is responsible for processing the IDOC and creating an application document from the IDOC data. The function module is called by the ALE layer and has to return back information about the success of the document posting.ALE configuration: The ALE layer has to have knowledge which function module to call for a certain message type / IDOC type. These assignments are made through ALE configuration Workflow task: ALE error handling is done via workflow. A workflow task has to be defined that can be executed for the case that the application document posting in the function module was not successful. The ALE layer gets the information about the success of the posting passed from the inbound function module. The workflow takes is started by the ALE layer.Here is a more detailed look at these 3 components and how they interact.INBOUND_IDOC_PROCESS is the generic entry point for all inbound IDOC processing. This function module is called by the sending SAP systems and gets one or more IDocs passed as parameter. All the ALE layer functionality that we learned about previously (Version change, segment filtering, field conversions) are handled in that function module.INBOUND_IDOC_PROCESS takes information out of the control record of the IDOC to access the partner profile. Part of the partner profile is a process code that is tied to an inbound IDOC function module. This function module is then being called.The SAP naming convention for an inbound function module is IDOC_INPUT_. Since we have to stay within the customer name space, a custom inbound module typically is called Z_IDOC_INPUT_. The inbound function module reads the rest of IDOC data and posts the application document. It returns status information back to the ALE layer about the success of that posting. Depending on the return information of the inbound function module, the ALE layer (INBOUND_IDOC_PROCESS) triggers a workflow task to initiate error handling. The information which task to start is part of the ALE configuration.

    Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004 Copyright IBM Corporation 2004