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 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
  #2  
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 14:43:29.


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