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 12/09/08, 06:40:59
javispill javispill is offline
Junior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 18
Bapi_requirements_change

Hola a todos.

Estoy haciendo un programa que lee unos ficheros y tiene que cargar los datos en la MD61.

Primero tiene que borrar los datos existentes y luego cargar los del fichero, por lo que primero estoy usando BAPI_REQUIREMENTS_CHANGE para eliminar
y luego BAPI_REQUIREMENTS_CREATE para cargar los neuvos datos.

Pues el problema que tengo es que la primera BAPI me devuelve el siguiente error Period indicator cannot be converted
No se muy bien como funciona esta bapi he probado varias combinaciones. Por ejemplo no pasandole nada en TABLES, así no me devuelve nada pero cuando ejecuto la de create me dice Requirement already exists, maintain via change transaction firstCALL FUNCTION 'BAPI_REQUIREMENTS_CHANGE'
EXPORTING
material = t_prodplan-item_n
plant = t_prodplan-plantnam
requirementstype = ' '
version = 'LT'
reqmtsplannumber = ' '
vers_activ = ' '
* REQUIREMENT_PARAM =
* MRP_AREA =
do_commit = 'X'
update_mode = 'X'
delete_old = 'X'
* NO_WITHDR = ' '
*IMPORTING
* REQUIREMENT_ITEM_OUT =
TABLES
requirements_schedule_in = t_in
REQUIREMENTS_CHAR_IN = t_char_in
return = t_return_pp_del.

A ver si alguien que haya usado esta bapi me puede echar una mano.

Gracias.

Un saludo
Responder Con Cita
  #2  
Viejo 12/09/08, 09:05:57
javispill javispill is offline
Junior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 18
ya lo he conseguido , simplemente usando la de change , lo malo es que me carga cantidades muy raras que no se de donde salen

yo le paso la cantidad en requirements_schedule_in-qty_pquanty

pero nada
Responder Con Cita
  #3  
Viejo 12/09/08, 09:07:59
javispill javispill is offline
Junior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 18
luego tb le paso el periodoen el req_date = '20080101' por ejemplo y me lo pone donde le sale del nabo
Responder Con Cita
  #4  
Viejo 12/09/08, 12:10:13
javispill javispill is offline
Junior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 18
Ya esta solucionado, ahora solo me queda que me ponga bien el tipo de periodo (M) que es para meses y he visto que hay que pasarle el parametro
date_type = '3' pero me lo sigue poniendo en semanas.

He probado con todas las posibilidades pero no me lo pone en meses.

¿nadie ha usado esta bapi nunca?
Responder Con Cita
  #5  
Viejo 23/09/10, 14:47:23
Avatar de corozco
corozco corozco is offline
Senior Member
 
Fecha de Ingreso: dic 2006
Localización: Guayaquil - Ecuador
Mensajes: 134

Alguien sabe como usar la BAPI, tengo algunas dudas de como utilizar la BAPI: 'BAPI_REQUIREMENTS_CHANGE'.
__________________
Saludos Cordiales,
César Orozco R.
Guayaquil - Ecuador
Responder Con Cita
  #6  
Viejo 12/12/11, 11:23:23
Hasurac Hasurac is offline
Member
 
Fecha de Ingreso: nov 2009
Mensajes: 41
Hola como estas, yo he utilizado esta bapi, te paso mi codigo

primero los bajo de un ecxel

LOOP AT lt_excel INTO ls_excel.

CASE ls_excel-col.
WHEN c_1.
wa_upload-mantr = ls_excel-value.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_upload-mantr
IMPORTING
output = wa_upload-mantr.
WHEN c_2.
wa_upload-werks = ls_excel-value.
WHEN c_3.
wa_upload-versb = ls_excel-value.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_upload-versb
IMPORTING
output = wa_upload-versb.
WHEN c_4.
REPLACE ALL OCCURRENCES OF '.' IN ls_excel-value WITH ''.
wa_upload-pdatu = ls_excel-value.
WHEN c_5.
wa_upload-entlu = ls_excel-value.
WHEN c_6.
wa_upload-plnmg = ls_excel-value.
WHEN c_7.
wa_upload-bedae = ls_excel-value.
WHEN c_8.
wa_upload-vervs = ls_excel-value.
WHEN c_9.
wa_upload-uni_me = ls_excel-value.

