Un Usuario hizo la siguiente pregunta
Hola,
Intento usar el bapi BAPI_MATERIAL_SAVEDATA para crear y modificar contenido.
Gracias a su foro, creé un programa simple para entender cómo funciona el BAPI.
Mi problema es que la BAPI no me da un mensaje de error pero no crea el contenido.
¿Cualquier sugerencia?
INFORME Z_BAPI_MAT.
********************************************** ** ******************
DECLARACIÓN DE ESTRUCTURA *
********************************************** ** ******************
TABLAS: BAPIMATHEAD, «Headerdata
BAPI_MARA, «Clientdata
BAPI_MARAX, «Clientdatax
BAPI_MAKT, «Descripción relevante
BAPIRET2. «Devolver mensajes
DETALLES: V_FILE TYPE STRING.
DETALLES:
COMIENZO DE LSMW_MATERIAL_MASTER,
MATERIA (018) TIPO C, «Número de asunto
TIPO C, «Tipo de material
MBRSH (001) TIPO C, «Sector industrial
WERKS (004) TIPO C, «Planta
MAKTX (040) TYPE C, «Descripción relevante
MEINS (003) TIPO C, «Unidad de medida básica
MATCHL (009) TYPE C, «Grupo de sujetos
FIN LSMW_MATERIAL_MASTER.
************************************************ ********************
DECLARACIÓN DE MESA INTERNA *
************************************************ ********************
* para almacenar los datos de entrada
DETALLES:
COMIENZO DE it_matmaster OCURRE 0.
REVISIÓN DE ESTRUCTURA LSMW_MATERIAL_MASTER.
DETALLES:
FIN it_matmaster.
** para una descripción relevante
DETALLES: DONDE OCURRE IT_MATERIALDESC 0.
ESTRUCTURA INCLUYE BAPI_MAKT.
DETALLES: END IT_MATERIALDESC.
* para devolver mensajes
DETALLES: COMIENZO DE IT_RETURN OCURRE 0.
LECTURA DE LA ESTRUCTURA DE BAPIRET.
DETALLES: FIN DE IT_RETURN.
DETALLES: COMIENZO DE BAPI_MATRETURN2 OCURRE 0.
ESTRUCTURA DE INSTRUCCIONES BAPI_MATRETURN2.
DETALLES: END BAPI_MATRETURN2.
DETALLES: CUANDO OCURRE BAPIRET3 0.
LECTURA DE LA ESTRUCTURA DE BAPIRET.
DETALLES: FIN DE BAPIRET3.
************************************************ ***********************
*
SELECCIÓN DE PANTALLA
************************************************ ***********************
*
SELECCIÓN DE PANTALLA B1 SELECCIÓN DE BLOQUE CON TEXTO TÍTULO MARCO-002.
PARÁMETROS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY predeterminado ‘c: test.txt’.
BLOQUE DE SELECCIÓN DE PANTALLA FINAL B1.
********************************************** ** ******************
PARA ACTUALIZAR LOS DATOS *
********************************************* ** ******************
INICIO-SELECCIONAR.
FUNCIÓN DE APLICACIÓN ‘WS_UPLOAD’
EXPORTACIONES
CODEPAGE = »
FILENAME = p_file
FILETYPE = ‘DAT’
MESAS
data_tab = IT_MATMASTER
.
********************************************** ** ******************
DETALLES DE LAS PERSONAS *
********************************************** ** ******************
BUCLE EN IT_MATMASTER.
BAPIMATHEAD-MATERIAL = IT_MATMASTER-MATNR.
BAPIMATHEAD-IND_SECTOR = IT_MATMASTER-Mbrsh.
BAPIMATHEAD-MATL_TYPE = IT_MATMASTER-Mtart.
BAPIMATHEAD-BASIC_VIEW = ‘X’.
BAPI_MARA-MATL_GROUP = IT_MATMASTER-MATKL.
BAPI_MARA-BASE_UOM = IT_MATMASTER-MEINS.
BAPI_MARAX-MATL_GROUP = ‘X’.
BAPI_MARAX-BASE_UOM = ‘X’.
IT_MATERIALDESC-LANGU = ‘EN’.
IT_MATERIALDESC-MATL_DESC = IT_MATMASTER-MAKTX.
apéndice IT_materialdesc.
FUNCIÓN DE APLICACIÓN ‘BAPI_MATERIAL_SAVEDATA’
EXPORTACIONES
headdata = BAPIMATHEAD
CLIENTDATA = BAPI_MARA
CLIENTDATAX = BAPI_MARAx
FLAG_ONLINE = »
FLAG_CAD_CALL = »
IMPORTANTE
DESCRIPCIÓN = IT_RETURN
MESAS
MATERIALDESCRIPTION = IT_MATERIALDESC
RETURNMESSAGES = BAPI_MATRETURN2
.
FUNCIÓN DE APLICACIÓN ‘BAPI_TRANSACTION_COMMIT’
EXPORTACIONES
ESPERAR = ‘X’
IMPORTANTE
DESCRIPCIÓN = BAPIRET3
.
Mensaje de salida
ESCRIBIR: / IT_MATMASTER-matnr, ‘->’,
IT_RETURN-TYPE,
20 IT_RETURN-ID,
42 IT_RETURN-NUMBER,
45 IT_RETURN-MESSAGE.
bucle en BAPI_MATRETURN2.
escribir: / BAPI_MATRETURN2.
endloop.
bucle en BAPIRET3.
escribir: / BAPIRET3.
endloop.
ENDLOOP.
4 respuestas
Ex miembro
Hola,
Mira estos enlaces
bapimaterialsavedata
bapimaterialsavedata-to-update-mara-append-fields
Sobre,
Santosh
Hola,
está dando todos los parámetros correctamente, intente depurarlo y verificarlo. podría deberse a un problema de compromiso. intente comprobar, en depuración asegúrese de que puede crear el contenido.
o bien puede utilizar este Programa de entrada directa para crear el Contenido.
REPORT Z_MATERIAL_CREATION . **STANDARD STRUCTURES FOR MATERIAL CREATION TABLES: BGR00, BMM00, BMMH1. **DATA Declarations DATA:C_ZTEST(60) TYPE C , C_X TYPE C , C_N TYPE C , V_FILE TYPE STRING. **FILED SYMBOL TO PASS THE NODATA '/' FIELD-SYMBOLS: <F> . ***STRUCTURE TO HOLD THE FLAT FILE DATA DATA: BEGIN OF LSMW_MATERIAL_MASTER, MATNR(018) TYPE C, "Material number MTART(004) TYPE C, "Material type MBRSH(001) TYPE C, "Industry sector WERKS(004) TYPE C, "Plant MAKTX(040) TYPE C, "Material description DISMM(002) TYPE C, "Extra Field Added In the Program as it is required MEINS(003) TYPE C, "Base unit of measure MATKL(009) TYPE C, "Material group SPART(002) TYPE C, "Division LABOR(003) TYPE C, "Lab/office PRDHA(018) TYPE C, "Product hierarchy MSTAE(002) TYPE C, "X-plant matl status MTPOS_MARA(004) TYPE C, "Gen item cat group BRGEW(017) TYPE C, "Gross weight GEWEI(003) TYPE C, "Weight unit NTGEW(017) TYPE C, "Net weight GROES(032) TYPE C, "Size/Dimensions MAGRV(004) TYPE C, "Matl grp pack matls BISMT(018) TYPE C, "Old material number WRKST(048) TYPE C, "Basic material PROFL(003) TYPE C, "DG indicator profile KZUMW(001) TYPE C, "Environmentally rlvt BSTME(003) TYPE C, "Order unit VABME(001) TYPE C, EKGRP(003) TYPE C, "Purchasing group XCHPF(001) TYPE C, "Batch management EKWSL(004) TYPE C, "Purchasing key value WEBAZ(003) TYPE C, "GR processing time MFRPN(040) TYPE C, "Manufacturer part number MFRNR(010) TYPE C, "Manufacturer number VPRSV(001) TYPE C, "Price control indicator STPRS(015) TYPE C, "Standard price BWPRH(014) TYPE C, "Commercial price1 END OF LSMW_MATERIAL_MASTER. **INTERNAL TABLE TO HOLD THE MATERIAL MASTER DATA DATA: BEGIN OF MATERIAL_MASTER OCCURS 0. INCLUDE STRUCTURE LSMW_MATERIAL_MASTER. DATA: END OF MATERIAL_MASTER. ************************************************************************ * SELECTION SCREEN ************************************************************************ SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-002. PARAMETERS:P_FILE LIKE RLGRAP-FILENAME OBLIGATORY. SELECTION-SCREEN END OF BLOCK B1 . ************************************************************************ * AT SELECTION SCREEN ************************************************************************ AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE. CALL FUNCTION 'F4_FILENAME' EXPORTING PROGRAM_NAME = SYST-CPROG DYNPRO_NUMBER = SYST-DYNNR FIELD_NAME = 'P_FILE' IMPORTING FILE_NAME = P_FILE. ************************************************************************ * START-OF_SELECTION ************************************************************************ START-OF-SELECTION. V_FILE = P_FILE. **UPLOADING THE DATA TO THE FLAT FILE CALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = V_FILE FILETYPE = 'ASC' HAS_FIELD_SEPARATOR = 'X' * HEADER_LENGTH = 0 * READ_BY_LINE = 'X' * DAT_MODE = ' ' * CODEPAGE = ' ' * IGNORE_CERR = ABAP_TRUE * REPLACEMENT = "https://answers.sap.com/questions/1373612/#" * IMPORTING * FILELENGTH = * HEADER = TABLES DATA_TAB = MATERIAL_MASTER 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. DELETE MATERIAL_MASTER INDEX 1. ENDIF. **CONSTANTS C_ZTEST = 'Ztest.lsmw.conv'(001). C_X = 'X'(003). C_N ='N'(004). IF NOT MATERIAL_MASTER IS INITIAL. ***POPULATING BGR00 STRUCTURE PERFORM CONVERT_0000. " BGR00 ***POPULATING BMM00 STRUCTURE PERFORM POPULATE_DATA CHANGING BMM00. ***POPULATING BMMH1 STRUCTURE PERFORM POPULATE_DATA CHANGING BMMH1. **LOOPING THE DATA AND UPDATING THE STRUCTURES LOOP AT MATERIAL_MASTER. OPEN DATASET C_ZTEST FOR APPENDING IN TEXT MODE ENCODING DEFAULT. PERFORM CONVERT_0002. " BMM00 PERFORM CONVERT_0003. " BMMH1 CLOSE DATASET C_ZTEST. ENDLOOP. "END OF MATERIAL_MASTER LOOP ENDIF. *&--------------------------------------------------------------------* *& END-OF_SELECTION *&--------------------------------------------------------------------* END-OF-SELECTION. SUBMIT RMDATIND WITH %%%_R_P = C_X WITH %%%_PHY = C_ZTEST WITH SPERR = C_N. *&--------------------------------------------------------------------* *& Form convert_0000 *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM CONVERT_0000. " BGR00 OPEN DATASET C_ZTEST FOR OUTPUT IN TEXT MODE ENCODING DEFAULT . MOVE: '0' TO BGR00-STYPE, 'ZTEST' TO BGR00-GROUP, SY-MANDT TO BGR00-MANDT, SY-UNAME TO BGR00-USNAM, 'X' TO BGR00-XKEEP, '/' TO BGR00-NODATA. TRANSFER BGR00 TO C_ZTEST. CLOSE DATASET C_ZTEST. ENDFORM. "convert_0001 *&--------------------------------------------------------------------* *& Form convert_0002 *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM CONVERT_0002. " BMM00 * --- BMM00-STYPE BMM00-STYPE = '1'. * --- BMM00-TCODE BMM00-TCODE = 'MM01'. * --- BMM00-MATNR IF NOT MATERIAL_MASTER-MATNR IS INITIAL. BMM00-MATNR = MATERIAL_MASTER-MATNR. ELSE. BMM00-MATNR = '/'. ENDIF. * --- BMM00-MBRSH IF NOT MATERIAL_MASTER-MBRSH IS INITIAL. BMM00-MBRSH = MATERIAL_MASTER-MBRSH. ELSE. BMM00-MBRSH = '/'. ENDIF. * --- BMM00-MTART IF NOT MATERIAL_MASTER-MTART IS INITIAL. BMM00-MTART = MATERIAL_MASTER-MTART. ELSE. BMM00-MTART = '/'. ENDIF. * --- BMM00-WERKS IF NOT MATERIAL_MASTER-WERKS IS INITIAL. BMM00-WERKS = MATERIAL_MASTER-WERKS. ELSE. BMM00-WERKS = '/'. ENDIF. BMM00-XEIB1 = 'X'. " BMM00-xeib1 = '/'. BMM00-XEIE1 = 'X'. " BMM00-xeie1 = '/'. BMM00-XEIK1 = 'X'. " BMM00-xeik1 = '/'. TRANSFER BMM00 TO C_ZTEST. ENDFORM. "convert_0002 *&--------------------------------------------------------------------* *& Form convert_0003 *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM CONVERT_0003. " BMMH1 * --- BMMH1-STYPE BMMH1-STYPE = '2'. * --- BMMH1-MEINS IF NOT MATERIAL_MASTER-MEINS IS INITIAL. BMMH1-MEINS = MATERIAL_MASTER-MEINS. ELSE. BMMH1-MEINS = '/'. ENDIF. * --- BMMH1-MAKTX IF NOT MATERIAL_MASTER-MAKTX IS INITIAL. BMMH1-MAKTX = MATERIAL_MASTER-MAKTX. ELSE. BMMH1-MAKTX = '/'. ENDIF. * --- BMMH1-MATKL IF NOT MATERIAL_MASTER-MATKL IS INITIAL. BMMH1-MATKL = MATERIAL_MASTER-MATKL. ELSE. BMMH1-MATKL = '/'. ENDIF. * --- BMMH1-BISMT IF NOT MATERIAL_MASTER-BISMT IS INITIAL. BMMH1-BISMT = MATERIAL_MASTER-BISMT. ELSE. BMMH1-BISMT = '/'. ENDIF. * --- BMMH1-LABOR IF NOT MATERIAL_MASTER-LABOR IS INITIAL. BMMH1-LABOR = MATERIAL_MASTER-LABOR. ELSE. BMMH1-LABOR = '/'. ENDIF. * --- BMMH1-WRKST IF NOT MATERIAL_MASTER-WRKST IS INITIAL. BMMH1-WRKST = MATERIAL_MASTER-WRKST. ELSE. BMMH1-WRKST = '/'. ENDIF. * --- BMMH1-BRGEW IF NOT MATERIAL_MASTER-BRGEW IS INITIAL. BMMH1-BRGEW = MATERIAL_MASTER-BRGEW. ELSE. BMMH1-BRGEW = '/'. ENDIF. * --- BMMH1-NTGEW IF NOT MATERIAL_MASTER-NTGEW IS INITIAL. BMMH1-NTGEW = MATERIAL_MASTER-NTGEW. ELSE. BMMH1-NTGEW = '/'. ENDIF. * --- BMMH1-GEWEI IF NOT MATERIAL_MASTER-GEWEI IS INITIAL. BMMH1-GEWEI = MATERIAL_MASTER-GEWEI. ELSE. BMMH1-GEWEI = '/'. ENDIF. * --- BMMH1-GROES IF NOT MATERIAL_MASTER-GROES IS INITIAL. BMMH1-GROES = MATERIAL_MASTER-GROES. ELSE. BMMH1-GROES = '/'. ENDIF. * --- BMMH1-SPART IF NOT MATERIAL_MASTER-SPART IS INITIAL. BMMH1-SPART = MATERIAL_MASTER-SPART. ELSE. BMMH1-SPART = '/'. ENDIF. * --- BMMH1-BSTME IF NOT MATERIAL_MASTER-BSTME IS INITIAL. BMMH1-BSTME = MATERIAL_MASTER-BSTME. ELSE. BMMH1-BSTME = '/'. ENDIF. * --- BMMH1-EKWSL IF NOT MATERIAL_MASTER-EKWSL IS INITIAL. BMMH1-EKWSL = MATERIAL_MASTER-EKWSL. ELSE. BMMH1-EKWSL = '/'. ENDIF. * --- BMMH1-EKGRP IF NOT MATERIAL_MASTER-EKGRP IS INITIAL. BMMH1-EKGRP = MATERIAL_MASTER-EKGRP. ELSE. BMMH1-EKGRP = '/'. ENDIF. * --- BMMH1-XCHPF IF NOT MATERIAL_MASTER-XCHPF IS INITIAL. BMMH1-XCHPF = MATERIAL_MASTER-XCHPF. ELSE. BMMH1-XCHPF = '/'. ENDIF. * --- BMMH1-WEBAZ IF NOT MATERIAL_MASTER-WEBAZ IS INITIAL. BMMH1-WEBAZ = MATERIAL_MASTER-WEBAZ. ELSE. BMMH1-WEBAZ = '/'. ENDIF. IF NOT MATERIAL_MASTER-DISMM IS INITIAL. BMMH1-DISMM = MATERIAL_MASTER-DISMM. ELSE. BMMH1-DISMM = '/'. ENDIF. * --- BMMH1-VPRSV IF NOT MATERIAL_MASTER-VPRSV IS INITIAL. BMMH1-VPRSV = MATERIAL_MASTER-VPRSV. ELSE. BMMH1-VPRSV = '/'. ENDIF. BMMH1-VERPR = '/'. * --- BMMH1-STPRS IF NOT MATERIAL_MASTER-STPRS IS INITIAL. BMMH1-STPRS = MATERIAL_MASTER-STPRS. ELSE. BMMH1-STPRS = '/'. ENDIF. * --- BMMH1-BWPRH IF NOT MATERIAL_MASTER-BWPRH IS INITIAL. BMMH1-BWPRH = MATERIAL_MASTER-BWPRH. ELSE. BMMH1-BWPRH = '/'. ENDIF. * --- BMMH1-PRDHA IF NOT MATERIAL_MASTER-PRDHA IS INITIAL. BMMH1-PRDHA = MATERIAL_MASTER-PRDHA. ELSE. BMMH1-PRDHA = '/'. ENDIF. * --- BMMH1-VABME IF NOT MATERIAL_MASTER-VABME IS INITIAL. BMMH1-VABME = MATERIAL_MASTER-VABME. ELSE. BMMH1-VABME = '/'. ENDIF. * --- BMMH1-MAGRV IF NOT MATERIAL_MASTER-MAGRV IS INITIAL. BMMH1-MAGRV = MATERIAL_MASTER-MAGRV. ELSE. BMMH1-MAGRV = '/'. ENDIF. * --- BMMH1-KZUMW IF NOT MATERIAL_MASTER-KZUMW IS INITIAL. BMMH1-KZUMW = MATERIAL_MASTER-KZUMW. ELSE. BMMH1-KZUMW = '/'. ENDIF. * --- BMMH1-MFRNR IF NOT MATERIAL_MASTER-MFRNR IS INITIAL. BMMH1-MFRNR = MATERIAL_MASTER-MFRNR. ELSE. BMMH1-MFRNR = '/'. ENDIF. * --- BMMH1-MFRPN IF NOT MATERIAL_MASTER-MFRPN IS INITIAL. BMMH1-MFRPN = MATERIAL_MASTER-MFRPN. ELSE. BMMH1-MFRPN = '/'. ENDIF. * * BMMH1-MPROF = '/'. * --- BMMH1-MSTAE IF NOT MATERIAL_MASTER-MSTAE IS INITIAL. BMMH1-MSTAE = MATERIAL_MASTER-MSTAE. ELSE. BMMH1-MSTAE = '/'. ENDIF. * --- BMMH1-PROFL IF NOT MATERIAL_MASTER-PROFL IS INITIAL. BMMH1-PROFL = MATERIAL_MASTER-PROFL. ELSE. BMMH1-PROFL = '/'. ENDIF. * --- BMMH1-MTPOS_MARA IF NOT MATERIAL_MASTER-MTPOS_MARA IS INITIAL. BMMH1-MTPOS_MARA = MATERIAL_MASTER-MTPOS_MARA. ELSE. BMMH1-MTPOS_MARA = '/'. ENDIF. TRANSFER BMMH1 TO C_ZTEST. ENDFORM. "convert_0003 *&---------------------------------------------------------------------* *& Form POPULATE_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * <--P_BLF text *----------------------------------------------------------------------* FORM POPULATE_DATA CHANGING P_BLF. DATA: L_NUM TYPE I. DO. L_NUM = L_NUM + 1. ASSIGN COMPONENT L_NUM OF STRUCTURE P_BLF TO <F>. IF SY-SUBRC <> 0. EXIT. ENDIF. MOVE BGR00-NODATA TO <F>. ENDDO. ENDFORM. " POPULATE_DATA
Sobre
vijay
Ex miembro
Problema resuelto … Usé CONVERSION_EXIT_MATN1_INPUT para convertir un número de contenido.
Ex miembro
¿Alguien sabe si hay un FM que llena la estructura BAPI_MATERIAL_SAVEDATA para un ya relevante presente en SAP?
Gracias
Salvatore