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,
S
Hi,
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
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 -
Inbound IDOC error :51 Passed with out Message Type to ALE Layer
Hi,
I am struct wtih the inbound IDOC scenario ..XI able to send IDOC but at ECC side it is in 51 red status and the error message is
"IDOC passed without Message type to ALE Layer"
Do I need to pass these segment values in Message Mapping? I didnt mapped any MESTYP,SNDPOR,SNDPRT and so on.. disabled these fields...
Could any one light on this issue?
Thanks
Rajeev>
rajeev raj wrote:
> Hi,
>
> I am passing values in MM as below:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <ZPORDCR01>
> <IDOC BEGIN="Constant">
> <EDI_DC40 SEMENT="Constant">
> <TABNAM>Constant</TABNAM>
> <DIRECT>Constant</DIRECT>
> <IDOCTYP>ZOrders</IDOCTYP>
> <CIMTYP>Constant</CIMTYP>
> <MESTYP>Z_Orders</MESTYP>
> <SNDPOR>B0009</SNDPOR>
> <SNDPRT>LS</SNDPRT>
> <SNDPFC>LS</SNDPFC>
> <SNDPRN>PD_100</SNDPRN>
> <RCVPOR>DEV</RCVPOR>
> <RCVPRT>LS</RCVPRT>
> <RCVPRN>Dev10</RCVPRN>
> <REFINT>GB</REFINT>
> <REFGRP>MTI</REFGRP>
> <REFMES></REFMES>
> <ARCKEY>20090909</ARCKEY>
> </EDI_DC40>
> <E1PORDCR SEGMENT="Constant">
>
> I am forwarding these values in MM... IDOC is successfully reaching in ECC but with 51 error in red... Logical system, post and message types are avaliable in Control record of the IDOC which received wiht errors in ECC.
>
> Thnaks
> Rajeev
Fill the TABNAME as EDI_DC40 and Direct as 2 (represents the inbound direction) and resend the idoc and check
Rajesh -
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 -
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. -
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 -
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 -
How to process inbound idoc in R/3 with status 75 - idoc received via qRFC?
Hi gurus,
we are using EOIO for source to R/3, and all the idocs a received in r/3 with this status. But they can't be processed from BD87. How to process these?
Thanks,
Olian
Edited by: Olian Saludew on Sep 11, 2008 11:44 AMHi,
Idocs Works on tRFC Queues.
Check this Report to Process Inbound Idocs with Specified Status.
RBDAPP01
Regards
Seshagiri -
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. -
Idoc are posting to ECC with Status 64
Hi All,
We are receiving IDOC with status 64 from PI.
We used tried by changing the options in partner profiles
--> Trigger by Background program
The inbound IDoc is processed in the background. In this case, make sure, that the report RBDAPP01 is scheduled in the transaction SM37 as a regular job with the correct variant to process all IDoc´s, which have this processing option maintained.
--> Trigger immediately
When using this setting, it is important to have sufficient resources for the immediate processing of the inbound IDoc´s. One dialog work process must be available for every single IDoc.
If this dialog work process is not available, the IDoc cannot be processed and stays in status 64.
I reffered the notes
555229 ‘IDocs hang in status 64 for tRFC with immediate processing’
734576 ‘IDocs retain status 64, but should be processed immediately’
1055679 ‘IDoc-tRFC inbound with immediate processing may not work’
Still the idocs are in 64 status, every time im re-processing them manually. even after re-processing some of them are going to 51 or 54.
Please help me.
Regards
Bhargava KrishnaHello,
Can you please explain your issue is with "Trigger by Background program" or "Trigger immediately"?
For Trigger immediately, if there is no free dialog work process available than IDocs are posted with status 64.
For Trigger by Background program, Background job RBDAPP01 will process IDocs depending on variant you define to select & process IDocs(i.e., IDoc Status = 64).
It is always recommended to use "Trigger by Background program" for high volume interface which has large number of IDocs.
Help on RBDAPP01
Regards,
Sameer -
Inbound delivery Idoc to create Batch with Characteristics
Hi Experts,
Need your help...
We have the scenario where the inbound delivery in ECC is created by an external Idoc (DESADV). However the batch field is blank.
Requirement is to create a batch per line item (as per the number range in ECC) during inbound idoc posting and assign the batch to the inbound delivery line item. This batch will also need to be populated with characteristics. (DESADV Idoc segments will carry these characteristics)
Is there a way to achieve this..?
Thanks,
KrishnaThanks for the reply..
Do you mean to say that its a standard functionality..? We are already using DESADV with DELS. However, we have modified our inbound idoc with Z Segments. These segments carry the characteristic values. No where in the idoc we have the batch number, as we want the batch number to be created automatically based on the number range in ECC.
In such kind of cases, how to achieve this..?
Thanks,
Krishna -
How to Test, Inbound idoc ,with out the Sender System, using a Text File
Hi Guru's .
we wanted to test BLAORD03 inbound idoc (Message Type BLAORD).with out the SENDER SYSTEM.
on the same client.
we wanted to test this idoc with text file from our local machine.
Can anyone give us detail steps.like how to create File layout
with Segment name,and values for the fields.how to pass this file to the system.
Thanks in advance.Hi Aparna.
My requirement is to test the idoc with Inbound File.
Generate a file with the data entered through segments through we19 ,and use the same file for processing through we16.
when i am trying to do this syst complaing about
Partner Profile not available, and some times
port not available. and some times with
'No further processing defined'.
but i maintained part profiles and port perfectly.
Can you help me in testing with test 'File' port. -
Inbound Idoc function module for Cycle count with msg type WVINVE
Can any one tell me which is the standard function Module which processes Cycle count for message type WVINVE.
My requirement is to setup Inbound Idoc for cycle processing with message type WVINVE.Hi Mukesh,
Inbound FM is IDOC_INPUT_STORE_INVENTORY , and Process code is WVIN.
Yoou can check this in Tcode WE42 for process code WVIN.
Regards
Srikanth M
Maybe you are looking for
-
HT1918 Got a problem in my iTunes account and I can not purchase through
Got a problem in my iTunes account and I can not purchase through
-
Recently I receive errors from Firefox at sites that were working fine before, always the same: a script is not responding, and I can wait, debug or stop. Waiting doesn't help (therefore pointless to change the 'dom.max_script_run_time' setting in th
-
Trying to get an apple id and i am not recieving emails
trying to get apple id and am not recieving emals
-
How do i designate osx as the primary operating system?
I was finally able to install windows 7 professional on my new macbook pro. But now when I boot up it automatically starts in windows unless i press the option key and select osx manually. Any way to set osx as the default? Thanks in advance.
-
Can I replace my A1226 model keyboard with one from a model A1260?
My A1226 keyboard has dead keys, somebody is parting out their A1260--Can I replace my keyboard with theirs?