Está en la página 1de 5

SMART FORM parte II

CREACION DE UNA TABLA.

AGREGAR CAMPOS A LA TABLA

CODIGO DEL PROGRAMA


*&---------------------------------------------------------------------* *& Report ZSMART *& *&---------------------------------------------------------------------* *& *&

*&---------------------------------------------------------------------* REPORT ZSMART. **************** DECLARACION DE VARIABLES PARA EL SMARTFORM********************** **** DATA: w_ctrlop TYPE ssfctrlop, w_compop TYPE ssfcompop, w_return TYPE ssfcrescl, otfdata LIKE itcoo OCCURS 0 WITH HEADER LINE, lc_name TYPE rs38l_fnam, intab TYPE soli_tab, objbin TYPE solix_tab, wa_intab TYPE LINE OF soli_tab, wa_objbin TYPE LINE OF solix_tab, objpack LIKE sopcklsti1. "WITH HEADER LINE. DATA: nombre_modulo_funcion TYPE rs38l_fnam. ********************************************************************************* ***** "TABLAS A USAR EN EL SMART TABLAS ZZZZ TABLES: ZNOMINA, ZTELEFONOS, ZSALARIO. "DECLARACION DE LAS TABLAS INTERNAS Y ESTRUCTURAS A USAR DATA: BEGIN OF IT_ZNOMINA OCCURS 0. INCLUDE STRUCTURE ZNOMINA. DATA: END OF IT_ZNOMINA. DATA: BEGIN OF IT_ZTELEFONOS OCCURS 0. INCLUDE STRUCTURE ZTELEFONOS. DATA: END OF IT_ZTELEFONOS. DATA: BEGIN OF IT_ZSALARIO OCCURS 0. INCLUDE STRUCTURE ZSALARIO. DATA: END OF IT_ZSALARIO. "TABLA INTERNA DONDE ALAMACENARE TODA MI INFORMACION CON RESPECTO AL USUARIO CON FOR ALL ENTRIES DATA: BEGIN OF IT_SALIDA OCCURS 0. INCLUDE STRUCTURE ztawn. DATA: END OF IT_SALIDA. "CAMPO DONDE SE ALMACENARA EL 30% DEL VALOR DEL SALARIO DATA: ISR TYPE ZSALARIO-SALARIO. "CAMPOS PARA LA SALIDA DE LA PANTALLA DATA: CADENA_COMP(200) TYPE C, CADENA2_COMP(200) TYPE C, ISR2(14) TYPE C, SAL_CON(14) TYPE C. "DECLARACIONES PARA EL FORM SELECT-OPTIONS IDUSR FOR ZNOMINA-ID_PER. START-OF-SELECTION. **************** SUBRUTINAS QUE UTILIZA EL PROGRAMA PERFORM CARGA_DATOS. " SE OBTIENEN LOS DATOS DE LAS TABLAS Z, MEDIANTE UN FOR ALL ENTRIES PERFORM LLAMADA_SMARFORM. " SE LLAMA LA FUNCION QUE CARGA EL FORMULARIO *&---------------------------------------------------------------------* *& Form CARGA_DATOS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form CARGA_DATOS . "SACO LA INFORMACION DE EL USUARIO QUE ME INTERESA DEACUERDO AL ID DE USUARIO "Y LO METO EN UNA TABLA INTERNA CON LA INFRORMACION QUE ME INTEREZA IT_SALIDA

SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_ZNOMINA FROM ZNOMINA WHERE ID_PER IN IDUSR. LOOP AT IT_ZNOMINA. ENDLOOP. select * FROM ZSALARIO INTO CORRESPONDING FIELDS OF TABLE IT_ZSALARIO FOR ALL ENTRIES IN IT_ZNOMINA where ID_PER = IT_ZNOMINA-ID_PER. LOOP AT IT_ZSALARIO. ENDLOOP. select * FROM ZTELEFONOS INTO CORRESPONDING FIELDS OF TABLE IT_ZTELEFONOS FOR ALL ENTRIES IN IT_ZNOMINA where ID_PER = IT_ZNOMINA-ID_PER. LOOP AT IT_ZTELEFONOS. ENDLOOP. "LLENO LA INFORMACION EN MI TABLA INTTERNA QUE LAS JUNTA TODAS LOOP AT IT_ZNOMINA. READ TABLE IT_ZTELEFONOS WITH KEY ID_PER = IT_ZNOMINA-ID_PER. READ TABLE IT_ZNOMINA WITH KEY ID_PER = IT_ZNOMINA-ID_PER. IT_SALIDA-ID_PER = IT_ZNOMINA-ID_PER. IT_SALIDA-NOMBRE = IT_ZNOMINA-NOMBRE. IT_SALIDA-APELLIDO = IT_ZNOMINA-APELLIDO. IT_SALIDA-DIRECCION = IT_ZNOMINA-DIRECCION. IT_SALIDA-EMAIL = IT_ZNOMINA-EMAIL. IT_SALIDA-STATUS = IT_ZNOMINA-STATUS. IT_SALIDA-DEPARTAMENTO = IT_ZSALARIO-DEPARTAMENTO. IT_SALIDA-PUESTO = IT_ZSALARIO-PUESTO. IT_SALIDA-SALARIO = IT_ZSALARIO-SALARIO. IT_SALIDA-F_INGRESO = IT_ZSALARIO-F_INGRESO. IT_SALIDA-F_BAJA = IT_ZSALARIO-F_BAJA. IT_SALIDA-TEL_CASA = IT_ZTELEFONOS-TEL_CASA. IT_SALIDA-TEL_OFIC = IT_ZTELEFONOS-TEL_OFIC. IT_SALIDA-TEL_CEL = IT_ZTELEFONOS-TEL_CEL. IT_SALIDA-ISR = ( IT_SALIDA-SALARIO * ( 30 / 10 ) ) / 100. IT_SALIDA-TOTAL = IT_SALIDA-SALARIO - IT_SALIDA-ISR. APPEND IT_SALIDA. ENDLOOP. LOOP AT IT_SALIDA. ENDLOOP. endform. " CARGA_DATOS *&---------------------------------------------------------------------* *& Form LLAMADA_SMARFORM *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form LLAMADA_SMARFORM . CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'" LLAMADA A LA FUNCION EXPORTING formname = 'ZTAWN_100' " Nombre del Smartform CREADO EN EL SMARTFORM * VARIANT = ' ' * DIRECT_CALL = ' ' IMPORTING fm_name = nombre_modulo_funcion EXCEPTIONS no_form = 1

no_function_module = 2 OTHERS = 3 . IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. CALL FUNCTION nombre_modulo_funcion TABLES IT_SALIDA = IT_SALIDA " TABLA INTERNA DEL SMARTFORM TABLA INTERNA DECLARADA EN EL SISTEMA EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. endform. " LLAMADA_SMARFORM *&---------------------------------------------------------------------*