Ayuda SAP

BAPI_ENTRYSHEET_CREATE! Error Crear Sevicio

Hola,

Estoy intentando crear una hoja de servicio con la bapi BAPI_ENTRYSHEET_CREATE y mi problema es que la cabecera de la hoja me la genera bien pero el detalle(es decir la linea del servicio) con su cantidad y su precio es lo que no me lo está generando. Os pongo el código por si alguien me puede ayudar:

FORM CREAR_HOJA_SERVICIO  USING    P_LV_EBELN TYPE EBELN
                          CHANGING P_HOJA     TYPE BAPIESSR-SHEET_NO.

* Selecciona item de pedido
  DATA: BEGIN OF t_ped OCCURS 0,
             ebeln TYPE ekko-ebeln, " Pedido
             ebelp TYPE ekpo-ebelp, " Iten del pedido
             txz01 TYPE essr-txz01, " Texto de la hoja de entrada de serv
             dlort TYPE essr-dlort, " Local de Prest Servicios
             lzvon TYPE essr-lzvon, " Periodo de
             lzbis TYPE essr-lzbis, " Periodo hasta
             sbnamag TYPE essr-sbnamag, " Resp Interno
             packno TYPE ekpo-packno, " paquete de servivio
        END OF t_ped.


  DATA: t_uesll       TYPE esll OCCURS 0 WITH HEADER LINE,
        lc_mensaje    TYPE string.

  DATA: po_entrysheetheader TYPE bapiessrc,
        po_entrysheet       TYPE bapiessr-sheet_no,
        po_services         TYPE bapiesllc OCCURS 0 WITH HEADER LINE,
        lt_return           TYPE TABLE OF bapiret2 WITH HEADER LINE.

  SELECT * FROM ekpo
           INTO CORRESPONDING FIELDS OF TABLE t_ped
           WHERE ebeln = p_lv_ebeln.

  LOOP AT t_ped.
    t_ped-lzvon   = sy-datum.
    t_ped-lzbis   = sy-datum.
    t_ped-sbnamag = sy-uname.
    MODIFY t_ped.
  ENDLOOP.

  LOOP AT t_ped.

    REFRESH: po_services, t_uesll.
* busca los servicios del item de pedido
    CALL FUNCTION 'MS_READ_SERVICES'
      EXPORTING
        i_hpackno = t_ped-packno
      TABLES
        t_esll    = t_uesll.

    CHECK NOT t_uesll[] IS INITIAL.

* Llena tabla de cabecera y detalle de hoja de entrada de servicio

    CONCATENATE 'Certificación' ZPST015-ZPERIODO INTO t_ped-txz01 SEPARATED BY SPACE.
    CLEAR po_entrysheetheader.
    po_entrysheetheader-po_number   = t_ped-ebeln.
    po_entrysheetheader-po_item    = t_ped-ebelp.
    po_entrysheetheader-begdate    = sy-datum.
    po_entrysheetheader-enddate    = sy-datum.
    po_entrysheetheader-pckg_no    = '1'.
    po_entrysheetheader-person_int = t_ped-sbnamag.
    po_entrysheetheader-short_text = t_ped-txz01.
    po_entrysheetheader-location   = t_ped-dlort.
    po_entrysheetheader-acceptance = ' '. "'X'.
    po_entrysheetheader-doc_date   = sy-datum.
    po_entrysheetheader-post_date  = sy-datum.
*    po_entrysheetheader-ext_number  =  . " Número externo de hoja de entrada
*    po_entrysheetheader-ref_date   =   sy-datum . " Fecha referencia precio de hoja entrada

    CLEAR po_services.
    po_services-pckg_no    = '1'.
    po_services-line_no    = '1'.
    po_services-outl_ind   = 'X'.
    po_services-subpckg_no = '2'.
    po_services-quantity   = '1'.
    APPEND po_services.

    LOOP AT t_uesll WHERE package IS INITIAL.
      CONCATENATE 'Certificación' ZPST015-ZPERIODO INTO t_uesll-ktext1 SEPARATED BY SPACE.
*      t_uesll-netwr = ZPST015-ZIMP_TOTAL.
      po_services-pckg_no    = '2'.
      po_services-line_no    = 10. "po_services-line_no + 1.
      po_services-outl_ind   = ' '.
      CLEAR po_services-subpckg_no.
      po_services-quantity   = 1. "t_uesll-menge.
      po_services-base_uom   = 'UP'."t_uesll-meins.
*      po_services-price_unit = t_uesll-peinh.
*      IF t_uesll-menge GT 0.
        po_services-gr_price = ZPST015-ZIMP_TOTAL / 1.
*      ENDIF.
      po_services-pln_pckg   = t_uesll-packno.
      po_services-pln_line   = t_uesll-introw.
      po_services-short_text = t_uesll-ktext1.
      APPEND po_services.
    ENDLOOP.

  ENDLOOP.
***
  CALL FUNCTION 'ME_STATISTICS_TABLES_REFRESH'
    EXPORTING
      i_ebeln = p_lv_ebeln.


* BAPI para crear hoja de entrada de servicios
  CALL FUNCTION 'BAPI_ENTRYSHEET_CREATE'
    EXPORTING
      entrysheetheader   = po_entrysheetheader
    IMPORTING
      entrysheet         = po_entrysheet
    TABLES
      entrysheetservices = po_services
      return             = lt_return.


  IF po_entrysheet IS NOT INITIAL.

* Informo la Hoja de servicios generada
    p_hoja = po_entrysheet.
    CONCATENATE 'Generada y liberada Hoja de Entrada de Servicios:' po_entrysheet ' ' INTO lc_mensaje.
    MESSAGE : lc_mensaje TYPE 'I'.

  ELSE.
    PERFORM visualiza_log_ejecucion TABLES lt_return.
  ENDIF.

ENDFORM.                    " CREAR_HOJA_SERVICIO

*&---------------------------------------------------------------------*
*&      Form  visualiza_log_ejecucion
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_RETURN   text
*----------------------------------------------------------------------*
FORM visualiza_log_ejecucion TABLES p_return TYPE gty_bapiret2.
  DATA: lt_log TYPE TABLE OF string WITH HEADER LINE.

*PREPARA LOG
  CLEAR lt_log[].

  LOOP AT p_return.

    CLEAR lt_log.

    CONCATENATE p_return-type(1)
    '-'
    p_return-id(20)
    '-'
    p_return-number(3)
    '-'
    p_return-message(100)
    '-'
    p_return-message_v1(50)
    INTO lt_log SEPARATED BY space.

    APPEND lt_log.

  ENDLOOP. "F1_RETURN
*MUESTRA LOG
  CALL FUNCTION 'POPUP_WITH_TABLE'
    EXPORTING
      endpos_col   = 170
      endpos_row   = 20
      startpos_col = 10
      startpos_row = 5
      titletext    = 'LOG de ejecución'
    TABLES
      valuetab     = lt_log
    EXCEPTIONS
      break_off    = 1
      OTHERS       = 2.

ENDFORM. "visualiza_log_ejecución

Este es el resultado:

Si alguien me puede ayudar se lo agradecería. Me esta volviendo loco!!!

Saludos!!!

@luisgijon4 Por favor leer:

Tu código está difícil de usar para alguien que quiera ayudarte si decide probar la BAPI. Con el enlace que te paso, podrás mejorarlo. Ahora lo he editado yo, ya que ha pasado mucho tiempo desde que has publicado el código, pero por favor procura usar esos tips para próximas oportunidades donde pegues mucho código aquí. :wink: