Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - oscar

Páginas: [1] 2 3
1
HANA / Ejemplo web con SAPUI5
« en: 01 de Diciembre de 2017, 12:26:18 pm »
¿Queréis ver un ejemplo de una web realizada con tecnología SAPUI5?

Nuestro amigo Marcos, nos la enseña...

Ejemplo SAPUI5





2
HANA / Enlaces de interes HANA
« en: 29 de Marzo de 2016, 04:32:16 pm »
WEB dedicada a HANA en Español
http://www.hablemoshana.com/

Teknodatips (Entendiendo SAP HANA)
http://www.teknodatips.com.ar/blogs/20-sap-blogs/150-entendiendo-sap-hana.html

Blog “Todo SAP BI” Categoría (HANA)
https://todosapbi.wordpress.com/category/hana/



>>> Otros enlaces útiles para entender SAP HANA <<<

•   SAP HANA Software Packaging
•   Installation and Landscape
•   Certified Hardware
•   Backup & Recovery/HA
Replay Link:  http://sapnaevent.adobeconnect.com/p9rbfk2ef53/

•   Data Acquisition methods
•   LT Benefits & Installation
•   Architecture & Building Blocks
•   Configuration / Set-up
Replay Link:  http://sapnaevent.adobeconnect.com/p6ip36ucgw9/

•   Operational Reporting, Agile Data Marts, and SAP BW on HANA
•   Hardware Sizing and Updates
•   SAP HANA SP3 Updates & Roadmap
Replay Link: http://sapnaevent.adobeconnect.com/p7y3fcldc1i/

Hana architecture
http://www.sdn.sap.com/irj/scn/events?rid=/library/uuid/3056e140-6e01-2e10-d5b5-8bad0639f18c

Business objects and Hana
http://www.sdn.sap.com/irj/scn/elearn?rid=/media/uuid/d0894550-cde1-2e10-adb2-a0df19f67b31

Roadmap:
http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/24398

Hana Documentation
http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/25872

Advanced Data Models
http://www.sdn.sap.com/irj/scn/index?rid=/media/uuid/d0909f0b-6cd1-2e10-5ca4-cff6d29ee6f7

Replicating - Data Provisioning
http://www.sdn.sap.com/irj/scn/index?rid=/media/uuid/503a4b69-7ab3-2e10-d187-bf6228efd82d


If you have time then check the following webinars- not needed
http://www.sdn.sap.com/irj/scn/elearn?rid=/webcontent/uuid/e04da73b-3a72-2e10-969a-b032c46e7509&dpstartIndex=26

Check all future webinars
http://scn.sap.com/docs/DOC-23201


---------------------------------------------

Abap para SAP HANA  @SAPTechEd
http://scn.sap.com/community/abap/hana/blog/2012/12/04/key-learning--in-sapteched--abap-on-hana

Futura Plataforma de ABAP:
http://www.sapvirtualevents.com/teched/sessiondetails.aspx?sId=3349

Blog de referencia por  Jens Weiler:
http://scn.sap.com/docs/DOC-35518

Check this document for SAP Netweaver as ABAP 7.4:
http://scn.sap.com/docs/DOC-41400

Optimización del código ABAP
http://scn.sap.com/docs/DOC-42445

SAP NetWeaver 7.4 - Optimizado para SAP HANA, la nube y móvil:
http://scn.sap.com/docs/DOC-35002

Comunidad ABAP para SAP HANA:
http://scn.sap.com/community/abap/hana

Si eres bueno en Web Dynpro y quieres desarrollar aplicaciones WEB para HANA, entonces necesitas para aprender los servicios de XS en HANA:
http://scn.sap.com/community/developer-center/hana/blog/2012/11/29/sap-hana-extended-application-services

Comunidad sobre SAPUI5.
http://scn.sap.com/community/developer-center/front-end/content

Desde el siguiente enlace se puede descargar todas las guías relacionadas HANA:
http://help.sap.com/hana_appliance#section5

SAP HANA Academia de tutoriales en vídeo:
http://www.saphana.com/community/implement/hana-academy



3
HANA / En CVOSOFT nos explican que es SAP HANA
« en: 29 de Marzo de 2016, 04:30:52 pm »

4
Links / SAP S/4 HANA - Acceso de pruebas para 14 días, gratis
« en: 30 de Junio de 2015, 11:55:00 am »
Aunque muchos de vosotros ya estaréis informados por el propio SAP, por los E-Mailing que envía ya a muchos de vosotros, aquí os dejo el enlace a poder probar el nuevo sistema SAP S/4 HANA durante un máximo de 14 días:

http://www.sap.com/s4hana-trial
 

Como creo que ya sabéis, el sistema SAP S/4 HANA será el próximo sistema SAP que sustituirá en el futuro al SAP Business Suite, tanto el sistema SAP ERP (R/3) como el CRM, BW, APO, etc.
 
Por si tenéis también interés aquí os dejo un enlace al video de la presentación oficial del SAP S/4 HANA en Nueva York este año:

Presentación SAP S/4HANA


 
Salu2,

5
Links / Test examen ABAP online
« en: 29 de Abril de 2015, 10:24:37 am »
¿Quieres ponerte a prueba?

¿Quieres saber que nivel tienes en el lenguaje de programación ABAP?

Cibertest nos facilita varios exámenes de Abap en distintos niveles. Y si quieres puedes compartir con nosotros tu resultado.

http://cibertest.com/test-examen/10/abap


Suerte!!  ;)



6
Links / Cursos online GRATIS desarrollados por SAP
« en: 18 de Marzo de 2015, 12:11:40 pm »
Enterprise MOOCs (Massive Open Online Courses)

https://open.sap.com/

SAP nos da la oportunidad de aprender una serie de cursos totalmente gratuitos.

Existen cursos de temas generales de IT y otros específicos de temas de productos de SAP.

Este es el enlace para acceder a los cursos actualizados.

https://open.sap.com/courses



7
Formularios / TRUCO: Como convertir un Smartforms a PDF
« en: 26 de Noviembre de 2013, 06:36:18 pm »
Si tienes la vista previa de un Smarforms simplemente tenemos que escribir en la barra de herramientas la transacción PDF! (PDF con la marca de exclamación).

Nos aparecerá una pantalla emergente con el PDF, el cual podremos guardar en nuestro PC.



8
Varios / Como Activar / Desactivar la verificación del NIF
« en: 17 de Abril de 2013, 12:23:48 pm »
Por si a alguien le interesa.

Después de mucho buscar... encontré como desactivar la validación del NIF para que no chequease en la función "TAX_NUMBER_CHECK" esta validación.

Este campo se encuentra en la tabla-campo T005-XPRSO (Ind.: ¿Utilizar módulo verificación cpos.impuestos, etc.?)

Simplemente hay que ir a la transacción OY17 y te posicionas en el país que quieres quitar la validación.

El checkbox (flag) que hay que quitar es el que se encuentra justo abajo y a la izquierda de la pantalla que dice... Otros datos muy explicativo, si señor!!!


Saludos!

9
Links / Mundoabap
« en: 14 de Marzo de 2011, 11:59:30 am »
Navegando me topé con una pagina nueva en español.

Mucho ánimo a esta web. Aquí os dejo el enlace... y a disfrutarla.
http://www.mundoabap.es

 ;D

10
Informes / Informe: Flujo de documentos
« en: 01 de Agosto de 2008, 01:44:10 pm »
En este informe se muestra el flujo entre varios documentos...

   Pedido -> Entrega -> Transporte -> etc...

En Include ZALV lo podéis descargar desde Aquí.



*&---------------------------------------------------------------------*
*& Report  zflujo_pedidos
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zflujo_pedidos.


************************************************************************
* INCLUDE
************************************************************************
INCLUDE: zalv.


************************************************************************
*DATA
************************************************************************
DATA: BEGIN OF gt_flujo OCCURS 0,
        vbeln                 LIKE vbak-vbeln,
        vkorg                 LIKE vbak-vkorg,
        vtweg                 LIKE vbak-vtweg,
        spart                 LIKE vbak-spart,
        vdatu                 LIKE vbak-vdatu,
        entrega               LIKE likp-vbeln,
        tknum                 LIKE vttk-tknum,
        daten                 LIKE vttk-daten,
        fknum                 LIKE vfkk-fknum,
        budat                 LIKE vfkp-budat,
        tdlnr                 LIKE vfkp-tdlnr,
        tdlnr_txt             LIKE lfa1-name1,
        netwr                 LIKE vfkp-netwr,
        waers                 LIKE vfkp-waers,
        ebeln                 LIKE vfkp-ebeln,
      END OF gt_flujo.


************************************************************************
*SELECTION-SCREEN
************************************************************************
SELECTION-SCREEN SKIP 1.
SELECT-OPTIONS: s_vbeln FOR gt_flujo-vbeln OBLIGATORY
                                           MATCHCODE OBJECT vmva.
SELECT-OPTIONS: s_vkorg FOR gt_flujo-vkorg NO-DISPLAY.
SELECT-OPTIONS: s_vtweg FOR gt_flujo-vtweg NO-DISPLAY.
SELECT-OPTIONS: s_spart FOR gt_flujo-spart NO-DISPLAY.
SELECT-OPTIONS: s_vdatu FOR gt_flujo-vdatu NO-DISPLAY.

SELECTION-SCREEN SKIP 2.
PARAMETERS: p_vari    LIKE variant-variant.


************************************************************************
*AT SELECTION-SCREEN ON VALUE-REQUEST
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.

  DATA: spec_layout           TYPE disvariant,
        gf_exit               TYPE c.

  CLEAR variant.
  MOVE sy-repid TO variant-report.

  CALL FUNCTION 'LVC_VARIANT_F4'
    EXPORTING
      is_variant = variant
      i_save     = 'A'
    IMPORTING
      e_exit     = gf_exit
      es_variant = spec_layout
    EXCEPTIONS
      not_found  = 1
      OTHERS     = 2.
  IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.
    IF gf_exit NE 'X'.
      p_vari  = spec_layout-variant.
      variant = spec_layout.
    ENDIF.
  ENDIF.


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

  PERFORM tomar_datos.



************************************************************************
*END-OF-SELECTION
************************************************************************
END-OF-SELECTION.

  PERFORM mostrar_listado.




************************************************************************
*FORMS
************************************************************************
*&---------------------------------------------------------------------*
*&      Form  tomar_datos
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM tomar_datos .

  DATA: BEGIN OF lt_vbfa_entregas OCCURS 0,
          vbelv               LIKE vbfa-vbelv,
          vbeln               LIKE vbfa-vbeln,
          vkorg               LIKE vbak-vkorg,
          vtweg               LIKE vbak-vtweg,
          spart               LIKE vbak-spart,
          vdatu               LIKE vbak-vdatu,
        END OF lt_vbfa_entregas.


  DATA: lt_vbfa_transportes   LIKE vbfa OCCURS 0 WITH HEADER LINE.

  DATA: lt_lfa1               LIKE lfa1 OCCURS 0 WITH HEADER LINE.

  DATA: BEGIN OF lt_datos_gasto OCCURS 0,
          rebel               LIKE vfkp-rebel,
          fknum               LIKE vfkk-fknum,
          tdlnr               LIKE vfkp-tdlnr,
          budat               LIKE vfkp-budat,
          netwr               LIKE vfkp-netwr,
          waers               LIKE vfkp-waers,
          ebeln               LIKE vfkp-ebeln,
       END OF lt_datos_gasto.

  DATA: BEGIN OF lt_datos_transporte OCCURS 0,
          tknum               LIKE vttk-tknum,
          daten               LIKE vttk-daten,
          dtabf               LIKE vttk-dtabf,
        END OF lt_datos_transporte.


  SELECT vbfa~vbelv vbfa~vbeln
         vbak~vkorg vbak~vtweg vbak~spart vbak~vdatu
         INTO TABLE lt_vbfa_entregas
  FROM vbfa JOIN vbak ON vbfa~vbelv = vbak~vbeln
  WHERE vbfa~vbelv   IN s_vbeln
    AND vbfa~vbtyp_n =  'J'
    AND vbfa~vbtyp_v =  'C'
    AND vbak~vkorg   IN s_vkorg
    AND vbak~vtweg   IN s_vtweg
    AND vbak~spart   IN s_spart
    AND vbak~vdatu   IN s_vdatu.

  CHECK sy-subrc = 0.

  SORT lt_vbfa_entregas BY vbelv vbeln.
  DELETE ADJACENT DUPLICATES FROM lt_vbfa_entregas
         COMPARING vbelv vbeln.


  SELECT * INTO TABLE lt_vbfa_transportes
  FROM vbfa
  FOR ALL ENTRIES IN lt_vbfa_entregas
  WHERE vbelv   = lt_vbfa_entregas-vbeln
    AND vbtyp_n =  '8'
    AND vbtyp_v =  'J'.


  SELECT tknum daten dtabf
  INTO CORRESPONDING FIELDS OF TABLE lt_datos_transporte
  FROM vttk
  FOR ALL ENTRIES IN lt_vbfa_transportes
  WHERE tknum = lt_vbfa_transportes-vbeln.


  SELECT vfkp~rebel vfkk~fknum vfkp~tdlnr vfkp~budat
         vfkp~netwr vfkp~waers vfkp~ebeln
         INTO CORRESPONDING FIELDS OF TABLE lt_datos_gasto
         FROM vfkk JOIN vfkp ON vfkk~mandt = vfkp~mandt
                            AND vfkk~fknum = vfkp~fknum
         FOR ALL entries IN lt_vbfa_transportes
                     WHERE vfkp~rebel = lt_vbfa_transportes-vbeln.



  LOOP AT lt_vbfa_entregas.
    CLEAR gt_flujo.
    gt_flujo-vbeln   = lt_vbfa_entregas-vbelv.
    gt_flujo-vkorg   = lt_vbfa_entregas-vkorg.
    gt_flujo-vtweg   = lt_vbfa_entregas-vtweg.
    gt_flujo-spart   = lt_vbfa_entregas-spart.
    gt_flujo-vdatu   = lt_vbfa_entregas-vdatu.
    gt_flujo-entrega = lt_vbfa_entregas-vbeln.

    LOOP AT lt_vbfa_transportes WHERE vbelv = lt_vbfa_entregas-vbeln.

      gt_flujo-tknum = lt_vbfa_transportes-vbeln.
      CLEAR lt_datos_transporte.
      READ TABLE lt_datos_transporte WITH KEY tknum = gt_flujo-tknum.
      IF lt_datos_transporte-daten IS INITIAL.
        gt_flujo-daten  = lt_datos_transporte-dtabf.
      ELSE.
        gt_flujo-daten  = lt_datos_transporte-daten.
      ENDIF.


      LOOP AT lt_datos_gasto WHERE rebel = lt_vbfa_transportes-vbeln.

        gt_flujo-fknum  = lt_datos_gasto-fknum.
        gt_flujo-tdlnr  = lt_datos_gasto-tdlnr.
        gt_flujo-budat  = lt_datos_gasto-budat.
        gt_flujo-netwr  = lt_datos_gasto-netwr.
        gt_flujo-waers  = lt_datos_gasto-waers.
        gt_flujo-ebeln  = lt_datos_gasto-ebeln.

        COLLECT gt_flujo.

      ENDLOOP.
      IF sy-subrc <> 0.
        COLLECT gt_flujo.
      ENDIF.

    ENDLOOP.
    IF sy-subrc <> 0.
      COLLECT gt_flujo.
    ENDIF.
  ENDLOOP.


  IF NOT gt_flujo[] IS INITIAL.

