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 18/06/12, 19:24:13
amam2605 amam2605 is offline
Senior Member
 
Fecha de Ingreso: ene 2009
Mensajes: 150
Batch Input de la VA01

Hola a Todos !! Estoy realizando u batch input de la transaccion VA01 el archivo me lo han pasado de la sigueinte forma:

0 1001495368
1 600000 1
1 600033 2
0 1001493228
1 800212 1
1 800460 3

Donde: el 0 indica que es un Pedido al que se le hara una devolucion
1001495368 y 1001493228 son los nros de pedidos
1: indica los nros de material que tienen esos pedidos en sus posiciones 10 y 20.
1 y 2 - 1 y 3 que acompañan a los nros de materiales son la cantidad que tendra de devolucion cada pedido.

No se como leer esto en un batch input o si hay otra forma mejor de hacerlo. Aqui esta el programa que he realizado pero solo lee un solo nro de pedido y su cantidad.

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),
CANTI TYPE I.


* Tabla interna donde se volcara el fichero.

DATA: BEGIN OF TI OCCURS 0,
INDI(1), " Indicador
DEVOLU(12), " Numero de Devolucion
CANTI_PEDI(5), " Cantidad de Pedido
END OF TI.


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.

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.

* Busca Nro. posiciones pedido original

SELECT MAX( POSNR ) INTO NUMPOS FROM VBAP
WHERE VBELN = REC-PEDIDO.
IF NUMPOS = ''.
WRITE: / REC-PEDIDO, 'NO EXISTE'.
TIPPED = ''.
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'.

PERFORM DYNPRO USING:
'X' 'SAPMV45A' '4003',
' ' 'RV45A-KWMENG' TI-CANTI_PEDI,
' ' 'BDC_OKCODE' '/EBACK'.


PERFORM DYNPRO USING:
'X' 'SAPMV45A' '4001',
' ' '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.
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.

Muchas Gracias por alguna ayuda o sugerencia.

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 12:12:04.


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