ENDCASE.

CLEAR: ls_excel.

AT END OF row.
APPEND wa_upload TO gt_upload.
CLEAR wa_upload.
ENDAT.
ENDLOOp.

despues chequeo los datos y realizo las converciones necesarias aca veras la parde del meses

DATA: lv_date(8) TYPE c,
lv_row TYPE num ,
lv_val(8) TYPE c,
lv_long TYPE num,
lv_plnmg(17) TYPE c.



IF gt_upload IS NOT INITIAL.

CLEAR lv_row.

SELECT * INTO TABLE gt_marc FROM marc AS tb1
FOR ALL ENTRIES IN gt_upload
WHERE tb1~matnr EQ gt_upload-mantr AND
tb1~werks EQ gt_upload-werks.

SELECT * INTO TABLE gt_t001w FROM t001w AS tb1
FOR ALL ENTRIES IN gt_upload
WHERE tb1~werks EQ gt_upload-werks.

SELECT * INTO TABLE gt_t006 FROM t006b
FOR ALL ENTRIES IN gt_upload
WHERE mseh3 EQ gt_upload-uni_me AND
spras EQ sy-langu.


LOOP AT gt_upload INTO wa_upload.

lv_row = lv_row + c_1.

READ TABLE gt_marc INTO wa_marc WITH KEY matnr = wa_upload-mantr.

IF sy-subrc NE 0 .

wa_alv_error-row = lv_row.
wa_alv_error-messag = text-001.
REPLACE c_m WITH wa_upload-mantr INTO wa_alv_error-messag.
REPLACE c_w WITH wa_upload-werks INTO wa_alv_error-messag.
APPEND wa_alv_error TO gt_alv_error.
CLEAR wa_alv_error.
wa_upload-error = c_x.
ENDIF.

READ TABLE gt_t001w INTO wa_t001w WITH KEY werks = wa_upload-werks.

IF sy-subrc NE 0 .

wa_alv_error-row = lv_row.
wa_alv_error-messag = text-002.
REPLACE c_w WITH wa_upload-werks INTO wa_alv_error-messag.
APPEND wa_alv_error TO gt_alv_error.
CLEAR wa_alv_error.
wa_upload-error = c_x.
ENDIF.


CONCATENATE wa_upload-pdatu+4(4) wa_upload-pdatu+2(2) wa_upload-pdatu(2)
INTO lv_date.

CALL FUNCTION 'RP_CHECK_DATE'
EXPORTING
date = lv_date.
IF sy-subrc EQ c_1.
wa_alv_error-row = lv_row.
wa_alv_error-messag = text-003.
APPEND wa_alv_error TO gt_alv_error.
CLEAR wa_alv_error.
wa_upload-error = c_x.
ELSE.
wa_upload-pdatu = lv_date.

ENDIF.



IF NOT wa_upload-entlu CO c_val_pp .
wa_alv_error-row = lv_row.
wa_alv_error-messag = text-004.
APPEND wa_alv_error TO gt_alv_error.
CLEAR wa_alv_error.
wa_upload-error = c_x.
ELSE.

CASE wa_upload-entlu.

WHEN c_c OR c_k OR c_p.
wa_upload-entlu = c_5.
WHEN c_d OR c_t.
wa_upload-entlu = c_1.
WHEN c_m1.
wa_upload-entlu = c_3.
WHEN OTHERS.
wa_upload-entlu = c_2.
ENDCASE.

ENDIF.

lv_plnmg = wa_upload-plnmg.
CONDENSE lv_plnmg.

IF NOT lv_plnmg CA c_num .
wa_alv_error-row = lv_row.
wa_alv_error-messag = text-005.
APPEND wa_alv_error TO gt_alv_error.
CLEAR wa_alv_error.
wa_upload-error = c_x.
ELSE.

lv_long = STRLEN( lv_plnmg ).
IF lv_plnmg CA '.'.
lv_long = lv_long - ( sy-fdpos + c_1 ).
ENDIF.
IF lv_long GT c_3.
wa_alv_error-row = lv_row.
wa_alv_error-messag = text-005.
APPEND wa_alv_error TO gt_alv_error.
CLEAR wa_alv_error.
wa_upload-error = c_x.
ENDIF.
ENDIF.