*   Agente de servicios
    SELECT * INTO TABLE lt_lfa1
    FROM lfa1
    FOR ALL ENTRIES IN gt_flujo
    WHERE lifnr = gt_flujo-tdlnr.

    LOOP AT lt_lfa1.
      gt_flujo-tdlnr_txt = lt_lfa1-name1.
      MODIFY gt_flujo TRANSPORTING tdlnr_txt
                      WHERE tdlnr = lt_lfa1-lifnr.
    ENDLOOP.

  ENDIF.


ENDFORM.                    " tomar_datos

*&---------------------------------------------------------------------*
*&      Form  mostrar_listado
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM mostrar_listado .

  repname = sy-repid.

* Descripción estándar de campos
  PERFORM obt_descrip_campos_tabla USING repname 'GT_FLUJO'.

* Se realizan los cambios de descripciones
  PERFORM cambio_descripcion USING:
   'TDLNR_TXT' 'Nombre agente'(l01)        'Nombre agente'(l01)
               'Nombre agente'(l01)        'Nombre agente'(l01)   'M',
   'VBELN'     'Pedido'(l02)               'Pedido'(l02)
               'Pedido'(l02)               'Pedido'(l02)          'M',
   'FKNUM'     'Nº Gasto'(l03)             'Nº Gasto'(l03)
               'Nº Gasto'(l03)             'Nº Gasto'(l03)        'M',
   'TDLNR'     'Agente'(l04)               'Agente'(l04)
               'Agente'(l04)               'Agente'(l04)          'M',
   'EBELN'     'Ped. compras'(l05)         'Ped. compras'(l05)
               'Ped. compras'(l05)         'Ped. compras'(l05)    'M',
   'DATEN'     'Fin/Despacho'(l06)         'Fin/Despacho'(l06)
               'Fin/Despacho'(l06)         'Fin/Despacho'(l06)    'M'.


* Características generales del listado
  PERFORM carac_gen_listado.

* Asignamos campos moneda
  PERFORM asignar_moneda_columna USING: 'NETWR'   'WAERS'.


* Asignamos/eliminamos campos clave
  PERFORM asign_o_quitar_campo_clave USING: 'VBELN'     ' ',
                                            'ENTREGA'   ' ',
                                            'TKNUM'     ' ',
                                            'FKNUM'     ' '.
* Asignamos Hotspot
  PERFORM activar_hotspot USING: 'VBELN'       'X',
                                 'ENTREGA'     'X',
                                 'TKNUM'       'X',
                                 'FKNUM'       'X',
                                 'TDLNR'       'X',
                                 'EBELN'       'X'.

* Eliminar campos de visualización
  PERFORM elim_campos_de_visualizacion USING: 'VKORG',
                                              'VTWEG',
                                              'SPART',
                                              'VDATU'.

* Variante de visualización
  variant-report  = repname.
  variant-variant = p_vari.


* Asignación de User Command
  PERFORM asignar_user_command.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = repname
      is_layout          = layout
      it_fieldcat        = fieldtab[]
      i_save             = 'A'
      it_events          = events[]
      is_variant         = variant
    TABLES
      t_outtab           = gt_flujo
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.


ENDFORM.                    " mostrar_listado

*---------------------------------------------------------------------*
*       FORM user_command                                             *
*---------------------------------------------------------------------*
*       Interprete de comandos para las opciones no estándar de
* usuario sobre el listado
*---------------------------------------------------------------------*

