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!!!