BAPI_COMMIT_WORK no borra memoria de la BAPI URGE!!!!1

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Jonathan Barrio Rodriguez
    Senior Member
    • oct
    • 199

    #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.
    Barrio Rodriguez, Jonathan.
    _____________________________________
    "No sigas a quien haya encontrado la verdad sino a quien la busque"
  • stormshadow
    Senior Member
    • jun
    • 117

    #2
    Que onda brother!, oye pues yo estoy implementando esa bapi y ya la tengo casi lista, pero tengo una preguntota, este campo: COND_NO que es el N° de registro de la condicón pues como lo obtienes? lo que pasa es que supuestamente se tiene que crear al crear el registro, o sea que se tiene que dejar en blanco para que se genere, pero si lo dejo en blanco no me crea nada! en cambio si le pongo un valor si m crea el registro...
    Bueno esa es mi duda, gracias de antemano.
    "Si quieres resultados distintos, no hagas siempre lo mismo" .... Einstein

    Comentario

    • sanchezgc
      Junior Member
      • mar
      • 9

      #3
      Intenta meter en un include zupdate.

      la sentencia set update task local.

      Colocala el include antes o despues de la bapi. pruebalo a mi me funcionó.

      Comentario

      Trabajando...