FORM user_command USING r_ucomm LIKE sy-ucomm
                        rs_selfield TYPE slis_selfield.

  DATA: lf_ebeln              LIKE vfkp-ebeln.

  CASE r_ucomm.
    WHEN '&IC1'.
      CASE rs_selfield-fieldname.
        WHEN 'VBELN'.
          CHECK NOT rs_selfield-value IS INITIAL.

          SET PARAMETER ID 'AUN' FIELD rs_selfield-value.
          CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

        WHEN 'ENTREGA'.
          CHECK NOT rs_selfield-value IS INITIAL.

          SET PARAMETER ID 'VL' FIELD rs_selfield-value.
          CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.

        WHEN 'TKNUM'.
          CHECK NOT rs_selfield-value IS INITIAL.

          SET PARAMETER ID 'TNR' FIELD rs_selfield-value.
          CALL TRANSACTION 'VT03N' AND SKIP FIRST SCREEN.

        WHEN 'FKNUM'.
          CHECK NOT rs_selfield-value IS INITIAL.

          SET PARAMETER ID 'FKK' FIELD rs_selfield-value.
          CALL TRANSACTION 'VI03' AND SKIP FIRST SCREEN.

        WHEN 'TDLNR'.
          CHECK NOT rs_selfield-value IS INITIAL.

          SET PARAMETER ID 'LIF' FIELD rs_selfield-value.
          SET PARAMETER ID 'KDY' FIELD '/130/380/110/120'.
          CALL TRANSACTION 'MK03'  AND SKIP FIRST SCREEN.

        WHEN 'EBELN'.
          CHECK NOT rs_selfield-value IS INITIAL.

          lf_ebeln = rs_selfield-value.

          CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT'
            EXPORTING
              i_ebeln                    = lf_ebeln
*          i_ebelp                    =
*         I_ENJOY                    = 'X'
*         I_PREVIEW                  =
*         I_DATA_FROM_BUFFER         =
*         I_BSTYP                    =
              i_display_only             = 'X'
*         I_EDIT                     = ' '
*          i_etenr                    =
*         I_DOC_INITIATOR            =
           EXCEPTIONS
             not_found                  = 1
             no_authority               = 2
             invalid_call               = 3
             preview_not_possible       = 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.

      ENDCASE.
  ENDCASE.

ENDFORM.                    "user_command

*&---------------------------------------------------------------------*
*&      Form  cambio_descripcion
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM cambio_descripcion USING pf_fieldname
                              pf_scrtext_l
                              pf_scrtext_m
                              pf_scrtext_s
                              pf_coltext
                              pf_ddictxt.


  READ TABLE fieldtab WITH KEY fieldname = pf_fieldname
     ASSIGNING <fs>.
  IF sy-subrc EQ 0.
    <fs>-seltext_l    = pf_scrtext_l.
    <fs>-seltext_m    = pf_scrtext_m.
    <fs>-seltext_s    = pf_scrtext_s.
    <fs>-reptext_ddic = pf_coltext.
    <fs>-ddictxt      = pf_ddictxt.
  ENDIF.


ENDFORM.                    " cambio_descripcion

*&---------------------------------------------------------------------*
*&      Form  eliminar_col_seleccion
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM eliminar_col_seleccion USING pf_fieldname.

  READ TABLE fieldtab WITH KEY fieldname = pf_fieldname
     ASSIGNING <fs>.
  IF sy-subrc EQ 0.
    <fs>-no_out = 'X'.
    <fs>-tech   = 'X'.
  ENDIF.

ENDFORM.                    " eliminar_col_seleccion




Saludos...

11
Funciones / Funcion para leer un EXCEL con sus pestañas
« en: 31 de Enero de 2008, 06:12:03 pm »
Esta función lee un excel diferenciando cada pestaña.

Hay que fijarse en la tabla de salida.
*"  TABLES
*"      INTERN_SALIDA STRUCTURE  ZALSMEX_TABLINE


Se puede ver que la estructura es de una tabla Z, simplemente hay que copiar la estructura ALSMEX_TABLINE y añadirle un campo CHAR de 40 caracteres, que es donde vamos a recoger el nombre de la pestaña a la que corresponde.

Código: [Seleccionar]
  DATA: lt_zalsmex_tabline   LIKE zalsmex_tabline
                           OCCURS 0 WITH HEADER LINE.


  CALL FUNCTION 'ZEXCEL_LECTURA_LIBRO'
    EXPORTING
      filename                = pf_file
      i_begin_col             = 1
      i_begin_row             = 2
      i_end_col               = 25
      i_end_row               = 10000
    TABLES
      intern_salida           = lt_zalsmex_tabline
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      OTHERS                  = 3.

Para no tener que modificar el código es aconsejable que el campo que vais a añadir tenga el nombre de PESTANIA.

