MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 16/07/12, 21:55:35
amam2605 amam2605 is offline
Senior Member
 
Fecha de Ingreso: ene 2009
Mensajes: 150
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
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 03:27:30.


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