#1
|
|||
|
|||
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 |
#2
|
|||
|
|||
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 |
#3
|
|||
|
|||
luego tb le paso el periodoen el req_date = '20080101' por ejemplo y me lo pone donde le sale del nabo
|
#4
|
|||
|
|||
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? |
#5
|
||||
|
||||
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 |
#6
|
|||
|
|||
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 |
Herramientas | Buscar en Tema |
Desplegado | |
|
|