Creación de IDOCs

El menu WEDI e SALE sirve para la administración de IDOCs.

 

En la WE20 creamos el IDOC base. Un IDOC está formado por segmentos, con la estructura especifica de los campos a transladar, suele ser una de cabecera y otra posición.

 

Con la WE81, luego debemos crear el tipo de mensaje. Esto es el evento que trasnsmite en si al IDOC un tipo de mensaje puede tener varios IDOCs base (sería ALGO similar a las clases de mensajes en las impresiones en SAP).

 

Cuando tenemos el IDOC y el tipo de mensaje debemos relacionarlos para unirlos usamos la WE82.

En la trx BD64 debemos ingresar el tipo de mensaje creado en el sistema lógico y enlace correspondiente. (todo este seteo de enlaces todavia no lo vi, solamente agregue un IDOC a un ambiente ya creado.

 

En la WE02 podemos visualizar los IDOCs, ves su estado y contenido.

 

Dejo el código fuente de la parte de envió de IDOC de un programa que ya tiene en la tabla TI_HEADER los datos de cabecera y en TI_TABLE los datos de las posiciones.

 

form enviar_idocs .
DATA:        edidd_rec  TYPE edidd.

v_msgtype = 'ZEXTBNK'.  "Nombre de tipo de mensaje
v_idoctp  = 'ZEXTBANK'.  "Nombre de IDOC base
CLEAR v_cont.

* Por cada registro en la cabecera
  LOOP AT ti_header. "INTO header_rec.

    ADD 1 TO v_cont.
    MOVE 'ZFII039_HS' TO v_segnam.

    MOVE: ti_header-bukrs TO v_ZFII039_H-bukrs,
          ti_header-DISKB TO v_ZFII039_H-DISKB.

    CLEAR edidd_rec.
    edidd_rec-segnum = v_cont.
    edidd_rec-segnam = v_segnam.
    edidd_rec-mandt  = sy-mandt.
    edidd_rec-sdata  = v_ZFII039_H.
    APPEND edidd_rec TO it_edidd.

    LOOP AT ti_table WHERE bukrs = ti_header-bukrs
                       AND diskb = ti_header-diskb.

      ADD 1 TO v_cont.
      v_segnam       = 'ZFII039_DS'.

      MOVE: ti_table-bukrs TO v_ZFII039_D-bukrs,
            ti_table-diskb TO v_ZFII039_D-diskb,
            ti_table-azdat TO v_ZFII039_D-azdat,
            ti_table-aznum TO v_ZFII039_D-aznum,
            ti_table-waers TO v_ZFII039_D-waers,
            ti_table-esbtr TO v_ZFII039_D-esbtr.

      edidd_rec-segnum = v_cont.
      edidd_rec-segnam = v_segnam.
      edidd_rec-mandt  = sy-mandt.
      edidd_rec-sdata  = v_ZFII039_D.
      APPEND edidd_rec TO it_edidd.

    ENDLOOP.

    CLEAR v_edidc.
    v_edidc-mestyp = v_msgtype.
    v_edidc-idoctp = v_idoctp.
    CLEAR v_edidc-rcvpfc.
    CLEAR v_edidc-sndpfc.
    CLEAR v_cont.

    CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
      EXPORTING
        master_idoc_control            = v_edidc
      TABLES
        communication_idoc_control     = it_edidc
        master_idoc_data               = it_edidd
      EXCEPTIONS
        error_in_idoc_control          = 01
        error_writing_idoc_status      = 02
        error_in_idoc_data             = 03
        sending_logical_system_unknown = 04.

    REFRESH it_edidc.
    REFRESH it_edidd.

  ENDLOOP. "Por cada registro en la cabecera
endform.                    " enviar_idocs

 

Declaraciones

DATA: v_edidc    LIKE edidc,
      v_msgtype  LIKE tbdme-mestyp,
      v_segnam   LIKE edidd-segnam,
      v_idoctp   LIKE bdaledc-idoctp,
      v_cont     TYPE i.

* Variables para ALV
DATA:
  lv_fieldcat  TYPE slis_t_fieldcat_alv,
  lv_layout    TYPE slis_layout_alv,
  lv_repid     TYPE sy-repid,
  lv_sorted    TYPE slis_t_sortinfo_alv,
  t_events     TYPE slis_t_event,         " Eventos.
  gt_header    TYPE slis_t_listheader,    " Tabla con el Titulo
  gt_sort      TYPE slis_t_sortinfo_alv,  "tabla con orden y subtot
  wa_header    TYPE slis_listheader.      " Work Area con el Titulo

TYPES: BEGIN OF TYPE_FEBKO,
         HKONT TYPE FEBKO-HKONT, "Cuenta
         BUKRS TYPE FEBKO-BUKRS, "Sociedad
         AZDAT TYPE FEBKO-AZDAT, "Fecha extracto
         AZNUM TYPE FEBKO-AZNUM, "Numero extracto
         WAERS TYPE FEBKO-WAERS, "Moneda
         ESBTR TYPE FEBKO-ESBTR, "Importe
         ESVOZ TYPE FEBKO-ESVOZ, "Debe/Haber
         HBKID TYPE FEBKO-HBKID, "Banco
         HKTID TYPE FEBKO-HKTID, "Cuenta
         EFART TYPE FEBKO-EFART, "Tipo extracto M o E
         DISKB TYPE T035D-DISKB, "Codigo
       END OF TYPE_FEBKO.

TYPES: BEGIN OF TYPE_HEADER,
         BUKRS TYPE FEBKO-BUKRS, "Sociedad
         DISKB TYPE T035D-DISKB, "Codigo
       END OF TYPE_HEADER.

DATA: TI_FEBKO TYPE STANDARD TABLE OF TYPE_FEBKO.
DATA: TI_FEBKO_AUX TYPE STANDARD TABLE OF TYPE_FEBKO WITH HEADER LINE.
DATA: TI_TABLE TYPE STANDARD TABLE OF TYPE_FEBKO WITH HEADER LINE.
DATA: TI_HEADER TYPE STANDARD TABLE OF TYPE_HEADER WITH HEADER LINE.

DATA: WA_FEBKO TYPE TYPE_FEBKO.
DATA: WA_FEBKO_AUX TYPE TYPE_FEBKO.

DATA: v_ZFII039_H LIKE ZFII039_H,
      v_ZFII039_D LIKE ZFII039_D.

DATA: it_edidd TYPE STANDARD TABLE OF edidd,
           it_edidc TYPE STANDARD TABLE OF edidc.

FIMA_DAYS_AND_MONTHS_AND_YEARS

Esta función nos devuelve la diferencia en dias, meses y años entre dos fechas.




    CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'       
      EXPORTING                                          
        i_date_from          = s_badat2-low               
        i_date_to            = s_badat2-high              
     IMPORTING                                           
        e_days               = gv_dias2                 
*       E_MONTHS             =                          
*       E_YEARS              =