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 04/04/17, 16:46:23
jessiepeque jessiepeque is offline
Junior Member
 
Fecha de Ingreso: sep 2009
Mensajes: 7
pedido de servicio con mas de una linea

Hola a Todos

Favor, solicito la ayuda de alguien.
Tengo que crear un pedido de servicio mediante la BAPI_PO_CREATE1. La creación del pedido me funciona, el problema que tengo que NO me lo crea con mas de una linea. Es decir, solo me lo crea con una posición.

Adjunto el programa para que me indiquen donde tengo el error. En el programa agrego a dos registros a una tabla interna ( solo para probar ).
De antemano agradezco la ayuda.

FORM CREAR_ORDEN_SERVICIO.

data : x_ebelp Like ekpo-ebelp,
x_matkl Like mara-matkl,
x_total TYPE ukurs,
x_pckg Type packno,
s_pckg Type packno,
x_line_no(10) Type n.

x_matkl = '096001001'.
x_total = 210.
x_pckg = 2748.

refresh tab_grilla.
* IMPORT tab_grilla FROM MEMORY ID 'Z010_C'.
tab_grilla-asnum = '3000201'.
tab_grilla-waers = 'UF'.
tab_grilla-asktx = 'primer servicio'.
tab_grilla-enero = 2100.
append tab_grilla.

*tab_grilla-asnum = '3000202'.
*tab_grilla-waers = 'UF'.
*tab_grilla-asktx = 'segundo servicio'.
*tab_grilla-enero = 110.
*append tab_grilla.

tab_grilla-asnum = '3000203'.
tab_grilla-waers = 'UF'.
tab_grilla-asktx = 'tercer servicio'.
tab_grilla-enero = 200.
append tab_grilla.

x_ebelp = 10.

* Carga datos de Cabecera del pedido de Compra
CLEAR w_poheader.

w_poheader-doc_type = x_bsart. " Clase de documento de compras
w_poheader-vendor = x_lifnr. " Número de cuenta del proveedor
w_poheader-langu = sy-langu. " Clave de idioma
w_poheader-purch_org = x_ekorg. " Organización de compras
w_poheader-pur_group = x_ekgrp. " Grupo de compras
w_poheader-currency = x_waers. " Clave de moneda
w_poheader-comp_code = x_bukrs. " Sociedad
w_poheader-creat_date = sy-datum. " Fecha de creación del registro
w_poheader-created_by = sy-uname. " Nombre del responsable que ha añadido el objeto

* Marca los campos para que se tomen.
CLEAR w_poheaderx.

w_poheaderx-doc_type = 'X'.
w_poheaderx-vendor = 'X'.
w_poheaderx-purch_org = 'X'.
w_poheaderx-pur_group = 'X'.
w_poheaderx-currency = 'X'.
w_poheaderx-comp_code = 'X'.
w_poheaderx-creat_date = 'X'.
w_poheaderx-created_by = 'X'.

*Posiciones de pedido
po_item-po_item = x_ebelp. " Número de posición del documento de compras
po_item-quantity = '1'. " Cantidad de pedido
po_item-po_unit = 'ST'. " Unidad de medida de pedido
po_item-short_text = 'ARRIENDO PRUEBA'. " Texto breve
po_item-acctasscat = 'S'. " Tipo de imputación
po_item-item_cat = 'F'. " Tipo de posición del documento de compras
po_item-matl_group = '096001001'. " Grupo Artículos
po_item-plant = 'CD00'. " Centro
po_item-quantity = '1' . " Cantidad de pedido
po_item-conv_num1 = '1'. " Numerador para la conversión UMPRP en UMP
po_item-conv_den1 = '1'. " Denominador para la conversión UMPRP en UMP
po_item-price_unit = '1'. " cantidad base
po_item-prnt_price = 'X'. " Impresión de precio
po_item-unlimited_dlv = 'X'. " Indicador: Exceso de suministro ilimitado
po_item-gr_ind = 'X' . " Indicador de entrada de mercancías
po_item-ir_ind = 'X' . " Indicador de recepción de factura
po_item-gr_basediv = 'X'. " Indicador p.verificación de facturas sobre la base de la EM
po_item-pckg_no = x_pckg. " Nº paquete 2748
po_item-preq_name = sy-uname. " Nombre del solicitante
append po_item.

