Tema: bach-input
Ver Mensaje Individual
  #3  
Viejo 11/07/07, 13:48:17
azua14 azua14 is offline
Senior Member
 
Fecha de Ingreso: jul 2007
Mensajes: 140
..La verdad no entendí bien la pregunta...nunca me ha salido la ventana que mencionas..sin embargo..él código este es super simple..y lo uso como base para todos los batchs inputs que he hecho y nunca me ha fallado.

*&---------------------------------------------------------------------*
*& Report ZBI_FILL_CUSTOMER_02 *
*&---------------------------------------------------------------------*

REPORT zbi_fill_customer_02 LINE-SIZE 120.

*---------------------------------------------------*
* Only used for call transaction *
*---------------------------------------------------*

DATA:
BEGIN OF itab OCCURS 0,
id(11) TYPE c,
name(17) TYPE c,
surname(18) TYPE c,
city(25) TYPE c,
postcode(11) TYPE c,
custtype(15) TYPE c,
discount(2) TYPE c,
telephone(5) TYPE c,
END OF itab.

DATA: BEGIN OF bdcdata OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdcdata.
DATA: BEGIN OF messtab OCCURS 0.
INCLUDE STRUCTURE bdcmsgcoll.
DATA: END OF messtab.
DATA : pid LIKE customers-id.

*----------------------------------------------------------------*
* CUERPO DEL PROGRAMA
*----------------------------------------------------------------*
PERFORM Llenar_itab.

LOOP AT itab.
PERFORM call_transaction.
ENDLOOP.

ENDCASE.



*---------------------------------------------------------------------*
* FORM call_transaction
*---------------------------------------------------------------------*
* LLAMA A LA TRANSACCION ZFC01 Y LE PASA LOS DATOS EN ITAB A LAS
* VARIABLES DEFINIDAS EN BDCDATA
*---------------------------------------------------------------------*
FORM call_transaction.

PERFORM gen_bdc_data.
CALL TRANSACTION 'ZFC01' USING bdcdata MODE 'N' MESSAGES INTO
messtab.
" Modo de despliegue
" 'A' = ALL : Todas las pantallas
" 'E' = ERROR : Solo los errores
" 'N' = NOTHING : Procesar sin mostrar nada

WRITE: sy-subrc, sy-msgty, sy-msgid, sy-msgno, sy-msgv1.
WRITE: / ' ', sy-msgv2.
WRITE: / ' ', sy-msgv3.
WRITE: / ' ', sy-msgv4.

ENDFORM. " End CALL_TRANSACTION


*---------------------------------------------------------------------*
* FORM gen_bdc_data
*---------------------------------------------------------------------*
* GENERA EL GRUPO DE DATOS QUE VA A SER PROCESADO Y LO DEJA EN
* LA TABLA BDCDATA
*---------------------------------------------------------------------*
FORM gen_bdc_data.
DATA: line LIKE bdcdata-fval.
DATA: itab_name LIKE customers-name.

CONCATENATE itab-name itab-surname INTO itab_name SEPARATED BY space.

REFRESH bdcdata.

PERFORM bdc_dynpro USING 'Z_FILL_CUSTOMER' '1000'.
PERFORM bdc_field USING 'BDC_OKCODE' '=GRABA'.

PERFORM bdc_field USING 'P_ID' itab-id.
PERFORM bdc_field USING 'P_NAME' itab_name.
PERFORM bdc_field USING 'P_POST' itab-postcode.
PERFORM bdc_field USING 'P_CITY' itab-city.
PERFORM bdc_field USING 'P_CUST' itab-custtype.
PERFORM bdc_field USING 'P_DISC' itab-discount.
PERFORM bdc_field USING 'P_TELE' '3334455'.

PERFORM bdc_dynpro USING 'Z_FILL_CUSTOMER' '1000'.
PERFORM bdc_field USING 'BDC_OKCODE' '/EE'.


ENDFORM. "End GEN_BDC_DATA



*---------------------------------------------------------------------*
* FORM bdc_dynpro
*---------------------------------------------------------------------*
* INSERTA EL NOMBRE DEL PROGRAMA Y NUMERO DE PANTALLA QUE HACE
* REFERENCIA A LA TRANSACCION Z_FILL_CUSTOMER
*---------------------------------------------------------------------*

FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "End BDC_DYNPRO

*---------------------------------------------------------------------*
* FORM bdc_field
*---------------------------------------------------------------------*
* Insertar un campo al Batch Input
*---------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "BDC_FIELD


"------------------------------------------------------------*
" INSERTA TRANSACCION
"------------------------------------------------------------*
PERFORM gen_bdc_data.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = 'ZFC01'
TABLES
dynprotab = bdcdata.
WRITE: / 'BDC_INSERT rc ='(999), sy-subrc.
Responder Con Cita