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
Similar Messages
-
How to use of API for Cancel Sales Orders
Hi....
I want to use API for Cancel Sales Orders. Plz give me advice how we can cancel orders. I know that there is procedure provide in ORACLE APPs (i.e. OE_ORDER_PUB.process_order). But in this procedure i know the how to create and update sales order, but how to Cancel order with the use of this API.
Plz send me soultion as soon as possible. ITS VERY VERY URGENT BASE.
Thanks in Advance.Hi all,
We are importing Sales Orders on 11.5.9 using OE_Order_PUB.Process_Order API .We have supplied most of the mandatory fields and the same data works from the front end. When we use the API it throws a Ora 20001.
A snapshot of the error message.
SQL> exec pk_process_object.process_order('1o');
Message Count is :2
Message is RA-20001: User in Package OE_Header_Util Procedure Get_Order_Number
Message is :User-Defined Exception in Package OE_Header_Util Procedure
Pre_Write_Process
Return Status is ErrorU
PL/SQL procedure successfully completed.
-------------------------------------------------------------------------------------------- -
User Exit for Inbound Idoc Processing of Customer Invoice
Hi all,
I have to extend a standard idoc 'WPUBON01' to include a segment with Header Text Ids to pass header text displayed in VF03.
Can you please share the exit name so as a call to function module save_text be made and the header text gets saved in the respective Header Text Ids.
Thanks in advance.
Radhika
Edited by: Radhika7 on Apr 21, 2011 9:55 AMHi Radhika,
Not sure of the actual business scenario of your requirement, anyways you can try the below customer exits, and if they dont work please provide more info on the scenario.
EXIT_SAPLWPUE_102 IDoc WPUBON01 Before Document is Posted
EXIT_SAPLWPUE_104 IDoc WPUBON01 Before Inbound Processing
EXIT_SAPLWPUE_109 IDoc WPUBON01 After Inbound Processing
EXIT_SAPLWPUE_110 IDoc WPUUMS01 Before Posting
My bet would be on EXIT*109 to be of any help.
Regards,
Chen -
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 -
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 -
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)... -
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 -
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 -
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. -
We are using EBS 12.1.3. When we input a sales order from a customer we input the sales order and specify the date the customer wants it. This isn't always the date that we intend on manufacturing it though. I need to put a customer due date in, but be able to put a date in another field that MRP can read in the event we choose to manufacture based on another date. For example, early.
Any help would be appreciated.What you are experiencing is 100% related to Malware.
Sometimes a problem with Firefox may be a result of malware installed on your computer, that you may not be aware of.
You can try these free programs to scan for malware, which work with your existing antivirus software:
* [http://www.microsoft.com/security/scanner/default.aspx Microsoft Safety Scanner]
* [http://www.malwarebytes.org/products/malwarebytes_free/ MalwareBytes' Anti-Malware]
* [http://support.kaspersky.com/faq/?qid=208283363 TDSSKiller - AntiRootkit Utility]
* [http://www.surfright.nl/en/hitmanpro/ Hitman Pro]
* [http://www.eset.com/us/online-scanner/ ESET Online Scanner]
[http://windows.microsoft.com/MSE Microsoft Security Essentials] is a good permanent antivirus for Windows 7/Vista/XP if you don't already have one.
Further information can be found in the [[Troubleshoot Firefox issues caused by malware]] article.
Did this fix your problems? Please report back to us! -
Can I use the customer requirement number as sales order in 'Goods issue MB
Can I use the customer requirement number as sales order in 'Goods issue MB1A'?
Thanks,
TigerWhy I used the customer requirement in MB1A as the sales order, Update was terminated.
Thanks,
Tiger -
How to prevent Copy from Cancelled Sales Orders.
Hi,
I have a requirement as below.
I want to stop users from Copying a Cancelled Sales Order Lines.
Can anybody please let me know how I can achieve this.
I tried using the processing constraints but couldn't succeed.
Thanks in advance.
Thanks
ShekharHi,
Also you can refer the following security rule feature which oracle provides to set your rule from users performing actions like copying, deleting and cancelling.
http://download.oracle.com/docs/cd/A60725_05/html/comnls/us/oe/esecruls.htm#r_secrul
Thanks
Nancy -
Idoc not gettind created when saving a sales order
Hello,
In my system a sales orders has been created using ORDERS05 Idoc. We wanted a confirmation Idoc to be created automatically by this sales order but it didn't. The output type for EDI processing is in yellow for this sales order. I checked 'Dispatch time' in further data and it was 'Send immediately'.
When I click on save again on the 'output types' screen I get an update error in my inbox saying that "AM 117: Form of address key & is not defined".
Can anyone tell me where I am going wrong?
Kind Regards,
Priyanka Gupta.Hi,
Try this.
In some cases, even after setting the trigger immediately in the partner profile, the idoc status will be in yellow color. For this add the below code and trigger it.
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
master_idoc_control = wa_ctrl
TABLES
communication_idoc_control = i_comm
master_idoc_data = i_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 EQ 0.
READ TABLE i_comm INTO wa_comm INDEX 1.
*Unlock table created by master data
CALL FUNCTION 'EDI_DOCUMENT_DEQUEUE_LATER'
EXPORTING
docnum = wa_comm-docnum
EXCEPTIONS
OTHERS = 1.
REFRESH it_idoc_range.
lwa_idoc_range-sign = 'I'.
lwa_idoc_range-option = 'EQ'.
lwa_idoc_range-low = wa_comm-docnum.
APPEND lwa_idoc_range TO it_idoc_range.
Send the idoc
CALL FUNCTION 'ISU_EDATEX_IDOC_SEND' IN BACKGROUND TASK
EXPORTING
xt_idoc = it_idoc_range.
GET TIME.
Ensure background task is called immediately
CALL FUNCTION 'START_OF_BACKGROUNDTASK'
EXPORTING
startdate = sy-datum
starttime = sy-uzeit.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
Regards,
Sharin. -
ATP Check against customer stock for return Sale order
Hi Friends,
Pl.help in this.
1. Is it possible to configure ATP check against Customer stock in a Sale order/Return order/any other way? ( Actuallly, client wants to take back empty cylinders through return sale order by ATP check against the customer stock)
Regards,
ManiHi Mani ,
Are you taking cylinder as returable packing item or not?
ex- For soft drinks or beverages industry it pretty common , they use thel returnable package material type and more over why you want use return sales order for this?
Note- Just plz explain scenario to MM and PP People also as availability check with all combination
Hope it is helpful to you,
Regards
Venkat
Maybe you are looking for
-
IPod Touch 2G 32GB with White Apple Logo and Failed Restore / Recovery
My Specifications: iPod Touch 32GB 2G iPhone OS 3.1.3 2.8 Ghz. Intel Core 2 Duo iMac Mac OS 10.5.8 iTunes 9.0.3 (15) Problem: After updating my iPod Touch to OS 3.1.3, my iPod touch started having sync issues where it would say the sync failed. The b
-
Goods receipt for import material
Dear all, The excise tab does not appear during goods receipt of imported material. But when are doing the goods receipt for domestic material the tab does appear. Even after posting goods receipt and while trying to capture excise details in J1IEX i
-
Import schema to a different tablespace
hi, I've exported my instance: EXP SYSTEM/MANAGER@OLDINSTANCE FULL=Y FILE=C:\EXP_FILE.DMP LOG=C:\ERROR_EXP.LOG after I've created new tablespace and new user: CREATE TABLESPACE MAX DATAFILE 'c:\MAX01.dbf' SIZE 3800M REUSE DEFAULT STORAGE (INITIAL 102
-
Help decoding ByteArray from file
Hi guys, I was wondering if anybody could help me. I have a file that I am trying to parse, it is produced by an external piece of software that I have no control over, and the company that creates the software aren't been very helpful with giving me
-
Sorry, There was a technical problem. Please try a...
Here's the thing. 1. Goto ANY nokia regional website, and navigate to: Device software update \ Can I update? 2. Enter ANY legitimate Product code 3. Get the following message: "Sorry, There was a technical problem. Please try again soon." There are