MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 15/05/07, 10:29:36
Ignacio Luis Díaz Jiménez Ignacio Luis Díaz Jiménez is offline
Junior Member
 
Fecha de Ingreso: mar 2007
Mensajes: 8
Bapi_material_savedata

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

Gracias.
Ignacio
Responder Con Cita
  #2  
Viejo 16/05/07, 17:05:35
Avatar de Claudia Valdespino
Claudia Valdespino Claudia Valdespino is offline
Member
 
Fecha de Ingreso: mar 2007
Localización: Lima - Perú
Mensajes: 54
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.
Responder Con Cita
  #3  
Viejo 16/05/07, 18:45:36
Avatar de Marco
Marco Marco is offline
Senior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 141
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
Responder Con Cita
  #4  
Viejo 17/05/07, 15:22:31
Ignacio Luis Díaz Jiménez Ignacio Luis Díaz Jiménez is offline
Junior Member
 
Fecha de Ingreso: mar 2007
Mensajes: 8
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

Responder Con Cita
  #5  
Viejo 04/02/08, 13:59:18
viaji viaji is offline
Member
 
Fecha de Ingreso: may 2007
Mensajes: 36
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.
Responder Con Cita
  #6  
Viejo 05/02/08, 13:30:38
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671
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
Responder Con Cita
  #7  
Viejo 06/02/08, 13:43:28
viaji viaji is offline
Member
 
Fecha de Ingreso: may 2007
Mensajes: 36
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
Responder Con Cita
  #8  
Viejo 08/02/08, 08:07:48
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671
En OBJECTTABLENEW prueba a poner MARA
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 20:46:03.


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