Ver Mensaje Individual
  #5  
Viejo 26/03/08, 14:51:00
Avatar de robert_milan
robert_milan robert_milan is offline
Senior Member
 
Fecha de Ingreso: jun 2006
Localización: Mexico, DF
Mensajes: 315
Mira te dejo el ejemplo completo,

REPORT zfiinf_contratos NO STANDARD PAGE HEADING.

TABLES: bkpf, "Cabecera de documento para Contabilidad
bseg, "Segmento de documento de Contabilidad
kna1. "Maestro de clientes (parte general)

**********************
*TABLAS INTERNAS
**********************
DATA: BEGIN OF itab OCCURS 0,
contrato LIKE bkpf-dbblg,
cod_cli LIKE kna1-kunnr,
nom_cli LIKE kna1-name1,
doc LIKE bkpf-belnr, "documento contable
gjahr LIKE bkpf-gjahr, "ejercicio
bukrs LIKE bkpf-bukrs, "sociedad
END OF itab.
DATA flag.

*Para cuando se llama a las transac. FB03 y FBD3
DATA: BEGIN OF bdc_tab OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdc_tab.

**********************
*PANTALLA DE SELECCION
**********************
SELECT-OPTIONS contrato FOR bkpf-dbblg OBLIGATORY.


**********************
*CABECERA
**********************
TOP-OF-PAGE.
PERFORM cabecera.


**********************
*START OF SELECTION
**********************
START-OF-SELECTION.

SELECT * FROM bkpf WHERE dbblg IN contrato.
*el cliente no va a cambiar, así que entramos una sola vez en la BSEG
*para encontrarlo
SELECT * FROM bseg UP TO 1 ROWS WHERE bukrs = bkpf-bukrs
AND belnr = bkpf-belnr
AND gjahr = bkpf-gjahr.
SELECT SINGLE * FROM kna1 WHERE kunnr = bseg-kunnr.
ENDSELECT.
MOVE kna1-kunnr TO itab-cod_cli.
MOVE kna1-name1 TO itab-nom_cli.
MOVE bkpf-dbblg TO itab-contrato.
MOVE bkpf-belnr TO itab-doc.
MOVE bkpf-gjahr TO itab-gjahr.
MOVE bkpf-bukrs TO itab-bukrs.
APPEND itab.
CLEAR itab.

ENDSELECT.


*ESCRIBIMOS.

LOOP AT itab.
AT NEW contrato.
flag = 'X'.
ENDAT.

IF flag = 'X'.
CLEAR flag.
WRITE:/(10) itab-contrato HOTSPOT,
15(10) itab-cod_cli,
30(35) itab-nom_cli,
80(10) itab-doc.
HIDE: itab-contrato, itab-doc, itab-gjahr, itab-bukrs.
ELSE.
WRITE:/80(10) itab-doc.
HIDE: itab-doc, itab-gjahr, itab-bukrs.
ENDIF.

ENDLOOP.

*************************************
*CUANDO EL USUARIO HAGA DOBLE-CLICK SOBRE UN CONTRATO
*O UN DOCUMENTO
*************************************
AT LINE-SELECTION.
PERFORM call_transaction.





*-----------------------------------------
**RUTINAS
*-----------------------------------------


*&---------------------------------------------------------------------*
*& Form CABECERA
*&---------------------------------------------------------------------*
FORM cabecera.
WRITE:/(10) 'CONTRATO',
15(12) 'COD. CLIENTE',
30(35) 'CLIENTE',
80(15) 'DOC. CONTABLE'.
ULINE.

ENDFORM. " CABECERA

*&---------------------------------------------------------------------*
*& Form CALL_TRANSACTION
*&---------------------------------------------------------------------*
*Cuando el usuario haga doble click sobre un contrato irá a la
*transacción FBD3 (Visualizar documento contable).
*Si es sobre un documento contable irá a la FB03 (Visualizar documento)
*----------------------------------------------------------------------*
FORM call_transaction.

REFRESH bdc_tab.
CHECK sy-curow >= 3.
IF sy-cucol <= 10.
PERFORM dynpro USING:
'X' 'SAPMF05L' '0100', "Pantalla
' ' 'RF05L-BELNR' itab-contrato, "campo contrato
' ' 'RF05L-BUKRS' itab-bukrs, "campo sociedad
' ' 'RF05L-GJAHR' itab-gjahr. "campo ejercicio
* ' ' 'BDC_OKCODE' '/00'. "Pulsar INTRO
CALL TRANSACTION 'FBD3' USING bdc_tab.
ELSEIF sy-cucol >= 80.
PERFORM dynpro USING:
'X' 'SAPMF05L' '0100', "Pantalla
' ' 'RF05L-BELNR' itab-doc, "campo contrato
' ' 'RF05L-BUKRS' itab-bukrs, "campo sociedad
' ' 'RF05L-GJAHR' itab-gjahr. "campo ejercicio
* ' ' 'BDC_OKCODE' '/00'. "Pulsar INTRO
CALL TRANSACTION 'FB03' USING bdc_tab.
ENDIF.


ENDFORM. " CALL_TRANSACTION

*---------------------------------------------------------------------*
* FORM DYNPRO *
*---------------------------------------------------------------------*
* --> VALUE(DYNBEGIN) *
* --> VALUE(NAME) *
* --> VALUE(VALUE) *
*---------------------------------------------------------------------*
FORM dynpro USING value(dynbegin) value(name) value(value).

CLEAR bdc_tab.
IF dynbegin = 'X'.
bdc_tab-program = name.
bdc_tab-dynpro = value.
bdc_tab-dynbegin = 'X'.
ELSE.
bdc_tab-fnam = name.
bdc_tab-fval = value.
ENDIF.
APPEND bdc_tab.

ENDFORM. " DYNPRO

Saludos!!!!
__________________
Un Huevon No Inútil


Solo di lo que piensas, a la mejor tienes la mejor respuesta....

Si alguien ya lo hizo, copialo y cambiale las variables total es un codigo nuevo.....

Si SAP lo hace se puede hacer, no me pidas hacer algo que SAP no ha hecho.....

Consultor FI jr/ABAP Sr.
Responder Con Cita