Código: [Seleccionar]
FUNCTION zexcel_lectura_libro .
*"----------------------------------------------------------------------
*"*"Interfase local
*"  IMPORTING
*"     VALUE(FILENAME) LIKE  RLGRAP-FILENAME
*"     VALUE(I_BEGIN_COL) TYPE  I
*"     VALUE(I_BEGIN_ROW) TYPE  I
*"     VALUE(I_END_COL) TYPE  I
*"     VALUE(I_END_ROW) TYPE  I
*"  TABLES
*"      INTERN_SALIDA STRUCTURE  ZALSMEX_TABLINE
*"  EXCEPTIONS
*"      INCONSISTENT_PARAMETERS
*"      UPLOAD_OLE
*"----------------------------------------------------------------------


* Variables Locales
  DATA: l_excel               TYPE ole2_object,
        l_libro               TYPE ole2_object,
        l_hoja                TYPE ole2_object,
        l_cont                TYPE i,
        l_celli               TYPE ole2_object,
        l_cellf               TYPE ole2_object,
        l_cell                TYPE ole2_object,
        lt_tabla              TYPE TABLE OF ty_s_senderline.

  DATA: ld_separator          TYPE  c.

  DATA: ld_rc                 TYPE i.

  DATA: intern                LIKE alsmex_tabline OCCURS 0
                                                  WITH HEADER LINE.

  DATA: lf_pestania(50).



* Se verifica que las filas y columnas sean coherentes
  IF i_begin_row > i_end_row.
    RAISE inconsistent_parameters.
  ENDIF.
  IF i_begin_col > i_end_col.
    RAISE inconsistent_parameters.
  ENDIF.


* Abrimos el Excel
  IF l_excel-header = space OR l_excel-handle = -1.
    CREATE OBJECT l_excel 'Excel.Application'.
  ENDIF.
  CALL METHOD OF l_excel 'Workbooks' = l_libro.
  CALL METHOD OF l_libro 'Open'
    EXPORTING
    #1 = filename.


* Se identifica el separador de campos
  CLASS cl_abap_char_utilities DEFINITION LOAD.
  ld_separator = cl_abap_char_utilities=>horizontal_tab.


* Recorremos las Hojas del Excel
  DO.

*-- Incrementamos el Contador para ir de hoja en hoja
    ADD 1 TO l_cont.

*-- Limpiamos los objetos
    FREE OBJECT: l_cell, l_celli, l_cellf, l_hoja.
    CLEAR lt_tabla[].

*-- Leemos la Hoja
    CALL METHOD OF l_excel 'Worksheets' = l_hoja
      EXPORTING
      #1 = l_cont.

*-- Si no existe la hoja Salimos del Bucle
    IF NOT sy-subrc IS INITIAL.
      EXIT.
    ENDIF.

*   Tomamos el nombre de la pestaña
    GET PROPERTY OF l_hoja 'NAME' = lf_pestania.
    COMMIT WORK AND WAIT.


*-- Recogemos la Primera Celda
    CALL METHOD OF l_hoja 'Cells' = l_celli
      EXPORTING
      #1 = i_begin_row
      #2 = i_begin_col.
    COMMIT WORK AND WAIT.


*-- Recogemos la Ultima Celda
    CALL METHOD OF l_hoja 'Cells' = l_cellf
      EXPORTING
      #1 = i_end_row
      #2 = i_end_col.
    COMMIT WORK AND WAIT.

*-- Recogemos las celdas comprendidas entre la Primera y la Ultima
*-- y lo copiamos a la memoria intermedia
    CALL METHOD OF l_hoja 'RANGE' = l_cell
      EXPORTING
      #1 = l_celli
      #2 = l_cellf.
    COMMIT WORK AND WAIT.
    CALL METHOD OF l_cell 'SELECT'.
    COMMIT WORK AND WAIT.
    CALL METHOD OF l_cell 'COPY'.


*-- Recogemos los Valores del portapapeles
    CALL METHOD cl_gui_frontend_services=>clipboard_import
      IMPORTING
        data                 = lt_tabla
      EXCEPTIONS
        cntl_error           = 1
        error_no_gui         = 2
        not_supported_by_gui = 3
        OTHERS               = 4.

    IF sy-subrc <> 0.
      MESSAGE a037(alsmex).
    ENDIF.

*-- Limpiamos los valores en blanco
    SORT lt_tabla.
    DELETE lt_tabla WHERE LINE EQ space.
    CLEAR: sy-subrc.

*-- Recogemos los datos a la tabla de Salida
    CHECK NOT lt_tabla[] IS INITIAL.


    PERFORM separated_to_intern_convert TABLES lt_tabla intern
                                        USING  ld_separator.