CLEAR po_item.

*Flags de Posiciones de pedido
po_itemx-po_item = x_ebelp.
po_itemx-quantity = 'X'.
po_itemx-short_text = 'X'.
po_itemx-acctasscat = 'X'.
po_itemx-item_cat = 'X'.
po_itemX-po_unit = 'X'.
po_itemx-matl_group = 'X'.
po_itemx-plant = 'X'.
po_itemx-quantity = 'X' .
po_itemx-conv_num1 = 'X'.
po_itemx-conv_den1 = 'X'.
po_itemx-price_unit = 'X'.
po_itemx-prnt_price = 'X'.
po_itemx-unlimited_dlv = 'X'.
po_itemx-gr_ind = 'X' .
po_itemx-ir_ind = 'X' .
po_itemx-gr_basediv = 'X'.
po_itemx-pckg_no = 'X'.
po_itemx-preq_name = 'X'.
append po_itemx.

CLEAR po_itemx.

sort tab_grilla by asnum.
Loop AT tab_grilla.
*read table tab_grilla with key asnum = '3000203'.

poaccount-po_item = x_ebelp. " Número de posición del documento de compras
poaccount-serial_no = '01'. " Número actual de la imputación
poaccount-creat_date = sy-datum . " Fecha de creación del registro
poaccount-costcenter = x_kostl. " Centro de coste
append poaccount.

CLEAR poaccount.

*Flags de imputacion
poaccountx-po_item = x_ebelp.
poaccountx-po_itemx = 'X' .
poaccountx-serial_no = 'X'.
poaccountx-creat_date = 'X' .
poaccountx-costcenter = 'X'.
append poaccountx.

CLEAR poaccountx.

*Imputacion de pedido
perform Ceros_Izquierda_pos using x_pckg.
* Distribucion de imputacion
srvaccessvalues-pckg_no = codsap_w. " '0000002748' " Nº paquete
srvaccessvalues-line_no = '0000000001' . " Número de línea
srvaccessvalues-serno_line = '01'. " Número correlativo asign. imputación línea de servicio
srvaccessvalues-percentage = '50'. " Porcentaje de repartición del valor de imputación
srvaccessvalues-serial_no = '01'. " Número actual de la imputación
srvaccessvalues-net_value = tab_grilla-enero. " Valor neto de la posición
srvaccessvalues-quantity = tab_grilla-enero. " Cantidad con signo +/-
append srvaccessvalues.

CLEAR srvaccessvalues.

s_pckg = x_pckg + 1.
perform ceros_izquierda_pos using s_pckg.

srvaccessvalues-pckg_no = codsap_w. " '0000002749' " Nº paquete
srvaccessvalues-line_no = '0000000002' . " Número de línea
srvaccessvalues-serno_line = '01'. " Número correlativo asign. imputación línea de servicio
srvaccessvalues-percentage = '25'. " Porcentaje de repartición del valor de imputación
srvaccessvalues-serial_no = '01'. " Número actual de la imputación
srvaccessvalues-net_value = '53'. " Valor neto de la posición
srvaccessvalues-quantity = '53'. " Cantidad con signo +/-
append srvaccessvalues.

CLEAR srvaccessvalues.

add 1 to s_pckg.
perform ceros_izquierda_pos using s_pckg.

srvaccessvalues-pckg_no = codsap_w. " '0000002750'
srvaccessvalues-line_no = '0000000003' .
srvaccessvalues-serno_line = '01'.
srvaccessvalues-percentage = '25'.
srvaccessvalues-serial_no = '01'.
srvaccessvalues-net_value = '53'.
srvaccessvalues-quantity = '53'.
append srvaccessvalues.

