#1
|
||||
|
||||
BAPI_COMMIT_WORK no borra memoria de la BAPI URGE!!!!1
hOLA, Uso 'bapi_price_conditions' para modificar REGISTROS DE CONDICIONES en SD. Tengo que modificar muchos en un mismo porgrama... EL CASO es que meto un registro a la BAPI... HAGO EL COMMIT WORK ( function BAPI_TRANSACTION_COMMIT) Y al meter una serie de registros me explota en DUMP por unA VARIABLE que guada un OFFSET... No se me borran las variables ni las tablas de la memoria, osea al llamar a la BAPI DE nuevo me doy cuenta que los objetos del grupo de funciones que llama la BAPI NO ESTAN INICIADOS... ALGUIEN SABE ALGUN TRUCO PARA ESTO??? gracias de antemano... pego algo de codigo a ver si ayuda ****************************************** loop at KONV_H where VBELN = TABLA_ALV-VBELN and KNUMH = TABLA_ALV-KNUMH. perform BAPI_CONDICIONES tables IT_RET2. if IT_RET2[] is not INITIAL. read table IT_RET2 with key TYPE = 'E' transporting no fields. if SY-SUBRC = 0. else. ********************************************************************************* ** Hemos comprobado dentro de esta condición el cambio de fecha en **condiciones ** para saber si informarlo en el mensaje y tambien, actualizamos tabla, para ** mostrarla en la pantalla siguiente, correctamente call function 'BAPI_TRANSACTION_COMMIT' *EXPORTING * WAIT = 5 importing RETURN = WA_RET2. endif. clear: IT_RET2. refresh: IT_RET2. endif. *&---------------------------------------------------------------------* *& Form BAPI_CONDICIONES *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form BAPI_CONDICIONES tables IT_RET2." CHANGING IT_RET2. *____________________________________________________________________* * ESTRUCTURAS PARA LA BAPI DE ACTUALIZCION Y CRACCION CONDICIONES PRECIO* *====================================================================* *VAROABLES * DATA SELECCION(2) TYPE C. * DATA T_SELECCION(15) TYPE C. * DATA: ESCALAS(13) TYPE C. * DATA: CANTIDAD(13) TYPE C. * DATA: UNIDADES(6) TYPE C. data: POS type I. * T_POS(02) TYPE C. * DATA: T_KSTBM(15) TYPE C, * T_KBETR(15) TYPE C, * T_KONMS(15) TYPE C. * data: TABLA(3) type C. * DATA: c_varkey(100) TYPE C. * DATA COPY_SYTABIX LIKE SY-TABIX. *--------------------------------------------------------------------* * structures data: WA_CONDCT type BAPICONDCT. data: WA_CONDHD type BAPICONDHD. data: WA_CONDIT type BAPICONDIT. data: WA_CONDQS type BAPICONDQS. data: WA_CONDVS type BAPICONDVS. data: WA_RET2 type BAPIRET2. data: WA_KNUMHS type BAPIKNUMHS. data: WA_MEM_INITIAL type CND_MEM_INITIAL. data: IT_CONDCT type table of BAPICONDCT. data: IT_CONDHD type table of BAPICONDHD. data: IT_CONDIT type table of BAPICONDIT. data: IT_CONDQS type table of BAPICONDQS. data: IT_CONDVS type table of BAPICONDVS. * data: IT_RET2 type table of BAPIRET2. data: IT_KNUMHS type table of BAPIKNUMHS. data: IT_MEM_INITIAL type table of CND_MEM_INITIAL. data: OPERACION(3) type C, "'009'. NREGISTRO like VBAK-KNUMV."ZESTTAR-KNUMH. " '$000000001'. data: KONV_H_M type standard table of KONM with header line. NREGISTRO = KONV_H-KNUMH. "TARIFAS-KNUMV EN MM Y TABLA_ALV-KNUMV EN SD. ***************** *TABLA IT_CONDCT.*" TI_BAPICONDCT STRUCTURE BAPICONDCT *A965 ö A598 ***************** *nota: *operacion: *004 = modificar *009 = crear WA_CONDCT-OPERATION = '004'."OPERACION. WA_CONDCT-COND_NO = NREGISTRO. WA_CONDCT-TABLE_NO = KONV_H-KOTABNR."KNUMH. "tabla ESTABA EN WA_CONDCT-APPLICATIO = KONV_H-KAPPL. "V PARA SD; M EN MM. WA_CONDCT-COND_TYPE = KONV_H-KSCHL. "'ZCS0'. WA_CONDCT-COND_USAGE = KONV_H-KVEWE. "'A'. WA_CONDCT-VARKEY = KONV_H-VAKEY. "c_varkey. WA_CONDCT-VALID_FROM = KONV_H-KOTABNR_DATAB. "'20091101'. WA_CONDCT-VALID_TO = TABLA_ALV-VENDDAT. "KONV_H-DATBI. "' append WA_CONDCT to IT_CONDCT. *____________________________________________________________________* ***************** *" TI_BAPICONDHD STRUCTURE BAPICONDHD *KONH ***************** WA_CONDHD-OPERATION = '004'. WA_CONDHD-COND_NO = NREGISTRO. WA_CONDHD-SD_DOC = KONV_H-VBELN. WA_CONDHD-ITM_NUMBER = KONV_H-KPOSN. WA_CONDHD-CREATED_BY = SY-UNAME. WA_CONDHD-CREAT_DATE = SY-DATUM. WA_CONDHD-COND_USAGE = KONV_H-KVEWE. "'A'. "si es 'E' crea una WA_CONDHD-TABLE_NO = KONV_H- WA_CONDHD-APPLICATIO = KONV_H-KAPPL. "'M'. WA_CONDHD-VARKEY = KONV_H-VAKEY. " c_varkey. WA_CONDHD-VALID_TO = TABLA_ALV-VENDDAT."KONV_H-DATBI WA_CONDHD-VALID_FROM = KONV_H-DATAB. "'20091101'. *READ TABLE I_KONDAT WITH key VBELN = TABLA_ALV-VBELN. *indice = sy-tabix. *if sy-SUBRC = 0. WA_CONDHD-COND_TYPE = KONV_H-KSCHL. "'ZCS0'. *endif. "'ZSC0'. append WA_CONDHD to IT_CONDHD. case KONV_H-KSCHL. when 'ZXL1'. ********************** *" TI_BAPICONDIT STRUCTURE BAPICONDIT ********************** WA_CONDIT-OPERATION = '004'. "023 los datos no se han de importar.'"OPERACION. WA_CONDIT-COND_NO = NREGISTRO. WA_CONDIT-SD_DOC = KONV_H-VBELN. WA_CONDIT-ITM_NUMBER = KONV_H-KPOSN. WA_CONDIT-COND_COUNT = KONV_H-KOPOS. "'01'. WA_CONDIT-APPLICATIO = KONV_H-KAPPL."'M'. WA_CONDIT-COND_TYPE = KONV_H-KSCHL. "'ZSC0'. WA_CONDIT-SCALETYPE = KONV_H-KNPRS."'A'. "Clase de escala WA_CONDIT-SCALEBASIN = KONV_H-KZBZG. "'C'. "Indicador: WA_CONDIT-SCALE_QTY = KONV_H-KPEIN. "I_TARIFAS- WA_CONDIT-COND_P_UNT = KONV_H-KPEIN. "I_TARIFAS- WA_CONDIT-COND_UNIT = KONV_H-KMEIN. "Unidad de medida WA_CONDIT-CALCTYPCON = KONV_H-KRECH. "'C'. "Regla de WA_CONDIT-COND_VALUE = KONV_H-KBETR. "Importe de moneda WA_CONDIT-CONDCURR = KONV_H-WAERS. "Unidad de append WA_CONDIT to IT_CONDIT. when 'ZXP1'. select * into corresponding fields of table KONV_H_M from KONM for all entries in KONV_H where KNUMH = KONV_H-KNUMH and KNUMH = NREGISTRO."NREGISTRO. delete adjacent duplicates from KONV_H_M. WA_CONDIT-OPERATION = '004'. "023 los datos no se han de imp WA_CONDIT-COND_NO = NREGISTRO. WA_CONDIT-SD_DOC = KONV_H-VBELN. WA_CONDIT-ITM_NUMBER = KONV_H-KPOSN. WA_CONDIT-COND_COUNT = KONV_H-KOPOS. "'01'. WA_CONDIT-APPLICATIO = KONV_H-KAPPL."'M'. WA_CONDIT-COND_TYPE = KONV_H-KSCHL. "'ZSC0'. WA_CONDIT-SCALETYPE = KONV_H-KZBZG."'B'. "Clase de e WA_CONDIT-SCALEBASIN = KONV_H-KNPRS."'C'. "Indicador: WA_CONDIT-SCALE_QTY = KONV_H-KSTBM. "KONV_H-KPEIN. "Cantidad WA_CONDIT-COND_P_UNT = KONV_H-KPEIN. " WA_CONDIT-COND_UNIT = KONV_H-KMEIN. "Unidad de medida WA_CONDIT-CALCTYPCON = KONV_H-KRECH. "'C'. "Regla de WA_CONDIT-COND_VALUE = KONV_H-KBETR. "Importe de moneda WA_CONDIT-CONDCURR = 'EUR'."KONV_H_M-KONWA. append WA_CONDIT to IT_CONDIT. POS = 1. **************** *SORT I_TARIFAS BY NTARIFA ASCENDING. * Estructura BAPI de KONM con nombres de campo en inglés **************** clear: KONV_H_M. loop at KONV_H_M. " where KOPOS <> 1. *" TI_BAPICONDQS STRUCTURE BAPICONDQS WA_CONDQS-OPERATION = '004'."OPERACION."con '005' funciona bien. WA_CONDQS-SD_DOC = KONV_H-VBELN. "'$000000001'. "documento WA_CONDQS-ITM_NUMBER = KONV_H-KPOSN. "10. WA_CONDQS-COND_NO = NREGISTRO. "Nº registro condición WA_CONDQS-COND_COUNT = KONV_H_M-KOPOS. WA_CONDQS-LINE_NO = KONV_H_M-KLFN1. " WA_CONDQS-SCALE_QTY = KONV_H_M-KSTBM."100000. "Cantidad de la condición de base de escala WA_CONDQS-COND_UNIT = 'M3'. WA_CONDQS-CURRENCY = KONV_H_M-KBETR. WA_CONDQS-CONDCURR = 'EUR'. " KONV_H-KONWA. append WA_CONDQS to IT_CONDQS. add 1 to POS. clear: KONV_H_M. endloop. clear: KONV_H_M. refresh: KONV_H_M. endcase. data: IS_CRMSFK like BAPICRMSFK. concatenate WA_CONDCT-COND_USAGE "KONV_H-KVEWE WA_CONDCT-COND_NO " NREGISTRO '01'"WA_CONDCT- KONV_H-DATBI " WA_CONDCT-VALID_TO into IS_CRMSFK-SFA_KEY_P. * MOVE WA_CONDCT-VARKEY TO is_crmsfk-SFA_KEY_P. move WA_CONDCT-COND_NO to IS_CRMSFK-LINE_NO."NREGISTRO BREAK SE04524. call function 'CND_MAP_KNUMH_EXTRACT_MAPPING' exporting PI_BAPICRMSFK = IS_CRMSFK. call function 'CND_MAP_KNUMH_OLD_SET' exporting PI_KVEWE = WA_CONDCT-COND_USAGE PI_KNUMH_TMP = WA_CONDCT-COND_NO PI_DATBI = KONV_H-KOTABNR_DATBI. call function 'CND_MAP_KNUMH_READ_DB'. call function 'BAPI_PRICES_CONDITIONS' * EXPORTING * PI_initialmode = 'X' * PI_BLOCKNUMBER = tables TI_BAPICONDCT = IT_CONDCT TI_BAPICONDHD = IT_CONDHD TI_BAPICONDIT = IT_CONDIT TI_BAPICONDQS = IT_CONDQS TI_BAPICONDVS = IT_CONDVS TO_BAPIRET2 = IT_RET2 "it_ret2 TO_BAPIKNUMHS = IT_KNUMHS TO_MEM_INITIAL = IT_MEM_INITIAL exceptions UPDATE_ERROR = 1 others = 2. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|