#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. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|