Skip to Content
author's profile photo Former Member
Former Member

Inbound Idoc programming

Hi,

Any body please send me sample code for inbound idoc processing. How to write code in SE38?

Regards,

Prasad

Add comment
10|10000 characters needed characters exceeded

2 Answers

  • author's profile photo Former Member
    Former Member
    Posted on Aug 03, 2006 at 03:59 AM

    Hi,

    Have a look at these good links-

    <b>ALE/ IDOC</b>

    http://help.sap.com/saphelp_erp2004/helpdata/en/dc/6b835943d711d1893e0000e8323c4f/content.htm

    http://www.sapgenie.com/sapgenie/docs/ale_scenario_development_procedure.doc

    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

    http://www.sappoint.com/abap/ale.pdf

    http://www.sappoint.com/abap/ale2.pdf

    http://www.sapgenie.com/sapedi/idoc_abap.htm

    http://help.sap.com/saphelp_erp2005/helpdata/en/0b/2a60bb507d11d18ee90000e8366fc2/frameset.htm

    http://help.sap.com/saphelp_erp2005/helpdata/en/78/217da751ce11d189570000e829fbbd/frameset.htm

    http://www.allsaplinks.com/idoc_sample.html

    http://www.sappoint.com/abap.html

    http://help.sap.com/saphelp_erp2004/helpdata/en/dc/6b835943d711d1893e0000e8323c4f/content.htm

    http://www.sapgenie.com/sapgenie/docs/ale_scenario_development_procedure.doc

    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

    http://www.allsaplinks.com/idoc_sample.html

    <b>ALE/ IDOC/ XML</b>

    http://www.sapgenie.com/sapgenie/docs/ale_scenario_development_procedure.doc

    http://www.thespot4sap.com/Articles/SAP_XML_Business_Integration.asp

    http://help.sap.com/saphelp_srm30/helpdata/en/72/0fe1385bed2815e10000000a114084/content.htm

    <b>IDOC Convertion</b>

    /people/kevin.wilson2/blog/2005/12/07/changing-fields-in-an-idoc-segment

    Mark useful answers.

    Regards,

    Tanuja.

    Add comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Aug 03, 2006 at 04:20 AM

    hi prasad,

    Example Program to Process an IDoc

    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.

    Regards,

    Naveen

    Add comment
    10|10000 characters needed characters exceeded