04-05-2019 3:28 PM
Hello i have some time checking my code and i don't know why my idoc is not send, it's an inbound idoc . HEre's my code:
DATA: idoc_data TYPE TABLE OF edidd.
DATA: t_comm_control TYPE TABLE OF edidc,
wa_comm_control TYPE edidc,
idoc_control TYPE edidc.
DATA: c_invrev_idoc_type(29) TYPE c VALUE 'SHP_OBDLV_CONFIRM_DECENTRAL03'. " IDOC TIPO BASE
DATA: c_invrev_mestype(27) TYPE c VALUE 'SHP_OBDLV_CONFIRM_DECENTRAL'. " TIPO DE MENSAJE
DATA: ls_e1shp_obdlv_confirm_decentr TYPE e1shp_obdlv_confirm_decentr,
ls_e1bpobdlvhdrcon TYPE e1bpobdlvhdrcon,
ls_e1bpobdlvhdrctrlcon TYPE e1bpobdlvhdrctrlcon.
DATA: ls_idoc_data TYPE edidd.
DATA: lv_numidoc TYPE edi_docnum.
DATA dummy TYPE string.
DATA ls_idoctrl TYPE ZTB_ACUER_INTER.
DATA idoc_data2 TYPE TABLE OF edi_dd40.
DATA: ls_idoc_data2 TYPE edi_dd40.
DATA: lv_idocnum TYPE edidc-docnum.
data it_idoc_control TYPE TABLE OF edidc.
TRY.
IF ( activity_code = '20' AND ref_value = '99' ) .
" Asignando valores a campos de los segmentos
ls_e1shp_obdlv_confirm_decentr-delivery = order_nbr.
ls_e1bpobdlvhdrcon-deliv_numb = order_nbr.
ls_e1bpobdlvhdrctrlcon-deliv_numb = order_nbr.
ls_e1bpobdlvhdrctrlcon-dlv_del = 'X'.
" Agregando lineas a tabla con segmentos
ls_idoc_data-segnam = 'E1SHP_OBDLV_CONFIRM_DECENTR'.
ls_idoc_data-sdata = ls_e1shp_obdlv_confirm_decentr.
APPEND ls_idoc_data TO idoc_data.
ls_idoc_data-segnam = 'E1BPOBDLVHDRCON'.
ls_idoc_data-sdata = ls_e1bpobdlvhdrcon.
APPEND ls_idoc_data TO idoc_data.
ls_idoc_data-segnam = 'E1BPOBDLVHDRCTRLCON'.
ls_idoc_data-sdata = ls_e1bpobdlvhdrctrlcon.
APPEND ls_idoc_data TO idoc_data.
SELECT SINGLE * from ZTB_ACUER_INTER into ls_idoctrl.
idoc_control-mestyp = c_invrev_mestype.
idoc_control-IDOCTP = c_invrev_idoc_type.
idoc_control-DIRECT = '2'. " Sentido del IDoc: Entrada
idoc_control-rcvprt = ls_idoctrl-rcvprt.
idoc_control-rcvprn = ls_idoctrl-rcvprn.
idoc_control-sndprt = ls_idoctrl-sndprt.
idoc_control-sndprn = ls_idoctrl-sndprn.
idoc_control-SNDPOR = ls_idoctrl-SNDPOR. " Puerta remitente
idoc_control-RCVPOR = ls_idoctrl-RCVPOR. " Puerta destinatario
DATA:
ld_pe_idoc_number TYPE EDIDC-DOCNUM,
ld_pe_state_of_processing TYPE SY-SUBRC,
ld_pe_inbound_process_data TYPE TEDE2.
CALL FUNCTION 'IDOC_INBOUND_WRITE_TO_DB'
IMPORTING
PE_IDOC_NUMBER = ld_pe_idoc_number
PE_STATE_OF_PROCESSING = ld_pe_state_of_processing
PE_INBOUND_PROCESS_DATA = ld_pe_inbound_process_data
TABLES
t_data_records = idoc_data
* T_LINKED_OBJECTS =
changing
pc_control_record = idoc_CONTROL
* EXCEPTIONS
* IDOC_NOT_SAVED = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
ls_log-msgid = sy-msgid.
ls_log-msgno = sy-msgno.
ls_log-msgty = sy-msgty.
ls_log-msgv1 = order_nbr.
ls_log-msgv2 = activity_code.
ls_log-msgv3 = ref_value.
APPEND ls_log TO lt_log.
ELSE.
COMMIT WORK.
SUBMIT rseout00.
ENDIF.
ENDIF.
CATCH CX_ROOT.
ls_log-msgty = 'E'.
CONCATENATE 'ORDER: ' order_nbr INTO ls_log-msgv1.
CONCATENATE 'ACTIVITY_CODE' activity_code INTO ls_log-msgv2.
ls_log-msgv3 = ' Error en ejecucion GAP 154'.
APPEND ls_log TO lt_log.
ENDTRY.
and stay on state warning (idoc ready to transfer application)
Executing tx bd87 with my idoc num my idoc y processing correctly buy how can i do this automatically ?