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