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 25/11/11, 04:01:41
SilviaC SilviaC is offline
Junior Member
 
Fecha de Ingreso: oct 2008
Localización: Mexico
Mensajes: 9
Question Bapi para crar ordenes de venta

Hola amigos,

Soy SD y estoy trabajando con un amigo abappero para hacer un programa que genere ordenes de venta. Estamos usando la BAPI_SALESORDER_CREATEFROMDAT2 y hasta ahora el resultado ha sido bastante bueno... pero tenemos un problema con la unidad de medida.

La entrada de datos la estamos haciendo desde las mismas tablas de ventas. Un pedido de un tipo X genera un pedido de tipo Y...

El problema es que no importa qué unidad de medida le suministremos al programa, las ordenes generadas vienen en la unidad de medida de venta del material y no en la unidad suministrada en la estructura. Les anexo el código por si alguien nos puede ayudar.
*----------------------------------------------------------------------*
***INCLUDE ZSD_ORDEN_AP_RUTINAS .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form LLENADATOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LLENADATOS .
*Buscar los datos de vbak que serviran de base.
data: vbel like zorders-vbeln.



select * from vbak into CORRESPONDING FIELDS OF TABLE it_vbak
where AUART in ('ZAR','ZAC').


*leer ahora lo que tiene zorders.

SELECT * from zorders INTO CORRESPONDING FIELDS OF TABLE it_zorders.


*si hay datos recorrer la tabla interna y borrar las coincidencias

IF sy-subrc = 0.
loop at it_zorders.

delete it_vbak where vbeln = it_zorders-ebeln.


ENDLOOP.
ENDIF.

ENDFORM. " LLENADATOS
*&---------------------------------------------------------------------*
*& Form CREAORDERS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CREAORDERS .

data sub(3) type c.
data it_vbap like STANDARD TABLE OF vbap WITH HEADER LINE.
data prov like zinterco-lifnr.
data reg like LINE OF it_zorders.
data cent like vbap-werks.
*recorrer la tabla interna para ir creando las ordenes
WRITE 'Órdenes creadas'.
LOOP AT it_vbak.

if it_vbak-auart = 'ZAR'.
header-doc_type = 'ZMR1'.
elseif it_vbak-auart = 'ZAC'.
header-doc_type = 'ZMC1'.
ENDIF.

header-sales_org = 'OV02'.
header-distr_chan = 'C1'.
header-division = 'S1'.
sub = it_vbak-vkbur+1(3) .
CONCATENATE 'B' sub INTO header-sales_off.
*guardar el centro para usarlo mas delante
cent = header-sales_off.
*header-sales_off = 'B' + substr(it_VBAK-VKBUR ,2,3).
header-doc_date = sy-datum.
header-purch_date = sy-datum.
header-po_dat_s = sy-datum.
header-req_date_h = sy-datum.
Header-purch_no_c = 'Pedido A en P'.


*hacer un select a vbap.
REFRESH it_vbap.
refresh i_items.
refresh I_SCHDL.
select * from vbap into CORRESPONDING FIELDS OF TABLE it_vbap
WHERE vbeln = it_vbak-vbeln.


LOOP AT it_vbap.
i_items-itm_number = it_VBAP-POSNR.
i_items-material = it_VBAP-MATNR.
sub = it_VBAP-WERKS+1(3) .
CONCATENATE 'B' sub INTO i_items-plant.

* i_items-plant = 'B' + substr(it_VBAP-WERKS,2,3).
i_items-target_qty = it_VBAP-KWMENG.
* I_items-target_qu = it_VBAP-ZIEME.
I_items-target_qu = it_VBAP-vrkme. *****aqui asigna u/m*****
i_items-comp_quant = it_VBAP-KWMENG.
append i_items.

I_SCHDL-itm_number = it_vbap-posnr.
I_SCHDL-req_qty = it_vbap-kwmeng.
append I_SCHDL.

ENDLOOP.


CLEAR i_partners.
i_partners-partn_role = 'AG'.
*buscar de zinterco el lifnr correspondiente.
*preparar una condicion para la busqueda

select single lifnr into prov from ZCLICPD where
werks = cent.
i_partners-partn_numb = prov.
append i_partners.

CLEAR i_partners.
i_partners-partn_role = 'VE'.
i_partners-partn_numb = '0000000620'.
append i_partners.





CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN = salesdocument
ORDER_HEADER_IN = header

IMPORTING
SALESDOCUMENT = salesdocument_ex
TABLES
RETURN = i_return
ORDER_ITEMS_IN = i_items
ORDER_SCHEDULES_IN = I_SCHDL

ORDER_PARTNERS = i_partners

.

reg-mandt = sy-mandt.
reg-bsart = it_vbak-AUART.
reg-ebeln = it_vbak-VBELN.

IF it_vbak-AUART = 'ZAC'.
reg-auart = 'ZMC1'.
else.
reg-auart = 'ZRM1'.
ENDIF.
reg-vbeln = salesdocument_ex.

insert into zorders values reg.

COMMIT WORK AND WAIT.

write: / salesdocument_ex.

ENDLOOP.

MESSAGE i398(00) WITH text-i01.
ENDFORM. " CREAORDERS
*---------------------------------------------------------------

Si alguno ha utilizado esta BAPI y sabe en qué estamos fallando con la unidad de medida, desde ya muchas gracias por su ayuda.
Responder Con Cita
  #2  
Viejo 26/11/11, 05:44:41
SilviaC SilviaC is offline
Junior Member
 
Fecha de Ingreso: oct 2008
Localización: Mexico
Mensajes: 9
Lo encontré.

Ya lo tengo . La unidad de medida se asigna en

BAPISDITM-SALES_UNIT


Saludos!!
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 12:38:01.


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