MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Transaccion VA01 (foro/showthread.php?t=63338)

amam2605 29/06/12 18:21:29

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.


Husos Horarios son GMT. La hora en este momento es 15:39:39.

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