Tuesday, June 28, 2011

IDOC Step-by-Step. OUTBOUND process

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.

--------------------------------------------------------------------------------

Note:Different clients but same server.

Creating the Logical System Names and Assigning to Clients:

created on client 800.


created on client 812.


Creating the RFC Connection Names:

create RFC in SM59 for both clients 800 and 812.



Creating RFC ports:

Go to TCODE WE21.

create in 800 and RFC destination which was created in 812...EC3812


create in 812 and RFC destination which was created in 800...EC3

Creating table structure:

ð Go to TCODE SE11.

ð Specify table name as zdemo_material.( in client 800 EC3)

Creating IDOC Segments:

Go to TCODE WE31.

Specify a name and Click on Create Button.



Creating Basic IDOC Type:

Go to TCODE WE30

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

after creating NOTE: Go to menu EDIT->Click Set Release



Creating Message Type:

Go to TCODE WE81.

Click on Display / Change button.


Assign Message Type to Basic IDOC Type:

Go to TCODE WE82

Click on Display / Change Button


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.


Click on Environment Menu -> Generate Partner profile

It will show the following screen, click on execute.


Note: Dont create in client 812, because we are using the same server. It will be automatically created in the client 812. check bd64 in client 812.

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

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


MODEL VIEW Created.

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.

====================================================

REPORT ZDEMO_IDOCSEND.

TABLES: zdemo_material.

DATA : S_CTRL_REC LIKE EDIDC, "Idoc Control Record
S_ZSEGMENT LIKE ZSEGMENT. "CUSTOMER Header Data

DATA : T_zdemo_material LIKE zdemo_material 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 'ZSEGMENT'.
CONSTANTS: C_IDOCTP LIKE EDIDC-IDOCTP VALUE 'ZSTUDENTIDOC'.
*** Selection Screen
SELECT-OPTIONS : S_BUKRS FOR zdemo_material-BUKRS OBLIGATORY.
PARAMETERS : C_MESTYP LIKE EDIDC-MESTYP DEFAULT 'ZCLIENTMSG', "Message Type
C_RCVPRT LIKE EDIDC-RCVPRT DEFAULT 'LS', "Partner type of receiver
C_LOGSYS LIKE EDIDC-RCVPRN DEFAULT 'EC3812'.
* C_RCVPOR LIKE EDIDC-RCVPOR DEFAULT 'A000000018',
* C_SNDPRN LIKE EDIDC-SNDPRN DEFAULT 'EC3',
* C_SNDPRT LIKE EDIDC-SNDPRT DEFAULT 'LS'. "Destination System
DATA ZSEGMENT.

***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 zdemo_material
INTO TABLE T_zdemo_material
WHERE BUKRS IN S_BUKRS.
IF SY-SUBRC NE 0.
MESSAGE E398(00) WITH 'No Company code 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 .

SORT T_zdemo_material BY BUKRS.

LOOP AT T_zdemo_material.
S_ZSEGMENT-MANDT = T_zdemo_material-MANDT.
S_ZSEGMENT-BUKRS = T_zdemo_material-BUKRS.
S_ZSEGMENT-BUTXT = T_zdemo_material-BUTXT.
S_ZSEGMENT-ORT01 = T_zdemo_material-ORT01.
s_ZSEGMENT-ADRNR = T_zdemo_material-ADRNR.
T_EDIDD-SEGNAM = C_ZSHSTUSEG.
T_EDIDD-SDATA = S_ZSEGMENT.
APPEND T_EDIDD.
CLEAR T_EDIDD.
ENDLOOP.
ENDFORM. " ARRANGE_DATA_RECORDS

====================================================

Now execute the program, and specify the range of records to transfer



Idoc generated id you will get.

Go to TCODE WE02 to check the generated IDOC control records.

Click on Execute or Refersh

If u find the Status Yellow.

Then Go se38.. Program name: RSEOUT00...Execute


Go to TCODE WE02 to check the generated IDOC control records.


====================================================

Took Reference from the link given below:

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.