CLEAR lv_plnmg.

CONCATENATE c_i* wa_upload-bedae c_f* INTO lv_val.

IF NOT c_val_cn CP lv_val .
wa_alv_error-row = lv_row.
wa_alv_error-messag = text-006.
APPEND wa_alv_error TO gt_alv_error.
CLEAR wa_alv_error.
wa_upload-error = c_x.
ENDIF.

IF wa_upload-vervs NE c_x AND wa_upload-vervs IS NOT INITIAL.
wa_alv_error-row = lv_row.
wa_alv_error-messag = text-007.
APPEND wa_alv_error TO gt_alv_error.
CLEAR wa_alv_error.
wa_upload-error = c_x.
ENDIF.


READ TABLE gt_t006 INTO wa_t006 WITH KEY mseh3 = wa_upload-uni_me.

IF sy-subrc NE 0 .

wa_alv_error-row = lv_row.
wa_alv_error-messag = text-008.
REPLACE c_m WITH wa_upload-uni_me INTO wa_alv_error-messag.
APPEND wa_alv_error TO gt_alv_error.
CLEAR wa_alv_error.
wa_upload-error = c_x.

ELSE.
wa_upload-uni_me = wa_t006-msehi.

ENDIF.


MODIFY gt_upload FROM wa_upload INDEX lv_row .


ENDLOOP.
una ves echo esto loopeo la estructura para cargar los datos a pasar a la bapi


FORM populate_requirements_item.
CLEAR w_bapisitemr.
w_bapisitemr-material = wa_upload-mantr.
w_bapisitemr-plant = wa_upload-werks.
w_bapisitemr-requ_type = wa_upload-bedae.
w_bapisitemr-version = wa_upload-versb.
w_bapisitemr-vers_activ = wa_upload-vervs.
w_bapisitemr-req_number = space.

ENDFORM. "populate_requirements_item

*&---------------------------------------------------------------------*
*& Form populate_requirements_schedule
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM populate_requirements_schedule.
i_requirements_schedule_in-date_type = wa_upload-entlu.
i_requirements_schedule_in-req_date = wa_upload-pdatu.
i_requirements_schedule_in-req_qty = wa_upload-plnmg.
i_requirements_schedule_in-unit = wa_upload-uni_me.
APPEND i_requirements_schedule_in.

ENDFORM. "populate_requirements_schedule


echo esto

lo que yo realizo es
un create y despues si tira error un change para que la modifique


CALL FUNCTION 'BAPI_REQUIREMENTS_CREATE'
EXPORTING
requirements_item = w_bapisitemr
TABLES
requirements_schedule_in = i_requirements_schedule_in
return = i_bapireturn1.



READ TABLE i_bapireturn1 INTO w_bapireturn1 WITH KEY type = c_e id = c_6p number = c_011.

IF sy-subrc IS INITIAL.

CALL FUNCTION 'BAPI_REQUIREMENTS_CHANGE'
EXPORTING
material = w_bapisitemr-material
plant = w_bapisitemr-plant
requirementstype = w_bapisitemr-requ_type
version = w_bapisitemr-version
reqmtsplannumber = space
vers_activ = w_bapisitemr-vers_activ
TABLES
requirements_schedule_in = i_requirements_schedule_in
return = i_bapireturn1.

READ TABLE i_bapireturn1 INTO w_bapireturn1 WITH KEY type = c_e id = c_6p number = c_012.

IF sy-subrc IS INITIAL.

WAIT UP TO c_9 SECONDS.

CALL FUNCTION 'BAPI_REQUIREMENTS_CHANGE'
EXPORTING
material = w_bapisitemr-material
plant = w_bapisitemr-plant
requirementstype = w_bapisitemr-requ_type
version = w_bapisitemr-version
reqmtsplannumber = space
vers_activ = w_bapisitemr-vers_activ
TABLES
requirements_schedule_in = i_requirements_schedule_in
return = i_bapireturn1.



ENDIF.

ENDIF.

espero que te sirba saludos; aunque en mi caso surgio otro problema, no me modifica mas de un registros con el mismo material aunque esten en distintos meses si saves algo de esto te lo agradesco 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 03:04:56.


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