Transaccion VA01

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • amam2605
    Senior Member
    • ene
    • 150

    #1

    Transaccion VA01

    Hola

    Estoy realizando un programa (BI) de la transaccion VA01, pero no me esta tomando los valores de las cantidades.

    El archivo esta asi:

    Nro Pedido Material Cantidad
    10000102 800120 2
    800121 3

    Si me puedes dar una ayuda, se lo agradeceria mucho.

    Gracias

    Saludos

    Este es el codigo:

    REPORT ZBI_DEVOLUCION NO STANDARD PAGE HEADING.




    * Definición de tabla que recibe datos del archivo de texto
    TYPES: BEGIN OF REC_T,
    TIPPED1(4), " Tipo pedido
    OV(4), " Organizacion Venta
    CANAL(2), " Canal
    SECTOR(2), " Sector
    PEDIDO(10), " Nro. pedido
    POS(6), " Posicion
    CANTIDAD(5), " Cantidad ejemplares
    END OF REC_T.


    TABLES: VBAP,
    VBAK.


    DATA REC TYPE REC_T OCCURS 1 WITH HEADER LINE.
    DATA: NUMPOS(6),
    TIPPED(4),
    W_CONTADOR TYPE I,
    CONT TYPE I,
    CANTI TYPE I.




    * Tabla interna donde se volcara el fichero.


    DATA: BEGIN OF TI OCCURS 0,
    DEVOLU(10), " Numero de Devolucion
    MATERIAL(18), " Nro. de Material
    CANTI_PEDI(5), " Cantidad de Pedido
    END OF TI.

    DATA: BEGIN OF TI_AUX OCCURS 0,
    DEVOLU(10), " Numero de Devolucion
    MATERIAL(18), " Nro. de Material
    CANTI_PEDI(5), " Cantidad de Pedido
    END OF TI_AUX.




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


    *------------- PARAMETROS----------------------------------------------*
    PARAMETERS:


    * Archivo de donde se cargaran los datos
    N_FICH LIKE RLGRAP-FILENAME DEFAULT ' ',


    * Nombre del Grupo de Sesiòn
    NOMBREJD LIKE APQI-GROUPID DEFAULT 'PEDIDO_DEVOL'.






    *------------- PROGRAMA PRINCIPAL -------------------------------------*
    START-OF-SELECTION.




    * Abre el Grupo de Sesiòn


    CALL FUNCTION 'BDC_OPEN_GROUP'
    EXPORTING
    CLIENT = SY-MANDT
    GROUP = NOMBREJD
    USER = SY-UNAME
    KEEP = 'X'.


    * Carga el Archivo de Datos pasado por paràmetro en la Tabla Interna TI


    PERFORM CARGAR_TABLA.
    CLEAR: TI.
    LOOP AT TI.
    IF TI-DEVOLU IS INITIAL.
    EXIT.
    ELSE.
    *---- Carga la tabla interna BDC_TAB con los datos de ti
    PERFORM TRATAMIENTO_PRINCIPAL.
    ENDIF.
    ENDLOOP.
    * Cierra el grupo de sesiòn
    CALL FUNCTION 'BDC_CLOSE_GROUP'
    EXCEPTIONS
    NOT_OPEN = 1
    QUEUE_ERROR = 2
    OTHERS = 3.
    WRITE: / 'JUEGO DE DATOS CREADO CON EL NOMBRE: ',
    NOMBREJD LEFT-JUSTIFIED.
    END-OF-SELECTION.


    *-----------------------------------------------------------------------
    * FORM CARGAR_TABLA
    *-----------------------------------------------------------------------
    * LLama a la Funciòn Upload con el nombre del archivo pasado por paramt.


    FORM CARGAR_TABLA.
    CALL FUNCTION 'UPLOAD'
    EXPORTING
    FILENAME = N_FICH
    FILETYPE = 'DAT'
    TABLES
    DATA_TAB = TI
    EXCEPTIONS
    CONVERSION_ERROR = 1
    INVALID_TABLE_WIDTH = 2
    INVALID_TYPE = 3
    NO_BATCH = 4
    UNKNOWN_ERROR = 5
    GUI_REFUSE_FILETRANSFER = 6
    OTHERS = 7.
    ENDFORM.


    *-----------------------------------------------------------------------
    * FORM INSERTAR_EN_BDC_TAB
    *-----------------------------------------------------------------------
    * Llama a la funciòn BDC_INSERT con el nùmero de transaciòn que va a
    * emular y el nombre de la tabla.


    FORM INSERTAR_EN_BDC_TAB.
    CALL FUNCTION 'BDC_INSERT'
    EXPORTING
    TCODE = 'VA01'
    TABLES
    DYNPROTAB = BDC_TAB
    EXCEPTIONS
    INTERNAL_ERROR = 1
    NOT_OPEN = 2
    QUEUE_ERROR = 3
    TCODE_INVALID = 4
    PRINTING_INVALID = 5
    POSTING_INVALID = 6
    OTHERS = 7.
    ENDFORM.


    *-----------------------------------------------------------------------
    * FORM TRATAMIENTO_PRINCIPAL
    *-----------------------------------------------------------------------
    * LLama al form Dynpro con los paràmetros correspondientes a cada
    * pantalla de la transacciòn. LLama a Insertar_en_BDC_Tab.


    FORM TRATAMIENTO_PRINCIPAL.
    TI_AUX[] = TI[].


    REFRESH BDC_TAB.
    CLEAR BDC_TAB.


    SELECT VKORG VTWEG SPART VBELN AUART
    INTO (VBAK-VKORG , VBAK-VTWEG , VBAK-SPART , VBAK-VBELN , VBAK-AUART)
    FROM VBAK
    WHERE AUART IN ('ZRE4','ZPSA','ZPF9','ZPFH','ZPFI','ZP00','ZP01', 'ZP02')
    AND VBAK~VBELN = TI-DEVOLU
    AND FAKSK = ' '
    ORDER BY VBELN.


    REC-TIPPED1 = VBAK-AUART.
    REC-OV = VBAK-VKORG.
    REC-CANAL = VBAK-VTWEG.
    REC-SECTOR = VBAK-SPART.
    REC-PEDIDO = VBAK-VBELN.
    * REC-POS = VBAP-POSNR.
    * CANTI = VBAP-KWMENG.
    * REC-CANTIDAD = CANTI.


    APPEND REC.
    CLEAR REC.
    ENDSELECT.




    LOOP AT REC.
    IF REC-TIPPED1 = 'ZRE4'.
    TIPPED = 'ZRE5'.
    ENDIF.
    IF REC-TIPPED1 = 'ZPSA'.
    TIPPED = 'ZRE2'.
    ENDIF.
    IF REC-TIPPED1 = 'ZPF9'.
    TIPPED = 'ZRE3'.
    ENDIF.
    IF REC-TIPPED1 = 'ZPFH'.
    TIPPED = 'ZPGH'.
    ENDIF.
    IF REC-TIPPED1 = 'ZPFI'.
    TIPPED = 'ZRE6'.
    ENDIF.
    IF REC-TIPPED1 = 'ZP00'.
    TIPPED = 'ZRE7'.
    ENDIF.
    IF REC-TIPPED1 = 'ZP01'.
    TIPPED = 'ZRE8'.
    ENDIF.
    IF REC-TIPPED1 = 'ZP02'.
    TIPPED = 'ZRE9'.
    ENDIF.


    PERFORM DYNPRO USING:
    'X' 'SAPMV45A' '0101',
    ' ' 'VBAK-AUART' TIPPED,
    ' ' 'VBAK-VKORG' REC-OV,
    ' ' 'VBAK-VTWEG' REC-CANAL,
    ' ' 'VBAK-SPART' REC-SECTOR,
    ' ' 'BDC_OKCODE' '/00'.


    PERFORM DYNPRO USING:
    'X' 'SAPLV45C' '0100',
    ' ' 'LV45C-VBELN' TI-DEVOLU,
    ' ' 'BDC_CURSOR' 'LV45C-VBELN',
    ' ' 'BDC_OKCODE' '=UEBR'.


    PERFORM DYNPRO USING:
    'X' 'SAPMV45A' '4001',
    ' ' 'VBAK-AUGRU' 'Z05',
    ' ' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
    ' ' 'RV45A-VBAP_SELKZ(01)' 'X',
    ' ' 'BDC_CURSOR' 'VBAP-POSNR(01)',
    ' ' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
    ' ' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
    ' ' 'BDC_OKCODE' '=PKAU'.





    LOOP AT TI_AUX WHERE DEVOLU = TI-DEVOLU.
    W_CONTADOR = W_CONTADOR + 1.
    IF W_CONTADOR EQ 1.

    PERFORM DYNPRO USING:
    'X' 'SAPMV45A' '4003',
    ' ' 'RV45A-KWMENG(W_CONTADOR)' TI_AUX-CANTI_PEDI(W_CONTADOR), " ***
    ' ' 'BDC_OKCODE' '/EBACK'.
    ELSE.
    PERFORM DYNPRO USING:
    'X' 'SAPMV45A' '4003',
    ' ' 'RV45A-KWMENG(W_CONTADOR)' TI_AUX-CANTI_PEDI(W_CONTADOR), " ***
    ' ' 'BDC_OKCODE' '/EBACK'.
    W_CONTADOR = 0.
    ENDIF.
    ENDLOOP.

    PERFORM DYNPRO USING:
    'X' 'SAPMV45A' '4001',
    ' ' 'BDC_CURSOR' 'RV45A-MABNR(01)',
    ' ' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
    ' ' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
    ' ' 'BDC_SUBSCR' 'SAPMV45A 4902SUBSCREEN_TC',
    ' ' 'VBAK-AUGRU' 'Z05',
    ' ' 'BDC_OKCODE' '=KBES'.




    PERFORM DYNPRO USING:
    'X' 'SAPMV45A' '4002',
    ' ' 'VBKD-IHREZ_E' '0',
    ' ' 'BDC_CURSOR' 'VBKD-IHREZ_E',
    ' ' 'BDC_SUBSCR' 'SAPMV45A 4351SUBSCREEN_BODY',
    ' ' 'BDC_SUBSCR' 'SAPMV45A 4012SUBSCREEN_HEADER',
    ' ' 'BDC_OKCODE' '/EBACK'.




    IF TI-MATERIAL(02) IS NOT INITIAL.
    PERFORM DYNPRO USING:
    'X' 'SAPMV45A' '4001',
    ' ' 'VBAK-AUGRU' 'Z05',
    ' ' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
    ' ' 'RV45A-VBAP_SELKZ(02)' 'X',
    ' ' 'BDC_CURSOR' 'VBAP-POSNR(02)',
    ' ' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
    ' ' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
    ' ' 'BDC_OKCODE' '=PKAU'.




    PERFORM DYNPRO USING:
    'X' 'SAPMV45A' '4003',
    ' ' 'RV45A-KWMENG' TI-CANTI_PEDI(02),
    ' ' 'BDC_OKCODE' '/EBACK'.


    PERFORM DYNPRO USING:
    'X' 'SAPMV45A' '4001',
    ' ' 'BDC_CURSOR' 'RV45A-MABNR(02)',
    ' ' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
    ' ' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
    ' ' 'BDC_SUBSCR' 'SAPMV45A 4902SUBSCREEN_TC',
    ' ' 'VBAK-AUGRU' 'Z05',
    ' ' 'BDC_OKCODE' '=KBES'.




    PERFORM DYNPRO USING:
    'X' 'SAPMV45A' '4002',
    ' ' 'VBKD-IHREZ_E' '0',
    ' ' 'BDC_CURSOR' 'VBKD-IHREZ_E',
    ' ' 'BDC_SUBSCR' 'SAPMV45A 4351SUBSCREEN_BODY',
    ' ' 'BDC_SUBSCR' 'SAPMV45A 4012SUBSCREEN_HEADER',
    ' ' 'BDC_OKCODE' '=SICH'.


    PERFORM INSERTAR_EN_BDC_TAB.
    ENDIF.
    ENDLOOP.
    ENDFORM.


    *-----------------------------------------------------------------------
    * FORM DYNPRO
    *-----------------------------------------------------------------------
    * Carga la tabla interna bdc con los datos de cada una de las pantallas


    FORM DYNPRO USING DYNBEGIN CAMPO VALOR.
    CLEAR BDC_TAB.
    IF DYNBEGIN = 'X'.
    MOVE: CAMPO TO BDC_TAB-PROGRAM,
    VALOR TO BDC_TAB-DYNPRO,
    'X' TO BDC_TAB-DYNBEGIN.
    ELSE.
    MOVE: CAMPO TO BDC_TAB-FNAM,
    VALOR TO BDC_TAB-FVAL.
    ENDIF.
    APPEND BDC_TAB.
    ENDFORM.
Trabajando...