Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Idoc

Former Member
0 Likes
643

Hi,

I have created the IDOC by using program.It successfully created the IDOC.But It doesn't update the database.I gave a new material number as input.Then i check in the database.It doesn't exist.Here i copied my codings check it out please...

TYPE-POOLS:TRUXS.

DATA:I TYPE I VALUE '1'.

DATA:IT_DATA TYPE TRUXS_T_TEXT_DATA.

DATA:BEGIN OF ITAB OCCURS 0,

MATNR LIKE E1MARAM-MATNR,

MBRSH LIKE E1MARAM-MBRSH,

MTART LIKE E1MARAM-MTART,

MAKTX LIKE E1MAKTM-MAKTX,

MEINS LIKE E1MARAM-MEINS,

END OF ITAB.

DATA:BEGIN OF ITAB1 OCCURS 0,

AMATNR LIKE E1MARAM-MATNR,

AMBRSH LIKE E1MARAM-MBRSH,

AMTART LIKE E1MARAM-MTART,

AMEINS LIKE E1MARAM-MEINS,

AMAKTX LIKE E1MAKTM-MAKTX,

END OF ITAB1.

DATA:ZE1MARAM LIKE E1MARAM OCCURS 0 WITH HEADER LINE.

DATA:ZE1MAKTM LIKE E1MAKTM OCCURS 0 WITH HEADER LINE.

DATA : S_CTRL_REC LIKE EDIDC OCCURS 0 WITH HEADER LINE.

DATA : T_EDIDD LIKE EDIDD OCCURS 0 WITH HEADER LINE.

DATA : T_COMM_IDOC LIKE EDIDC OCCURS 0 WITH HEADER LINE.

CONSTANTS :

C_ZRZSEG1 LIKE EDIDD-SEGNAM VALUE 'E1MARAM',

C_ZRZSEG2 LIKE EDIDD-SEGNAM VALUE 'E1MAKTM'.

DATA:C_MESTYP LIKE EDIDC-MESTYP VALUE 'MATMAS',

C_RCVPRT LIKE EDIDC-RCVPRT VALUE 'LS',

C_LOGSYS LIKE EDIDC-RCVPRN VALUE '810',

C_RCVPOR LIKE EDIDC-RCVPOR VALUE 'A000000041',

C_SNDPOR LIKE EDIDC-SNDPOR VALUE 'SAPTSI',

C_SNDPRN LIKE EDIDC-SNDPRN VALUE '800',

C_IDOCTP LIKE EDIDC-IDOCTP VALUE 'MATMAS05',

C_SNDPRT LIKE EDIDC-SNDPRT VALUE 'LS'.

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'

EXPORTING

  • I_FIELD_SEPERATOR =

I_LINE_HEADER = 'X'

i_tab_raw_data = IT_DATA

i_filename = 'C:\Documents and Settings\User\Desktop\IDOC555.xls'

tables

i_tab_converted_data = ITAB.

  • EXCEPTIONS

  • CONVERSION_FAILED = 1

  • OTHERS = 2.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT ITAB.

ITAB1-AMATNR = ITAB-MATNR.

ITAB1-AMBRSH = ITAB-MBRSH.

ITAB1-AMTART = ITAB-MTART.

ITAB1-AMAKTX = ITAB-MAKTX.

ITAB1-AMEINS = ITAB-MEINS.

APPEND ITAB1.

ENDLOOP.

START-OF-SELECTION.

PERFORM GENERATE_CONTROL_RECORD.

PERFORM SEND_IDOC.

*&----


*& Form generate_control_record

*&----


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-SNDPOR = C_SNDPOR. "SENDER PORT

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

APPEND S_CTRL_REC.

ENDFORM. " generate_control_record

*&----


*& Form send_idoc

*&----


FORM SEND_IDOC.

LOOP AT ITAB1.

READ TABLE ITAB1 INDEX I.

ZE1MARAM-MATNR = ITAB1-AMATNR.

ZE1MARAM-MBRSH = ITAB1-AMBRSH.

ZE1MARAM-MTART = ITAB1-AMTART.

ZE1MARAM-MEINS = ITAB1-AMEINS.

APPEND ZE1MARAM.

ZE1MAKTM-MAKTX = ITAB1-AMAKTX.

APPEND ZE1MAKTM.

T_EDIDD-SEGNAM = C_ZRZSEG1.

T_EDIDD-SDATA = ZE1MARAM.

APPEND T_EDIDD.

T_EDIDD-SEGNAM = C_ZRZSEG2.

T_EDIDD-SDATA = ZE1MAKTM.

APPEND T_EDIDD.

CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'

EXPORTING

MASTER_IDOC_CONTROL = S_CTRL_REC

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 NE 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ELSE.

LOOP AT T_COMM_IDOC.

WRITE:/ 'IDoc Generated - ', T_COMM_IDOC-DOCNUM.

ENDLOOP.

ENDIF.

I = I + 1.

ENDLOOP.

endform.

Help me.

Thank u,

Manjula Devi.D

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
506

CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'

EXPORTING

MASTER_IDOC_CONTROL = S_CTRL_REC

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 NE 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ELSE.

Do the Commit work
COMMIT WORK

LOOP AT T_COMM_IDOC.

WRITE:/ 'IDoc Generated - ', T_COMM_IDOC-DOCNUM.

ENDLOOP.

ENDIF.

I = I + 1.

ENDLOOP.

Regards

Kannaiah

3 REPLIES 3
Read only

Former Member
0 Likes
507

CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'

EXPORTING

MASTER_IDOC_CONTROL = S_CTRL_REC

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 NE 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ELSE.

Do the Commit work
COMMIT WORK

LOOP AT T_COMM_IDOC.

WRITE:/ 'IDoc Generated - ', T_COMM_IDOC-DOCNUM.

ENDLOOP.

ENDIF.

I = I + 1.

ENDLOOP.

Regards

Kannaiah

Read only

Former Member
0 Likes
506

Hi,

The code which you have written can be called as a Selection Program. Here you are sending the IDOC to the ALE layer of the sender system..(Distribution hence you used MASTER_IDOC_DISTRIBUTE) Check in Tables EDIDC and EDID4 for the IDOC which was created. You have to Post the Data using a Posting program in the Recieving System. You need to select the data from EDIDD and EDID4 in the recieving system and then Write a BDC to MM01 or a BAPI..only then a material is created.

santhosh

Read only

0 Likes
506

Hi,

I successfully updated in a database.but i cant updated in the different server.

I connected two clients in the same server 800 and 810.I successfully created the idoc and updated the material in 810.but i didnt get the same material in 800.what can i do for this.help me.

Thank u,

Manjula devi.D