Skip to Content
0
Jul 06, 2016 at 01:34 PM

BAPI_ENTRYSHEET_CREATE!! No me crea la linea del servicio

581 Views

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

Attachments