Difference between revisions of "SAP PM BAPI IE01"
From SapWiki
(Created page with " <nowiki> *&---------------------------------------------------------------------* *& Report ZQM_CREAR_EQUI *& *&----------------------------------------------------------...") |
|||
Line 1: | Line 1: | ||
− | <nowiki> *&---------------------------------------------------------------------* | + | <nowiki>*&---------------------------------------------------------------------* |
− | + | *& Report ZQM_CREAR_EQUI | |
− | + | *& | |
− | + | *&---------------------------------------------------------------------* | |
− | + | *& Descripcion : Creación de Equipos | |
− | + | *& | |
− | + | *&---------------------------------------------------------------------* | |
− | + | REPORT zpm_crear_equi. | |
− | + | *--------------------------------------------------------------------* | |
− | + | DATA: BEGIN OF gs_data, | |
− | + | * FUNCTLOCATION type bapi_itob_fl_sel_result-FUNCTLOCATION, " | |
− | + | equipment TYPE equnr, "N° de equipo | |
− | + | * EQUICATGRY type BAPI_ITOB_EQ_ONLY-EQUICATGRY, "Tipo de equipo | |
− | + | *STRIND type BAPI_ITOB-STRIND, " Indicador de estructura de ubicación técnica | |
− | + | equicatgry TYPE bapi_itob_eq_only-equicatgry, " Tipo de equipo | |
− | + | descript TYPE bapi_itob-descript, " Denominación de la ubicación técnic | |
− | + | authgrp TYPE bapi_itob-authgrp , " Grupo de autorizaciones para objeto técnico | |
− | + | obj_weight TYPE bapi_itob-obj_weight , " Peso del objeto | |
− | + | unit_of_wt TYPE bapi_itob-unit_of_wt, " Unidad de peso | |
− | + | obj_size TYPE bapi_itob-obj_size , " Tamaño/Dimensión | |
− | + | inventory TYPE bapi_itob-inventory, " Número de inventario | |
− | + | start_from TYPE bapi_itob-start_from, " Fecha de puesta en servicio de objeto técnico | |
− | + | objecttype TYPE bapi_itob-objecttype, " Clase de objeto técnico | |
− | + | * descript type bapi_itob-descript, "denominación "!!! | |
− | + | acquisval TYPE bapi_itob-acquisval , " valor de adquisición | |
− | + | currency TYPE bapi_itob-currency , " clave de moneda | |
− | + | acqdate TYPE bapi_itob-acqdate , " fecha de adquisición | |
− | + | manfacture TYPE bapi_itob-manfacture, " fabricante del activo fijo | |
− | + | mancountry TYPE bapi_itob-mancountry, " país de fabricación | |
− | + | manmodel TYPE bapi_itob-manmodel, " denominación de tipo del fabricante | |
− | + | constyear TYPE bapi_itob-constyear, " año de construcción | |
− | + | constmonth TYPE bapi_itob-constmonth, " mes de construcción | |
− | + | manparno TYPE bapi_itob-manparno, " número de pieza de fabricante | |
− | + | manserno TYPE bapi_itob-manserno, " número de serie según el fabricante | |
− | + | maintplant TYPE bapi_itob-maintplant, " centro de emplazamiento | |
− | + | maintloc TYPE bapi_itob-maintloc , " emplazamiento del objeto de mantenimiento | |
− | + | maintroom TYPE bapi_itob-maintroom, " local | |
− | + | plsectn TYPE bapi_itob-plsectn, " Área de empresa | |
− | + | * work_ctr type arbpl, "bapi_itob-work_ctr, " puesto de trabajo | |
− | + | pp_wkctr TYPE arbpl, "bapi_itob-pp_wkctr, " puesto de trabajo responsable en medidas de mantenimiento | |
− | + | abcindic TYPE bapi_itob-abcindic, " indicador abc para objeto técnico | |
− | + | sortfield TYPE bapi_itob-sortfield, " campo de clasificación | |
− | + | comp_code TYPE bapi_itob-comp_code, " sociedad | |
− | + | bus_area TYPE bapi_itob-bus_area, " división | |
− | + | asset_no TYPE bapi_itob-asset_no , " número principal de activo fijo | |
− | + | sub_number TYPE bapi_itob-sub_number, " subnúmero de activo fijo | |
− | + | costcenter TYPE bapi_itob-costcenter, " centro de coste | |
− | + | wbs_elem TYPE bapi_itob-wbs_elem, " elemento del plan de estructura de proyecto (elemento pep) | |
− | + | standorder TYPE bapi_itob-standorder, " número de orden permanente | |
− | + | settlorder TYPE bapi_itob-settlorder, " orden de liquidación | |
− | + | planplant TYPE bapi_itob-planplant , " centro de planificación del mantenimiento | |
− | + | plangroup TYPE bapi_itob-plangroup , " grupo planificador p.servicio cliente y mantenimiento | |
− | + | * pp_wkctr type arbpl, "bapi_itob-pp_wkctr, " puesto de trabajo responsable en medidas de mantenimiento | |
− | + | work_ctr TYPE arbpl, "bapi_itob-work_ctr, " puesto de trabajo | |
− | + | catprofile TYPE bapi_itob-catprofile, " perfil de catálogo | |
− | + | * eqinstall type bapi_itob_fl_only-eqinstall, " montaje de equipos permitido en ubicación técnica | |
− | + | read_supeq TYPE bapi_itob_eq_only-read_supeq, "equipo superior | |
− | + | read_floc TYPE bapi_itob_eq_only-read_floc, "Identificación de ubicación técnica | |
− | + | inst_pos TYPE bapi_itob_eq_only-inst_pos, "Posición de equipo en lugar de montaje (eq.sup./ubic.técn.) | |
− | + | classnum TYPE klasse_d, | |
− | + | END OF gs_data. | |
− | + | DATA gt_data LIKE TABLE OF gs_data. | |
− | + | ||
− | + | DATA: BEGIN OF gs_header, | |
− | + | colname TYPE scrtext_l, | |
− | + | END OF gs_header. | |
− | + | DATA gt_header LIKE TABLE OF gs_header. | |
− | + | ||
− | + | DATA decstel(2) TYPE c. | |
− | + | ||
− | + | DATA gt_equipos LIKE TABLE OF bapi_itob_eq_sel_result. | |
− | + | DATA gs_equipos LIKE LINE OF gt_equipos. | |
− | + | ||
− | + | DATA gd_tfile TYPE ibipparms-path. | |
− | + | ||
− | + | DATA: ls_itob_sel_maintplant LIKE TABLE OF bapi_itob_sel_maintplant WITH HEADER LINE. | |
− | + | DATA: ls_bapiret2 LIKE TABLE OF bapiret2 WITH HEADER LINE. | |
− | + | DATA: ls_itob_fl_sel_result LIKE TABLE OF bapi_itob_fl_sel_result WITH HEADER LINE. | |
− | + | DATA: es_bapi_itob LIKE TABLE OF bapi_itob WITH HEADER LINE. | |
− | + | ||
− | + | TYPES: BEGIN OF ty_log, | |
− | + | equipment TYPE equnr, | |
− | + | equipment_o TYPE equnr, | |
− | + | type TYPE bapi_mtype, | |
− | + | message TYPE bapi_msg, | |
− | + | END OF ty_log. | |
− | + | ||
− | + | DATA gt_log TYPE TABLE OF ty_log. | |
− | + | DATA gs_log LIKE LINE OF gt_log. | |
− | + | ||
− | + | DATA gt_return LIKE TABLE OF bapiret2. | |
− | + | *--------------------------------------------------------------------* | |
− | + | *--------------------------------------------------------------------* | |
− | + | PARAMETERS: p_file TYPE string LOWER CASE OBLIGATORY. | |
− | + | ||
− | + | *--------------------------------------------------------------------* | |
− | + | AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. | |
− | + | *--------------------------------------------------------------------* | |
− | + | gd_tfile = p_file. | |
− | + | ||
− | + | CALL FUNCTION 'F4_FILENAME' | |
− | + | EXPORTING | |
− | + | field_name = 'P_FILE' | |
− | + | IMPORTING | |
− | + | file_name = gd_tfile. | |
− | + | ||
− | + | MOVE gd_tfile TO p_file. | |
− | + | *--------------------------------------------------------------------* | |
− | + | START-OF-SELECTION. | |
− | + | *--------------------------------------------------------------------* | |
− | + | ||
− | + | PERFORM upload. | |
− | + | ||
− | + | *--------------------------------------------------------------------* | |
− | + | END-OF-SELECTION. | |
− | + | *--------------------------------------------------------------------* | |
− | + | IF gt_data[] IS INITIAL. | |
− | + | WRITE:/ 'No se seleccionaron datos'. | |
− | + | RETURN. | |
− | + | ENDIF. | |
− | + | ||
− | + | PERFORM crear_equipos. | |
− | + | ||
− | + | PERFORM display_log. | |
− | + | ||
− | + | *&---------------------------------------------------------------------* | |
− | + | *& Form select_data | |
− | + | *&---------------------------------------------------------------------* | |
− | + | * text | |
− | + | *----------------------------------------------------------------------* | |
− | + | FORM crear_equipos. | |
− | + | ||
− | + | DATA: ls_data_general_exp LIKE bapi_itob, | |
− | + | ls_data_specific_exp LIKE bapi_itob_eq_only, | |
− | + | ls_data_install LIKE bapi_itob_eq_install. | |
− | + | ||
− | + | DATA ld_monto TYPE bapicurr-bapicurr. | |
− | + | DATA ld_equipo TYPE equnr. | |
− | + | ||
− | + | LOOP AT gt_data INTO gs_data. | |
− | + | CLEAR: ls_data_specific_exp, | |
− | + | ls_data_general_exp, | |
− | + | ls_data_install, | |
− | + | ls_bapiret2. | |
− | + | ||
− | + | SELECT SINGLE objid INTO gs_data-work_ctr FROM crhd | |
− | + | WHERE objty = 'A' | |
− | + | AND arbpl = gs_data-work_ctr | |
− | + | AND werks = gs_data-planplant. | |
− | + | IF sy-subrc <> 0. | |
− | + | CLEAR gs_data-work_ctr. | |
− | + | ENDIF. | |
− | + | ||
− | + | SELECT SINGLE objid INTO gs_data-pp_wkctr FROM crhd | |
− | + | WHERE objty = 'A' | |
− | + | AND arbpl = gs_data-pp_wkctr | |
− | + | AND werks = gs_data-maintplant. | |
− | + | IF sy-subrc <> 0. | |
− | + | CLEAR gs_data-pp_wkctr. | |
− | + | ENDIF. | |
− | + | ||
− | + | CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' | |
− | + | EXPORTING | |
− | + | input = gs_data-costcenter | |
− | + | IMPORTING | |
− | + | output = gs_data-costcenter. | |
− | + | ||
− | + | MOVE-CORRESPONDING gs_data TO ls_data_general_exp. | |
− | + | MOVE gs_data-read_supeq TO ls_data_specific_exp-read_supeq. | |
− | + | MOVE gs_data-read_floc TO ls_data_specific_exp-read_floc. | |
− | + | MOVE gs_data-inst_pos TO ls_data_specific_exp-inst_pos. | |
− | + | MOVE gs_data-equicatgry TO ls_data_specific_exp-equicatgry. | |
− | + | * gs_data-EQUIPMENT = gs_equipos-EQUIPMENT. | |
− | + | ||
− | + | MOVE gs_data-read_supeq TO ls_data_install-supequi. | |
− | + | MOVE gs_data-read_floc TO ls_data_install-funcloc. | |
− | + | MOVE gs_data-inst_pos TO ls_data_install-inst_pos. | |
− | + | ||
− | + | MOVE gs_data-acquisval TO ld_monto. | |
− | + | CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' | |
− | + | EXPORTING | |
− | + | currency = gs_data-currency | |
− | + | amount_external = ld_monto | |
− | + | max_number_of_digits = '15' | |
− | + | IMPORTING | |
− | + | amount_internal = ls_data_general_exp-acquisval | |
− | + | * RETURN = | |
− | + | . | |
− | + | ||
− | + | CALL FUNCTION 'BAPI_EQUI_CREATE' | |
− | + | EXPORTING | |
− | + | * EXTERNAL_NUMBER = | |
− | + | data_general = ls_data_general_exp | |
− | + | data_specific = ls_data_specific_exp | |
− | + | * DATA_FLEET = | |
− | + | * VALID_DATE = SY-DATUM | |
− | + | data_install = ls_data_install | |
− | + | IMPORTING | |
− | + | equipment = ld_equipo | |
− | + | * DATA_GENERAL_EXP = | |
− | + | * DATA_SPECIFIC_EXP = | |
− | + | * DATA_FLEET_EXP = | |
− | + | return = ls_bapiret2. | |
− | + | IF ld_equipo IS NOT INITIAL. | |
− | + | CLEAR gt_return[]. | |
− | + | ||
− | + | IF gs_data-classnum IS NOT INITIAL. | |
− | + | DATA ld_object TYPE bapi1003_key-object. | |
− | + | ||
− | + | ld_object = ld_equipo. | |
− | + | ||
− | + | CALL FUNCTION 'BAPI_OBJCL_CREATE' | |
− | + | EXPORTING | |
− | + | objectkeynew = ld_object | |
− | + | objecttablenew = 'EQUI' | |
− | + | classnumnew = gs_data-classnum | |
− | + | classtypenew = '002' | |
− | + | * STATUS = '1' | |
− | + | * STANDARDCLASS = | |
− | + | * CHANGENUMBER = | |
− | + | * KEYDATE = SY-DATUM | |
− | + | * NO_DEFAULT_VALUES = ' ' | |
− | + | * IMPORTING | |
− | + | * CLASSIF_STATUS = | |
− | + | TABLES | |
− | + | * ALLOCVALUESNUM = | |
− | + | * ALLOCVALUESCHAR = | |
− | + | * ALLOCVALUESCURR = | |
− | + | return = gt_return. | |
− | + | ENDIF. | |
− | + | LOOP AT gt_return INTO ls_bapiret2 WHERE type = 'E'. | |
− | + | ENDLOOP. | |
− | + | IF sy-subrc <> 0. | |
− | + | CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' | |
− | + | EXPORTING | |
− | + | wait = 'X' | |
− | + | * IMPORTING | |
− | + | * RETURN = | |
− | + | . | |
− | + | * write:/ 'Se creo equipo', | |
− | + | * ld_equipo, | |
− | + | * 'copia de', | |
− | + | * gs_data-EQUIPMENT. | |
− | + | gs_log-equipment = ld_equipo. | |
− | + | gs_log-equipment_o = gs_data-equipment. | |
− | + | gs_log-type = 'S'. | |
− | + | gs_log-message = 'Se creo equipo'. | |
− | + | ELSE. | |
− | + | CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. | |
− | + | gs_log-equipment = ld_equipo. | |
− | + | gs_log-equipment_o = gs_data-equipment. | |
− | + | gs_log-type = 'E'. | |
− | + | gs_log-message = ls_bapiret2-message. | |
− | + | ENDIF. | |
− | + | ELSE. | |
− | + | gs_log-equipment = ld_equipo. | |
− | + | gs_log-equipment_o = gs_data-equipment. | |
− | + | gs_log-type = 'E'. | |
− | + | gs_log-message = ls_bapiret2-message. | |
− | + | * write:/ ls_bapiret2-message. | |
− | + | ENDIF. | |
− | + | APPEND gs_log TO gt_log. | |
− | + | ENDLOOP. | |
− | + | ||
− | + | ENDFORM. "select_data | |
− | + | ||
− | + | *&---------------------------------------------------------------------* | |
− | + | *& Form upload | |
− | + | *&---------------------------------------------------------------------* | |
− | + | * text | |
− | + | *----------------------------------------------------------------------* | |
− | + | FORM upload. | |
− | + | ||
− | + | CALL FUNCTION 'GUI_UPLOAD' | |
− | + | EXPORTING | |
− | + | filename = p_file | |
− | + | filetype = 'DAT' | |
− | + | TABLES | |
− | + | data_tab = gt_data | |
− | + | EXCEPTIONS | |
− | + | file_open_error = 1 | |
− | + | file_read_error = 2 | |
− | + | no_batch = 3 | |
− | + | gui_refuse_filetransfer = 4 | |
− | + | invalid_type = 5 | |
− | + | no_authority = 6 | |
− | + | unknown_error = 7 | |
− | + | bad_data_format = 8 | |
− | + | header_not_allowed = 9 | |
− | + | separator_not_allowed = 10 | |
− | + | header_too_long = 11 | |
− | + | unknown_dp_error = 12 | |
− | + | access_denied = 13 | |
− | + | dp_out_of_memory = 14 | |
− | + | disk_full = 15 | |
− | + | dp_timeout = 16 | |
− | + | OTHERS = 17. | |
− | + | IF sy-subrc <> 0. | |
− | + | * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO | |
− | + | * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. | |
− | + | ENDIF. | |
− | + | ||
− | + | ||
− | + | ENDFORM. "upload | |
− | + | ||
− | + | *&---------------------------------------------------------------------* | |
− | + | *& Form display_log | |
− | + | *&---------------------------------------------------------------------* | |
− | + | * text | |
− | + | *----------------------------------------------------------------------* | |
− | + | FORM display_log. | |
− | + | *... Create Instance | |
− | + | TRY. | |
− | + | cl_salv_table=>factory( IMPORTING r_salv_table = DATA(gr_table) | |
− | + | CHANGING t_table = gt_log ). | |
− | + | CATCH cx_salv_msg. | |
− | + | ENDTRY. | |
− | + | ||
− | + | *... Enable Generic ALV functions | |
− | + | data(gr_functions) = gr_table->get_functions( ). | |
− | + | ** gr_functions->set_default( ). | |
− | + | gr_functions->set_all( ). | |
− | + | ||
− | + | data(lr_columns) = gr_table->get_columns( ). | |
− | + | ||
− | + | * set column text | |
− | + | TRY. | |
− | + | data(lr_column) = lr_columns->get_column( 'EQUIPMENT_O' ). | |
− | + | lr_column->set_long_text( 'Equipo Original' ). | |
− | + | lr_column->set_medium_text( 'Equi.Ori.' ). | |
− | + | lr_column->set_short_text( 'Equi.Ori.' ). | |
− | + | CATCH cx_salv_not_found. | |
− | + | CATCH cx_salv_existing. | |
− | + | CATCH cx_salv_data_error. | |
− | + | ENDTRY. | |
− | + | ||
− | + | *... Display table | |
− | + | gr_table->display( ). | |
− | + | ||
− | + | ENDFORM. "display_log</nowiki> |
Latest revision as of 22:14, 4 April 2020
*&---------------------------------------------------------------------* *& Report ZQM_CREAR_EQUI *& *&---------------------------------------------------------------------* *& Descripcion : Creación de Equipos *& *&---------------------------------------------------------------------* REPORT zpm_crear_equi. *--------------------------------------------------------------------* DATA: BEGIN OF gs_data, * FUNCTLOCATION type bapi_itob_fl_sel_result-FUNCTLOCATION, " equipment TYPE equnr, "N° de equipo * EQUICATGRY type BAPI_ITOB_EQ_ONLY-EQUICATGRY, "Tipo de equipo *STRIND type BAPI_ITOB-STRIND, " Indicador de estructura de ubicación técnica equicatgry TYPE bapi_itob_eq_only-equicatgry, " Tipo de equipo descript TYPE bapi_itob-descript, " Denominación de la ubicación técnic authgrp TYPE bapi_itob-authgrp , " Grupo de autorizaciones para objeto técnico obj_weight TYPE bapi_itob-obj_weight , " Peso del objeto unit_of_wt TYPE bapi_itob-unit_of_wt, " Unidad de peso obj_size TYPE bapi_itob-obj_size , " Tamaño/Dimensión inventory TYPE bapi_itob-inventory, " Número de inventario start_from TYPE bapi_itob-start_from, " Fecha de puesta en servicio de objeto técnico objecttype TYPE bapi_itob-objecttype, " Clase de objeto técnico * descript type bapi_itob-descript, "denominación "!!! acquisval TYPE bapi_itob-acquisval , " valor de adquisición currency TYPE bapi_itob-currency , " clave de moneda acqdate TYPE bapi_itob-acqdate , " fecha de adquisición manfacture TYPE bapi_itob-manfacture, " fabricante del activo fijo mancountry TYPE bapi_itob-mancountry, " país de fabricación manmodel TYPE bapi_itob-manmodel, " denominación de tipo del fabricante constyear TYPE bapi_itob-constyear, " año de construcción constmonth TYPE bapi_itob-constmonth, " mes de construcción manparno TYPE bapi_itob-manparno, " número de pieza de fabricante manserno TYPE bapi_itob-manserno, " número de serie según el fabricante maintplant TYPE bapi_itob-maintplant, " centro de emplazamiento maintloc TYPE bapi_itob-maintloc , " emplazamiento del objeto de mantenimiento maintroom TYPE bapi_itob-maintroom, " local plsectn TYPE bapi_itob-plsectn, " Área de empresa * work_ctr type arbpl, "bapi_itob-work_ctr, " puesto de trabajo pp_wkctr TYPE arbpl, "bapi_itob-pp_wkctr, " puesto de trabajo responsable en medidas de mantenimiento abcindic TYPE bapi_itob-abcindic, " indicador abc para objeto técnico sortfield TYPE bapi_itob-sortfield, " campo de clasificación comp_code TYPE bapi_itob-comp_code, " sociedad bus_area TYPE bapi_itob-bus_area, " división asset_no TYPE bapi_itob-asset_no , " número principal de activo fijo sub_number TYPE bapi_itob-sub_number, " subnúmero de activo fijo costcenter TYPE bapi_itob-costcenter, " centro de coste wbs_elem TYPE bapi_itob-wbs_elem, " elemento del plan de estructura de proyecto (elemento pep) standorder TYPE bapi_itob-standorder, " número de orden permanente settlorder TYPE bapi_itob-settlorder, " orden de liquidación planplant TYPE bapi_itob-planplant , " centro de planificación del mantenimiento plangroup TYPE bapi_itob-plangroup , " grupo planificador p.servicio cliente y mantenimiento * pp_wkctr type arbpl, "bapi_itob-pp_wkctr, " puesto de trabajo responsable en medidas de mantenimiento work_ctr TYPE arbpl, "bapi_itob-work_ctr, " puesto de trabajo catprofile TYPE bapi_itob-catprofile, " perfil de catálogo * eqinstall type bapi_itob_fl_only-eqinstall, " montaje de equipos permitido en ubicación técnica read_supeq TYPE bapi_itob_eq_only-read_supeq, "equipo superior read_floc TYPE bapi_itob_eq_only-read_floc, "Identificación de ubicación técnica inst_pos TYPE bapi_itob_eq_only-inst_pos, "Posición de equipo en lugar de montaje (eq.sup./ubic.técn.) classnum TYPE klasse_d, END OF gs_data. DATA gt_data LIKE TABLE OF gs_data. DATA: BEGIN OF gs_header, colname TYPE scrtext_l, END OF gs_header. DATA gt_header LIKE TABLE OF gs_header. DATA decstel(2) TYPE c. DATA gt_equipos LIKE TABLE OF bapi_itob_eq_sel_result. DATA gs_equipos LIKE LINE OF gt_equipos. DATA gd_tfile TYPE ibipparms-path. DATA: ls_itob_sel_maintplant LIKE TABLE OF bapi_itob_sel_maintplant WITH HEADER LINE. DATA: ls_bapiret2 LIKE TABLE OF bapiret2 WITH HEADER LINE. DATA: ls_itob_fl_sel_result LIKE TABLE OF bapi_itob_fl_sel_result WITH HEADER LINE. DATA: es_bapi_itob LIKE TABLE OF bapi_itob WITH HEADER LINE. TYPES: BEGIN OF ty_log, equipment TYPE equnr, equipment_o TYPE equnr, type TYPE bapi_mtype, message TYPE bapi_msg, END OF ty_log. DATA gt_log TYPE TABLE OF ty_log. DATA gs_log LIKE LINE OF gt_log. DATA gt_return LIKE TABLE OF bapiret2. *--------------------------------------------------------------------* *--------------------------------------------------------------------* PARAMETERS: p_file TYPE string LOWER CASE OBLIGATORY. *--------------------------------------------------------------------* AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. *--------------------------------------------------------------------* gd_tfile = p_file. CALL FUNCTION 'F4_FILENAME' EXPORTING field_name = 'P_FILE' IMPORTING file_name = gd_tfile. MOVE gd_tfile TO p_file. *--------------------------------------------------------------------* START-OF-SELECTION. *--------------------------------------------------------------------* PERFORM upload. *--------------------------------------------------------------------* END-OF-SELECTION. *--------------------------------------------------------------------* IF gt_data[] IS INITIAL. WRITE:/ 'No se seleccionaron datos'. RETURN. ENDIF. PERFORM crear_equipos. PERFORM display_log. *&---------------------------------------------------------------------* *& Form select_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM crear_equipos. DATA: ls_data_general_exp LIKE bapi_itob, ls_data_specific_exp LIKE bapi_itob_eq_only, ls_data_install LIKE bapi_itob_eq_install. DATA ld_monto TYPE bapicurr-bapicurr. DATA ld_equipo TYPE equnr. LOOP AT gt_data INTO gs_data. CLEAR: ls_data_specific_exp, ls_data_general_exp, ls_data_install, ls_bapiret2. SELECT SINGLE objid INTO gs_data-work_ctr FROM crhd WHERE objty = 'A' AND arbpl = gs_data-work_ctr AND werks = gs_data-planplant. IF sy-subrc <> 0. CLEAR gs_data-work_ctr. ENDIF. SELECT SINGLE objid INTO gs_data-pp_wkctr FROM crhd WHERE objty = 'A' AND arbpl = gs_data-pp_wkctr AND werks = gs_data-maintplant. IF sy-subrc <> 0. CLEAR gs_data-pp_wkctr. ENDIF. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = gs_data-costcenter IMPORTING output = gs_data-costcenter. MOVE-CORRESPONDING gs_data TO ls_data_general_exp. MOVE gs_data-read_supeq TO ls_data_specific_exp-read_supeq. MOVE gs_data-read_floc TO ls_data_specific_exp-read_floc. MOVE gs_data-inst_pos TO ls_data_specific_exp-inst_pos. MOVE gs_data-equicatgry TO ls_data_specific_exp-equicatgry. * gs_data-EQUIPMENT = gs_equipos-EQUIPMENT. MOVE gs_data-read_supeq TO ls_data_install-supequi. MOVE gs_data-read_floc TO ls_data_install-funcloc. MOVE gs_data-inst_pos TO ls_data_install-inst_pos. MOVE gs_data-acquisval TO ld_monto. CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' EXPORTING currency = gs_data-currency amount_external = ld_monto max_number_of_digits = '15' IMPORTING amount_internal = ls_data_general_exp-acquisval * RETURN = . CALL FUNCTION 'BAPI_EQUI_CREATE' EXPORTING * EXTERNAL_NUMBER = data_general = ls_data_general_exp data_specific = ls_data_specific_exp * DATA_FLEET = * VALID_DATE = SY-DATUM data_install = ls_data_install IMPORTING equipment = ld_equipo * DATA_GENERAL_EXP = * DATA_SPECIFIC_EXP = * DATA_FLEET_EXP = return = ls_bapiret2. IF ld_equipo IS NOT INITIAL. CLEAR gt_return[]. IF gs_data-classnum IS NOT INITIAL. DATA ld_object TYPE bapi1003_key-object. ld_object = ld_equipo. CALL FUNCTION 'BAPI_OBJCL_CREATE' EXPORTING objectkeynew = ld_object objecttablenew = 'EQUI' classnumnew = gs_data-classnum classtypenew = '002' * STATUS = '1' * STANDARDCLASS = * CHANGENUMBER = * KEYDATE = SY-DATUM * NO_DEFAULT_VALUES = ' ' * IMPORTING * CLASSIF_STATUS = TABLES * ALLOCVALUESNUM = * ALLOCVALUESCHAR = * ALLOCVALUESCURR = return = gt_return. ENDIF. LOOP AT gt_return INTO ls_bapiret2 WHERE type = 'E'. ENDLOOP. IF sy-subrc <> 0. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X' * IMPORTING * RETURN = . * write:/ 'Se creo equipo', * ld_equipo, * 'copia de', * gs_data-EQUIPMENT. gs_log-equipment = ld_equipo. gs_log-equipment_o = gs_data-equipment. gs_log-type = 'S'. gs_log-message = 'Se creo equipo'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. gs_log-equipment = ld_equipo. gs_log-equipment_o = gs_data-equipment. gs_log-type = 'E'. gs_log-message = ls_bapiret2-message. ENDIF. ELSE. gs_log-equipment = ld_equipo. gs_log-equipment_o = gs_data-equipment. gs_log-type = 'E'. gs_log-message = ls_bapiret2-message. * write:/ ls_bapiret2-message. ENDIF. APPEND gs_log TO gt_log. ENDLOOP. ENDFORM. "select_data *&---------------------------------------------------------------------* *& Form upload *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM upload. CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = p_file filetype = 'DAT' TABLES data_tab = gt_data EXCEPTIONS file_open_error = 1 file_read_error = 2 no_batch = 3 gui_refuse_filetransfer = 4 invalid_type = 5 no_authority = 6 unknown_error = 7 bad_data_format = 8 header_not_allowed = 9 separator_not_allowed = 10 header_too_long = 11 unknown_dp_error = 12 access_denied = 13 dp_out_of_memory = 14 disk_full = 15 dp_timeout = 16 OTHERS = 17. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM. "upload *&---------------------------------------------------------------------* *& Form display_log *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM display_log. *... Create Instance TRY. cl_salv_table=>factory( IMPORTING r_salv_table = DATA(gr_table) CHANGING t_table = gt_log ). CATCH cx_salv_msg. ENDTRY. *... Enable Generic ALV functions data(gr_functions) = gr_table->get_functions( ). ** gr_functions->set_default( ). gr_functions->set_all( ). data(lr_columns) = gr_table->get_columns( ). * set column text TRY. data(lr_column) = lr_columns->get_column( 'EQUIPMENT_O' ). lr_column->set_long_text( 'Equipo Original' ). lr_column->set_medium_text( 'Equi.Ori.' ). lr_column->set_short_text( 'Equi.Ori.' ). CATCH cx_salv_not_found. CATCH cx_salv_existing. CATCH cx_salv_data_error. ENDTRY. *... Display table gr_table->display( ). ENDFORM. "display_log