*   Se vuelca el contenido de la hoja tratada en la tabla con la
*   identificación de la pestaña.
    LOOP AT intern.
      CLEAR intern_salida.
      intern_salida-pestania = lf_pestania.
      MOVE-CORRESPONDING intern TO intern_salida.
      APPEND intern_salida.
    ENDLOOP.

*   borramos el portapapeles
    REFRESH lt_tabla.
    CALL METHOD cl_gui_frontend_services=>clipboard_export
       IMPORTING
          data                 = lt_tabla
       CHANGING
          rc                   = ld_rc
       EXCEPTIONS
          cntl_error           = 1
*       ERROR_NO_GUI         = 2
*       NOT_SUPPORTED_BY_GUI = 3
          OTHERS               = 4.

  ENDDO.

* Cerramos el Excel
  CALL METHOD OF l_excel 'QUIT'.


*-- Limpiamos los objetos
  FREE OBJECT l_libro.
  FREE OBJECT l_hoja.

  FREE OBJECT l_excel.
  FREE OBJECT l_celli.
  FREE OBJECT l_cellf.
  FREE OBJECT l_cell.


ENDFUNCTION.

*&---------------------------------------------------------------------*
*&      Form  SEPARATED_TO_INTERN_CONVERT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM separated_to_intern_convert TABLES i_tab       TYPE ty_t_sender
                                        i_intern    TYPE ty_t_itab
                                 USING  i_separator TYPE c.
  DATA: l_sic_tabix LIKE sy-tabix,
        l_sic_col   TYPE kcd_ex_col.
  DATA: l_fdpos     LIKE sy-fdpos.

  REFRESH i_intern.

  LOOP AT i_tab.
    l_sic_tabix = sy-tabix.
    l_sic_col = 0.
    WHILE i_tab CA i_separator.
      l_fdpos = sy-fdpos.
      l_sic_col = l_sic_col + 1.
      PERFORM line_to_cell_separat TABLES i_intern
                                   USING  i_tab l_sic_tabix l_sic_col
                                          i_separator l_fdpos.
    ENDWHILE.
    IF i_tab <> space.
      CLEAR i_intern.
      i_intern-row = l_sic_tabix.
      i_intern-col = l_sic_col + 1.
      i_intern-value = i_tab.
      APPEND i_intern.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " SEPARATED_TO_INTERN_CONVERT

*&---------------------------------------------------------------------*
*&      Form  line_to_cell_separat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM line_to_cell_separat TABLES i_intern    TYPE ty_t_itab
                          USING  i_line
                                 i_row       LIKE sy-tabix
                                 ch_cell_col TYPE kcd_ex_col
                                 i_separator TYPE c
                                 i_fdpos     LIKE sy-fdpos.

  DATA: l_string   TYPE ty_s_senderline.
  DATA  l_sic_int  TYPE i.

  CLEAR i_intern.
  l_sic_int = i_fdpos.
  i_intern-row = i_row.
  l_string = i_line.
  i_intern-col = ch_cell_col.
* csv Dateien mit separator in Zelle: --> ;"abc;cd";
  IF ( i_separator = ';' OR  i_separator = ',' ) AND
       l_string(1) = gc_esc.
    PERFORM line_to_cell_esc_sep USING l_string
                                       l_sic_int
                                       i_separator
                                       i_intern-value.
  ELSE.
    IF l_sic_int > 0.
      i_intern-value = i_line(l_sic_int).
    ENDIF.
  ENDIF.
  IF l_sic_int > 0.
    APPEND i_intern.
  ENDIF.
  l_sic_int = l_sic_int + 1.
  i_line = i_line+l_sic_int.
ENDFORM.                    "line_to_cell_separat

*&---------------------------------------------------------------------*
*&      Form  line_to_cell_esc_sep
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM line_to_cell_esc_sep USING i_string
                                i_sic_int      TYPE i
                                i_separator    TYPE c
                                i_intern_value TYPE ty_d_itabvalue.
  DATA: l_int TYPE i,
        l_cell_end(2).
  FIELD-SYMBOLS: <l_cell>.
  l_cell_end = gc_esc.
  l_cell_end+1 = i_separator .

  IF i_string CS gc_esc.
    i_string = i_string+1.
    IF i_string CS l_cell_end.
      l_int = sy-fdpos.
      ASSIGN i_string(l_int) TO <l_cell>.
      i_intern_value = <l_cell>.
      l_int = l_int + 2.
      i_sic_int = l_int.
      i_string = i_string+l_int.
    ELSEIF i_string CS gc_esc.
*     letzte Celle
      l_int = sy-fdpos.
      ASSIGN i_string(l_int) TO <l_cell>.
      i_intern_value = <l_cell>.
      l_int = l_int + 1.
      i_sic_int = l_int.
      i_string = i_string+l_int.
      l_int = STRLEN( i_string ).
      IF l_int > 0 . MESSAGE x001(kx) . ENDIF.
    ELSE.
      MESSAGE x001(kx) . "was ist mit csv-Format
    ENDIF.
  ENDIF.

