‎2008 Jul 16 12:38 PM
Hi All,
My final Internal Table of Report Program contains 28 fields with data. This is related to PO.
I have created a custom IDOC type, Segments with those fields.
Created the custom Message Type and assigned to the IDOC Type.
My question is...
How to populate the field values from Report Program to IDOC and trigger the IDOC.
\[removed by moderator\]
Regards,
Viji.
Edited by: Jan Stallkamp on Aug 6, 2008 2:30 PM
‎2008 Jul 16 12:46 PM
Hi,
With the help of program also u can trigger a idoc.
plz look at the below code here i have am select a record for a customer and passing it to the other system, the program on sender side :
TABLES : KNA1.
SELECT-OPTIONS : S_KUNNR FOR KNA1-KUNNR.
DATA : IT_EDIDC TYPE STANDARD TABLE OF EDIDC,
WA_EDIDC TYPE EDIDC.
DATA : IT_EDIDD TYPE STANDARD TABLE OF EDIDD,
WA_EDIDD TYPE EDIDD.
DATA : IT_KNA1 TYPE STANDARD TABLE OF KNA1,
WA_KNA1 TYPE KNA1.
DATA : WA_ZSEGIDOC TYPE ZTEST_SEG_TYPE_1.
START-OF-SELECTION.
SELECT * FROM KNA1 INTO TABLE IT_KNA1 WHERE KUNNR IN S_KUNNR.
*CONTROL RECORD
WA_EDIDC-RCVPRN = 'TRNCLNT800'.
WA_EDIDC-RCVPRT = 'LS'.
WA_EDIDC-RCVPOR = 'TESTALE'.
WA_EDIDC-DOCREL = 700.
WA_EDIDC-DIRECT = 1.
WA_EDIDC-MESTYP = 'TEST_MSG_TYPE_1'.
WA_EDIDC-IDOCTP = 'ZTEST_IDOC_TYPE_1'.
*DATA RECORD
LOOP AT IT_KNA1 INTO WA_KNA1.
MOVE :
WA_KNA1-KUNNR TO WA_ZSEGIDOC-KUNNR,
WA_KNA1-ORT01 TO WA_ZSEGIDOC-ORT01.
WA_EDIDD-SEGNAM = 'ZTEST_SEG_TYPE_1'.
WA_EDIDD-SDATA = WA_ZSEGIDOC.
APPEND WA_EDIDD TO IT_EDIDD.
ENDLOOP.
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
MASTER_IDOC_CONTROL = WA_EDIDC
TABLES
COMMUNICATION_IDOC_CONTROL = IT_EDIDC
MASTER_IDOC_DATA = IT_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.
ELSE.
COMMIT WORK AND WAIT.
CLEAR WA_EDIDC.
LOOP AT IT_EDIDC INTO WA_EDIDC.
WRITE : /1 WA_EDIDC-DOCNUM.
ENDLOOP.
ENDIF.Hope this will help you.
\[removed by moderator\]
thanks,
dhanashri.
Edited by: Jan Stallkamp on Aug 6, 2008 2:30 PM
‎2008 Jul 16 12:46 PM
Hi,
With the help of program also u can trigger a idoc.
plz look at the below code here i have am select a record for a customer and passing it to the other system, the program on sender side :
TABLES : KNA1.
SELECT-OPTIONS : S_KUNNR FOR KNA1-KUNNR.
DATA : IT_EDIDC TYPE STANDARD TABLE OF EDIDC,
WA_EDIDC TYPE EDIDC.
DATA : IT_EDIDD TYPE STANDARD TABLE OF EDIDD,
WA_EDIDD TYPE EDIDD.
DATA : IT_KNA1 TYPE STANDARD TABLE OF KNA1,
WA_KNA1 TYPE KNA1.
DATA : WA_ZSEGIDOC TYPE ZTEST_SEG_TYPE_1.
START-OF-SELECTION.
SELECT * FROM KNA1 INTO TABLE IT_KNA1 WHERE KUNNR IN S_KUNNR.
*CONTROL RECORD
WA_EDIDC-RCVPRN = 'TRNCLNT800'.
WA_EDIDC-RCVPRT = 'LS'.
WA_EDIDC-RCVPOR = 'TESTALE'.
WA_EDIDC-DOCREL = 700.
WA_EDIDC-DIRECT = 1.
WA_EDIDC-MESTYP = 'TEST_MSG_TYPE_1'.
WA_EDIDC-IDOCTP = 'ZTEST_IDOC_TYPE_1'.
*DATA RECORD
LOOP AT IT_KNA1 INTO WA_KNA1.
MOVE :
WA_KNA1-KUNNR TO WA_ZSEGIDOC-KUNNR,
WA_KNA1-ORT01 TO WA_ZSEGIDOC-ORT01.
WA_EDIDD-SEGNAM = 'ZTEST_SEG_TYPE_1'.
WA_EDIDD-SDATA = WA_ZSEGIDOC.
APPEND WA_EDIDD TO IT_EDIDD.
ENDLOOP.
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
MASTER_IDOC_CONTROL = WA_EDIDC
TABLES
COMMUNICATION_IDOC_CONTROL = IT_EDIDC
MASTER_IDOC_DATA = IT_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.
ELSE.
COMMIT WORK AND WAIT.
CLEAR WA_EDIDC.
LOOP AT IT_EDIDC INTO WA_EDIDC.
WRITE : /1 WA_EDIDC-DOCNUM.
ENDLOOP.
ENDIF.Hope this will help you.
\[removed by moderator\]
thanks,
dhanashri.
Edited by: Jan Stallkamp on Aug 6, 2008 2:30 PM
‎2008 Aug 27 6:51 AM