Inbound IDOC Posting
I am developing a function module in ECC that will be used to post inbound IDOC for customer creation DEBMAS07
The logic is as follows -
The function receives an IDOC structure
It then invokes function module 'IDOC_INPUT_DEBITOR'
IDOC_INPUT_DEBITOR takes care of creating a new customer in table KNA1. But I was expecting IDOC_INPUT_DEBITOR to also handle the IDOC posting. This way I can go to WE02 and see a new IDOC record. What am I missing? Is there some more code I need to write after the function module call?
Thank you.
* IDOC structures for using ALE
data lc_no_display type bdwfap_par-inputmethd value ' '.
data lt_idoc_control type standard table of edidc.
data ls_idoc_control type edidc.
data lt_idoc_data type standard table of edidd.
data lt_idoc_data_knvi type standard table of edidd.
data lt_idoc_status type standard table of bdidocstat.
data ls_idoc_status type bdidocstat.
data lt_return_variables type standard table of bdwfretvar.
data lt_serialization_info type standard table of bdi_ser.
data lv_workflow_result type bdwf_param-result.
data pi_idoctyp type edi_iapi00-idoctyp.
data pt_segments type standard table of edi_iapi11.
data lw_segments type edi_iapi11.
data ls_idoc_data type edidd.
data ls_e1kna1m type zdebmas07_e1kna1m.
data e1kna1m type e1kna1m.
*** CONTROL DATA
ls_idoc_control-mandt = input-idoc-edi_dc40-mandt.
ls_idoc_control-status = input-idoc-edi_dc40-status.
ls_idoc_control-doctyp = input-idoc-edi_dc40-idoctyp.
ls_idoc_control-direct = input-idoc-edi_dc40-outmod.
ls_idoc_control-rcvprt = input-idoc-edi_dc40-rcvprt.
ls_idoc_control-rcvprn = input-idoc-edi_dc40-rcvprn.
ls_idoc_control-stdmes = input-idoc-edi_dc40-stdmes.
ls_idoc_control-outmod = input-idoc-edi_dc40-outmod.
ls_idoc_control-sndpor = input-idoc-edi_dc40-sndpor.
ls_idoc_control-sndprt = input-idoc-edi_dc40-sndprt.
ls_idoc_control-sndprn = input-idoc-edi_dc40-sndprn.
ls_idoc_control-mestyp = input-idoc-edi_dc40-mestyp.
ls_idoc_control-idoctp = input-idoc-edi_dc40-idoctyp.
append ls_idoc_control to lt_idoc_control.
*** READ SEGMENTS
pi_idoctyp = ls_idoc_control-idoctp.
call function 'IDOCTYPE_READ_COMPLETE'
exporting
pi_idoctyp = pi_idoctyp
tables
pt_segments = pt_segments
exceptions
object_unknown = 1
segment_unknown = 2
relation_not_found = 3
others = 4.
loop at pt_segments into lw_segments.
case lw_segments-segmenttyp.
when 'E1KNA1M'.
ls_idoc_data-segnam = 'E1KNA1M'.
ls_idoc_data-mandt = sy-mandt.
ls_idoc_data-segnum = lw_segments-nr.
ls_idoc_data-psgnum = lw_segments-parpno.
ls_e1kna1m = input-idoc-e1kna1m.
move-corresponding ls_e1kna1m to e1kna1m.
move e1kna1m to ls_idoc_data-sdata.
append ls_idoc_data to lt_idoc_data.
exit.
endcase.
endloop.
*** IDOC INPUT CALL FUNCTION
data: response type zsi_create_customer_is_res_tab.
data: response_lwa type zsi_create_customer_is_respons.
data: lwa_error_message type string.
call function 'IDOC_INPUT_DEBITOR'
exporting
input_method = lc_no_display
mass_processing = space
importing
workflow_result = lv_workflow_result
tables
idoc_contrl = lt_idoc_control
idoc_data = lt_idoc_data
idoc_status = lt_idoc_status
return_variables = lt_return_variables
serialization_info = lt_serialization_info
exceptions
wrong_function_called = 1
others = 2.
Hello Megan,
Check with the function modules
EDI_DATA_INCOMING
IDOC_WRITE_AND_START_INBOUND
Program:
RBDAPP01
I guess this would answer your query.
Regards,
TP
Similar Messages
-
Delay in the Inbound Idoc Posting Process
Dear Friends,
We have an scenario in the Inbound Idoc Posting Process, when we process the Idocs through the standard Inbound Program - RBDAPP01, we face the delay of 3hrs to 12 hrs, approx.
When we try to re-process the same through the manual process, we could successfully post the Idocs, immediately.
When the same happens, through the background job - the delay is happening.
As we see, there is no problem with the program - RBDAPP01, but can't able to trace the delay in the process.
Any suggestions / advises are welcome.
Thanks in advance.Hi Prasanna,
The update will happen only if a value already exists with the same unit of measure in the system. If the quantity is left blank in the system and if you are trying to update, the update might not happen. Even if the value is Zero in the system, provide the same unit of measure as the data used in the BAPI.
Regards,
Yogesh -
Processes in Inbound IDoc posting
Hi guys,
I'm new with IDocs, and I have an object which requires Inbound IDoc posting..
Can you give me the possible steps/processes including the tcodes on how can I solve this object?
Please also include FMs that I might possibly used during my development.
I highly appreciate all your swift responses. Thanks!Hi Mel,
You can use FM IDOC_INBOUND_WRITE_TO_DB to create an inbound IDoc.
CALL FUNCTION 'IDOC_INBOUND_WRITE_TO_DB'
EXPORTING
PI_STATUS_MESSAGE = I_EDIDS
IMPORTING
PE_IDOC_NUMBER = DOCNUM
PE_STATE_OF_PROCESSING = STPROC
PE_INBOUND_PROCESS_DATA = I_TEDE2
TABLES
T_DATA_RECORDS = I_EDIDD
CHANGING
PC_CONTROL_RECORD = I_EDIDC
EXCEPTIONS
IDOC_NOT_SAVED = 1
OTHERS = 2.
Regards,
Chandra Sekhar -
Inbound IDoc Posting Function Module
Give me an example of how to write "Inbound IDoc Posting Function Module".
In my IDOC i have 10 segments each containing 1 field.
How do i create the Inbound IDoc Posting Function Module ??
Is the following code correct ??
FUNCTION ZIDOC_INBOUND.
""Local interface:
*" IMPORTING
*" VALUE(INPUT_METHOD) LIKE BDWFAP_PAR-INPUTMETHD
*" VALUE(MASS_PROCESSING) LIKE BDWFAP_PAR-MASS_PROC
*" EXPORTING
*" VALUE(WORKFLOW_RESULT) LIKE BDWFAP_PAR-RESULT
*" VALUE(APPLICATION_VARIABLE) LIKE BDWFAP_PAR-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
*DATABASE TABLES
TABLES:LIKPUK.
*DATA DECLARATIONS
DATA: SALES_ORDER_NUM LIKE Z1VBELN.
DATA: DEL_TYPE LIKE Z1LFART.
DATA: ACTUAL_GOODS_MOVEMENT_DATE LIKE Z1WADAT_IST.
DATA: SHIPPING_POINT LIKE Z1VSTEL.
DATA: LOADING_POINT LIKE Z1LSTEL.
DATA: ROUTE_PGI LIKE Z1ROUTE.
DATA: PICK_DATA LIKE Z1KODAT.
DATA: CUST_NO LIKE Z1KUNNR.
DATA: LOCAL_DATE LIKE Z1STDAT.
DATA: TOTAL_GOOD_MOV LIKE Z1WBSTK.
*INTERNAL TABLE DECLARATION
DATA:
IT_LIKP LIKE LIKPUK OCCURS 0 WITH HEADER LINE.
INITIALIZE WORK FLOW
WORK_RESULT = C_WF_RESULT_OK.
LOOP AT IDOC_CONTRL.
MAKE SURE WE HAVE CORRECT MESSAGE TYPE PASSED.
IF IDOC_CONTRL-MESTYP NE 'Z_IDOC_PGI'.
RAISE WRONG_FUNCTION_CALLED.
ENDIF.
CLEAR APPLICATION BUFFERS BEFORE READING NEW ENTRY
CLEAR :IT_LIKP.
REFRESH IT_LIKP.
*PROCESS ALL THE DATA RECORDS IN AN IDOC AND TRANSFER THEM TO
*APPLICATION BUFFERS
INCLUDE MBDCONWF.
LOOP AT IDOC_DATA WHERE DOCNUM EQ idoc_contrl-docnum.
CASE IDOC_DATA-SEGNAM.
WHEN'Z1VBELN'.
SALES_ORDER_NUM = IDOC_DATA-SDATA.
MOVE-CORRESPONDING SALES_ORDER_NUM TO IT_LIKP.
WHEN 'Z1LFART'.
DEL_TYPE = IDOC_DATA-SDATA.
MOVE-CORRESPONDING DEL_TYPE TO IT_LIKP.
WHEN 'Z1WADAT_IST'.
ACTUAL_GOODS_MOVEMENT_DATE = IDOC_DATA-SDATA.
MOVE-CORRESPONDING ACTUAL_GOODS_MOVEMENT_DATE TO IT_LIKP.
WHEN 'Z1VSTEL'.
SHIPPING_POINT = IDOC_DATA-SDATA.
MOVE-CORRESPONDING SHIPPING_POINT TO IT_LIKP.
WHEN 'Z1LSTEL'.
LOADING_POINT = IDOC_DATA-SDATA.
MOVE-CORRESPONDING LOADING_POINT TO IT_LIKP.
WHEN 'Z1ROUTE'.
ROUTE_PGI = IDOC_DATA-SDATA.
MOVE-CORRESPONDING ROUTE_PGI TO IT_LIKP.
WHEN 'Z1KODAT'.
PICK_DATA = IDOC_DATA-SDATA.
MOVE-CORRESPONDING PICK_DATA TO IT_LIKP.
WHEN'Z1KUNNR'.
CUST_NO = IDOC_DATA-SDATA.
MOVE-CORRESPONDING CUST_NO TO IT_LIKP.
WHEN'Z1STDAT'.
LOCAL_DATE = IDOC_DATA-SDATA.
MOVE-CORRESPONDING LOCAL_DATE TO IT_LIKP.
WHEN'Z1WBSTK'.
TOTAL_GOOD_MOV = IDOC_DATA-SDATA.
MOVE-CORRESPONDING TOTAL_GOOD_MOV TO IT_LIKP.
ENDCASE.
ENDLOOP.
selecting data from the database
select * from likp into corresponding fields of table it_likp.
add status record
IF SY-SUBRC EQ 0.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-MSGTY = 'I'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '004'.
IDOC_STATUS-MSGV1 = it_likp-VBELN.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
ELSE.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-MSGTY = 'E'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '005'.
IDOC_STATUS-MSGV1 = it_likp-VBELN.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
WORKFLOW_RESULT = C_WF_RESULT_ERROR.
RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
APPEND RETURN_VARIABLES.
CLEAR RETURN_VARIABLES.
ENDIF.
IF SY-SUBRC EQ 0.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-MSGTY = 'I'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '004'.
IDOC_STATUS-MSGV1 = IT_LIKP-LFART.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
ELSE.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-MSGTY = 'E'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '005'.
IDOC_STATUS-MSGV1 = IT_LIKP-LFART.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
WORKFLOW_RESULT = C_WF_RESULT_ERROR.
RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
APPEND RETURN_VARIABLES.
CLEAR RETURN_VARIABLES.
ENDIF.
IF SY-SUBRC EQ 0.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-MSGTY = 'I'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '004'.
IDOC_STATUS-MSGV1 = IT_LIKP-WADAT_IST.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
ELSE.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-MSGTY = 'E'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '005'.
IDOC_STATUS-MSGV1 = IT_LIKP-WADAT_IST.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
WORKFLOW_RESULT = C_WF_RESULT_ERROR.
RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
APPEND RETURN_VARIABLES.
CLEAR RETURN_VARIABLES.
ENDIF.
IF SY-SUBRC EQ 0.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-MSGTY = 'I'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '004'.
IDOC_STATUS-MSGV1 = IT_LIKP-VSTEL.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
ELSE.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-MSGTY = 'E'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '005'.
IDOC_STATUS-MSGV1 = IT_LIKP-VSTEL.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
WORKFLOW_RESULT = C_WF_RESULT_ERROR.
RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
APPEND RETURN_VARIABLES.
CLEAR RETURN_VARIABLES.
ENDIF.
IF SY-SUBRC EQ 0.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-MSGTY = 'I'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '004'.
IDOC_STATUS-MSGV1 = IT_LIKP-LSTEL.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
ELSE.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-MSGTY = 'E'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '005'.
IDOC_STATUS-MSGV1 = IT_LIKP-LSTEL.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
WORKFLOW_RESULT = C_WF_RESULT_ERROR.
RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
APPEND RETURN_VARIABLES.
CLEAR RETURN_VARIABLES.
ENDIF.
IF SY-SUBRC EQ 0.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-MSGTY = 'I'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '004'.
IDOC_STATUS-MSGV1 = IT_LIKP-ROUTE.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
ELSE.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-MSGTY = 'E'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '005'.
IDOC_STATUS-MSGV1 = IT_LIKP-ROUTE.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
WORKFLOW_RESULT = C_WF_RESULT_ERROR.
RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
APPEND RETURN_VARIABLES.
CLEAR RETURN_VARIABLES.
ENDIF.
IF SY-SUBRC EQ 0.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-MSGTY = 'I'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '004'.
IDOC_STATUS-MSGV1 = IT_LIKP-KODAT.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
ELSE.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-MSGTY = 'E'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '005'.
IDOC_STATUS-MSGV1 = IT_LIKP-KODAT.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
WORKFLOW_RESULT = C_WF_RESULT_ERROR.
RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
APPEND RETURN_VARIABLES.
CLEAR RETURN_VARIABLES.
ENDIF.
IF SY-SUBRC EQ 0.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-MSGTY = 'I'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '004'.
IDOC_STATUS-MSGV1 = IT_LIKP-KUNNR.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
ELSE.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-MSGTY = 'E'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '005'.
IDOC_STATUS-MSGV1 = IT_LIKP-KUNNR.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
WORKFLOW_RESULT = C_WF_RESULT_ERROR.
RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
APPEND RETURN_VARIABLES.
CLEAR RETURN_VARIABLES.
ENDIF.
IF SY-SUBRC EQ 0.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-MSGTY = 'I'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '004'.
IDOC_STATUS-MSGV1 = SY-DATLO.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
ELSE.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-MSGTY = 'E'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '005'.
IDOC_STATUS-MSGV1 = SY-DATLO.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
WORKFLOW_RESULT = C_WF_RESULT_ERROR.
RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
APPEND RETURN_VARIABLES.
CLEAR RETURN_VARIABLES.
ENDIF.
IF SY-SUBRC EQ 0.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-MSGTY = 'I'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '004'.
IDOC_STATUS-MSGV1 = IT_LIKP-WBSTK.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
ELSE.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-MSGTY = 'E'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '005'.
IDOC_STATUS-MSGV1 = IT_LIKP-WBSTK.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
WORKFLOW_RESULT = C_WF_RESULT_ERROR.
RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
APPEND RETURN_VARIABLES.
CLEAR RETURN_VARIABLES.
ENDIF.
endloop.
endfunction.Hi,
First goto WE20-> click on the logical system , now select the receiver LS which you are using as your partner. Now in the inbound parameters cehck what is the process code is attached.
once you get the process code then go to WE42 tcode.. there you give the process code and then double click you will get the function module IDOC_INPUT_FIDCMT.
Hopw you got my point.
Regards,
Nagaraj -
How to change field values AFTER Inbound IDOC Posted successfully
Hi SAP Experts,
In my project I receive the inbound IDOC PORDCR05 from PI and posted as an Purchase Order in ECC.
I create the Z process code and Z function module (which is a copy version of IDOC_INPUT_PORDCR) and complete all the necessary configuration steps. It works perfectly.
My problem is: I have to collect some inbound idocs (that satisfied some criteria) and change the value of field EKPO-TXJCD and EKKN-KOSTL of the PO AFTER it posted successfully (means the purchase order is created and save in database).
How can I do this? I've try to put the logic code in Z function module, but it does not work, since at that time, the Inbound IDOC is not updated to the database yet.
Aprreciate your advise.
Regards,
Elaine.Hi Elaine ,
as per your cretiria pick the idocs and take created PO# from status 53 & use the BAPI (BAPI_PO_CHANGE) to change the neccessary values in the PO. We can't reprocess those idocs again.
Reddy -
Inbound idoc posting directly even with 'Trigger by background' option
We have inbound idocs coming into ECC from Siebel via PI. The partner profile is setup for "Trigger by background program' .So that we can run the job RBDAPP01 to sweep these status 64 idocs. But we don't get a chance as the idocs are getting posted directly(its already in status 51 or 53) as if we used the 'Trigger Immediately' option. Where could the problem lie ? Is there a possibility of some RFC call from PI overriding the Partner Profile config ? Any advice or useful tip is welcome!
thanks,
SHi,
I guess you can still check in the control record for EDIDC-EXPRSS - Overriding in inbound processing, the documentation of the Data Element EDI_EXPRSS is as below
Short Text
Overriding in inbound processing
General
This field determines for ALE whether a time schedule is to be deactivated for inbound processing and replaced by immediate processing.
Regards,
Chen -
Help in inbound idoc posting using bdc
Hi,
We are facing a problem during integration testing to post inbound idocs.
The scenario is :
A custom FM is written to process the inbound idocs, which does the following processes in sequence.
1. BAPI used to create Goods Receipt
2. BDC used to create Delivery using VL01N
3. BDC used to create Handling Unit using VL02N
4. BDC used to create Post Goods Issue using VL02N
The VL01N creates a deivery, and using that delivery BDC calls VL02N to create HU.
In unit testing the idocs are success, but when multiple idocs are used in integration testing, all fails either during delivery creation or HU creation.
The error message we often get when HU is failed is : "Runtime error RAISE_EXCEPTION has occured ".
We have also incorporated a commit work and wait of 5 seconds after each BDC to avoid locking problem if any.
The partner profile is set to ' trigger by background program'.
Standard program RBDAPP01 is scheduled to collect the IDocs in status 64 and then to be processed.
The package size used is 1, inorder to process idocs one by one to avoid locking.
Should any object type be given in RBDAPP01 ?
If so, is it required to maintain any record for that object type in table TBD55 to process idocs serially in RBDAPP01 ?
Any help in this regard is appreciated.
Thanks in advance
Regards
Meena GeorgeRefer these links and see if they are useful:
http://help.sap.com/saphelp_nw04/helpdata/en/0b/2a66c9507d11d18ee90000e8366fc2/content.htm
Regards,
Ravi -
Enhancement for inbound idoc posting(idoc_input_ordrsp)
hi,
please find solution for the below.
business senario: when the vendor send purchase order confirmation through idoc a automated acknowledgement has to be send.
technical: when vendor send idoc (orders05) it updates with FM (idoc_input_ordrsp) our system.
but in the idoc a segment E1EDP19 will have the field IDNLF which has to be filled to send a acknowledgement .
in my case:
the user some times will fill the segment so to get automated acknowledgement we have to write an enhacement to populate the segment in inbound FM.
i have written code in EXIT_SAPLEINM_007. and populated the data in internal table. but the changed data in internal table is not reflecting in processed idoc(in we02 direction 2).idoc_data is the intenal table which hold all the segment data in run time.
now i fetched matnr from ekpo table populated E1EDP19
and modified the internal table by adding idoc_data-sdata when idoc_data-segnam is E1EDP19 .
ultimately the sdata is reflecting in the idoc_data-sdata for the segment.
but when we check in we02 for the processed idoc the changes are reflecting.
give me a solution for the data to reflect in processed idoc. -
Collecting or time based inbound idoc posting
Dear All,
We have need of posting idoc's in a specific time interval in SAP ECC system. Please help us.
requirement is We are pushing idocs to ECC , but the idoc should get process only between 3 Pm to 6 PM.
Kindly help us.
Regards
Pradeep P Nhello pradeep,
Schedule a Background job whenever you get the IDOC in to SAP .Run the Job at specific time.
We had a similar scenario where we had to post it after 24 hours.
sample code ......
start_time = "when ever you want".
WRITE docnum TO name.
SHIFT name LEFT DELETING LEADING '0'.
CONCATENATE 'POST_IDOC_' name INTO name.
CONDENSE name.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = name
IMPORTING
jobcount = number
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc = 0.
Fill idoc number
r_docnum-low = docnum.
r_docnum-sign = 'I'.
r_docnum-option = 'EQ'.
APPEND r_docnum.
Fille message type
r_mestyp-low = mestyp.
r_mestyp-sign = 'I'.
r_mestyp-option = 'EQ'.
APPEND r_mestyp.
Manual processing of IDOCS
SUBMIT rbdmani2 WITH so_docnu IN r_docnum
WITH so_mesty IN r_mestyp
WITH p_output = ''
WITH p_wodial = 'X'
VIA JOB name NUMBER number
AND RETURN.
IF sy-subrc = 0.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = number
jobname = name
sdlstrtdt = start_date
sdlstrttm = start_time
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
OTHERS = 8.
IF sy-subrc <> 0.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " POST_IDOC_DAYS_LATER
Thanks,
Pradeep. -
Hello,
I am getting this Error message"error determining posting period(infostructure S008,Variant Z2,RC3)" while creating Sales order from Inbound Idocs in the IDOC,which is affecting sales order creation.
While viewing this Info structure S008, I could see no records have been maintained. Wanted to know the reasons behind this Hard error?
Is it something related to Date Field used in the Update Rules for this Infostructure which is causing this posting period error?
Appreciate your inputs on this.
Thanks and Regards
Mohammed RoshanThank you Jelena,I checked the Ship. Delivery dates in the IDOC which are for Current Fiscal Year- 20140703 and 20140711,Could there be any other reason for this error?
Could it be an issue with e Update rule in this Infostructire S008
Secondly when we try change the update rule thru MC25 for this Infostructure S008,It gives a message"
"Maintenance of SAP standard updates not allowed"
Kindly advice
Thanks and Regards
Mohammed Roshan -
Error while trying to post inbound idoc of message type COND_A
Hi,
I am getting error while trying to post inbound idoc of message type COND_A.
If I left Usage & Condition field of segment E1KOMG then 'Table not available' idoc message is coming
and if providing value in above fields then dump is coming.
How to solve ?
Plz do reply
Thanks
MohitI do not see any reason why you would need to use COND_A04 if COND_A01 is working.
What if you could get COND_A04 to post and you would face the same result as in COND_A01?
If SAP does not check wrong values, then you have to do it yourself, or you report an incident at SAP (after you have searched for OSS notes that may have fixed this error already)
For example OSS Note 1169998 - IDoc: KONP-LIFNR values not checked
fixed a situation where the vendor number was not validated. -
B1358 error while posting inbound idoc with a FM
Hi
We are trying to post and inbound IDOC with the help of an rfc and eventually creating an invoice from a bdc wrapped in the RFC
The idocs are successfully pushed to R/3 while they are not getting posted and the error code in we02 is as follows
No status record was passed to ALE by the application
Message no. B1358
Diagnosis
The application failed to return a status record to the ALE layer after the IDoc was processed.
This is due to an error in the application function module which processed the inbound IDoc.
Procedure
If you wrote the application function module yourself, you need to change the program.
If the function module in question is a standard application function module, you should consult SAP.
Note: we are using a custom function module
regards
krishnaHi Krishna,
I assume that your function module processing the IDOC does not follow the ALE/IDOC processing rules.
Please check out the programming guidelines in the SAP Online Help under:
<a href="http://help.sap.com/saphelp_nw70/helpdata/en/78/21758051ce11d189570000e829fbbd/frameset.htm">http://help.sap.com/saphelp_nw70/helpdata/en/78/21758051ce11d189570000e829fbbd/frameset.htm</a>
Important are the parameters and tables that need to be returned, containing the correct IDOC processing status. Please take the IDOC processing quite serious in regards to complete Logical Unit of Works.
Best regards,
SIlvia -
Inbound IDOC to post goods receipt with inbound delivery as reference
Kindly let me know the message and IDOC type for
Inbound IDOC to POST GOODS RECEIPT with inbound delivery as reference
I tried using WMMBXY but it didn;t work.
Pls let me know asap.Your help is appreciated.
Thanks and Regards
Priti
Edited by: Priti Adukia on Feb 11, 2008 4:48 AMHi Nicole,
What I've to do is quite the same as the case. Outbound and Inbound are in the same SAP system. If I've good understanding, I must set partner profile as follows :
INBOUND - Parter LI with
Message DESADV
Operation code DELS
OUTBOUND - Partner KU
Message DESADV
Operation code ???
Please advise
Suchart -
Post long text for document line item via FI-GL Inbound IDoc
Hi guru,
I am trying post extension ZFIDCP02 linked basic type FIDCCP02 and message type FIDCC2 IDoc in R/3 (4.6c) via IBM Websphere (Inbound IDoc),
I am use inbound function module IDOC_INPUT_FIDCC2 and activate exit 008 (EXIT_SAPLF050_008) and exit 002 (EXIT_SAPLF050_002),
In the extension ZFIDCP02 and under E1FISEG, I am add my segment ZITEXT include field TDSPRAS, TDID, TDOBJECT, TDLINE.
I am send ZFIDCP02 IDoc via IBM Websphere no error but all field TDSPRAS, TDID, TDOBJECT, TDLINE in my segment ZITEXT not post in FI-GL.
How can I post long text for document line item (ZITEXT) in FI-GL ?.
and I'm mean post ZITEXT to bank statement via IDOC.
Please throw light on this and may be I 'm want solution or example ABAP code for exit 002 (EXIT_SAPLF050_002).
Thanks in advance,
Akkapong Pirachai
CAT Telecom
Edited by: Akkapong Pirachai on Aug 20, 2008 7:40 AMClose question because long time for answer.
-
Help required in posting inbound idocs
Hi,
We are facing a problem during integration testing to post inbound idocs.
The scenario is :
A custom FM is written to process the inbound idocs, which does the following processes in sequence.
1. BAPI used to create Goods Receipt
2. BDC used to create Delivery using VL01N
3. BDC used to create Handling Unit using VL02N
4. BDC used to create Post Goods Issue using VL02N
The VL01N creates a deivery, and using that delivery BDC calls VL02N to create HU.
In unit testing the idocs are success, but when multiple idocs are used in integration testing, all fails either during delivery creation or HU creation.
The error message we often get when HU is failed is : "Runtime error RAISE_EXCEPTION has occured ".
We have also incorporated a commit work and wait of 5 seconds after each BDC to avoid locking problem if any.
The partner profile is set to ' trigger by background program'.
Standard program RBDAPP01 is scheduled to collect the IDocs in status 64 and then to be processed.
The package size used is 1, inorder to process idocs one by one to avoid locking.
Should any object type be given in RBDAPP01 ?
If so, is it required to maintain any record for that object type in table TBD55 to process idocs serially in RBDAPP01 ?
Any help in this regard is appreciated.
Thanks in advance
Regards
Meena GeorgeHi,
We are facing a problem during integration testing to post inbound idocs.
The scenario is :
A custom FM is written to process the inbound idocs, which does the following processes in sequence.
1. BAPI used to create Goods Receipt
2. BDC used to create Delivery using VL01N
3. BDC used to create Handling Unit using VL02N
4. BDC used to create Post Goods Issue using VL02N
The VL01N creates a deivery, and using that delivery BDC calls VL02N to create HU.
In unit testing the idocs are success, but when multiple idocs are used in integration testing, all fails either during delivery creation or HU creation.
The error message we often get when HU is failed is : "Runtime error RAISE_EXCEPTION has occured ".
We have also incorporated a commit work and wait of 5 seconds after each BDC to avoid locking problem if any.
The partner profile is set to ' trigger by background program'.
Standard program RBDAPP01 is scheduled to collect the IDocs in status 64 and then to be processed.
The package size used is 1, inorder to process idocs one by one to avoid locking.
Should any object type be given in RBDAPP01 ?
If so, is it required to maintain any record for that object type in table TBD55 to process idocs serially in RBDAPP01 ?
Any help in this regard is appreciated.
Thanks in advance
Regards
Meena George
Maybe you are looking for
-
Would anyone be able to help? The power in the house has been down, and now my iMac doesn't start. (it is a bit more than a year old). When I push the power button on the back of the screen, the fan starts on quite high rev and go for a minute or so,
-
How can I use environment variables in a controller?
Hi all, How can I use environment variables in a controller? I want to pass a fully qualified directory and file name to FileInputStream and would like to do it by resolving an env variable, such as $APPLTMP. Is there a method somewhere that would re
-
Hi, Just a quick clarification. We use IP SLA product with a router configured as the SA agent(with ip sla monitor responder enabled) and use our SNMP Management station (Concord) to measure/take the stats from the routers and display accordingly. Ho
-
Master detail detail in one single page
Hello, Building a page showing a master/detail relationship is straightforward. Now I need to build a page showing a master/detail/detail relationship ? How do i do this ? Thanks for your help, Seb.
-
Ejb 1.1 deployment - HOW???
Hi all, I simply would like to deploy EJBs. The .jar-file contains the class-files (home, remote, bean-class, pk-class) and in meta- inf: ejb-jar.xml. With "java .... admin.jar ... -deploy ..." it does not work! Where is a documentation about that is