#1
|
|||
|
|||
Help con a VA01
Hola a todos
tengo este programa BI de la VA01 pero no se como hacer para que me lea la cantidad de devoluicion de cada posicion. El archivo de entrada esta asi: 11001495726 (Indicador 1 luego nro de pedido) 4000000000000800212000000000000002 (Indicador de material, material, canti) 4000000000000800460000000000000003 Programa: REPORT ZBI_PED_DEVOL MESSAGE-ID 00. TABLES: VBAK. DATA: W_TRATAMIENTO(1) VALUE 'N', XFICHERO LIKE RLGRAP-FILENAME, LIN TYPE N, MARCA, W_AVANCE TYPE N, W_VAR(25), W_TOTAL-MATERIAL TYPE I, NRO_PEDIDO(10), W_VAR1(25), W_AVANCE1 TYPE N, W_POSUP(2), TCODE_TRANS LIKE TSTC-TCODE VALUE ' ', TCODE_PED_CREA LIKE TSTC-TCODE VALUE 'VA01', " Transacción TCODE_PED_BORR LIKE TSTC-TCODE VALUE 'VA02', "Borrar Pedido W_GRABAR-ANTERIOR(2) VALUE 'NO', PED_AUX(4), ORG_AUX(4), MAT_AUX(18), IND_PED, TIPPED(4), MSG(100), REG(50). 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. DATA REC TYPE REC_T OCCURS 1 WITH HEADER LINE. *-- DATA: BEGIN OF TAB-LISTA-MAT OCCURS 10, MATNR(18), " Material de la lista END OF TAB-LISTA-MAT. *----------ESTRUCTURA PARA LA BDC-DATA -----------------------------* DATA: BEGIN OF BDC_TAB OCCURS 0. INCLUDE STRUCTURE BDCDATA. DATA: END OF BDC_TAB. *------------- TABLA INTERNA DONDE SE VOLCARÁ EL FICHERO --------------* DATA: BEGIN OF TAB-DATA OCCURS 100, DATOS(91), " Registro de extracción END OF TAB-DATA. *------- TABLA INTERNA DONDE SE VOLCARÁ LOS PEDIDOS OKEY ------------- DATA: BEGIN OF T_PEDIDO_POSICIONES OCCURS 40000, K-VBELN LIKE VBAK-VBELN, " N° de pedido VBELN LIKE VBAK-VBELN, " N° de PEDIDO POSN TYPE I, "Contador posicion END OF T_PEDIDO_POSICIONES. *------------- PARAMETROS ---------------------------------------------* SELECTION-SCREEN BEGIN OF BLOCK BL3 WITH FRAME TITLE TEXT-003 NO INTERVALS. *PARAMETERS: FICHERO LIKE RLGRAP-FILENAME DEFAULT * 'C:\devolucion.txt'. PARAMETERS: FICHERO LIKE RLGRAP-FILENAME. PARAMETERS: USRNM_P(12) DEFAULT 'DEVOL-PEDIDO'. SELECTION-SCREEN END OF BLOCK BL3. *------------- PROGRAMA PRINCIPAL -------------------------------------* START-OF-SELECTION. PERFORM CREAR-BDC-GROUP-PEDIDOS. IF SY-SUBRC = 0. PERFORM ABRIR-DATA-INPUT. PERFORM PROCESAR-TAB-DATA. PERFORM BDC-CLOSE-GROUP. ENDIF. END-OF-SELECTION. ************************************************************************ *--- ABRIR LA SESION PARA GENERRA EL JUEGO DE DATOS ******************* ************************************************************************ FORM CREAR-BDC-GROUP-PEDIDOS. CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING CLIENT = SY-MANDT GROUP = USRNM_P USER = SY-UNAME KEEP = 'X'. ENDFORM. *------------------------------------------------------------------- FORM ABRIR-DATA-INPUT. CALL FUNCTION 'UPLOAD' EXPORTING FILENAME = FICHERO FILETYPE = 'DAT' TABLES DATA_TAB = TAB-DATA 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 PROCESAR-TAB-DATA. LOOP AT TAB-DATA. IF TAB-DATA-DATOS+0(1) = '1'. "Nro de Pedido Nuevo IF W_GRABAR-ANTERIOR = 'SI'. IF IND_PED = 'X'. PERFORM GRABAR-REGISTRO. ENDIF. PERFORM BDC-INSERT-PEDIDOS USING TCODE_PED_CREA. W_GRABAR-ANTERIOR = 'NO'. ENDIF. CLEAR W_TOTAL-MATERIAL. PERFORM BUSQUEDA. PERFORM GENERAR-DATOS-ORGANIZACION. * PERFORM GENERAR-DATOS-CABEZA-DOC. PERFORM GENERAR-POSICION-NORMAL. " Se unio al codigo 4 ENDIF. * * IF TAB-DATA-DATOS+0(1) = '2'. * ADD 1 TO W_TOTAL-MATERIAL. * PERFORM GENERAR-POSICION-NORMAL. * W_GRABAR-ANTERIOR = 'SI'. * ENDIF. * * IF TAB-DATA-DATOS+0(1) = '3'. * ADD 1 TO W_TOTAL-MATERIAL. * PERFORM GENERAR-POSICION-NORMAL. * W_GRABAR-ANTERIOR = 'SI'. * ENDIF. IF TAB-DATA-DATOS+0(1) = '4'. PERFORM GENERAR-LISTA-MATERIALES. W_GRABAR-ANTERIOR = 'SI'. ENDIF. AT LAST. IF W_GRABAR-ANTERIOR = 'SI'. IF IND_PED = 'X'. PERFORM GRABAR-REGISTRO. ENDIF. PERFORM BDC-INSERT-PEDIDOS USING TCODE_PED_CREA. ENDIF. ENDAT. ENDLOOP. ENDFORM. FORM GENERAR-DATOS-ORGANIZACION. CLEAR BDC_TAB. REFRESH BDC_TAB. BDC_TAB-PROGRAM = 'SAPMV45A'. BDC_TAB-DYNPRO = '0101'. BDC_TAB-DYNBEGIN = 'X'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'VBAK-AUART'. BDC_TAB-FVAL = TIPPED. "Clase de Pedido APPEND BDC_TAB. CLEAR BDC_TAB. PED_AUX = TIPPED. BDC_TAB-FNAM = 'VBAK-VKORG'. BDC_TAB-FVAL = REC-OV. "Organizacion de Ventas APPEND BDC_TAB. CLEAR BDC_TAB. ORG_AUX = REC-OV. BDC_TAB-FNAM = 'VBAK-VTWEG'. BDC_TAB-FVAL = REC-CANAL. "Canal de Distribucion APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'VBAK-SPART'. BDC_TAB-FVAL = REC-SECTOR. "Sector APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'BDC_OKCODE'. BDC_TAB-FVAL = '/0'. APPEND BDC_TAB. CLEAR BDC_TAB. ENDFORM. FORM GENERAR-POSICION-NORMAL. BDC_TAB-PROGRAM = 'SAPLV45C'. BDC_TAB-DYNPRO = '0100'. BDC_TAB-DYNBEGIN = 'X'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'LV45C-VBELN'. BDC_TAB-FVAL = TAB-DATA-DATOS+1(10). "Numero del Pedido APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'BDC_OKCODE'. BDC_TAB-FVAL = '=UEBR'. APPEND BDC_TAB. CLEAR BDC_TAB. ENDFORM. FORM GENERAR-LISTA-MATERIALES. BDC_TAB-PROGRAM = 'SAPMV45A'. BDC_TAB-DYNPRO = '4001'. BDC_TAB-DYNBEGIN = 'X'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'BDC_OKCODE'. BDC_TAB-FVAL = 'P++ '. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'VBAK-AUGRU'. BDC_TAB-FVAL = 'Z05'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'RV45A-VBAP_SELKZ(01)'. " Para que sombree y tome la posicion BDC_TAB-FVAL = 'X'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'BDC_OKCODE'. BDC_TAB-FVAL = '=PKAU'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-PROGRAM = 'SAPMV45A'. BDC_TAB-DYNPRO = '4003'. BDC_TAB-DYNBEGIN = 'X'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'RV45A-KWMENG'. BDC_TAB-FVAL = TAB-DATA-DATOS+19(15). "Cantidad del Pedido APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'BDC_OKCODE'. BDC_TAB-FVAL = '/EBACK'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-PROGRAM = 'SAPMV45A'. BDC_TAB-DYNPRO = '4001'. BDC_TAB-DYNBEGIN = 'X'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'BDC_OKCODE'. BDC_TAB-FVAL = '=KBES'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-PROGRAM = 'SAPMV45A'. BDC_TAB-DYNPRO = '4002'. BDC_TAB-DYNBEGIN = 'X'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'BDC_OKCODE'. BDC_TAB-FVAL = '/EBACK'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'VBKD-IHREZ_E'. BDC_TAB-FVAL = '0'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-PROGRAM = 'SAPMV45A'. BDC_TAB-DYNPRO = '4001'. BDC_TAB-DYNBEGIN = 'X'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'RV45A-VBAP_SELKZ(02)'. " Para que sombree y tome la posicion BDC_TAB-FVAL = 'X'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'VBAK-AUGRU'. BDC_TAB-FVAL = 'Z05'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'BDC_OKCODE'. BDC_TAB-FVAL = '=PKAU'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-PROGRAM = 'SAPMV45A'. BDC_TAB-DYNPRO = '4003'. BDC_TAB-DYNBEGIN = 'X'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'RV45A-KWMENG'. BDC_TAB-FVAL = TAB-DATA-DATOS+19(15). "Cantidad del Pedido APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'BDC_OKCODE'. BDC_TAB-FVAL = '/EBACK'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-PROGRAM = 'SAPMV45A'. BDC_TAB-DYNPRO = '4001'. BDC_TAB-DYNBEGIN = 'X'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'BDC_OKCODE'. BDC_TAB-FVAL = '=KBES'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-PROGRAM = 'SAPMV45A'. BDC_TAB-DYNPRO = '4003'. BDC_TAB-DYNBEGIN = 'X'. APPEND BDC_TAB. CLEAR BDC_TAB. * * BDC_TAB-FNAM = 'VBAP-MATNR(2)'. * BDC_TAB-FVAL = TAB-DATA-DATOS+1(18). "Numero del Material * BDC_TAB-PROGRAM = 'SAPMV45A'. BDC_TAB-DYNPRO = '4002'. BDC_TAB-DYNBEGIN = 'X'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'BDC_OKCODE'. " *** BDC_TAB-FVAL = '/EBACK'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'VBKD-IHREZ_E'. BDC_TAB-FVAL = '0'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'BDC_OKCODE'. BDC_TAB-FVAL = '=SICH'. APPEND BDC_TAB. CLEAR BDC_TAB. ENDFORM. *FORM GENERAR-POSICION-ESTAMPAS. * * BDC_TAB-PROGRAM = 'SAPMV45A'. * BDC_TAB-DYNPRO = '4001'. * BDC_TAB-DYNBEGIN = 'X'. * APPEND BDC_TAB. * CLEAR BDC_TAB. * * BDC_TAB-FNAM = 'BDC_OKCODE'. * BDC_TAB-FVAL = '/0'. * APPEND BDC_TAB. * CLEAR BDC_TAB. * * W_POSUP = W_TOTAL-MATERIAL. * W_POSUP = W_POSUP * 10. * W_AVANCE1 = W_TOTAL-MATERIAL + LIN + 1. * * CONCATENATE 'VBAP-MATNR(' W_AVANCE1 ')' INTO W_VAR1. * BDC_TAB-FNAM = W_VAR1. * BDC_TAB-FVAL = TAB-DATA-DATOS+1(18). "Numero del Material * APPEND BDC_TAB. * CLEAR BDC_TAB. * * CONCATENATE 'RV45A-KWMENG('W_AVANCE1 ')' INTO W_VAR1. * BDC_TAB-FNAM = W_VAR1. * BDC_TAB-FVAL = TAB-DATA-DATOS+19(15). "Cantidad del Pedido * APPEND BDC_TAB. * CLEAR BDC_TAB. * * * BDC_TAB-FNAM = 'BDC_OKCODE'. * BDC_TAB-FVAL = '/0 '. * APPEND BDC_TAB. * CLEAR BDC_TAB. * *ENDFORM. * FORM GRABAR-REGISTRO. BDC_TAB-PROGRAM = 'SAPMV45A'. BDC_TAB-DYNPRO = '4001'. BDC_TAB-DYNBEGIN = 'X'. APPEND BDC_TAB. CLEAR BDC_TAB. BDC_TAB-FNAM = 'BDC_OKCODE'. BDC_TAB-FVAL = '/11'. APPEND BDC_TAB. CLEAR BDC_TAB. ENDFORM. FORM BDC-INSERT-PEDIDOS USING TCODE_TRANS. CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = TCODE_TRANS TABLES DYNPROTAB = BDC_TAB. ENDFORM. FORM BDC-CLOSE-GROUP. CALL FUNCTION 'BDC_CLOSE_GROUP'. ENDFORM. FORM busqueda. NRO_PEDIDO = TAB-DATA-DATOS+1(10). 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 VBELN = NRO_PEDIDO 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. CASE VBAK-AUART. WHEN 'ZRE4'. TIPPED = 'ZRE5'. IND_PED = 'X'. WHEN 'ZPSA'. TIPPED = 'ZRE2'. IND_PED = 'X'. WHEN 'ZPF9'. TIPPED = 'ZRE3'. IND_PED = 'X'. WHEN 'ZPFH'. TIPPED = 'ZPGH'. IND_PED = 'X'. WHEN 'ZPFI'. TIPPED = 'ZRE6'. IND_PED = 'X'. WHEN 'ZP00'. TIPPED = 'ZRE7'. IND_PED = 'X'. WHEN 'ZP01'. TIPPED = 'ZRE8'. IND_PED = 'X'. WHEN 'ZP02'. TIPPED = 'ZRE9'. IND_PED = 'X'. ENDCASE. ENDSELECT. ENDFORM. Gracias de Antemano. Saludos AMAM |
Herramientas | Buscar en Tema |
Desplegado | |
|
|