amam2605
16/07/12, 21:55:35
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
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