ENDFORM.                    "line_to_cell_esc_sep


Datos globales LZEXCELTOP.
Código: [Seleccionar]
FUNCTION-POOL zexcel.                       "MESSAGE-ID ..

TYPE-POOLS: ole2.

TYPES: ty_d_itabvalue             TYPE alsmex_tabline-value.


TYPES: BEGIN OF ty_s_senderline,
         line(4096)               TYPE c,
       END OF ty_s_senderline,
     ty_t_itab                  TYPE alsmex_tabline   OCCURS 0,

     ty_t_sender                TYPE ty_s_senderline  OCCURS 0.

CONSTANTS:  gc_esc              VALUE '"'.


Un saludo...

12
Programación ABAP / MOVIDO: OFERTA DE TRABAJO
« en: 05 de Noviembre de 2007, 12:01:21 pm »

13
Funciones / Adjunta archivos con 'SWU_OBJECT_PUBLISH'
« en: 31 de Octubre de 2007, 11:58:43 am »
Interesante función... con ella puedes adjuntar cualquier tipo de archivo, imagen, etc... a un documento de sap. Luego lo puedes descargar a tu PC, enviarlo por mail...  :o

Te genera un botón que se encuentra en la barra de titulo.

Y este es un pequeño programa para probarlo.
Código: [Seleccionar]
REPORT ZRICH_0001 .

parameters: p_check type c.

at selection-screen output.

  CALL FUNCTION 'SWU_OBJECT_PUBLISH'
    EXPORTING
      objtype                 = 'BUS2038'
      objkey                  = '1'
*     CREATOR                 = ' '
*     METHOD                  = ' '
*   TABLES
*     CONTAINER               =
   EXCEPTIONS
     OBJTYPE_NOT_FOUND       = 1
     OTHERS                  = 2.


start-of-selection.


14
Programación ABAP / MOVIDO: Buscamos Analistas Programadores
« en: 27 de Septiembre de 2007, 08:34:23 am »

15
Reports / Como descargar una imagen de la SE78
« en: 20 de Septiembre de 2007, 01:12:28 pm »
Alguna vez has intentado descargarte una imagen de la SE78 porque la habías perdido?  ???

Este en un programa que te permite bajar cualquier imagen que tengas, de SAP... a tu PC.  ;D



*&---------------------------------------------------------------------*
*& Report  ZRECUPERAR_IMAGEN_SE78
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zrecuperar_imagen_se78.

DATA: l_bytecount TYPE i,
      l_tdbtype LIKE stxbitmaps-tdbtype,
      l_content TYPE STANDARD TABLE OF bapiconten
      INITIAL SIZE 0.

DATA: graphic_size TYPE i.

DATA: BEGIN OF graphic_table OCCURS 0,
      line(255) TYPE x,
      END OF graphic_table.


DATA: btype LIKE  stxbitmaps-tdbtype.


SELECTION-SCREEN BEGIN OF BLOCK uno WITH FRAME TITLE text-001.
PARAMETERS: name_img LIKE stxbitmaps-tdname DEFAULT 'ENJOY',
            filename TYPE  string DEFAULT 'C:\Oscar\Imagen_recup.bmp'.

SELECTION-SCREEN SKIP.

PARAMETERS: p_bcol RADIOBUTTON GROUP rad1,
            p_bmon RADIOBUTTON GROUP rad1.
SELECTION-SCREEN END OF BLOCK uno.



IF p_bcol = 'X'.
  btype = 'BCOL'.
ELSE.
  btype = 'BMON'.
ENDIF.


CALL FUNCTION 'SAPSCRIPT_GET_GRAPHIC_BDS'
  EXPORTING
    i_object       = 'GRAPHICS'
    i_name         = name_img    " Nombre del Logo
    i_id           = 'BMAP'
    i_btype        = btype
  IMPORTING
    e_bytecount    = l_bytecount
  TABLES
    content        = l_content
  EXCEPTIONS
    not_found      = 1
    bds_get_failed = 2
    bds_no_content = 3
    OTHERS         = 4.


CALL FUNCTION 'SAPSCRIPT_CONVERT_BITMAP'
  EXPORTING
    old_format               = 'BDS'
    new_format               = 'BMP'
    bitmap_file_bytecount_in = l_bytecount
  IMPORTING
    bitmap_file_bytecount    = graphic_size
  TABLES
    bds_bitmap_file          = l_content
    bitmap_file              = graphic_table
  EXCEPTIONS
    OTHERS                   = 1.



CALL FUNCTION 'GUI_DOWNLOAD'
  EXPORTING
    bin_filesize = graphic_size
    filename     = filename
    filetype     = 'BIN'
  TABLES
    data_tab     = graphic_table.

IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.




Páginas: [1] 2 3