CLEAR srvaccessvalues.

* Servicios encabezado
s_pckg = x_pckg + 1.
add 1 to x_line_no.
service-pckg_no = x_pckg. " 2748 " Nº paquete " 2748
service-line_no = x_line_no. " '0000000001' . " Número de líneas interno
service-ext_line = '0000000000' . " Número de línea
service-outl_level = '0'. " Nivel jerárquico del grupo
service-outl_no = ' '. " Nivel de estructura
service-outl_ind = 'X'. " Indicador línea de estructuración
service-subpckg_no = s_pckg. " 2749 " Número de subpaquete
service-edition = '0000' . " Edición del ámbito de servicio
service-ovf_tol = '0'. " Tolerancia de sobrecumplimiento
service-gr_price = '0'. " Precio bruto
service-from_line = '1'. " Límite inferior
service-DISTRIB = '2'. " Indicador de distribución en la imputación múltiple
service-short_text = 'texto'. " Texto breve
append service.

CLEAR service.

perform ceros_izquierda using tab_grilla-asnum.
s_pckg = x_pckg + 1.

* servicio 1 asociado al encabezado
add 1 to x_line_no.
service-pckg_no = s_pckg. " 2749 " Nº paquete
service-line_no = x_line_no. " '0000000002' . " Número de líneas interno
service-ext_line = x_ebelp. " '10' . " Número de línea
service-outl_level = '0'. " Nivel jerárquico del grupo
service-subpckg_no = '0000000000'. " Número de subpaquete
service-edition = '0000' . " Número de subpaquete
service-base_uom = 'ST' . " Unidad de medida base
service-quantity = '1' . " Cantidad con signo +/-
service-price_unit = '1' . " Cantidad base
service-ovf_tol = '0' . " Tolerancia de sobrecumplimiento
service-short_text = tab_grilla-asktx.
service-gr_price = tab_grilla-enero. " Precio bruto
service-matl_group = '096001001'. " Grupo Artículos
service-service = matnr_w. " Nro de Servicio (ESLL-SRVPOS)
append service.

CLEAR service .

add : 10 to x_ebelp.
add : 10 to x_pckg.
endloop.

x_pckg = 0.
*Creamos el Pedido de Servicio
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = w_poheader
poheaderx = w_poheaderx
no_price_from_po = 'X'
IMPORTING
exppurchaseorder = purchaseorder
TABLES
return = return
poitem = po_item
poitemx = po_itemx
poaccount = poaccount
poaccountx = poaccountx
poservices = service
posrvaccessvalues = srvaccessvalues.
IF NOT purchaseorder IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

Do 20 TIMES.
SELECT SINGLE *
FROM ekko client specified
WHERE mandt eq sy-mandt
And ebeln eq purchaseorder.
If sy-subrc = 0.
EXIT.
Else.
WAIT UP TO 3 SECONDS.
EndIf.
EndDo.

CONCATENATE 'Generado pedido:' purchaseorder ' ' INTO lc_mensaje.
MESSAGE : lc_mensaje TYPE 'I'.
Else.

*revierte acciones bapi
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

*notifica error
CLEAR lc_resp.

CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
defaultoption = 'Y'
textline1 = 'Error al generar documento.'
textline2 = '¿Visualiza el LOG de ejecución?'
titel = 'Confirmación'
start_column = 20
start_row = 12
cancel_display = space
IMPORTING
answer = lc_resp.

If lc_resp = 'J'. "respuesta ‘SI’
perform visualiza_log_ejecucion.
EndIf.
ENDIF.
ENDFORM.

FORM visualiza_log_ejecucion.

DATA: lt_log TYPE TABLE OF string WITH HEADER LINE.

*PREPARA LOG
CLEAR lt_log[].

LOOP AT return.

CLEAR lt_log.

CONCATENATE return-type(1)
'-'
return-id(20)
'-'
return-number(3)
'-'
return-message(100)
'-'
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
__________________
Jessie
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 16:25:51.


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