Bapi_material_savedata

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Ignacio Luis Díaz Jiménez
    Junior Member
    • mar
    • 8

    #1

    Bapi_material_savedata

    Alguien sabe qué hay que pasarle a la BAPI_MATERIAL_SAVEDATA para que me cree un nuevo material.

    Gracias.
    Ignacio
  • Claudia Valdespino
    Member
    • mar
    • 54

    #2
    Hola, yo justo tengo un programa que hice para la creación de materiales mediante un archivo excel... pero por acá no te puedo mandar el archivo
    Si me pasas tu correo te lo mando ahi... de todas maneras te mando el código del programa

    *&---------------------------------------------------------------------*
    *& Programa: ZMM_CARGA_MATERIALES *
    *& Analista Programador : Claudia Valdespino Alvarez - TSnet S.A. *
    *& Descripcion : Programa de carga de maestro de materiales *
    *& empleando la bapi BAPI_MATERIAL_SAVEDATA. *
    *& Fecha : 25-05-2006 *
    *&---------------------------------------------------------------------*

    REPORT ZMM_CARGA_MATERIALES MESSAGE-ID SABAPDOCU.


    *&---------------------------------------------------------------------*
    *& DECLARACION DE TABLAS INTERNAS
    *&---------------------------------------------------------------------*
    DATA: BEGIN OF T1_EXCEL OCCURS 0.
    INCLUDE STRUCTURE ALSMEX_TABLINE.
    DATA: END OF T1_EXCEL.

    DATA: WA_BAPI_MAKT LIKE BAPI_MAKT OCCURS 0 WITH HEADER LINE,
    WA_BAPI_MATRETURN LIKE BAPI_MATRETURN2 OCCURS 0 WITH HEADER LINE.

    DATA: BEGIN OF BDCDATA OCCURS 0.
    INCLUDE STRUCTURE BDCDATA.
    DATA: END OF BDCDATA.

    DATA: BEGIN OF MESSTAB OCCURS 10.
    INCLUDE STRUCTURE BDCMSGCOLL.
    DATA: END OF MESSTAB.


    *&---------------------------------------------------------------------*
    *& DECLARACION DE ESTRUCTURAS
    *&---------------------------------------------------------------------*
    DATA: BEGIN OF T_MATERIAL OCCURS 0,
    MATERIAL LIKE BAPIMATHEAD-MATERIAL,
    IND_SECTOR LIKE BAPIMATHEAD-IND_SECTOR,
    MATL_TYPE LIKE BAPIMATHEAD-MATL_TYPE,
    PLANT LIKE BAPI_MARC-PLANT,
    LANGU_ISO LIKE BAPI_MAKT-LANGU_ISO,
    MATL_DESC LIKE BAPI_MAKT-MATL_DESC,
    BASE_UOM LIKE BAPI_MARA-BASE_UOM,
    MATL_GROUP LIKE BAPI_MARA-MATL_GROUP,
    EXTMATLGRP LIKE BAPI_MARA-EXTMATLGRP,
    PUR_GROUP LIKE BAPI_MARC-PUR_GROUP,
    MRP_GROUP LIKE BAPI_MARC-MRP_GROUP,
    MRP_TYPE LIKE BAPI_MARC-MRP_TYPE,
    FORE_MODEL LIKE BAPI_MPOP-FORE_MODEL,
    SERNO_PROF LIKE BAPI_MARC-SERNO_PROF,
    SERIALIZATION_LEVEL LIKE BAPI_MARA-SERIALIZATION_LEVEL,
    VAL_CLASS LIKE BAPI_MBEW-VAL_CLASS,
    TECNOLOGIA(30) TYPE C,
    FABRICANTE(30) TYPE C,
    MODELO(30) TYPE C,
    CAPACIDAD(30) TYPE C,
    TIPO_UMA(30) TYPE C,
    DIMENSION(30) TYPE C,
    NIVELES_NUMERO(30) TYPE C,
    SAC(4) TYPE C,
    END OF T_MATERIAL.

    DATA: BEGIN OF WA_MAT,
    MATERIAL LIKE BAPIMATHEAD-MATERIAL,
    IND_SECTOR LIKE BAPIMATHEAD-IND_SECTOR,
    MATL_TYPE LIKE BAPIMATHEAD-MATL_TYPE,
    PLANT LIKE BAPI_MARC-PLANT,
    LANGU_ISO LIKE BAPI_MAKT-LANGU_ISO,
    MATL_DESC LIKE BAPI_MAKT-MATL_DESC,
    BASE_UOM LIKE BAPI_MARA-BASE_UOM,
    MATL_GROUP LIKE BAPI_MARA-MATL_GROUP,
    EXTMATLGRP LIKE BAPI_MARA-EXTMATLGRP,
    PUR_GROUP LIKE BAPI_MARC-PUR_GROUP,
    MRP_GROUP LIKE BAPI_MARC-MRP_GROUP,
    MRP_TYPE LIKE BAPI_MARC-MRP_TYPE,
    FORE_MODEL LIKE BAPI_MPOP-FORE_MODEL,
    SERNO_PROF LIKE BAPI_MARC-SERNO_PROF,
    SERIALIZATION_LEVEL LIKE BAPI_MARA-SERIALIZATION_LEVEL,
    VAL_CLASS LIKE BAPI_MBEW-VAL_CLASS,
    TECNOLOGIA(30) TYPE C,
    FABRICANTE(30) TYPE C,
    MODELO(30) TYPE C,
    CAPACIDAD(30) TYPE C,
    TIPO_UMA(30) TYPE C,
    DIMENSION(30) TYPE C,
    NIVELES_NUMERO(30) TYPE C,
    SAC(4) TYPE C,
    END OF WA_MAT.

    DATA: WA_BAPIMATHEAD LIKE BAPIMATHEAD,
    WA_BAPI_MARA LIKE BAPI_MARA,
    WA_BAPI_MARAX LIKE BAPI_MARAX,
    WA_BAPI_MARC LIKE BAPI_MARC,
    WA_BAPI_MARCX LIKE BAPI_MARCX,
    WA_BAPI_MPOP LIKE BAPI_MPOP,
    WA_BAPI_MPOPX LIKE BAPI_MPOPX,
    WA_BAPI_MBEW LIKE BAPI_MBEW,
    WA_BAPI_MBEWX LIKE BAPI_MBEWX.


    *&---------------------------------------------------------------------*
    *& DECLARACION DE VARIABLES
    *&---------------------------------------------------------------------*
    DATA: W_MODE(1) TYPE C VALUE 'N',
    W_MATERIAL_TYPE LIKE BAPIMATDOA-MATL_TYPE,
    W_INDSECTOR LIKE BAPIMATDOA-IND_SECTOR,
    T_BAPIMATNR LIKE BAPIMATINR OCCURS 0 WITH HEADER LINE,
    W_FLAG(1) TYPE C,
    W_LINES TYPE I,
    W_CONT TYPE I.

    *&---------------------------------------------------------------------*
    *& PANTALLA DE SELECCION
    *&---------------------------------------------------------------------*
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
    PARAMETER: P_ARCH LIKE RLGRAP-FILENAME.
    SELECTION-SCREEN END OF BLOCK B1.


    *&---------------------------------------------------------------------*
    *& AT SELECTION-SCREEN
    *&---------------------------------------------------------------------*
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_ARCH.
    CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    EXPORTING
    STATIC = 'X'
    CHANGING
    FILE_NAME = P_ARCH
    EXCEPTIONS
    MASK_TOO_LONG = 1
    OTHERS = 2.


    *&---------------------------------------------------------------------*
    *& START-OF-SELECTION
    *&---------------------------------------------------------------------*
    START-OF-SELECTION.
    IF P_ARCH IS INITIAL.
    MESSAGE S888 WITH 'Debe seleccionar una ruta.'.
    ELSE.
    PERFORM CARGA_ARCHIVO.
    PERFORM CARGA_ESTRUCTURA.
    ENDIF.


    *&---------------------------------------------------------------------*
    *& Form carga_archivo
    *&---------------------------------------------------------------------*
    FORM CARGA_ARCHIVO .
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
    FILENAME = P_ARCH
    I_BEGIN_COL = '1'
    I_BEGIN_ROW = '1'
    I_END_COL = '23'
    I_END_ROW = '65536'
    TABLES
    INTERN = T1_EXCEL
    EXCEPTIONS
    INCONSISTENT_PARAMETERS = 1
    UPLOAD_OLE = 2
    OTHERS = 3.

    IF SY-SUBRC <> 0 .
    MESSAGE S000 WITH 'Error en la carga de datos'.
    STOP.
    ENDIF.

    LOOP AT T1_EXCEL.
    CASE T1_EXCEL-COL.
    WHEN 1.
    T_MATERIAL-IND_SECTOR = T1_EXCEL-VALUE. "Ramo
    WHEN 2.
    T_MATERIAL-MATL_TYPE = T1_EXCEL-VALUE. "Tipo de Material
    WHEN 3.
    T_MATERIAL-PLANT = T1_EXCEL-VALUE. "Centro
    WHEN 4.
    T_MATERIAL-LANGU_ISO = T1_EXCEL-VALUE. "Idioma
    WHEN 5.
    T_MATERIAL-MATL_DESC = T1_EXCEL-VALUE. "Texto breve de material
    WHEN 6.
    T_MATERIAL-BASE_UOM = T1_EXCEL-VALUE. "Unidad de Medida Base
    WHEN 7.
    T_MATERIAL-MATL_GROUP = T1_EXCEL-VALUE. "Grupo de Articulos
    WHEN 8.
    T_MATERIAL-EXTMATLGRP = T1_EXCEL-VALUE. "Grupo de Articulo Externo
    WHEN 9.
    T_MATERIAL-PUR_GROUP = T1_EXCEL-VALUE. "Grupo de Compras
    WHEN 10.
    T_MATERIAL-MRP_GROUP = T1_EXCEL-VALUE. "Grupo de planificación de necesidades
    WHEN 11.
    T_MATERIAL-MRP_TYPE = T1_EXCEL-VALUE. "Característica de planificación de necesidades
    WHEN 12.
    T_MATERIAL-FORE_MODEL = T1_EXCEL-VALUE. "Modelo de pronóstico
    WHEN 13.
    T_MATERIAL-SERNO_PROF = T1_EXCEL-VALUE. "Perfil de No Serie
    WHEN 14.
    T_MATERIAL-SERIALIZATION_LEVEL = T1_EXCEL-VALUE. "Nivel
    WHEN 15.
    T_MATERIAL-VAL_CLASS = T1_EXCEL-VALUE. "Categoría de valoración
    WHEN 16.
    T_MATERIAL-TECNOLOGIA = T1_EXCEL-VALUE. "Caracteristica Tecnología
    WHEN 17.
    T_MATERIAL-FABRICANTE = T1_EXCEL-VALUE. "Caracteristica Fabricante
    WHEN 18.
    T_MATERIAL-MODELO = T1_EXCEL-VALUE. "Caracteristica Modelo
    WHEN 19.
    T_MATERIAL-CAPACIDAD = T1_EXCEL-VALUE. "Caracteristica Capacidad
    WHEN 20.
    T_MATERIAL-TIPO_UMA = T1_EXCEL-VALUE. "Caracteristica Tipo-Uma
    WHEN 21.
    T_MATERIAL-DIMENSION = T1_EXCEL-VALUE. "Caracteristica Dimensión
    WHEN 22.
    T_MATERIAL-NIVELES_NUMERO = T1_EXCEL-VALUE. "Caracteristica Niveles_Número
    WHEN 23.
    T_MATERIAL-SAC = T1_EXCEL-VALUE. "Categoria de clase
    ENDCASE.

    AT END OF ROW.
    APPEND T_MATERIAL.
    CLEAR T_MATERIAL.
    ENDAT.
    ENDLOOP.

    ENDFORM. " carga_arhivo


    *&---------------------------------------------------------------------*
    *& Form carga_estructura
    *&---------------------------------------------------------------------*
    FORM CARGA_ESTRUCTURA .
    LOOP AT T_MATERIAL INTO WA_MAT.
    REFRESH: T_BAPIMATNR[], WA_BAPI_MATRETURN[], WA_BAPI_MAKT[], MESSTAB[].

    CLEAR: WA_BAPIMATHEAD, WA_BAPI_MARA, WA_BAPI_MARC, WA_BAPI_MPOP,
    WA_BAPI_MBEW, T_BAPIMATNR, WA_BAPI_MATRETURN, WA_BAPI_MAKT,
    W_MATERIAL_TYPE, W_INDSECTOR, MESSTAB, W_FLAG.

    * Tipo de material que no tiene vistas de planificación de necesidades ni pronósticos
    IF WA_MAT-MATL_TYPE = '0673'.
    * Segmento de cabecera con info de control
    WA_BAPIMATHEAD-IND_SECTOR = WA_MAT-IND_SECTOR.
    WA_BAPIMATHEAD-MATL_TYPE = WA_MAT-MATL_TYPE.
    WA_BAPIMATHEAD-BASIC_VIEW = 'X'. "Vista de datos básicos
    WA_BAPIMATHEAD-PURCHASE_VIEW = 'X'. "Vista de compras
    WA_BAPIMATHEAD-STORAGE_VIEW = 'X'. "Vista de almacén
    WA_BAPIMATHEAD-QUALITY_VIEW = 'X'. "Vista de gestión de calidad
    WA_BAPIMATHEAD-ACCOUNT_VIEW = 'X'. "Vista de contabilidad

    ELSE.
    W_FLAG = 'X'.
    * Segmento de cabecera con info de control
    WA_BAPIMATHEAD-IND_SECTOR = WA_MAT-IND_SECTOR.
    WA_BAPIMATHEAD-MATL_TYPE = WA_MAT-MATL_TYPE.
    WA_BAPIMATHEAD-BASIC_VIEW = 'X'. "Vista de datos básicos
    WA_BAPIMATHEAD-PURCHASE_VIEW = 'X'. "Vista de compras
    WA_BAPIMATHEAD-MRP_VIEW = 'X'. "Vista de planificación de necesidades
    WA_BAPIMATHEAD-FORECAST_VIEW = 'X'. "Vista de pronósticos
    WA_BAPIMATHEAD-STORAGE_VIEW = 'X'. "Vista de almacén
    WA_BAPIMATHEAD-QUALITY_VIEW = 'X'. "Vista de gestión de calidad
    WA_BAPIMATHEAD-ACCOUNT_VIEW = 'X'. "Vista de contabilidad
    ENDIF.

    * Datos material a nivel de mandante
    WA_BAPI_MARA-BASE_UOM = WA_MAT-BASE_UOM.
    WA_BAPI_MARA-MATL_GROUP = WA_MAT-MATL_GROUP.
    WA_BAPI_MARA-EXTMATLGRP = WA_MAT-EXTMATLGRP.
    WA_BAPI_MARA-SERIALIZATION_LEVEL = WA_MAT-SERIALIZATION_LEVEL.

    WA_BAPI_MARAX-BASE_UOM = WA_MAT-BASE_UOM.
    WA_BAPI_MARAX-MATL_GROUP = WA_MAT-MATL_GROUP.
    WA_BAPI_MARAX-EXTMATLGRP = WA_MAT-EXTMATLGRP.
    WA_BAPI_MARAX-SERIALIZATION_LEVEL = WA_MAT-SERIALIZATION_LEVEL.

    * Datos material a nivel de centro
    WA_BAPI_MARC-PLANT = WA_MAT-PLANT.
    WA_BAPI_MARC-PUR_GROUP = WA_MAT-PUR_GROUP.
    WA_BAPI_MARC-SERNO_PROF = WA_MAT-SERNO_PROF.

    WA_BAPI_MARCX-PLANT = WA_MAT-PLANT.
    WA_BAPI_MARCX-PUR_GROUP = WA_MAT-PUR_GROUP.
    WA_BAPI_MARCX-SERNO_PROF = WA_MAT-SERNO_PROF.

    IF W_FLAG = 'X'.
    * Datos material a nivel de centro
    WA_BAPI_MARC-MRP_GROUP = WA_MAT-MRP_GROUP.
    WA_BAPI_MARC-MRP_TYPE = WA_MAT-MRP_TYPE.

    WA_BAPI_MARCX-MRP_GROUP = WA_MAT-MRP_GROUP.
    WA_BAPI_MARCX-MRP_TYPE = WA_MAT-MRP_TYPE.

    * Parám.pronóstico
    WA_BAPI_MPOP-PLANT = WA_MAT-PLANT.
    WA_BAPI_MPOP-FORE_MODEL = WA_MAT-FORE_MODEL.

    WA_BAPI_MPOPX-PLANT = WA_MAT-PLANT.
    WA_BAPI_MPOPX-FORE_MODEL = WA_MAT-FORE_MODEL.
    ENDIF.

    * Datos valoración
    WA_BAPI_MBEW-VAL_CLASS = WA_MAT-VAL_CLASS.
    WA_BAPI_MBEW-VAL_AREA = 'TP00'.

    WA_BAPI_MBEWX-VAL_CLASS = WA_MAT-VAL_CLASS.
    WA_BAPI_MBEWX-VAL_AREA = 'TP00'.

    * Datos material
    WA_BAPI_MAKT-LANGU_ISO = WA_MAT-LANGU_ISO.
    WA_BAPI_MAKT-MATL_DESC = WA_MAT-MATL_DESC.

    * Pasa tipo de material y ramo a variables
    W_MATERIAL_TYPE = WA_MAT-MATL_TYPE.
    W_INDSECTOR = WA_MAT-IND_SECTOR.

    * Genera el código de material
    PERFORM GENERA_CODIGO_MATERIAL.

    * Pasa código de material a la bapi para cargar los materiales
    WA_BAPIMATHEAD-MATERIAL = T_BAPIMATNR-MATERIAL.

    APPEND WA_BAPI_MAKT.

    * Ejecuta bapi para la carga de maestro de materiales
    PERFORM BAPI_SAVE_DATA.

    * Carga las caracteristicas de cada material
    PERFORM CARGA_CATEGORIA_CLASE.
    ENDLOOP.

    ENDFORM. " carga_estructura


    *&---------------------------------------------------------------------*
    *& Form GENERA_CODIGO_MATERIAL
    *&---------------------------------------------------------------------*
    FORM GENERA_CODIGO_MATERIAL .
    CALL FUNCTION 'BAPI_MATERIAL_GETINTNUMBER'
    EXPORTING
    MATERIAL_TYPE = W_MATERIAL_TYPE
    INDUSTRY_SECTOR = W_INDSECTOR
    TABLES
    MATERIAL_NUMBER = T_BAPIMATNR.

    READ TABLE T_BAPIMATNR INDEX 1.

    ENDFORM. " GENERA_CODIGO_MATERIAL


    *&---------------------------------------------------------------------*
    *& Form bapi_save_data
    *&---------------------------------------------------------------------*
    FORM BAPI_SAVE_DATA .
    IF W_FLAG = 'X'.
    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
    EXPORTING
    HEADDATA = WA_BAPIMATHEAD
    CLIENTDATA = WA_BAPI_MARA
    CLIENTDATAX = WA_BAPI_MARAX
    PLANTDATA = WA_BAPI_MARC
    PLANTDATAX = WA_BAPI_MARCX
    FORECASTPARAMETERS = WA_BAPI_MPOP
    FORECASTPARAMETERSX = WA_BAPI_MPOPX
    VALUATIONDATA = WA_BAPI_MBEW
    VALUATIONDATAX = WA_BAPI_MBEWX
    TABLES
    MATERIALDESCRIPTION = WA_BAPI_MAKT
    RETURNMESSAGES = WA_BAPI_MATRETURN.

    ELSE.
    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
    EXPORTING
    HEADDATA = WA_BAPIMATHEAD
    CLIENTDATA = WA_BAPI_MARA
    CLIENTDATAX = WA_BAPI_MARAX
    PLANTDATA = WA_BAPI_MARC
    PLANTDATAX = WA_BAPI_MARCX
    VALUATIONDATA = WA_BAPI_MBEW
    VALUATIONDATAX = WA_BAPI_MBEWX
    TABLES
    MATERIALDESCRIPTION = WA_BAPI_MAKT
    RETURNMESSAGES = WA_BAPI_MATRETURN.
    ENDIF.

    COMMIT WORK AND WAIT.

    LOOP AT WA_BAPI_MATRETURN WHERE TYPE = 'E'.
    W_CONT = W_CONT + 1.
    WRITE:/ WA_BAPIMATHEAD-MATERIAL, 12 T_MATERIAL-IND_SECTOR, 17 T_MATERIAL-MATL_TYPE,
    25 T_MATERIAL-MATL_DESC, 'Error en la carga de material: ',
    WA_BAPI_MATRETURN-MESSAGE_V1, WA_BAPI_MATRETURN-MESSAGE_V2,
    WA_BAPI_MATRETURN-MESSAGE_V3, WA_BAPI_MATRETURN-MESSAGE_V4.
    ENDLOOP.

    ENDFORM. " bapi_save_data


    *&---------------------------------------------------------------------*
    *& Form CARGA_CATEGORIA_CLASE
    *&---------------------------------------------------------------------*
    FORM CARGA_CATEGORIA_CLASE .
    REFRESH: BDCDATA.

    PERFORM LLENAR_BDCDATA USING 'SAPLMGMM' '0060' 'X' '' ''.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RMMG1-MATNR'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '=ENTR'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RMMG1-MATNR' WA_BAPIMATHEAD-MATERIAL+10(8).
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RMMG1-MBRSH' WA_MAT-IND_SECTOR.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RMMG1-MTART' WA_MAT-MATL_TYPE.

    PERFORM LLENAR_BDCDATA USING 'SAPLMGMM' '0070' 'X' '' ''.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'MSICHTAUSW-DYTXT(02)'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '=ENTR'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'MSICHTAUSW-KZSEL(02)' 'X'.

    PERFORM LLENAR_BDCDATA USING 'SAPLCLCA' '0602' 'X' '' ''.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RMCLF-KLART'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '=ENTE'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RMCLF-KLART' 'UMA'.

    PERFORM LLENAR_BDCDATA USING 'SAPLCLFM' '0500' 'X' '' ''.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RMCLF-CLASS(01)'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '/00'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RMCLF-CLASS(01)' 'UMAS'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_SUBSCR' 'SAPLCBCM 0199OBJEKT'.

    PERFORM LLENAR_BDCDATA USING 'SAPLCTMS' '0109' 'X' '' ''.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RCTMS-MWERT(01)'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '=BACK'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MNAME(01)' 'TECNOLOGIA'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MNAME(02)' 'FABRICANTE'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MNAME(03)' 'MODELO'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MNAME(04)' 'CAPACIDAD'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MNAME(05)' 'TIPO-UMA'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MNAME(06)' 'DIMENSION'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MNAME(07)' 'NIVELES_NUMERO'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MWERT(01)' WA_MAT-TECNOLOGIA.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MWERT(02)' WA_MAT-FABRICANTE.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MWERT(03)' WA_MAT-MODELO.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MWERT(04)' WA_MAT-CAPACIDAD.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MWERT(05)' WA_MAT-TIPO_UMA.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MWERT(06)' WA_MAT-DIMENSION.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MWERT(07)' WA_MAT-NIVELES_NUMERO.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_SUBSCR' 'SAPLCBCM 0499HEADER'.

    PERFORM LLENAR_BDCDATA USING 'SAPLCLFM' '0500' 'X' '' ''.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RMCLF-CLASS(01)'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '=WECH'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RMCLF-PAGPOS' '1'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_SUBSCR' 'SAPLCBCM 0199OBJEKT'.

    PERFORM LLENAR_BDCDATA USING 'SAPLCLCA' '0602' 'X' '' ''.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RMCLF-KLART'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '=ENTE'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RMCLF-KLART' 'SA1'.

    PERFORM LLENAR_BDCDATA USING 'SAPLCLFM' '0500' 'X' '' ''.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RMCLF-CLASS(01)'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '/00'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RMCLF-CLASS(01)' WA_MAT-SAC.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_SUBSCR' 'SAPLCBCM 0199OBJEKT'.

    PERFORM LLENAR_BDCDATA USING 'SAPLCLFM' '0500' 'X' '' ''.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RMCLF-CLASS(01)'.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '=SAVE'.

    IF WA_MAT-SAC IS NOT INITIAL.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RMCLF-PAGPOS' '1'.
    ELSE.
    PERFORM LLENAR_BDCDATA USING '' '' '' 'RMCLF-PAGPOS' '0'.
    ENDIF.

    PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_SUBSCR' 'SAPLCBCM 0199OBJEKT'.

    CALL TRANSACTION 'MM01' USING BDCDATA MODE W_MODE UPDATE 'S' MESSAGES INTO MESSTAB.

    IF SY-SUBRC = 0.
    IF WA_MAT-SAC IS INITIAL.
    WRITE:/ WA_BAPIMATHEAD-MATERIAL, 'Material creado con error en asignación de categoria de clase SA1.'.
    ELSE.
    WRITE:/ WA_BAPIMATHEAD-MATERIAL+10(8), 20 'Material procesado correctamente.'.
    ENDIF.

    ELSE.
    LOOP AT MESSTAB.
    WRITE:/ WA_BAPIMATHEAD-MATERIAL+10(8), MESSTAB-MSGTYP, MESSTAB-MSGV1,
    MESSTAB-MSGV2, MESSTAB-MSGV3, MESSTAB-MSGV4.
    ENDLOOP.
    ENDIF.

    COMMIT WORK AND WAIT.
    ENDFORM. " CARGA_CATEGORIA_CLASE


    *&---------------------------------------------------------------------*
    *& Form LLENAR_BDCDATA
    *&---------------------------------------------------------------------*
    FORM LLENAR_BDCDATA USING PROGRAM DYNPRO DYNBEGIN FNAM FVAL.
    BDCDATA-PROGRAM = PROGRAM.
    BDCDATA-DYNPRO = DYNPRO.
    BDCDATA-DYNBEGIN = DYNBEGIN.
    BDCDATA-FNAM = FNAM.
    BDCDATA-FVAL = FVAL.
    APPEND BDCDATA.
    CLEAR BDCDATA.
    ENDFORM. " LLENAR_BDCDATA

    Suerte!!
    Saludos,

    Claudia V.

    Comentario

    • Marco
      Senior Member
      • abr
      • 141

      #3
      Interesante amia...
      y el LSMW ?? tons para que?
      El programita lo utilizas para adicionar algunos registros nomas.. mmm Porq si no utilizarias LSMW... nop?

      Ahh.. pasa tu formato en Excel.. para saber las columnas

      Sld,
      Marcko

      Comentario

      • Ignacio Luis Díaz Jiménez
        Junior Member
        • mar
        • 8

        #4
        Muchas Gracias

        Creo que voy buscando que la llamada a la BAPI sea más sencilla, pasándole dos o tres parámetros.

        Muchas gracias por todo.
        Ignacio

        Originalmente publicado por Claudia Valdespino
        Hola, yo justo tengo un programa que hice para la creación de materiales mediante un archivo excel... pero por acá no te puedo mandar el archivo
        Si me pasas tu correo te lo mando ahi... de todas maneras te mando el código del programa

        *&---------------------------------------------------------------------*
        *& Programa: ZMM_CARGA_MATERIALES *
        *& Analista Programador : Claudia Valdespino Alvarez - TSnet S.A. *
        *& Descripcion : Programa de carga de maestro de materiales *
        *& empleando la bapi BAPI_MATERIAL_SAVEDATA. *
        *& Fecha : 25-05-2006 *
        *&---------------------------------------------------------------------*

        REPORT ZMM_CARGA_MATERIALES MESSAGE-ID SABAPDOCU.


        *&---------------------------------------------------------------------*
        *& DECLARACION DE TABLAS INTERNAS
        *&---------------------------------------------------------------------*
        DATA: BEGIN OF T1_EXCEL OCCURS 0.
        INCLUDE STRUCTURE ALSMEX_TABLINE.
        DATA: END OF T1_EXCEL.

        DATA: WA_BAPI_MAKT LIKE BAPI_MAKT OCCURS 0 WITH HEADER LINE,
        WA_BAPI_MATRETURN LIKE BAPI_MATRETURN2 OCCURS 0 WITH HEADER LINE.

        DATA: BEGIN OF BDCDATA OCCURS 0.
        INCLUDE STRUCTURE BDCDATA.
        DATA: END OF BDCDATA.

        DATA: BEGIN OF MESSTAB OCCURS 10.
        INCLUDE STRUCTURE BDCMSGCOLL.
        DATA: END OF MESSTAB.


        *&---------------------------------------------------------------------*
        *& DECLARACION DE ESTRUCTURAS
        *&---------------------------------------------------------------------*
        DATA: BEGIN OF T_MATERIAL OCCURS 0,
        MATERIAL LIKE BAPIMATHEAD-MATERIAL,
        IND_SECTOR LIKE BAPIMATHEAD-IND_SECTOR,
        MATL_TYPE LIKE BAPIMATHEAD-MATL_TYPE,
        PLANT LIKE BAPI_MARC-PLANT,
        LANGU_ISO LIKE BAPI_MAKT-LANGU_ISO,
        MATL_DESC LIKE BAPI_MAKT-MATL_DESC,
        BASE_UOM LIKE BAPI_MARA-BASE_UOM,
        MATL_GROUP LIKE BAPI_MARA-MATL_GROUP,
        EXTMATLGRP LIKE BAPI_MARA-EXTMATLGRP,
        PUR_GROUP LIKE BAPI_MARC-PUR_GROUP,
        MRP_GROUP LIKE BAPI_MARC-MRP_GROUP,
        MRP_TYPE LIKE BAPI_MARC-MRP_TYPE,
        FORE_MODEL LIKE BAPI_MPOP-FORE_MODEL,
        SERNO_PROF LIKE BAPI_MARC-SERNO_PROF,
        SERIALIZATION_LEVEL LIKE BAPI_MARA-SERIALIZATION_LEVEL,
        VAL_CLASS LIKE BAPI_MBEW-VAL_CLASS,
        TECNOLOGIA(30) TYPE C,
        FABRICANTE(30) TYPE C,
        MODELO(30) TYPE C,
        CAPACIDAD(30) TYPE C,
        TIPO_UMA(30) TYPE C,
        DIMENSION(30) TYPE C,
        NIVELES_NUMERO(30) TYPE C,
        SAC(4) TYPE C,
        END OF T_MATERIAL.

        DATA: BEGIN OF WA_MAT,
        MATERIAL LIKE BAPIMATHEAD-MATERIAL,
        IND_SECTOR LIKE BAPIMATHEAD-IND_SECTOR,
        MATL_TYPE LIKE BAPIMATHEAD-MATL_TYPE,
        PLANT LIKE BAPI_MARC-PLANT,
        LANGU_ISO LIKE BAPI_MAKT-LANGU_ISO,
        MATL_DESC LIKE BAPI_MAKT-MATL_DESC,
        BASE_UOM LIKE BAPI_MARA-BASE_UOM,
        MATL_GROUP LIKE BAPI_MARA-MATL_GROUP,
        EXTMATLGRP LIKE BAPI_MARA-EXTMATLGRP,
        PUR_GROUP LIKE BAPI_MARC-PUR_GROUP,
        MRP_GROUP LIKE BAPI_MARC-MRP_GROUP,
        MRP_TYPE LIKE BAPI_MARC-MRP_TYPE,
        FORE_MODEL LIKE BAPI_MPOP-FORE_MODEL,
        SERNO_PROF LIKE BAPI_MARC-SERNO_PROF,
        SERIALIZATION_LEVEL LIKE BAPI_MARA-SERIALIZATION_LEVEL,
        VAL_CLASS LIKE BAPI_MBEW-VAL_CLASS,
        TECNOLOGIA(30) TYPE C,
        FABRICANTE(30) TYPE C,
        MODELO(30) TYPE C,
        CAPACIDAD(30) TYPE C,
        TIPO_UMA(30) TYPE C,
        DIMENSION(30) TYPE C,
        NIVELES_NUMERO(30) TYPE C,
        SAC(4) TYPE C,
        END OF WA_MAT.

        DATA: WA_BAPIMATHEAD LIKE BAPIMATHEAD,
        WA_BAPI_MARA LIKE BAPI_MARA,
        WA_BAPI_MARAX LIKE BAPI_MARAX,
        WA_BAPI_MARC LIKE BAPI_MARC,
        WA_BAPI_MARCX LIKE BAPI_MARCX,
        WA_BAPI_MPOP LIKE BAPI_MPOP,
        WA_BAPI_MPOPX LIKE BAPI_MPOPX,
        WA_BAPI_MBEW LIKE BAPI_MBEW,
        WA_BAPI_MBEWX LIKE BAPI_MBEWX.


        *&---------------------------------------------------------------------*
        *& DECLARACION DE VARIABLES
        *&---------------------------------------------------------------------*
        DATA: W_MODE(1) TYPE C VALUE 'N',
        W_MATERIAL_TYPE LIKE BAPIMATDOA-MATL_TYPE,
        W_INDSECTOR LIKE BAPIMATDOA-IND_SECTOR,
        T_BAPIMATNR LIKE BAPIMATINR OCCURS 0 WITH HEADER LINE,
        W_FLAG(1) TYPE C,
        W_LINES TYPE I,
        W_CONT TYPE I.

        *&---------------------------------------------------------------------*
        *& PANTALLA DE SELECCION
        *&---------------------------------------------------------------------*
        SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
        PARAMETER: P_ARCH LIKE RLGRAP-FILENAME.
        SELECTION-SCREEN END OF BLOCK B1.


        *&---------------------------------------------------------------------*
        *& AT SELECTION-SCREEN
        *&---------------------------------------------------------------------*
        AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_ARCH.
        CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
        EXPORTING
        STATIC = 'X'
        CHANGING
        FILE_NAME = P_ARCH
        EXCEPTIONS
        MASK_TOO_LONG = 1
        OTHERS = 2.


        *&---------------------------------------------------------------------*
        *& START-OF-SELECTION
        *&---------------------------------------------------------------------*
        START-OF-SELECTION.
        IF P_ARCH IS INITIAL.
        MESSAGE S888 WITH 'Debe seleccionar una ruta.'.
        ELSE.
        PERFORM CARGA_ARCHIVO.
        PERFORM CARGA_ESTRUCTURA.
        ENDIF.


        *&---------------------------------------------------------------------*
        *& Form carga_archivo
        *&---------------------------------------------------------------------*
        FORM CARGA_ARCHIVO .
        CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
        EXPORTING
        FILENAME = P_ARCH
        I_BEGIN_COL = '1'
        I_BEGIN_ROW = '1'
        I_END_COL = '23'
        I_END_ROW = '65536'
        TABLES
        INTERN = T1_EXCEL
        EXCEPTIONS
        INCONSISTENT_PARAMETERS = 1
        UPLOAD_OLE = 2
        OTHERS = 3.

        IF SY-SUBRC <> 0 .
        MESSAGE S000 WITH 'Error en la carga de datos'.
        STOP.
        ENDIF.

        LOOP AT T1_EXCEL.
        CASE T1_EXCEL-COL.
        WHEN 1.
        T_MATERIAL-IND_SECTOR = T1_EXCEL-VALUE. "Ramo
        WHEN 2.
        T_MATERIAL-MATL_TYPE = T1_EXCEL-VALUE. "Tipo de Material
        WHEN 3.
        T_MATERIAL-PLANT = T1_EXCEL-VALUE. "Centro
        WHEN 4.
        T_MATERIAL-LANGU_ISO = T1_EXCEL-VALUE. "Idioma
        WHEN 5.
        T_MATERIAL-MATL_DESC = T1_EXCEL-VALUE. "Texto breve de material
        WHEN 6.
        T_MATERIAL-BASE_UOM = T1_EXCEL-VALUE. "Unidad de Medida Base
        WHEN 7.
        T_MATERIAL-MATL_GROUP = T1_EXCEL-VALUE. "Grupo de Articulos
        WHEN 8.
        T_MATERIAL-EXTMATLGRP = T1_EXCEL-VALUE. "Grupo de Articulo Externo
        WHEN 9.
        T_MATERIAL-PUR_GROUP = T1_EXCEL-VALUE. "Grupo de Compras
        WHEN 10.
        T_MATERIAL-MRP_GROUP = T1_EXCEL-VALUE. "Grupo de planificación de necesidades
        WHEN 11.
        T_MATERIAL-MRP_TYPE = T1_EXCEL-VALUE. "Característica de planificación de necesidades
        WHEN 12.
        T_MATERIAL-FORE_MODEL = T1_EXCEL-VALUE. "Modelo de pronóstico
        WHEN 13.
        T_MATERIAL-SERNO_PROF = T1_EXCEL-VALUE. "Perfil de No Serie
        WHEN 14.
        T_MATERIAL-SERIALIZATION_LEVEL = T1_EXCEL-VALUE. "Nivel
        WHEN 15.
        T_MATERIAL-VAL_CLASS = T1_EXCEL-VALUE. "Categoría de valoración
        WHEN 16.
        T_MATERIAL-TECNOLOGIA = T1_EXCEL-VALUE. "Caracteristica Tecnología
        WHEN 17.
        T_MATERIAL-FABRICANTE = T1_EXCEL-VALUE. "Caracteristica Fabricante
        WHEN 18.
        T_MATERIAL-MODELO = T1_EXCEL-VALUE. "Caracteristica Modelo
        WHEN 19.
        T_MATERIAL-CAPACIDAD = T1_EXCEL-VALUE. "Caracteristica Capacidad
        WHEN 20.
        T_MATERIAL-TIPO_UMA = T1_EXCEL-VALUE. "Caracteristica Tipo-Uma
        WHEN 21.
        T_MATERIAL-DIMENSION = T1_EXCEL-VALUE. "Caracteristica Dimensión
        WHEN 22.
        T_MATERIAL-NIVELES_NUMERO = T1_EXCEL-VALUE. "Caracteristica Niveles_Número
        WHEN 23.
        T_MATERIAL-SAC = T1_EXCEL-VALUE. "Categoria de clase
        ENDCASE.

        AT END OF ROW.
        APPEND T_MATERIAL.
        CLEAR T_MATERIAL.
        ENDAT.
        ENDLOOP.

        ENDFORM. " carga_arhivo


        *&---------------------------------------------------------------------*
        *& Form carga_estructura
        *&---------------------------------------------------------------------*
        FORM CARGA_ESTRUCTURA .
        LOOP AT T_MATERIAL INTO WA_MAT.
        REFRESH: T_BAPIMATNR[], WA_BAPI_MATRETURN[], WA_BAPI_MAKT[], MESSTAB[].

        CLEAR: WA_BAPIMATHEAD, WA_BAPI_MARA, WA_BAPI_MARC, WA_BAPI_MPOP,
        WA_BAPI_MBEW, T_BAPIMATNR, WA_BAPI_MATRETURN, WA_BAPI_MAKT,
        W_MATERIAL_TYPE, W_INDSECTOR, MESSTAB, W_FLAG.

        * Tipo de material que no tiene vistas de planificación de necesidades ni pronósticos
        IF WA_MAT-MATL_TYPE = '0673'.
        * Segmento de cabecera con info de control
        WA_BAPIMATHEAD-IND_SECTOR = WA_MAT-IND_SECTOR.
        WA_BAPIMATHEAD-MATL_TYPE = WA_MAT-MATL_TYPE.
        WA_BAPIMATHEAD-BASIC_VIEW = 'X'. "Vista de datos básicos
        WA_BAPIMATHEAD-PURCHASE_VIEW = 'X'. "Vista de compras
        WA_BAPIMATHEAD-STORAGE_VIEW = 'X'. "Vista de almacén
        WA_BAPIMATHEAD-QUALITY_VIEW = 'X'. "Vista de gestión de calidad
        WA_BAPIMATHEAD-ACCOUNT_VIEW = 'X'. "Vista de contabilidad

        ELSE.
        W_FLAG = 'X'.
        * Segmento de cabecera con info de control
        WA_BAPIMATHEAD-IND_SECTOR = WA_MAT-IND_SECTOR.
        WA_BAPIMATHEAD-MATL_TYPE = WA_MAT-MATL_TYPE.
        WA_BAPIMATHEAD-BASIC_VIEW = 'X'. "Vista de datos básicos
        WA_BAPIMATHEAD-PURCHASE_VIEW = 'X'. "Vista de compras
        WA_BAPIMATHEAD-MRP_VIEW = 'X'. "Vista de planificación de necesidades
        WA_BAPIMATHEAD-FORECAST_VIEW = 'X'. "Vista de pronósticos
        WA_BAPIMATHEAD-STORAGE_VIEW = 'X'. "Vista de almacén
        WA_BAPIMATHEAD-QUALITY_VIEW = 'X'. "Vista de gestión de calidad
        WA_BAPIMATHEAD-ACCOUNT_VIEW = 'X'. "Vista de contabilidad
        ENDIF.

        * Datos material a nivel de mandante
        WA_BAPI_MARA-BASE_UOM = WA_MAT-BASE_UOM.
        WA_BAPI_MARA-MATL_GROUP = WA_MAT-MATL_GROUP.
        WA_BAPI_MARA-EXTMATLGRP = WA_MAT-EXTMATLGRP.
        WA_BAPI_MARA-SERIALIZATION_LEVEL = WA_MAT-SERIALIZATION_LEVEL.

        WA_BAPI_MARAX-BASE_UOM = WA_MAT-BASE_UOM.
        WA_BAPI_MARAX-MATL_GROUP = WA_MAT-MATL_GROUP.
        WA_BAPI_MARAX-EXTMATLGRP = WA_MAT-EXTMATLGRP.
        WA_BAPI_MARAX-SERIALIZATION_LEVEL = WA_MAT-SERIALIZATION_LEVEL.

        * Datos material a nivel de centro
        WA_BAPI_MARC-PLANT = WA_MAT-PLANT.
        WA_BAPI_MARC-PUR_GROUP = WA_MAT-PUR_GROUP.
        WA_BAPI_MARC-SERNO_PROF = WA_MAT-SERNO_PROF.

        WA_BAPI_MARCX-PLANT = WA_MAT-PLANT.
        WA_BAPI_MARCX-PUR_GROUP = WA_MAT-PUR_GROUP.
        WA_BAPI_MARCX-SERNO_PROF = WA_MAT-SERNO_PROF.

        IF W_FLAG = 'X'.
        * Datos material a nivel de centro
        WA_BAPI_MARC-MRP_GROUP = WA_MAT-MRP_GROUP.
        WA_BAPI_MARC-MRP_TYPE = WA_MAT-MRP_TYPE.

        WA_BAPI_MARCX-MRP_GROUP = WA_MAT-MRP_GROUP.
        WA_BAPI_MARCX-MRP_TYPE = WA_MAT-MRP_TYPE.

        * Parám.pronóstico
        WA_BAPI_MPOP-PLANT = WA_MAT-PLANT.
        WA_BAPI_MPOP-FORE_MODEL = WA_MAT-FORE_MODEL.

        WA_BAPI_MPOPX-PLANT = WA_MAT-PLANT.
        WA_BAPI_MPOPX-FORE_MODEL = WA_MAT-FORE_MODEL.
        ENDIF.

        * Datos valoración
        WA_BAPI_MBEW-VAL_CLASS = WA_MAT-VAL_CLASS.
        WA_BAPI_MBEW-VAL_AREA = 'TP00'.

        WA_BAPI_MBEWX-VAL_CLASS = WA_MAT-VAL_CLASS.
        WA_BAPI_MBEWX-VAL_AREA = 'TP00'.

        * Datos material
        WA_BAPI_MAKT-LANGU_ISO = WA_MAT-LANGU_ISO.
        WA_BAPI_MAKT-MATL_DESC = WA_MAT-MATL_DESC.

        * Pasa tipo de material y ramo a variables
        W_MATERIAL_TYPE = WA_MAT-MATL_TYPE.
        W_INDSECTOR = WA_MAT-IND_SECTOR.

        * Genera el código de material
        PERFORM GENERA_CODIGO_MATERIAL.

        * Pasa código de material a la bapi para cargar los materiales
        WA_BAPIMATHEAD-MATERIAL = T_BAPIMATNR-MATERIAL.

        APPEND WA_BAPI_MAKT.

        * Ejecuta bapi para la carga de maestro de materiales
        PERFORM BAPI_SAVE_DATA.

        * Carga las caracteristicas de cada material
        PERFORM CARGA_CATEGORIA_CLASE.
        ENDLOOP.

        ENDFORM. " carga_estructura


        *&---------------------------------------------------------------------*
        *& Form GENERA_CODIGO_MATERIAL
        *&---------------------------------------------------------------------*
        FORM GENERA_CODIGO_MATERIAL .
        CALL FUNCTION 'BAPI_MATERIAL_GETINTNUMBER'
        EXPORTING
        MATERIAL_TYPE = W_MATERIAL_TYPE
        INDUSTRY_SECTOR = W_INDSECTOR
        TABLES
        MATERIAL_NUMBER = T_BAPIMATNR.

        READ TABLE T_BAPIMATNR INDEX 1.

        ENDFORM. " GENERA_CODIGO_MATERIAL


        *&---------------------------------------------------------------------*
        *& Form bapi_save_data
        *&---------------------------------------------------------------------*
        FORM BAPI_SAVE_DATA .
        IF W_FLAG = 'X'.
        CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
        EXPORTING
        HEADDATA = WA_BAPIMATHEAD
        CLIENTDATA = WA_BAPI_MARA
        CLIENTDATAX = WA_BAPI_MARAX
        PLANTDATA = WA_BAPI_MARC
        PLANTDATAX = WA_BAPI_MARCX
        FORECASTPARAMETERS = WA_BAPI_MPOP
        FORECASTPARAMETERSX = WA_BAPI_MPOPX
        VALUATIONDATA = WA_BAPI_MBEW
        VALUATIONDATAX = WA_BAPI_MBEWX
        TABLES
        MATERIALDESCRIPTION = WA_BAPI_MAKT
        RETURNMESSAGES = WA_BAPI_MATRETURN.

        ELSE.
        CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
        EXPORTING
        HEADDATA = WA_BAPIMATHEAD
        CLIENTDATA = WA_BAPI_MARA
        CLIENTDATAX = WA_BAPI_MARAX
        PLANTDATA = WA_BAPI_MARC
        PLANTDATAX = WA_BAPI_MARCX
        VALUATIONDATA = WA_BAPI_MBEW
        VALUATIONDATAX = WA_BAPI_MBEWX
        TABLES
        MATERIALDESCRIPTION = WA_BAPI_MAKT
        RETURNMESSAGES = WA_BAPI_MATRETURN.
        ENDIF.

        COMMIT WORK AND WAIT.

        LOOP AT WA_BAPI_MATRETURN WHERE TYPE = 'E'.
        W_CONT = W_CONT + 1.
        WRITE:/ WA_BAPIMATHEAD-MATERIAL, 12 T_MATERIAL-IND_SECTOR, 17 T_MATERIAL-MATL_TYPE,
        25 T_MATERIAL-MATL_DESC, 'Error en la carga de material: ',
        WA_BAPI_MATRETURN-MESSAGE_V1, WA_BAPI_MATRETURN-MESSAGE_V2,
        WA_BAPI_MATRETURN-MESSAGE_V3, WA_BAPI_MATRETURN-MESSAGE_V4.
        ENDLOOP.

        ENDFORM. " bapi_save_data


        *&---------------------------------------------------------------------*
        *& Form CARGA_CATEGORIA_CLASE
        *&---------------------------------------------------------------------*
        FORM CARGA_CATEGORIA_CLASE .
        REFRESH: BDCDATA.

        PERFORM LLENAR_BDCDATA USING 'SAPLMGMM' '0060' 'X' '' ''.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RMMG1-MATNR'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '=ENTR'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RMMG1-MATNR' WA_BAPIMATHEAD-MATERIAL+10(8).
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RMMG1-MBRSH' WA_MAT-IND_SECTOR.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RMMG1-MTART' WA_MAT-MATL_TYPE.

        PERFORM LLENAR_BDCDATA USING 'SAPLMGMM' '0070' 'X' '' ''.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'MSICHTAUSW-DYTXT(02)'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '=ENTR'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'MSICHTAUSW-KZSEL(02)' 'X'.

        PERFORM LLENAR_BDCDATA USING 'SAPLCLCA' '0602' 'X' '' ''.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RMCLF-KLART'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '=ENTE'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RMCLF-KLART' 'UMA'.

        PERFORM LLENAR_BDCDATA USING 'SAPLCLFM' '0500' 'X' '' ''.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RMCLF-CLASS(01)'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '/00'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RMCLF-CLASS(01)' 'UMAS'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_SUBSCR' 'SAPLCBCM 0199OBJEKT'.

        PERFORM LLENAR_BDCDATA USING 'SAPLCTMS' '0109' 'X' '' ''.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RCTMS-MWERT(01)'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '=BACK'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MNAME(01)' 'TECNOLOGIA'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MNAME(02)' 'FABRICANTE'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MNAME(03)' 'MODELO'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MNAME(04)' 'CAPACIDAD'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MNAME(05)' 'TIPO-UMA'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MNAME(06)' 'DIMENSION'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MNAME(07)' 'NIVELES_NUMERO'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MWERT(01)' WA_MAT-TECNOLOGIA.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MWERT(02)' WA_MAT-FABRICANTE.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MWERT(03)' WA_MAT-MODELO.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MWERT(04)' WA_MAT-CAPACIDAD.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MWERT(05)' WA_MAT-TIPO_UMA.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MWERT(06)' WA_MAT-DIMENSION.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RCTMS-MWERT(07)' WA_MAT-NIVELES_NUMERO.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_SUBSCR' 'SAPLCBCM 0499HEADER'.

        PERFORM LLENAR_BDCDATA USING 'SAPLCLFM' '0500' 'X' '' ''.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RMCLF-CLASS(01)'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '=WECH'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RMCLF-PAGPOS' '1'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_SUBSCR' 'SAPLCBCM 0199OBJEKT'.

        PERFORM LLENAR_BDCDATA USING 'SAPLCLCA' '0602' 'X' '' ''.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RMCLF-KLART'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '=ENTE'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RMCLF-KLART' 'SA1'.

        PERFORM LLENAR_BDCDATA USING 'SAPLCLFM' '0500' 'X' '' ''.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RMCLF-CLASS(01)'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '/00'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RMCLF-CLASS(01)' WA_MAT-SAC.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_SUBSCR' 'SAPLCBCM 0199OBJEKT'.

        PERFORM LLENAR_BDCDATA USING 'SAPLCLFM' '0500' 'X' '' ''.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_CURSOR' 'RMCLF-CLASS(01)'.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_OKCODE' '=SAVE'.

        IF WA_MAT-SAC IS NOT INITIAL.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RMCLF-PAGPOS' '1'.
        ELSE.
        PERFORM LLENAR_BDCDATA USING '' '' '' 'RMCLF-PAGPOS' '0'.
        ENDIF.

        PERFORM LLENAR_BDCDATA USING '' '' '' 'BDC_SUBSCR' 'SAPLCBCM 0199OBJEKT'.

        CALL TRANSACTION 'MM01' USING BDCDATA MODE W_MODE UPDATE 'S' MESSAGES INTO MESSTAB.

        IF SY-SUBRC = 0.
        IF WA_MAT-SAC IS INITIAL.
        WRITE:/ WA_BAPIMATHEAD-MATERIAL, 'Material creado con error en asignación de categoria de clase SA1.'.
        ELSE.
        WRITE:/ WA_BAPIMATHEAD-MATERIAL+10(8), 20 'Material procesado correctamente.'.
        ENDIF.

        ELSE.
        LOOP AT MESSTAB.
        WRITE:/ WA_BAPIMATHEAD-MATERIAL+10(8), MESSTAB-MSGTYP, MESSTAB-MSGV1,
        MESSTAB-MSGV2, MESSTAB-MSGV3, MESSTAB-MSGV4.
        ENDLOOP.
        ENDIF.

        COMMIT WORK AND WAIT.
        ENDFORM. " CARGA_CATEGORIA_CLASE


        *&---------------------------------------------------------------------*
        *& Form LLENAR_BDCDATA
        *&---------------------------------------------------------------------*
        FORM LLENAR_BDCDATA USING PROGRAM DYNPRO DYNBEGIN FNAM FVAL.
        BDCDATA-PROGRAM = PROGRAM.
        BDCDATA-DYNPRO = DYNPRO.
        BDCDATA-DYNBEGIN = DYNBEGIN.
        BDCDATA-FNAM = FNAM.
        BDCDATA-FVAL = FVAL.
        APPEND BDCDATA.
        CLEAR BDCDATA.
        ENDFORM. " LLENAR_BDCDATA

        Suerte!!

        Comentario

        • viaji
          Member
          • may
          • 36

          #5
          Hola!
          Claudia, si aun andas por aqui, estoy usando ese codigo que pasaste, ligeramente reformado, para crear y actualizar materiales llegados desde un catalogo externo. la integracion en mi caso es via Proxy asi que no necesito la tabla excell. Lo que queria preguntar es, usas un batchinput para las caracteristicas: hay alguna otra forma de hacerlo? alguien sabe de algun otro metodo? no me gusta demasiado lo de poner batchinputs aunq a veces "hay que". en este caso parece que las caracteristicas no se pueden generar con la funcion 'BAPI_MATERIAL_SAVEDATA'.

          gracias.

          Comentario

          • ballan
            Senior Member
            • oct
            • 671

            #6
            Con la BAPI_OBJCL_CREATE puedes crear caracteristicas para cualquier tipo de objeto, ya sea un material un lote o lo que sea
            Eso si, si grabas el material con la BAPI, tendras que crear las caracteristicas una vez que ya exista el material en BBDD, es decir despues de la bapi_material_savedata y el commit

            Comentario

            • viaji
              Member
              • may
              • 36

              #7
              Muchas gracias Ballan! Ya he hecho una prueba con la bapi que me pasas. En principio me da error: "Function module OBJECT_CHECK_AUSP not found". Seguro que le estoy pasando mal los parametros pero no veo que puedo estar haciendo mal. Aparentemente el nombre de la tabla AUSP pero he visto que es en esa tabla donde reside el valor de la caracteristica en un ejemplo de material que tengo. Tienes algun ejemplo de uso de esa BAPI? o sabes decirme que estoy haciendo mal? te indico los parametros que le paso:

              OBJECTKEYNEW = mi_numero_de_material (p.e. en mi caso 'HG_TEST2')
              OBJECTTABLENEW = AUSP
              CLASSNUMNEW = Z_MATERIALS (es el nombre de la clase que hay creada y en la que estan añadidas las caracteristicas para el material HG_TEST2)
              CLASSTYPENEW = 001 (la que estoy usando)

              en ALLOCVALUESCHAR he metido la caracteristica a actualizar en el campo CHARACT (='REMARK' en mi caso, este valor lo he visto comprobando en la tabla AUSP la entrada existente para mi material) y un texto cualquiera en el campo VALUE_CHAR que pretendo que sea el valor que se actualice en la caracteristica del material.


              Muchas gracias por la ayuda!

              Javier

              Comentario

              • ballan
                Senior Member
                • oct
                • 671

                #8
                En OBJECTTABLENEW prueba a poner MARA

                Comentario

                • viaji
                  Member
                  • may
                  • 36

                  #9
                  Probado!!! Perfecto. Muchas gracias!

                  eso si, al final he cambiado de BAPI. uso la BAPI_OBJCL_CHANGE ya que no solo necesito crear sino tambien actualizar materiales ya existentes y esta hace ambas cosas.

                  un saludo desde Suecia!

                  Comentario

                  • patitoandressap
                    Junior Member
                    • dic
                    • 4

                    #10
                    Necesito ayudaaa

                    tengo el siguiente problema, necesito cargar caracteristicas de un lote logistico desde un archivo excel, pero cuando las cargo estas caracteristicas no se graban. probe con

                    BAPI_OBJCL_CHANGE_KEY

                    y no lo hace...


                    *&---------------------------------------------------------------------*
                    *& Report ZMM_CARGA_CARACTERISTICA_LOTE
                    *& Carga masiva de características a lotes
                    *&---------------------------------------------------------------------*
                    REPORT zmm_carga_caracteristica_lote NO STANDARD PAGE HEADING LINE-SIZE 100.

                    *----------------------------------------------------------------------
                    * Datos globales
                    *----------------------------------------------------------------------

                    DATA: BEGIN OF t_message OCCURS 0.
                    INCLUDE STRUCTURE bapiret2.
                    DATA: END OF t_message.


                    DATA: BEGIN OF t_archivo OCCURS 0,
                    lineas(42),
                    END OF t_archivo.


                    DATA: BEGIN OF t_carga OCCURS 0,
                    charg(10),
                    valor(30),
                    END OF t_carga.


                    DATA: BEGIN OF t_caract OCCURS 40,
                    atnam LIKE cabn-atnam,
                    atinn LIKE cabn-atinn,
                    atfor LIKE cabn-atfor,
                    anzst LIKE cabn-anzst,
                    END OF t_caract.


                    *** Estructuras Bapi
                    DATA: BEGIN OF wa_allocvaluescharnew OCCURS 0.
                    INCLUDE STRUCTURE bapi1003_alloc_values_char.
                    DATA: END OF wa_allocvaluescharnew.

                    DATA: BEGIN OF wa_allocvaluesnumnew OCCURS 0.
                    INCLUDE STRUCTURE bapi1003_alloc_values_num.
                    DATA: END OF wa_allocvaluesnumnew.

                    DATA: BEGIN OF wa_allocvaluescurrnew OCCURS 0.
                    INCLUDE STRUCTURE bapi1003_alloc_values_curr.
                    DATA: END OF wa_allocvaluescurrnew.



                    *** Variables
                    DATA: lineas TYPE i,
                    w_rc LIKE sy-subrc,
                    mens LIKE message,
                    date_err(1) TYPE c,
                    swc(1).

                    DATA: c_totreg(6),
                    c_vanreg(6).

                    DATA: v_atinn LIKE cabn-atinn,
                    v_atfor LIKE cabn-atfor,
                    v_anzst LIKE cabn-anzst.




                    *----------------------------------------------------------------------
                    * SELECTION-SCREEN
                    *----------------------------------------------------------------------
                    SELECTION-SCREEN BEGIN OF BLOCK uno WITH FRAME TITLE text-001.

                    PARAMETER: p_matnr LIKE mara-matnr OBLIGATORY,
                    p_atnam LIKE cabn-atnam OBLIGATORY.
                    PARAMETER: p_file LIKE rlgrap-filename OBLIGATORY.

                    SELECTION-SCREEN END OF BLOCK uno.


                    *---------------------------------------------
                    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
                    PERFORM buscar_archivo USING p_file.


                    *----------------------------------------------------------------------
                    * START-OF-SELECTION.
                    *----------------------------------------------------------------------
                    START-OF-SELECTION.
                    REFRESH: t_archivo, t_carga, t_caract.


                    * *** Validar característica
                    SELECT SINGLE atinn atfor anzst
                    INTO (v_atinn, v_atfor, v_anzst)
                    FROM cabn
                    WHERE atnam = p_atnam.

                    IF sy-subrc NE 0.
                    MESSAGE i899(m3) WITH 'Caractarística no válida'.
                    ELSE.
                    * *** Leer archivo de entrada y cargar datos
                    CALL FUNCTION 'WS_UPLOAD'
                    EXPORTING
                    filename = p_file
                    filetype = 'ASC'
                    TABLES
                    data_tab = t_archivo
                    EXCEPTIONS
                    conversion_error = 1
                    invalid_table_width = 2
                    invalid_type = 3
                    no_batch = 4
                    unknown_error = 5
                    gui_refuse_filetransfer = 6
                    OTHERS = 7.

                    IF sy-subrc EQ 0.
                    LOOP AT t_archivo.
                    CLEAR t_carga.
                    SPLIT t_archivo AT ';'
                    INTO t_carga-charg t_carga-valor.
                    APPEND t_carga.
                    ENDLOOP.

                    DESCRIBE TABLE t_carga LINES lineas.
                    IF lineas > 0.
                    PERFORM clasificar_lotes.
                    ELSE.
                    MESSAGE i899(m3) WITH 'No existen lotes para procesar'.
                    ENDIF.

                    ELSE.
                    MESSAGE i899(m3) WITH 'Error en la carga del archivo'.
                    ENDIF.
                    ENDIF.



                    *----------------------------------------------------------------------
                    * TOP-OF-PAGE
                    *----------------------------------------------------------------------
                    TOP-OF-PAGE.
                    WRITE: /'CARGA MASIVA DE CARACTERISTICAS A LOTES -', sy-datum, sy-uname NO-GAP.
                    WRITE: /'Material: ', p_matnr.
                    WRITE: /'Caracteristica: ', p_atnam.
                    SKIP.
                    WRITE: 01 'Lote', 11 'Valor', 30 'Log'.
                    ULINE.

                    ************************************************** **********************





                    *&---------------------------------------------------------------------*
                    *& Form clasificar_lotes
                    *&---------------------------------------------------------------------*
                    FORM clasificar_lotes.
                    DATA: w_matnr LIKE mara-matnr,
                    w_cuobjbm LIKE mch1-cuobj_bm,
                    w_obtab LIKE inob-obtab,
                    w_objek LIKE inob-objek,
                    w_class LIKE klah-class,
                    w_clint LIKE kssk-clint,
                    w_valor(8),
                    w_mbapi(80),
                    logline(100).
                    CLEAR: t_message.


                    LOOP AT t_carga WHERE charg IS NOT INITIAL.
                    REFRESH: wa_allocvaluescharnew,
                    wa_allocvaluesnumnew,
                    wa_allocvaluescurrnew.
                    CLEAR: wa_allocvaluescharnew,
                    wa_allocvaluesnumnew,
                    wa_allocvaluescurrnew,
                    date_err,
                    w_mbapi,
                    logline.
                    CONCATENATE t_carga-charg t_carga-valor
                    INTO logline SEPARATED BY space.

                    * *** Buscar clave del objeto a clasificar
                    SELECT SINGLE cuobj_bm matnr
                    INTO (w_cuobjbm, w_matnr)
                    FROM mch1
                    WHERE charg = t_carga-charg
                    AND matnr = p_matnr.

                    IF sy-subrc EQ 0.
                    SELECT SINGLE obtab objek
                    INTO (w_obtab,w_objek)
                    FROM inob
                    WHERE cuobj = w_cuobjbm.

                    * *** Buscar clase del objeto
                    SELECT SINGLE clint INTO w_clint
                    FROM kssk
                    WHERE objek = w_cuobjbm
                    AND mafid = 'O'
                    AND klart = '023'.
                    IF sy-subrc = 0.
                    SELECT SINGLE class INTO w_class
                    FROM klah
                    WHERE clint = w_clint.

                    TRANSLATE t_carga-valor USING ',.'.
                    CONDENSE t_carga-valor.


                    CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
                    EXPORTING
                    objectkey = w_objek
                    objecttable = 'MCH1'
                    classnum = w_class
                    classtype = '023'
                    * KEYDATE = SY-DATUM
                    * UNVALUATED_CHARS = ' '
                    language = sy-langu
                    * IMPORTING
                    * STATUS =
                    * STANDARDCLASS =
                    TABLES
                    allocvaluesnum = wa_allocvaluesnumnew
                    allocvalueschar = wa_allocvaluescharnew
                    allocvaluescurr = wa_allocvaluescurrnew
                    return = t_message.


                    * *** Define tipo de dato de caracteristica
                    CASE v_atfor.
                    WHEN 'CHAR' OR 'BOOL'.
                    * wa_allocvaluescharnew-charact = p_atnam.
                    * wa_allocvaluescharnew-value_char = t_carga-valor.
                    * APPEND wa_allocvaluescharnew.
                    LOOP AT wa_allocvaluescharnew WHERE charact = p_atnam.
                    wa_allocvaluescharnew-value_char = t_carga-valor.
                    wa_allocvaluescharnew-value_neutral = t_carga-valor.
                    MODIFY wa_allocvaluescharnew.
                    ENDLOOP.

                    WHEN 'NUM' OR 'TIME'.
                    * wa_allocvaluesnumnew-charact = p_atnam.
                    * wa_allocvaluesnumnew-value_from = t_carga-valor.
                    * APPEND wa_allocvaluesnumnew.
                    LOOP AT wa_allocvaluesnumnew WHERE charact = p_atnam.
                    wa_allocvaluesnumnew-value_from = t_carga-valor.
                    * wa_allocvaluesnumnew-value_from = t_carga-valor.
                    MODIFY wa_allocvaluesnumnew.
                    ENDLOOP.

                    WHEN 'DATE'.
                    CALL FUNCTION 'CONVERT_DATE_TO_INTERN_FORMAT'
                    EXPORTING
                    datum = t_carga-valor
                    dtype = 'DATS'
                    IMPORTING
                    error = date_err
                    idate = w_valor
                    messg = mens.
                    IF date_err = 'X'.
                    CONCATENATE logline '-> Error: Fecha no valida'
                    INTO logline SEPARATED BY space.
                    ENDIF.
                    * wa_allocvaluesnumnew-charact = p_atnam.
                    * wa_allocvaluesnumnew-value_from = w_valor.
                    * APPEND wa_allocvaluesnumnew.
                    LOOP AT wa_allocvaluesnumnew WHERE charact = p_atnam.
                    wa_allocvaluesnumnew-value_from = w_valor.
                    MODIFY wa_allocvaluesnumnew.
                    ENDLOOP.

                    WHEN 'CURR'.
                    * wa_allocvaluescurrnew-charact = p_atnam.
                    * wa_allocvaluescurrnew-value_from = t_carga-valor.
                    * APPEND wa_allocvaluescurrnew.
                    LOOP AT wa_allocvaluescurrnew WHERE charact = p_atnam.
                    wa_allocvaluescurrnew-value_from = t_carga-valor.
                    MODIFY wa_allocvaluescurrnew.
                    ENDLOOP.

                    ENDCASE.


                    * *** Graba solo si no hay error en valor de caract. tipo fecha
                    IF date_err IS INITIAL.
                    * >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> by AGARCIA




                    * CALL FUNCTION 'BAPI_OBJCL_CHANGE_KEY'
                    CALL FUNCTION 'BAPI_OBJCL_CHANGE'
                    EXPORTING
                    objectkey = w_objek
                    objecttable = 'MCH1'
                    classnum = w_class
                    classtype = '023'
                    status = '1'
                    TABLES
                    allocvaluesnumnew = wa_allocvaluesnumnew
                    allocvaluescharnew = wa_allocvaluescharnew
                    allocvaluescurrnew = wa_allocvaluescurrnew
                    return = t_message.








                    IF sy-subrc EQ 0.
                    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
                    EXPORTING
                    wait = 'X'.
                    LOOP AT t_message WHERE type CO 'EA'.
                    CONCATENATE w_mbapi t_message-message ';'
                    INTO w_mbapi SEPARATED BY space.
                    ENDLOOP.
                    IF w_mbapi IS INITIAL.
                    CONCATENATE logline '-> Ok!' INTO logline SEPARATED BY space.
                    ELSE.
                    CONCATENATE logline '-> Error:' w_mbapi
                    INTO logline SEPARATED BY space.
                    ENDIF.
                    ELSE.
                    CONCATENATE logline '-> Error: Problema en ejecucion de BAPI'
                    INTO logline SEPARATED BY space.
                    ENDIF.
                    ENDIF.

                    ELSE.
                    CONCATENATE logline '-> Error: Clase del Objeto no encontrado'
                    INTO logline SEPARATED BY space.
                    ENDIF.

                    ELSE.
                    CONCATENATE logline '-> Error: Clave del Objeto no encontrado'
                    INTO logline SEPARATED BY space.
                    ENDIF.

                    WRITE: / logline.
                    ENDLOOP.

                    WRITE: / '>>>>>>>>>> FIN DEL PROCESO <<<<<<<<<<'.
                    ENDFORM. " clasificar_lotes



                    *---------------------------------------------------------------------*
                    * Form buscar_archivo
                    * Muestra el diálogo para seleccionar el archivo
                    *---------------------------------------------------------+-------------*
                    FORM buscar_archivo CHANGING ie_arch.
                    DATA: v_file1 LIKE dynpread-fieldname,
                    v_file2 LIKE ibipparms-path.
                    v_file1 = ie_arch.

                    CALL FUNCTION 'F4_FILENAME'
                    EXPORTING
                    field_name = v_file1
                    IMPORTING
                    file_name = v_file2.
                    ie_arch = v_file2.
                    ENDFORM. " BUSCAR_ARCHIVO

                    Comentario

                    • jangulo60
                      Member
                      • jul
                      • 35

                      #11
                      Bapi_material_savedata

                      Buenas tardes necesito activar la vista de comercio exterior ? en la bapi no he encontrado algun parametro que me la active por favor si aguen sabe le estare muy agradecido.

                      John A.

                      Comentario

                      Trabajando...