MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 02/05/12, 14:16:04
fenixse7 fenixse7 is offline
Junior Member
 
Fecha de Ingreso: mar 2010
Mensajes: 22
Problema con BAPI_ENTRYSHEET_CREATE

Buenas gente, hace rato estoy tratando de crear una Hoja de entrada de servicio con esta BAPI, tuve demasiados errores pero el que ahora tengo es:

"No existe ninguna imputación para la línea de servicios 0000000010".

El codigo usado es:

TYPES: BEGIN OF t_pedido,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
bstyp TYPE ekpo-bstyp,
packno TYPE ekpo-packno,
END OF t_pedido.
DATA:
ls_header TYPE bapiessrc,
lt_return TYPE TABLE OF bapiret2,
lt_services TYPE TABLE OF bapiesllc,
ls_services TYPE bapiesllc,
lv_num_her TYPE bapiessr-sheet_no,
lv_doc_date TYPE bldat,
lv_post_date TYPE bldat,
lv_quantity TYPE mengev,
ls_rel_code TYPE bapimmpara-rel_code,
ls_return TYPE bapiret2,
lt_pedido TYPE TABLE OF t_pedido,
ls_pedido TYPE t_pedido,
lv_packno TYPE esll-packno,
lt_esll TYPE TABLE OF esll,
ls_esll TYPE esll,
ls_ekko TYPE ekko,
ls_ekpo TYPE ekpo,
ls_essr TYPE essr.

* Damos el formato necesario para las fechas y montos recibidos.
WRITE fecha_doc_hes TO lv_doc_date.
WRITE fecha_contab_hes TO lv_post_date.

* Convertimos las fechas en el formato aaaammdd
CALL FUNCTION 'CONVERSION_EXIT_PDATE_INPUT'
EXPORTING
input = lv_doc_date
IMPORTING
output = lv_doc_date.

CALL FUNCTION 'CONVERSION_EXIT_PDATE_INPUT'
EXPORTING
input = lv_post_date
IMPORTING
output = lv_post_date.

REPLACE FIRST OCCURRENCE OF ',' IN monto_neto_hes WITH '.'.
MOVE monto_neto_hes TO lv_quantity.

* Pasamos los datos de cabecera
PERFORM cargar_cabecera USING txt_breve_hes
nro_pedido
lv_doc_date
lv_post_date
CHANGING ls_header.

* Preparamos la entrysheetservices
* Insertamos una fila de líneas virtuales
ls_services-pckg_no = '1 '.
ls_services-line_no = '1 '.
*... marca esto como esquema
ls_services-outl_ind = 'X'.
ls_services-subpckg_no = '2'.
APPEND ls_services TO lt_services.

* Vamos a buscar los datos del pedido en SAP
SELECT ebeln ebelp bstyp packno
FROM ekpo INTO TABLE lt_pedido
WHERE ebeln = nro_pedido.

IF sy-subrc NE 0.
return = text-001. "El pedido no existe en SAP.
EXIT.
ENDIF.

READ TABLE lt_pedido INTO ls_pedido INDEX 1.
IF sy-subrc EQ 0.

lv_packno = ls_pedido-packno.

* Buscamos los servicios del pedido
CALL FUNCTION 'MS_READ_SERVICES'
EXPORTING
i_hpackno = lv_packno
TABLES
t_esll = lt_esll.

IF sy-subrc EQ 0.

* Solo cargamos los servicios en la estructura adecuada
* Solo se carga el primer servicio asociado al pedido.
READ TABLE lt_esll INTO ls_esll WITH KEY package = space.
IF sy-subrc EQ 0.
ls_services-pckg_no = '2'.
ls_services-line_no = ls_services-line_no + 1.
ls_services-outl_ind = ' '.
CLEAR ls_services-subpckg_no.
ls_services-quantity = lv_quantity.
ls_services-base_uom = ls_esll-meins.
ls_services-price_unit = ls_esll-peinh.
IF ls_esll-menge GT 0.
ls_services-gr_price = '1'."ls_esll-netwr / ls_esll-menge.
ENDIF.
ls_services-pln_pckg = ls_esll-packno.
ls_services-pln_line = ls_esll-introw.
ls_services-short_text = ls_esll-ktext1.
APPEND ls_services TO lt_services.
ENDIF.

ENDIF.

ENDIF.

* Creamos la hoja de servicio
CALL FUNCTION 'BAPI_ENTRYSHEET_CREATE'
EXPORTING
entrysheetheader = ls_header
IMPORTING
entrysheet = lv_num_her
TABLES
entrysheetservices = lt_services
return = lt_return.

IF sy-subrc EQ 0.

LOOP AT lt_return INTO ls_return.
IF ls_return-type EQ 'E'.
return = ls_return-message.
EXIT.
ELSEIF ls_return-type EQ 'S'.
num_hoja_servicio = lv_num_her.
return = text-004. "Se creo la Hoja de Servicio en SAP.
ENDIF.
ENDLOOP.

CHECK lv_num_her IS NOT INITIAL.

* Aseguramos los cambios en la BD
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = ''
IMPORTING
return = ls_return.

SELECT SINGLE * INTO ls_ekko FROM ekko WHERE ebeln EQ nro_pedido.
MOVE ls_pedido TO ls_ekpo.
ls_essr-bktxt = txt_breve_doc.
* ls_essr-tbtwr = lv_quantity * 1.
* ls_essr-netwr = lv_quantity * 1.

* Grabamos el texto del documento: CAMPO ESSR-BKTXT - Texto breve del doc dentro de la HES
CALL FUNCTION 'MS_SERVICE_ENTRY'
EXPORTING
i_ekko = ls_ekko
i_ekpo = ls_ekpo
i_essr = ls_essr
i_without_screen = 'X'
EXCEPTIONS
fatal_error = 1
status_wrong = 2
cancel = 3
OTHERS = 4.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO return.
ENDIF.

* Cambiamos el estado de la hoja de entrada a LIBERADO
ls_rel_code = 'AH'. "Liberadores H. Serv
REFRESH lt_return.

CALL FUNCTION 'BAPI_ENTRYSHEET_RELEASE'
EXPORTING
entrysheet = lv_num_her
rel_code = ls_rel_code
TABLES
return = lt_return.

IF sy-subrc NE 0.
return = text-003. "Error al intentar ejecutar el cambio de estado de la HES.
EXIT.
ELSE.
LOOP AT lt_return INTO ls_return.
IF ls_return-type EQ 'E'.
return = ls_return-message.
EXIT.
ELSEIF ls_return-type EQ 'S'.
return = text-005. "Se creo la HES y se LIBERO.
ENDIF.
ENDLOOP.
ENDIF.

* Aseguramos el cambio de estado para la hoja de servicio.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = ''
IMPORTING
return = ls_return.

ELSE.
return = text-002. "Error al intentar ejecutar la creacion de la HES.
ENDIF.

ENDFUNCTION.

Desde ya muchas gracias!
Responder Con Cita
  #2  
Viejo 29/08/14, 01:11:22
Anthony Martinez Anthony Martinez is offline
Member
 
Fecha de Ingreso: nov 2012
Mensajes: 30
Smile Actualizar ESSR-BKTXT

Hola fenixse7, he usado de ejemplo tu funcion MS_SERVICE_ENTRY pero no logro actualizar el campo ESSR-BKTXT, si tu lograste actualizarlo con alguna otra funcion o metodo te agradeceria me expongas como lo hiciste ?, gracias por tu respuesta.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 06:56:15.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web