Error in Inbound IDoc processing
Hi all,
While processing Inbound delivery IDocs(Status 64), we are getting an error "Cannot convert Dimensionless Units".
Please help.
Regards,
SP.
Hi Vijay,
The IDoc is a Delivery IDoc. The OSS Note that you have sent is for a similar error but is related to APO systems and hence I don't think it is related.
Has anyone encountered this error before...?
It says 'Conversion of dimensionless units is not possible'....
Regards,
SP.
Similar Messages
-
Where to put break point when debugging the inbound IDOC processing
Hi, Dear Experts,
If IDOC has error and want to debug, which program or function module to put break point when debugging the inbound IDOC processing
Thank you so much!
HelenIt depends on if you have the custom FM or standard FM...Is it MM invoice or FI invoice? ... You can find out your FM by going to partner profile (WE20) for your sender partner and partner function.. Drill down to your partner and the message type and find the inbound process code.. Double clicking on the process code will help you find the FM...
If you don't have access to WE20, You can also put BP into any of the IDOC_INPUT_INVOIC* FM and see if it is getting triggered (assuming your IDOC is standard FM)... -
Please send one exicuted program example of inbound idoc process
Dear Friends,
I am facing one problem to process inbound idoc process.Please example send anybody ?
I have faced problem in standalone process to do inbound idoc process.
iam waiting for your valuble response.
Definitly best answer will get best reward.
Regards.
Sridhar Menda.Hi Sridhar,
Here is a example of program for inbound idoc process.
Example Program to Process an IDoc
The Example Program to Process an IDoc shows how the fictitious message type XAMPLE, communicated with IDocs of type XAMPLE01, is processed using the inbound function module Idoc_Input_Xample. The IDoc type has a header segment, E1xhead, and any number of item segments E1xitem. The data from the IDoc is written to two database tables, XHEAD and XITEM respectively. XHEAD and XITEM contain the same field names as E1xhead and E1xitem respectively. The fields names and data types are shown in the following two tables:
Field Name in XHEAD
Docmnt_no
Date
Currency
Country
Description
Document number
Date
Currency
Country
Type in e1xhead
CHAR
CHAR
CHAR
CHAR
Type in XHEAD
NUMC
DATS
CUKY
CHAR
Field Name in XITEM
Item_no
Materialid
Descript
Unit
Quantity
Value
Ship_Inst
Description
Item number
Material number
Material description
Unit of measure
Quantity
Value
Shipping instructions
Type in e1xitem
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
Type in xitem
NUMC
CHAR
CHAR
UNIT
QUAN
CURR
UNIT
The data on the database is assigned a new document number (field DOCMNT_NO) using number assignment. The field DOCMNT_NO is not stored in the newly created table XHEAD.
FUNCTION·IDOC_INPUT_XAMPLE.
*"Local·interface:
*"·······IMPORTING
*"·············VALUE(INPUT_METHOD)·LIKE··BDWFAP_PAR-INPUTMETHD
*"·············VALUE(MASS_PROCESSING)·LIKE··BDWFAP_PAR-MASS_PROC
*"·······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
·05·July·1996·----
*·Example·function·module·for·processing·inbound·IDocs·for·ALE·or·EDI.
*·This·example·applies·for·processing
*···with····-··one·IDoc·at·a·time
*···without·-··serialization
*···········-··customer-exits
*···········-··calling·an·ALE-enabled·transaction
*···········-··mass·processing·(more·than·one·IDoc·at·a·time)
·Naming·conventions·----
*·Internal·tables·start·with·'t_'
*·Internal·field·strings·start·with·'f_'
*·>>·The·following·line·must·appear·in·the·global·part·of·your
*·>>·function·group:
*····include·mbdconwf.············"Report·containing·the·ALE·constants.
*·The·ALE·constants·start·with·'c_'.
··DATA:·SUBRC·LIKE·SY-SUBRC,
········OBJECT_NUMBER·LIKE·XHEAD-DOCMNT_NO.
*·Initialize·variables
··SUBRC·=·0.
*·Read·the·IDoc's·control·record
··READ·TABLE·IDOC_CONTRL·INDEX·1.
*·Process·the·IDoc·and·post·the·data·to·the·database
··PERFORM·IDOC_PROCESS_XAMPLE·TABLES···IDOC_DATA
·······································IDOC_STATUS
······························USING····IDOC_CONTRL
······························CHANGING·OBJECT_NUMBER
·······································SUBRC.
*·Fill·the·ALE·export·parameters
··CLEAR·IN_UPDATE_TASK.
··CLEAR·CALL_TRANSACTION_DONE.·········"Call·Transaction·is·not·used.
··IF·SUBRC·<>·0.·······················"Error·occurred
····WORKFLOW_RESULT·=·C_WF_RESULT_ERROR.
····RETURN_VARIABLES-WF_PARAM·=·C_WF_PAR_ERROR_IDOCS.
····RETURN_VARIABLES-DOC_NUMBER·=·IDOC_CONTRL-DOCNUM.
····APPEND·RETURN_VARIABLES.
··ELSE.································"IDoc·processed·successfully
····WORKFLOW_RESULT·=·C_WF_RESULT_OK.
····RETURN_VARIABLES-WF_PARAM·=·C_WF_PAR_PROCESSED_IDOCS.
····RETURN_VARIABLES-DOC_NUMBER·=·IDOC_CONTRL-DOCNUM.
····APPEND·RETURN_VARIABLES.
····RETURN_VARIABLES-WF_PARAM·=·C_WF_PAR_APPL_OBJECTS.
····RETURN_VARIABLES-DOC_NUMBER·=·OBJECT_NUMBER.
····APPEND·RETURN_VARIABLES.
··ELSE.
ENDFUNCTION.
·······FORM·IDOC_PROCESS_XAMPLE······································
··This·routine·creates·an·application·document·based·on·the·IDoc's···
··contents.·Object_Number·contains·the·new·document's·number.··········If·an·error·occurs,·subrc·is·non-zero,·t_idoc_status·is·filled.·······Note:·if·more·than·one·error·is·detected,·t_idoc_status·contains···
········more·than·one·status·record.·································
··-->··F_IDOC_CONTRL····IDoc·control·record··························
··-->··T_IDOC_DATA······IDoc·data·records····························
··<--··T_IDOC_STATUS····IDoc·status·records··························
··<--··OBJECT_NUMBER····Created·document's·number····················
··<--··SUBRC············Return·code··································
FORM·IDOC_PROCESS_XAMPLE
·······TABLES···T_IDOC_DATA····STRUCTURE·EDIDD
················T_IDOC_STATUS··STRUCTURE·BDIDOCSTAT
·······USING····F_IDOC_CONTRL··STRUCTURE·EDIDC
·······CHANGING·OBJECT_NUMBER··LIKE·XHEAD-DOCMNT_NO
················SUBRC··········LIKE·SY-SUBRC.
*·Internal·field·string·for·the·document·header.
··DATA:·F_XHEAD·LIKE·XHEAD.
*·Internal·table·for·the·document·items.
··DATA:·T_XITEM·LIKE·XITEM·OCCURS·0·WITH·HEADER·LINE.
*·Number·given·to·the·created·document·DOCUMENT_NUMBER·LIKE·F_XHEAD-DOCMNT_NO.
*·Move·the·data·in·the·IDoc·to·the·internal·structures/tables
*·f_xhead·and·t_xitem.
··PERFORM·IDOC_INTERPRET·TABLES···T_IDOC_DATA
··································T_XITEM
··································T_IDOC_STATUS
·························USING····F_IDOC_CONTRL
·························CHANGING·F_XHEAD
··································SUBRC.
*·Create·the·application·object·if·no·error·occurred·so·far.
··IF·SUBRC·=·0.
*···This·fictitious·function·module·creates·a·new·object·based·on·the
*···data·that·was·read·from·the·IDoc.·The·new·object's·ID·is·returned
*···in·the·parameter·'document_number'.
*···The·function·module·checks·that·the·data·is·correct,·and·raises
*···an·exception·if·an·error·is·detected.
····CALL·FUNCTION·'XAMPLE_OBJECT_CREATE'
·········EXPORTING
··············XHEAD···········=·F_XHEAD
·········IMPORTING
··············DOCUMENT_NUMBER·=·DOCUMENT_NUMBER
·········TABLES
··············XITEM···········=·T_XITEM
·········EXCEPTIONS
··············OTHERS··········=·1.
····IF·SY-SUBRC·<>·0.
······SUBRC·=·1.
*·····Put·the·error·message·into·'t_idoc_status'
······PERFORM·STATUS_FILL_SY_ERROR
················TABLES···T_IDOC_STATUS
················USING····T_IDOC_DATA
·························SY
·························''············"Field·name
·························'idoc_process_xample'.·········"Form·routine
····ELSE.
*·····Fill·the·remaining·export·parameters
······OBJECT_NUMBER·=·DOCUMENT_NUMBER.··········"New·document's·number
······t_idoc_status-docnum·=·f_idoc_contrl-docnum.
······t_idoc_status-status·=·c_idoc_status_ok.
······t_idoc_status-msgty··=·'S'.
······t_idoc_status-msgid··=·your_msgid.·"Global·variable.
······t_idoc_status-msgno··=·msgno_success."Global·variable.
······t_idoc_status-msgv1··=·object_number.
······APPEND·T_IDOC_STATUS.
····ENDIF.·····························"if·sy-subrc·<>·0.
··ENDIF.·····························"if·subrc·=·0.
ENDFORM.
·······FORM·IDOC_INTERPRET···········································
··This·routine·checks·that·the·correct·message·type·is·being·used,···
··and·then·converts·and·moves·the·data·from·the·IDoc·segments·to·the·
··internal·structure·f_xhead·and·internal·table·t_xitem.·············
··If·an·error·occurs,·t_idoc_status·is·filled·an·subrc·<>·0.·········
··-->··T_IDOC_STATUS·················································
··-->··T_XITEM·······················································
··-->··F_IDOC_DATA···················································
··-->··F_XHEAD·······················································
··-->··SUBRC·························································
FORM·IDOC_INTERPRET·TABLES···T_IDOC_DATA····STRUCTURE·EDIDD
·····························T_XITEM········STRUCTURE·XITEM
·····························T_IDOC_STATUS··STRUCTURE·BDIDOCSTAT
····················USING····F_IDOC_CONTRL··STRUCTURE·EDIDC
····················CHANGING·F_XHEAD········STRUCTURE·XHEAD
·····························SUBRC··········LIKE·SY-SUBRC.
*·Check·that·the·IDoc·contains·the·correct·message·type.
*··Note:·if·your·message·type·is·reducible,·check·field·'idoctp'
*·······(IDoc·type)·instead·of·'mestyp'.
··IF·F_IDOC_CONTRL-MESTYP·<>·'XAMPLE'.
····MESSAGE·ID······YOUR_MSGID···············"Global·variable
············TYPE····'E'
············NUMBER··MSGNO_WRONG_FUNCTION·····"Global·variable
············WITH····F_IDOC_CONTRL-MESTYP·····"message·type
····················'IDOC_INPUT_XAMPLE'······"Your·function·module.
····················F_IDOC_CONTRL-SNDPRT·····"Sender·partner·type
····················F_IDOC_CONTRL-SNDPRN·····"Sender·number.
············RAISING·WRONG_FUNCTION_CALLED.
··ENDIF.
*·Loop·through·the·IDoc's·segments·and·convert·the·data·from·the·IDoc
*·format·to·the·internal·format.
··LOOP·AT·T_IDOC_DATA·WHERE·DOCNUM·=·F_IDOC_CONTRL-DOCNUM.
····CASE·T_IDOC_DATA-SEGNAM.
······WHEN·'E1XHEAD'.
········PERFORM·E1XHEAD_PROCESS·TABLES···T_IDOC_STATUS
································USING····T_IDOC_DATA
································CHANGING·F_XHEAD
·········································SUBRC.
······WHEN·'E1XITEM'.
········PERFORM·E1XITEM_PROCESS·TABLES···T_XITEM
·········································T_IDOC_STATUS
································USING····F_XHEAD-CURRENCY
·········································T_IDOC_DATA
································CHANGING·SUBRC.
····ENDCASE.
··ENDLOOP.
ENDFORM.
·······FORM·E1XHEAD_PROCESS··········································
··This·routine·fills·'f_xhead'·out·of·segment·e1xhead.·················If·an·error·occurs,·subrc·is·non-zero,·t_idoc_status·is·filled.····*
··-->··F_IDOC_DATA·······IDoc·segment·containing·e1xhead·fields······
··<--··F_XHEAD···········Internal·structure·containing·doc.·header···
··<--··T_IDOC_STATUS·····Status·fields·for·error·handling············
··<--··SUBRC·············Return·code:·non-zero·if·an·error·occurred··
FORM·E1XHEAD_PROCESS·TABLES···T_IDOC_STATUS··STRUCTURE·BDIDOCSTAT
·····················USING····F_IDOC_DATA····STRUCTURE·EDIDD
·····················CHANGING·F_XHEAD········STRUCTURE·XHEAD
······························SUBRC··········LIKE·SY-SUBRC.
··DATA:·F_E1XHEAD·LIKE·E1XHEAD.
··F_E1XHEAD·=·F_IDOC_DATA-SDATA.
*·Process·fields·that·need·conversion·from·ISO-codes·to·SAP-codes
··PERFORM·E1XHEAD_CODES_ISO_TO_SAP
·········TABLES···T_IDOC_STATUS
·········USING····F_E1XHEAD
··················F_IDOC_DATA
·········CHANGING·F_XHEAD
··················SUBRC.
*·Process·fields·containing·dates·or·times
··PERFORM·E1XHEAD_DATE_TIME·USING····F_E1XHEAD
····························CHANGING·F_XHEAD.
ENDFORM.·······························"e1xhead_process
·······FORM·E1XITEM_PROCESS··········································
··This·routine·converts·the·data·in·the·segment·'e1xitem'·for········
··to·the·format·of·table·'t_xitem'·and·appends·it·to·the·table.········If·an·error·occurs,·subrc·is·non-zero,·t_idoc_status·is·filled.····*
··-->··F_IDOC_DATA······IDoc·segment·································
··<--··T_XITEM··········Document·items·to·be·updated·to·database·····
··<--··T_IDOC_STATUS····Status·fields·filled·if·an·error·occurred····
··<--··SUBRC············Return·code:·0·if·all·OK·····················
FORM·E1XITEM_PROCESS·TABLES···T_XITEM·······STRUCTURE·XITEM
······························T_IDOC_STATUS·STRUCTURE·BDIDOCSTAT
·····················USING····CURRENCY······LIKE·XHEAD-CURRENCY
······························F_IDOC_DATA···STRUCTURE·EDIDD
·····················CHANGING·SUBRC·········LIKE·SY-SUBRC.
··DATA:·F_E1XITEM·LIKE·E1XITEM.
··F_E1XITEM·=·F_IDOC_DATA-SDATA.
*·Fields·of·type·CHAR,·NUMC,·QUAN·need·no·conversion.
··T_XITEM-ITEM_NO····=·F_E1XITEM-ITEM_NO.
··T_XITEM-MATERIALID·=·F_E1XITEM-MATERIALID.
··T_XITEM-DESCRIPT···=·F_E1XITEM-DESCRIPT.
··T_XITEM-QUANTITY···=·F_E1XITEM-QUANTITY.
*·Process·fields·that·need·conversion·from·ISO-codes·to·SAP-codes
··PERFORM·E1XHEAD_CODES_ISO_TO_SAP
·········TABLES···T_IDOC_STATUS
·········USING····F_E1XHEAD
··················F_IDOC_DATA
·········CHANGING·F_XHEAD
··················SUBRC.
*·Process·fields·that·contain·monetary·values
··PERFORM·E1XITEM_VALUE_IDOC_TO_SAP·TABLES···T_IDOC_STATUS
····································USING····F_E1XITEM
·············································CURRENCY
·············································F_IDOC_DATA
····································CHANGING·T_XITEM
·············································SUBRC.
··APPEND·T_XITEM.
ENDFORM.
·······FORM·E1XHEAD_CODES_ISO_TO_SAP·································
··Converts·ISO-Codes·in·f_e1xhead·to·SAP-codes·in·f_xhead.·············f_idoc_data,·t_idoc_status·and·subrc·are·used·for·error·handling.··*
FORM·E1XHEAD_CODES_ISO_TO_SAP
·······TABLES···T_IDOC_STATUS·STRUCTURE·BDIDOCSTAT
·······USING····F_E1XHEAD·····STRUCTURE·E1XHEAD
················F_IDOC_DATA···STRUCTURE·EDIDD
·······CHANGING·F_XHEAD·······STRUCTURE·XHEAD
················SUBRC.
*·f_xhead-currency···Type·CUKY·=>·convert·ISO-Code·to·SAP-Code.
··PERFORM·CURRENCY_CODE_ISO_TO_SAP
·········TABLES···T_IDOC_STATUS
·········USING····F_E1XHEAD-CURRENCY
··················F_IDOC_DATA
··················'CURRENCY'
·········CHANGING·F_XHEAD-CURRENCY
··················SUBRC.
··CHECK·SUBRC·=·0.
*·f_xhead-country···Contains·a·country·=>·convert·from·ISO·to·SAP·code.
··PERFORM·COUNTRY_CODE_ISO_TO_SAP
·········TABLES···T_IDOC_STATUS
·········USING····F_E1XHEAD-COUNTRY
··················F_IDOC_DATA
··················'COUNTRY'
·········CHANGING·F_XHEAD-COUNTRY
··················SUBRC.
ENDFORM.
·······FORM·E1XITEM_CODES_ISO_TO_SAP·································
··Converts·ISO-Codes·in·f_e1xitem·to·SAP-codes·in·f_xitem············
··f_idoc_data,·t_idoc_status·and·subrc·are·used·for·error·handling.··
FORM·E1XITEM_CODES_ISO_TO_SAP
·······TABLES···T_IDOC_STATUS·STRUCTURE·BDIDOCSTAT
·······USING····F_E1XITEM·····STRUCTURE·E1XITEM
················F_IDOC_DATA···STRUCTURE·EDIDD
·······CHANGING·F_XITEM·······STRUCTURE·XITEM
················SUBRC·········LIKE·SY-SUBRC.
*·f_xitem-unit·······Type·UNIT·=>·convert·ISO-Code·to·SAP-Code.
··PERFORM·UNIT_OF_MEASURE_ISO_TO_SAP
·········TABLES···T_IDOC_STATUS
·········USING····F_E1XITEM-UNIT
··················F_IDOC_DATA
··················'unit'
·········CHANGING·F_XITEM-UNIT
··················SUBRC.
*·f_xitem-ship_inst··Contains·shipping·instructions·=>·ISO·to·SAP·code.
··PERFORM·SHIPPING_INSTRUCT_ISO_TO_SAP
·········TABLES···T_IDOC_STATUS
·········USING····F_E1XITEM-SHIP_INST
··················F_IDOC_DATA
··················'ship_inst'
·········CHANGING·F_XITEM-SHIP_INST
··················SUBRC.
ENDFORM.
·······FORM·E1XITEM_VALUE_IDOC_TO_SAP································
··Converts·fields·containing·monetary·values·in·f_e1xitem·to·········
··the·internal·representation·in·f_xitem.······························f_idoc_data,·t_idoc_status·and·subrc·are·used·for·error·handling.··*
FORM·E1XITEM_VALUE_IDOC_TO_SAP
·······TABLES···T_IDOC_STATUS·STRUCTURE·BDIDOCSTAT
·······USING····F_E1XITEM·····STRUCTURE·E1XITEM
················CURRENCY······LIKE·XHEAD-CURRENCY
················F_IDOC_DATA···STRUCTURE·EDIDD
·······CHANGING·F_XITEM·······STRUCTURE·XITEM
················SUBRC·········LIKE·SY-SUBRC.
*·f_xitem-value····Type·CURR·=>·convert·IDoc·amount·to·internal·amount.
*·N.B.·the·currency·code·used·here·must·be·the·SAP-internal·one,·not
*······the·one·contained·in·the·IDoc!
··CALL·FUNCTION·'CURRENCY_AMOUNT_IDOC_TO_SAP'
·······EXPORTING
············CURRENCY····=·CURRENCY
············IDOC_AMOUNT·=·F_E1XITEM-VALUE
·······IMPORTING
············SAP_AMOUNT··=·F_XITEM-VALUE
·······EXCEPTIONS
············OTHERS······=·1.
··IF·SY-SUBRC·<>·0.
····SUBRC·=·1.
*···Put·the·error·message·into·'t_idoc_status'
····PERFORM·STATUS_FILL_SY_ERROR
··············TABLES···T_IDOC_STATUS
··············USING····F_IDOC_DATA
·······················SY
·······················'value'·········"Field·name
·······················'e1xitem_value_idoc_to_sap'.······"Form·routine
··ENDIF.·······························"if·sy-subrc·<>·0.
ENDFORM.
·······FORM·E1XHEAD_DATE_TIME········································
··Moves·date·and·time·fields·in·f_e1xhead·to·the·fields·in·f_xhead.··
FORM·E1XHEAD_DATE_TIME·USING····F_E1XHEAD·STRUCTURE·E1XHEAD
·······················CHANGING·F_XHEAD·STRUCTURE·XHEAD.
*·f_xhead-date····Type·DATS·=>·initial·value·is·not·'blank'.
··IF·E1XHEAD-DATE·IS·INITIAL.
····CLEAR·F_XHEAD-DATE.
····F_XHEAD-DATE·=·F_E1XHEAD-DATE.
··ENDIF.
ENDFORM.
·······FORM·CURRENCY_CODE_ISO_TO_SAP·································
··Converts·ISO·currency·code·'iso_currency_code'·to·SAP·code·in······
··'sap_currency_code'················································
··f_idoc_data,·field_name,·t_idoc_status·and·subrc·are·used·for······
··for·error·handling.················································
FORM·CURRENCY_CODE_ISO_TO_SAP
·······TABLES···T_IDOC_STATUS·····STRUCTURE·BDIDOCSTAT
·······USING····ISO_CURRENCY_CODE·LIKE·TCURC-ISOCD
················F_IDOC_DATA·······STRUCTURE·EDIDD
················FIELD_NAME········LIKE·BDIDOCSTAT-SEGFLD
·······CHANGING·SAP_CURRENCY_CODE·LIKE·TCURC-WAERS
················SUBRC·············LIKE·SY-SUBRC.
··IF·ISO_CURRENCY_CODE·IS·INITIAL.
····CLEAR·SAP_CURRENCY_CODE.
··ELSE.
····CALL·FUNCTION·'CURRENCY_CODE_ISO_TO_SAP'
·········EXPORTING
··············ISO_CODE·=·ISO_CURRENCY_CODE
·········IMPORTING
··············SAP_CODE·=·SAP_CURRENCY_CODE
·········EXCEPTIONS
··············OTHERS···=·1.
····IF·SY-SUBRC·<>·0.
······SUBRC·=·1.
*·····Put·the·error·message·into·'t_idoc_status'
······PERFORM·STATUS_FILL_SY_ERROR
················TABLES···T_IDOC_STATUS
················USING····F_IDOC_DATA
·························SY
·························FIELD_NAME
·························'currency_code_iso_to_sap'.·····"Form·routine
··ENDIF.·····························"if·sy-subrc·<>·0.
··ENDIF.·······························"if·iso_currency_code·is·initial.
ENDFORM.
·······FORM·CURRENCY_CODE_ISO_TO_SAP·································
··Converts·ISO·currency·code·'iso_currency_code'·to·SAP·code·in······
··'sap_currency_code'················································
··f_idoc_data,·field_name,·t_idoc_status·and·subrc·are·used·for······
··for·error·handling.················································
FORM·COUNTRY_CODE_ISO_TO_SAP
·······TABLES···T_IDOC_STATUS····STRUCTURE·BDIDOCSTAT
·······USING····ISO_COUNTRY_CODE·LIKE·T005-INTCA
················F_IDOC_DATA······STRUCTURE·EDIDD
················FIELD_NAME·······LIKE·BDIDOCSTAT-SEGFLD
·······CHANGING·SAP_COUNTRY_CODE·LIKE·T005-LAND1
················SUBRC············LIKE·SY-SUBRC.
*·Only·convert·if·the·field·is·not·initial.
··IF·ISO_COUNTRY_CODE·IS·INITIAL.
····CLEAR·SAP_COUNTRY_CODE.
··ELSE.
····CALL·FUNCTION·'COUNTRY_CODE_ISO_TO_SAP'
·········EXPORTING
··············ISO_CODE·=·ISO_COUNTRY_CODE
·········IMPORTING
··············SAP_CODE·=·SAP_COUNTRY_CODE
·········EXCEPTIONS
··············OTHERS···=·1.
····IF·SY-SUBRC·<>·0.
······SUBRC·=·1.
*·····Put·the·error·message·into·'t_idoc_status'
······PERFORM·STATUS_FILL_SY_ERROR
················TABLES···T_IDOC_STATUS
················USING····F_IDOC_DATA
·························SY
·························FIELD_NAME
·························'country_code_iso_to_sap'.······"Form·routine
··ENDIF.·····························"if·sy-subrc·<>·0.
··ENDIF.·······························"if·iso_country_code·is·initial.
ENDFORM.
·······FORM·UNIT_OF_MEASURE_ISO_TO_SAP·······························
··Converts·ISO·unit·of·measure·code·'iso_unit_of_measure'·to·SAP·····
··code·in·'sap_unit_of_measure'.·····································
··f_idoc_data,·field_name,·t_idoc_status·and·subrc·are·used·for······
··for·error·handling.················································
FORM·UNIT_OF_MEASURE_ISO_TO_SAP
·······TABLES···T_IDOC_STATUS·······STRUCTURE·BDIDOCSTAT
·······USING····ISO_UNIT_OF_MEASURE·LIKE·T006-ISOCODE
················F_IDOC_DATA·········STRUCTURE·EDIDD
················FIELD_NAME··········LIKE·BDIDOCSTAT-SEGFLD
·······CHANGING·SAP_UNIT_OF_MEASURE·LIKE·T006-MSEHI
················SUBRC···············LIKE·SY-SUBRC.
*·Only·convert·the·field·if·it·is·not·empty.
··IF·ISO_UNIT_OF_MEASURE·IS·INITIAL.
····CLEAR·SAP_UNIT_OF_MEASURE.
··ELSE.
····CALL·FUNCTION·'UNIT_OF_MEASURE_ISO_TO_SAP'
·········EXPORTING
··············ISO_CODE·=·ISO_UNIT_OF_MEASURE
·········IMPORTING
··············SAP_CODE·=·SAP_UNIT_OF_MEASURE
·········EXCEPTIONS
··············OTHERS···=·1.
····IF·SY-SUBRC·<>·0.
······SUBRC·=·1.
*·····Put·the·error·message·into·'t_idoc_status'
······PERFORM·STATUS_FILL_SY_ERROR
················TABLES···T_IDOC_STATUS
················USING····F_IDOC_DATA
·························SY
·························FIELD_NAME
·························'unit_of_measure_iso_to_sap'.··"Form·routine
··ENDIF.·····························"if·sy-subrc·<>·0.
··ENDIF.··················"if·iso_unit_of_measure_code·is·initial.
ENDFORM.
·······FORM·SHIPPING_INSTRUCT_ISO_TO_SAP·····························
··Converts·ISO·package·code·'iso_package_type'·to·SAP·code·for·······
··purchasing·shipping·instructions·in·'sap_shipping_instructions'.···
··f_idoc_data,·field_name,·t_idoc_status·and·subrc·are·used·for······
··for·error·handling.················································
FORM·SHIPPING_INSTRUCT_ISO_TO_SAP
·······TABLES···T_IDOC_STATUS·············STRUCTURE·BDIDOCSTAT
·······USING····ISO_PACKAGE_TYPE··········LIKE·T027A-IVERS
················F_IDOC_DATA···············STRUCTURE·EDIDD
················FIELD_NAME················LIKE·BDIDOCSTAT-SEGFLD
·······CHANGING·SAP_SHIPPING_INSTRUCTIONS·LIKE·T027A-EVERS
················SUBRC·····················LIKE·SY-SUBRC.
*·Only·convert·the·field·if·it·is·not·empty.
··IF·ISO_PACKAGE_TYPE·IS·INITIAL.
····CLEAR·SAP_SHIPPING_INSTRUCTIONS.
··ELSE.
····CALL·FUNCTION·'ISO_TO_SAP_PACKAGE_TYPE_CODE'
·········EXPORTING
··············ISO_CODE·=·ISO_PACKAGE_TYPE
·········IMPORTING
··············SAP_CODE·=·SAP_SHIPPING_INSTRUCTIONS
·········EXCEPTIONS
··············OTHERS···=·1.
····IF·SY-SUBRC·<>·0.
······SUBRC·=·1.
*·····Put·the·error·message·into·'t_idoc_status'
······PERFORM·STATUS_FILL_SY_ERROR
················TABLES···T_IDOC_STATUS
················USING····F_IDOC_DATA
·························SY
·························FIELD_NAME
·························'shipping_instruct_iso_to_sap'.·"Form·rout.
··ENDIF.·····························"if·sy-subrc·<>·0.
··ENDIF.··················"if·iso_unit_of_measure_code·is·initial.
ENDFORM.
·······FORM·STATUS_FILL_SY_ERROR·····································
··Fills·the·structure·t_idoc_status·with·the·import·parameters·······
··plus·the·relevant·sy·fields.·······································
··-->··IDOC_NUMBER···········IDoc·number·····························
··-->··SEGNUM················Segment·number··························
··-->··SEGFLD················Field·in·segment························
··-->··ROUTID················Name·of·routine·························
··<--··T_IDOC_STATUS·········Status·fields···························
FORM·STATUS_FILL_SY_ERROR·TABLES···T_IDOC_STATUS·STRUCTURE·BDIDOCSTAT
··························USING····F_IDOC_DATA···STRUCTURE·EDIDD
···································VALUE(F_SY)···STRUCTURE·SY
···································SEGFLD········LIKE·BDIDOCSTAT-SEGFLD
···································ROUTID········LIKE·BDIDOCSTAT-ROUTID.
··t_idoc_status-docnum·=·f_idoc_data-docnum.
··t_idoc_status-status·=·c_idoc_status_error.
··t_idoc_status-msgty··=·f_sy-msgty.
··t_idoc_status-msgid··=·f_sy-msgid.
··T_IDOC_STATUS-MSGNO··=·F_SY-MSGNO.
··t_idoc_status-msgv1··=·f_sy-msgv1.
··t_idoc_status-msgv2··=·f_sy-msgv2.
··t_idoc_status-msgv3··=·f_sy-msgv3.
··t_idoc_status-msgv4··=·f_sy-msgv4.
··t_idoc_status-segnum·=·f_idoc_data-segnum.
··t_idoc_status-segfld·=·segfld.
··t_idoc_status-repid··=·f_sy-repid.
··t_idoc_status-routid·=·routid.
··APPEND·T_IDOC_STATUS.
ENDFORM.
Also Check out these docs.
http://help.sap.com/saphelp_nw04/helpdata/en/dc/6b7ee143d711d1893e0000e8323c4f/frameset.htm
http://help.sap.com/saphelp_nw04/helpdata/en/1a/178ad32d3011d3bc3500105a6588b2/frameset.htm
Dont forget to reward pts, if it helps ;>)
Regards,
Rakesh. -
Inbound idoc processing by workflow
Hello,
How can I find if an inbound IDoc has been processed via workflow ?
following are details -
1)status records 50 and 64 for the idoc show RFC user ID whereas 62 and 53 show WORKFLOW_020 user ID.
2)manual re process in test system using WE19 has all four status records by login user ID.
3)BD67 values for this process code was checked for the start events.
4)I checked standard task 30200090 following oss note 325361
5)The invoice document posted via this idoc has created by user ID as WORKFLOW_020
I do not have full knowledge of inbound idoc processing via workflow and I am in the process of learning the same. Kindly help.
thank you very much in advance,
BhaktiHello,
How can I find if an inbound IDoc has been processed via workflow ?
following are details -
1)status records 50 and 64 for the idoc show RFC user ID whereas 62 and 53 show WORKFLOW_020 user ID.
2)manual re process in test system using WE19 has all four status records by login user ID.
3)BD67 values for this process code was checked for the start events.
4)I checked standard task 30200090 following oss note 325361
5)The invoice document posted via this idoc has created by user ID as WORKFLOW_020
I do not have full knowledge of inbound idoc processing via workflow and I am in the process of learning the same. Kindly help.
thank you very much in advance,
Bhakti -
How to know whether we are in Inbound Idoc processing ?
Hi,
Can we know from any system variables that whether we are in Inbound Idoc processing?
Rgds,
AntonyHi Antony,
Inbound or Outbound is clssified based on Direction Filed.
If we have IDOC Number chk in EDIDC its direction
If Direct = 1(Outbound) or =2 (Inbound) i think
Regards,
Poornima -
Hi everybody.
Im trying to improve perfomance at inbound idoc process:
For instance I have scheduled the program RBDAPP01to process inbound ORDERS every 5 minutes. (The number of inbound orders to proces are 300 aprox.).
I have some question to choose the best variant to this job:
- What's better in transaction BD51 set the FM as mass process or single process? I think to choose mass process It´d be better because the FM would be call less times.
- What packing size I have to choose. I hope SAP recommends between 20-100.
- Should I choose parallelling process? It´d help me to improve the process???
Thanks a lot.
RegardsINBOUND_IDOC_PROCESS is the function module to be used before release SAP R/3 4.0; since release 4.0 you should use IDOC_INBOUND_ASYNCHRONOUS instead.
Similarly as indicated by the previous posting IDOC_INBOUND_SINGLE replaces function module IDOC_INBOUND_SYNCHRONOUS for posting a single IDoc.
Best wishes, harald -
WF-BATCH user locks up inbound IDoc processing
Hi Experts!
We have an issue with our inbound IDoc processing randomly being locked by the WF-BATCH user. I have searched SAP Notes, and the only thing I could find was on Note 519420, it said to check the default settings for date format and decimal notation format in SU01. All looked fine, except for the decimal notation which was 1.234,567.89, instead of 1,234,567.89. If I changed this, would this fix the problem? Any suggestions would be greatly appreciated. Thank you in advance.
WCWF-BATCH - is an ID in SAP which processes batch workflow tasks.
So if your IDOC posting triggers workflow task - it's going to be processed by WF-BATCH. -
Inbound Idoc processing issues - Partner Profiles - error status 56
Hello All,
I'm having a little difficulty posting an idoc coming from MDM. It's a CREMDM04 xml coming from an MDM system. It is getting mapped through PI and is being split into ADRMAS02 and CREMAS04 Idocs. The message is being passed through XI and being posted to the ECC system, but certain fields in the EDI_DC40 header table are not being populated correctly (i believe). I'm using nothing but standard mapping/material from the SAP Business Content for XI. After looking through the standard XSLTs i cannot find the field-to-field mapping where the fields below are being populated.
The RCVPOR value (SAP[SID]) is correct when i view it in SOAP Header, but does not appear in the remote system under the receiver port for the inbound idoc.
The RCVPRN value ([String Value]) is incorrect in the SOAP Header and does appear in the remote system under the receiver partner number for the inbound idoc. How is the RCVPRN value being populated?
SOAP Header in IDocOutbound tag
<SAP:RCVPOR>SAP[SID]</SAP:RCVPOR>
<SAP:RCVPRN>[String Value]</SAP:RCVPRN>
<SAP:RCVPRT>LS</SAP:RCVPRT>
I've been trying to trace down the string value for the RCVPRN, but i cannot find it anywhere. Perhaps i'm just overlooking it?
When i set the proper values (port = SAP<SIDofECC> and partner number = <LSnameof ECC>) using WE19 in the remote system then the partner profile is found and i'm left with different error to please specify an address group.
Any help is very much appreciated! :-DHi Jason ,
Just check out if you have done the following steps most of us make minor mistake here ....... I think this would solve your problem
To Configure the IDOC SCENARIOS ,PROCEED AS FOLLOWS
STEP 1:ALE SETTINGS TO POST IDOC INTO SAP R/3
We need to do the following settings in XI
1) Create an RFC Destination to the Receiving System in transaction code (SM59)
a) Choose create
b) Specify the name of the RFC destination
c) Select connection type as 3 and save
d) In the technical settings tab enter the details SAP SID/URL and system number#
e) Enter the Gateway host as same details above SID/URL
f) Gateway service is 3300+system number#
g) In the Logon /Security tab, enter the client, user & Password details of Destination system
h) Test the connection and remote logon.Both should be succesful
2) Create Port Using Transaction Code IDX1
a) Select Create New button
b) Enter the port name as SAP+SID (The starting char should be SAP)
c) Enter the destination client
d) Enter the RFC Destination created in XI towards R/3
e) Save
3) Load Meta Data for IDOC Using transaction Using Transaction (IDX2)
a) Create new
b) IDOC Message Type
c) Enter port created in IDX1
SETTINGS IN SAP R/3
We need to do the following settings in R/3
Logon to Sap R/3 System
1) Create an RFC Destination to XI in transaction code (SM59)
a) Choose create
b) Specify the name of the RFC destination
c) Select connection type as 3 and save
d) In the technical settings tab enter the details SAP SID/URL and system number#
e) Enter the Gateway host as same details above SID/URL
f) Gateway service is 3300+system number#
g) In the Logon /Security tab, enter the client, user & Password details of Destination system
h) Test the connection and remote logon.Both must be succesful
2) Create communication Port for Idoc processing Using Transaction(We21)
a) First Select Transactional RFC and then click create button
b) Enter the destination port name as SAP+SID (The starting char should be SAP)
d) Enter the RFC Destination created in SAP R/3 towards other system.
e) Save
3) Create Partner Profile with Inbound Parameters (WE20)
a) Create New
b) Create the Partner no. name as same the logical system name of the destination system
c) Select Partner type LS
d) Enter details for Type: US/USER, Agent, and Lang
Then Save
e) Select Partner no. and LS which were create above
f) Now we have to give some Inbound Parameters.So click on ADD TO Create Inbound Parameter
g) Select Message type
h) Double click on Message Type and Then Enter the details for Message Type and Process Code.
I) save
4) In Transaction SALE, Create Logical System
a). Go to Basic Settings-> First Define logical systems
and then assign logical systems
b) Double click on Define the logical systems
c) Give data for your Logicaal System and Name
d) Now click on Save.Here one window may appear just click on Continue.Now the Logical System name is ready
e) Assign the logical system name to the client
do let me know if it helped
Edited by: Tom Jose on Feb 21, 2008 9:04 AM -
Hi
While an Inbound is being processed it is not behaving as per the design and if the same type of idoc is reprocessed through BD87 is it behaving as per the design.
In detail, the idoc will create a purchase order based on reservation number in R/3 and the quantity needs to be checked against the availability. If the quantity is more in the idoc counting all line items of idoc segments it should not be posted giving that the quantity is not available. If it is automated it is not checking, but while testing on creation of an inbound idoc and reprocessed the validation is happenning.
So, please help me in understanding as why the idoc is not getting validated when it is automated ans whne it is reprocessed through BD87 it is getting validated.
Thanks
ShankarHi Shankar,
how do you notice that your code is not executed.
Usually I would say it should.
Therefore I recommended to implement an infinite loop to make sure that it is really not executed.
By the way...where did you implement your coding?
Best regards,
Oliver
Edited by: Oliver Hütköper on Aug 12, 2011 8:45 AM -
Send mail to a specific user group when an Inbound Idoc processing fails
I am using standard Message type DEBMAS, but the process code is customed (say ZDEBM as the function module is customed). Can you tell me what configurations are required to activate the error notification message to a user when the inbound idoc fails?
hi,
i think u need to check tcode swu3 for automatic workflow customizing and check in we40 (error AND STATUS PROCESSING) whether the processing code is assigned to the workflow task.
if it is assigned,the workflow will be automatically triggered and the mail will be sent to the user by itself.
ALE error handling uses workflow. A standard task is provided for each message type. Task TS20000051 is used for all BAPIs.
Workflow functions as follows:
A task (work item) is generated for the error handling and stored as a message in the inboxes of the employees responsible.
If one of these employees processes the work item, the standard task method for error handling is started. The user can, for example, restart IDoc processing.
If the IDoc is processed successfully, the work item is deleted from the inboxes of all the employees involved.
For this procedure to function, the employees responsible for a particular message type and partner (sender or receiver) must be defined as follows:
1. A hierarchy of organizational units (for example, "sales office") and positions (for example, "customer officer for customer X") is created and employees are assigned to it.
2. The standard tasks for error handling (for example, an error related to an inbound sales order) are assigned to the relevant organizational units or positions (for example, "sales office").
3. The organizational unit, position or employee responsible for dealing with the error are specified for each partner and message type in the partner profiles.
If an error occurs, the system determines:
1. The employees responsible using the staffing schedule of the organizational unit or position linked to the standard task.
2. The employees defined in the partner profiles (using position, user ID, or organizational unit).
3. The employees appearing in both groups represent those who will receive a work item in their inboxes.
regards,
pankaj singh -
Inbound idoc processing using custom FM to cancel sales orders
hello all,
I have a scenario where i need to create a customized function module which is assigned to custom message type. and this function module is triggered when inbound idoc comes, which will process idoc data for cancellation of sales orders. If an errror occurs than the error during cancellation has to be reflected back in the idoc status.
can anyone tell me how exactly i can log the status and reflect it back, how exactly can i do this
And what are all the objects i need to create to succusfully execute this scenario, i have created message type, function module, i am using orders05 do i need to create process code also.
Thanks,
krishnam raju.Hi Krishna,
Hope you are done with the Inbound function module creation. But, just creation of function module would not be enough, what u said that is like creation of Process code should also be done.
WE42 is the transaction code for inbound process code.
And while creation of the process code, we need to do few things like:
We need to create an entry of the inbound function module in BD51 transaction or so. And coming to updating of the status, open any of the inbound function module, you will observe that there is a standard subroutine which will update the IDOC_STATUS record. You can implement the same logic whenever you want to update an error message.
Thanks,
Adithya K -
Error in Inbound Idoc trigering Workflow Scenario
I am getting below Error while I am posting Z Inbound IDOC in production system.
Please tell me what is getting wrong and how to correct.
Work item 000000000000 cannot be read
Message no. WL803
Diagnosis
The work item with the specified ID can either not be read completely or partly (for example, its container).
System Response
The action was cancelled and the work item, if it still exists, set to error status.
Procedure
Check whether the work item has already been deleted or whether only parts of it can no longer be read.
In the latter case, the work item is inconsistent.
Refer to your workflow system administrator.
Points will be surely given to helpful answers.
Regards
Edited by: Tushar Mundlik on Feb 12, 2008 8:15 AMHi Krishna,
First we have to find out if the error comes from processing in the application or from one of the checks performed before the application is called.
Go to function module IDOC_INPUT_OPDERS and put a breakpoint on "PERFORM edi_mode_to_mem.". Then reprocess the Idoc and when the program stops at your breakpoint set INPUT_METHOD to 'A'. In this way your order will be processed online (using BDC and you can find the error).
If the program doesn't stop at your breakpoint the error comes from one of the checks before.
But please try this first and come back if this doesn't solve your problem.
Kind regards,
John. -
Serialization error in inbound idoc
Hi Friends
Am getting inbound idocs with this error : Serialization errror for object 01,S, 34343434,Expected counter 000001<
and error in details says,
The expected serialization counter has the value 000001. However, the serialization counter in the IDoc has the value 000002 and is therefore too big. There are therefore older IDocs with this HR object with the serialization counter values in between. These IDocs have either not yet been posted, or have been posted incorrectly.
Intrested Part is i put check ( Selected ) on as per client suggestion in ,
IMG -> Sap Netweaver -> Application server ->Idoc Interface / Application Link Enabling (ALE ) -> Modelling and imple Business process -> Configure Predefine ALE Business Process -> Human Resource -> Master data Distribution ->Serialize HR Master Data -> ( Serialize HR Master data in ALE inbound processing ) ... settings and i was getting this error but when i take back this check ( unselect ) flag idoc posted successfully Now am confuse i shd keep this or not because am getting data from diff countries also.
what shd i do for this few expert said i need to do some thing for Serialization so automatically system shd take care for this,
Need your support on this .
Regards
MeetaI have been working with IDocs in a serilization-active HR-ALE system and have learned a few things along the way ....
- Serialization must be active in both sending/originating and receiving/destination systems. (Turn on flag in customizing, as you have already done).
- Both systems maintain a registry of HR objects that includes in each record the object type, object id, and serial counter. The serial counter is increased by one in the sending system every time the object is sent via ALE and increased by one when the object is correctly processed in the receiving system. The serial counter is passed in the E1PLOGI record of each object in the IDoc.
- When a similar serialization error is received (where the counter received is lower than the expected counter), the error message gives a little more detail: "Decide what to do based on your own particular situation. Responses could range from ignoring or editing the IDoc, to manually adjusting the serialization counter in the registry of the receiving system to the expected value."
Options are therefore:
- Edit IDoc - can use IDoc test tool (WE19) to create and edit a copy for processing.
- Use transaction RE_RHALE_HRMDRGIN to maintain the serial counters
- Use transaction RE_RHALE_RGIN2IDOC to adjust the serial counters for the offending IDoc
I strongly recommend, however, that you take some time to further understand the serialization process before updating the counters manually. If you've turned on, then off, then on the serialization flag(s) through customizing, you might consider initializing the serial counters in both sending and receiving systems and starting from scratch. -
Thru our Middleware we are going to receive IDOCs (Invoices, ASN etc) from our Suppliers.
We have to develop the programs, workflow and other objects on the R/3 side to receive this IDOCS and then to poste them into the appropriate tables.
What are all the steps that I need to follow to process the Inbound IDOCS. If there is any step by step guide available? Please help me.
Thank you.Hi Mohan,
Please take a look at this link which will show step by step on how to setup inbound proscessing.
http://help.sap.com/saphelp_erp2004/helpdata/en/dc/6b835943d711d1893e0000e8323c4f/content.htm
http://www.sapgenie.com/sapgenie/docs/ale_scenario_development_procedure.doc
Also check this links for sample codes.
http://edocs.bea.com/elink/adapter/r3/userhtm/ale.htm#1008419
http://www.netweaverguru.com/EDI/HTML/IDocBook.htm
http://www.sapgenie.com/sapedi/index.htm
For example, consider the FM "IDOC_INPUT_MATERIAL" . the only thing you are concerned most is, importing input method,mass processing , exporting work flow result and tables idoc_control, idoc_data and idoc_status. Rest you can leave (for basic processing and posting ).
In the FM,
1) write a subroutine to initialize organizational data.
2) Interpret idoc.
3) check for idoc segments and raise exception if any error occurs, otherwise post the data using the BDC or BAPI.
4) Read the status message and change the idoc_status according to the status message.
Hope this will be helpful for you.
Regards,
Vicky
PS: AWard points if helpful -
Hey Guys,
I've done one Z* inbound Idoc, but for some reason I am not able to see my process code in the WE20(partner configuration) when I'm trying to set it up. My process code is not appear in the Matchcode(F4). See below the steps I've followed:
WE31
WE30
WE81
WE82
BD51
WE57
WE42
WE20 -> The Process ok is not reachable.. in the inbound area.
Any idea?
Best regards,
AlexLooks to be good, Hence request you to delete the process code and then reassign the same.
Hope that should work.
Regards
Shiva
Maybe you are looking for
-
I MUST use an app that was discontinued which requires Rosetta, yet I also want to upgrade to Mavericks. I was told that Parallels and VMWare Fusion both support running Snow Leopard SERVER, but not Snow Leopard. Two questions: Will Rosetta run on Sn
-
So my fiancé went to purchase a song with the iTunes card she has redeemed on her account (before we created the Family Sharing account) and it will not let her use it. It tells her to use my credit card (the main card on the Family Sharing plan). qu
-
Migrating from 10.3.9 Powerbook G4 to Intel iMac 10.4
Got my new iMac home a few weeks ago and was amazed at how well it performs, it literally screams. Due to isync problems I lost my address book and bookmark info on my work iMac and from .Mac (the info was still on my Powerbook. So I figured since I
-
E3000, USB NAS storage - disk disappears when unit sleeps the drive
Working to get network attached storage working on my new E3000. Have Western Digital My Book drive and the unit has a feature where the disk goes into a sleep mode when not used. Appears that when the disk does this when attached to the E3000, the
-
ITunes/iPad sync problem?
I've been syncing my ipad fine over the last few months, at least 2 or 3 times week, but today iTunes has suddenly decided that it doesn't want to. It says that I need to uninstall iTunes, then install the 64-bit version.. which is what this version