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.


Mensajes - Carlos

Páginas: [1] 2 3 ... 12
1
HANA / Conectarse a una base de datos SAP HANA (Power Query)
« en: 17 de Abril de 2019, 08:56:14 am »
Interesante artículo que comparto...

Para conectarse a una base de datos SAP HANA desde Excel:

1.- Haga clic en datos > nueva consulta > desde base de datos > desde base de datos SAP Hana.




2.- En el cuadro de diálogo base de datos SAP Hana, especifique el servidor al que desea conectarse. El nombre del servidor debe seguir el formato ServerName: Port.




3.- Opcionalmente, si desea importar datos mediante una consulta de base de datos nativa, haga clic en Opciones avanzadas y, en el cuadro instrucción SQL, escriba la consulta.

4.- Haga clic en Aceptar.

5.- Si el servidor SAP Hana requiere credenciales de usuario de base de datos, en el cuadro de diálogo obtener acceso a una base de datos SAP Hana, haga lo siguiente:

  a. Haga clic en la pestaña base de datos y escriba su nombre de usuario y contraseña.

  b. Haga clic en Conectar.



2
Programación ABAP / Capturar errores en un módulo de funciones estándar.
« en: 19 de Marzo de 2019, 04:33:04 pm »
Hola,

Estoy utilizando en un programa un módulo de funciones estándar y este me está devolviendo un error que me impide continuar.

Recuerdo que existe una forma de capturar el error, pero no recuerdo como era.



Gracias.

3
Todos los informes ALV de activos fijos tienen una estructura de catálogo predefinida con la nomenclatura:

            FIAA_SALVTAB_xxxxxx*

Ejemplos:

Patrimonio de activos fijos  > FIAA_SALVTAB_RABEST (Report: RABEST_ALV01)
Cuadro de activos fijos      > FIAA_SALVTAB_RAGITT (Report: RAGITT_ALV01)
Movimientos activos fijos    > FIAA_SALVTAB_RABEWG (Report: RABEWG_ALV01)
Amortizaciones               > FIAA_SALVTAB_RAHAFA (Report: RAHAFA_ALV01)


Cada catálogo de campo predefinido FIAA_SALVTAB_XXXXXX incluye una estructura tipo:

  CI_REPxxxxxx*

Ejemplos:

FIAA_SALVTAB_RABEST  .include > CI_REPRABEST  (Report: RABEST_ALV01)
FIAA_SALVTAB_RAGITT  .include > CI_REPRAGITT  (Report: RAGITT_ALV01)
FIAA_SALVTAB_RABEWG  .include > CI_REPRABEWG  (Report: RABEWG_ALV01)
FIAA_SALVTAB_RAHAFA  .include > CI_REPRAHAFA  (Report: RAHAFA_ALV01)



Procedimiento ejemplo del programa RABEST_ALV01 (de la nota 335065):

1.- Vamos al Diccionario (Tx. SE11) y en 'Tipo de datos' introducimos la estructura FIAA_SALVTAB_RABEST.
2.- Seleccionamos el  .Include > CI_REPRABEST (doble clic).
3.- En la estructura append añadimos los campos que deseamos al informe.
4.- Activamos el cambio.
5.- La próxima vez que ejecutemos el programa, modificamos el Layout y añadimos el nuevo campo al informe ALV.


Restricciones
Podemos incluir solo los campos que la base de datos lógica transfiere al informe.
 -ANLA (Segm.reg.maestro inmov.)
 -ANLZ (Asignaciones de activos fijos con fecha valor)
 -ANLU (Registro maestro de activos fijos: Campos de usuario)
 -ANLB (Parámetros de amortización)


-> Este método no está disponible para el informe RASIMU02. Lea la Nota 427827 para una mejora de RASIMU02.

Recomendaciones
-> Transfiera solo los campos realmente requeridos ya que cada campo agregado afecta el rendimiento.
-> Los campos que se incluyen adicionalmente se suministran con valores dentro del programa mediante una instrucción MOVE-CORRESPONDING. Es por eso que es necesario designar los campos agregados a los campos exactos correspondientes de las tablas originales o estructuras originales.
-> El tipo de componente también tiene que aceptar garantizar un formato correcto . Por lo tanto, siempre verifique los nombres de los campos en las estructuras iniciales (ANLAV, ANLB) y de qué tipo son. Luego, copie las entradas a la estructura CI_REPRA ... de forma idéntica.
-> Para los campos que contienen importes de moneda o especificaciones de cantidad, debe especificar tablas de referencia y campos de referencia. Puede asignar los campos de referencia en la pestaña de la pestaña Moneda / cantidad.
-> La activación de la estructura CI_REPRA ...- generalmente genera mensajes de advertencia, porque inserta campos en el espacio de nombres SAP en una estructura propiedad del cliente. Puede ignorar estas advertencias aquí y activar la estructura aún así.



4
Programación ABAP / SM35 - ¿Como descargar el LOG de un Batch Input?
« en: 10 de Enero de 2018, 11:05:53 am »
De esta forma sencilla podemos descargarnos el LOG de un Batch Input

1. Usamos la transacción SM35P y seleccionamos el LOG para visualizar.
2. Le damos al icono de la impresora, lo que te mostrará el LOG como un ALV_LIST.
3. En el menú superior vamos a... Sistema -> Lista -> Grabar -> Fichero local



5
Programación ABAP / Re:ayuda - RAWSTRING
« en: 14 de Diciembre de 2017, 05:37:08 pm »
La clase CX_ROOT es la clase más alta de todas las clases de excepción.

Mira en tu DUMP que excepción te esta devolviendo.

Este ejemplo te puede ayudar... TRY CATCH – Ejemplo básico de excepción



6
Links / Descargar SAP GUI o parches
« en: 17 de Noviembre de 2016, 05:39:52 pm »
Hay un sitio WEB llamado Easy Service Marketplace, donde están los links necesarios para descargar el SAP GUI y sus parches.

El link al sitio es: http://www.easymarketplace.de

Específicamente el SAPGUI se encuentra en: http://www.easymarketplace.de/SAPgui-Patches.php


7
Programación ABAP / Pasar un SELECT OPTIONS a un Módulo de Función (SE37)
« en: 17 de Octubre de 2016, 03:47:49 pm »
Alguna vez nos han indicado volcar un programa a una función y a la hora de pasar los Select Options de la pantalla de selección nos entra la duda de como hacerlo.

En principio es bastante sencillo.

Nos imaginamos que tenemos en nuestra pantalla de selección de nuestro programa:

SELECT-OPTIONS: so_bukrs   FOR ekpo-bukrs,
                so_matnr   FOR mara-matnr.


Nos declaramos en nuestra función y en la pestaña de tablas lo siguiente:

s_bukrs LIKE BAPI_RANGESBUKRS
s_matnr LIKE BAPI_RANGESMATNR


Y realizamos la llamada...



 CALL FUNCTION 'ZTU_FUNCION'
    TABLES
      s_bukrs = so_bukrs
      s_matnr = so_matnr
      ti_alv  = gt_alv.



Y dentro de nuestra nueva función ya podemos copiar y pegar nuestro programa y devolver "por ejemplo" nuestra tabla interna del ALV.




Puedes buscar este tipo de estructuras en la SE11...

BAPI_RANGESAUDAT
BAPI_RANGESBLDAT
BAPI_RANGESBSTKD
BAPI_RANGESBSTNK
BAPI_RANGESBUKRS
BAPI_RANGESCASVBELN
BAPI_RANGESEKGRP
BAPI_RANGESEKORG
BAPI_RANGESEQTYP
BAPI_RANGESEQUNR
BAPI_RANGESKDMAT
BAPI_RANGESKIDNO
BAPI_RANGESKTAAR
BAPI_RANGESKTAST
BAPI_RANGESKUNNR
BAPI_RANGESLFART
BAPI_RANGESLIFNR
BAPI_RANGESMATNR
BAPI_RANGESPARNR
BAPI_RANGESPOSTX
BAPI_RANGESRFBSK
BAPI_RANGESSETTLDATE
BAPI_RANGESSPART
BAPI_RANGESUSECASE
BAPI_RANGESVKBUR


etc...

8
Basis / Re:BAISS: Duda Transacción DB13
« en: 09 de Agosto de 2016, 09:37:27 am »
No conozco la transacción, pero me parece que llegas en el menú superior:

Administration > View week

9
Formularios / Re:Problema al traducir un Smartforms con la tx. SE63
« en: 10 de Mayo de 2016, 08:57:31 am »
Parece que el problema ocurre cuando tenemos abiertos dos modos al mismo tiempo.
(Por un lado el Smartforms y por otro la transacción SE63).

De alguna manera se queda en memoria el Smartforms mientras estas con la tx. SE63 abierta y si no te sales del Smartforms es como si luego al activar el Smartforms no hace caso a la traducción realizada y vuelve a cargar los valores anteriores a la traducción.

La solución sería la siguiente:
Utilizar el mismo modo entre el Smartforms y la SE63.

Dentro del mismo modo me salgo del Smartforms y entro en la SE63, traduzco, y volvemos a entrar en el Smartforms. Es un poco coñazo tener que hacerlo así, pero por lo menos funciona.
 

10
Links / Curso SAP BW y SD gratis
« en: 23 de Febrero de 2016, 08:49:37 am »
Hola!
Les escribo para compartirles un sitio web con cursos gratis de diferentes módulos SAP. Si bien por el momento hay solo dos cursos, por lo que dice el sitio web tienen pensado ir agregando mas.

El sitio web es InforSAP.

Dentro del sitio web esta el Curso de SAP BW y el Curso de SAP SD

Espero les sea de utilidad para todos aquellos principiantes en el aprendizaje de este gran ERP! :)

Saludos!

11
Formularios / Re:PDF por EMAIL con opción de "A" y "CC"
« en: 14 de Octubre de 2014, 03:32:11 pm »
Existe un programa de ejemplo en SAP muy bueno que convierte una orden SPOOL a PDF y lo envía como adjunto por MAIL.

BCS_EXAMPLE_8



12
Reports / Flujo de documentos... Factura - Entrega - Pedido...
« en: 15 de Abril de 2014, 01:23:29 pm »
Al programa le informamos de la factura y nos devuelve su flujo de documentos



*&---------------------------------------------------------------------*
*& Report  ZFLUJO_DOC
*&
*&---------------------------------------------------------------------*
*&
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZFLUJO_DOC.


************************************************************************
*INCLUDE
************************************************************************
INCLUDE zalv.
INCLUDE zsdin01.

TABLES: *vbrk.

************************************************************************
*DATA
************************************************************************
DATA: BEGIN OF gt_salida_alv OCCURS 0,
        vbeln              LIKE vbrk-vbeln,
        sfakn              LIKE vbrk-sfakn,
        fkdat              LIKE vbrk-fkdat,
        fkart              LIKE vbrk-fkart,
        vkorg              LIKE vbrk-vkorg,
        vtweg              LIKE vbrk-vtweg,
        kunrg              LIKE vbrk-kunrg,
        kunrg_txt          LIKE kna1-name1,
        posnr              LIKE vbrp-posnr,
        matnr              LIKE vbrp-matnr,
        matnr_txt          LIKE makt-maktx,
        entrega            LIKE likp-vbeln,
        posicion_entrega   LIKE lips-posnr,
        kunwe              LIKE likp-kunnr,
        kunwe_txt          LIKE kna1-name1,
        wadat_ist          LIKE likp-wadat_ist,
        ntgew              LIKE lips-ntgew,
        brgew              LIKE lips-brgew,
        gewei              LIKE lips-gewei,
        pedido             LIKE vbak-vbeln,
        posicion_pedido    LIKE vbap-posnr,
        bstnk              LIKE vbak-bstnk,
        bstdk              LIKE vbak-bstdk,
        ntgew_pedido       LIKE vbap-ntgew,
        brgew_pedido       LIKE vbap-brgew,
        gewei_pedido       LIKE vbap-gewei,
        werks              LIKE vbap-werks,
        werks_txt          LIKE t001w-name1,
        pedido_compras     LIKE ekko-ebeln,
        pos_pedido_compras LIKE ekpo-ebelp,
        reswk              LIKE ekko-reswk,
        reswk_txt          LIKE t001w-name1,
        augbl              LIKE bseg-augbl,       " ODJ 16.11.2010
        dmbtr              LIKE bseg-dmbtr,       " ODJ 16.11.2010
        pswsl              LIKE bseg-pswsl,       " ODJ 16.11.2010

      END   OF gt_salida_alv.


************************************************************************
*SELECT-OPTIONS
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS: s_vbeln FOR gt_salida_alv-vbeln,
                s_fkart FOR gt_salida_alv-fkart,
                s_fkdat FOR gt_salida_alv-fkdat,
                s_vkorg FOR gt_salida_alv-vkorg,
                s_vtweg FOR gt_salida_alv-vtweg,
                s_kunrg FOR gt_salida_alv-kunrg,
                s_matnr FOR gt_salida_alv-matnr.

SELECTION-SCREEN SKIP 1.

PARAMETERS: p_gewei  LIKE mara-gewei DEFAULT 'KG' OBLIGATORY.

SELECTION-SCREEN SKIP 1.
PARAMETERS: p_agru RADIOBUTTON GROUP  r1 DEFAULT 'X',
            p_det  RADIOBUTTON GROUP r1.
SELECTION-SCREEN END OF BLOCK b1.

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,
         g_exit TYPE c.

  CLEAR variant.
  variant-report = sy-repid.

  CALL FUNCTION 'LVC_VARIANT_F4'
    EXPORTING
      is_variant = variant
      i_save     = 'A'
    IMPORTING
      e_exit     = g_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 g_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 salida_alv.





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

  DATA: lt_salida_alv         LIKE gt_salida_alv OCCURS 0
                                                 WITH HEADER LINE.

  DATA: lt_likp               LIKE likp OCCURS 0 WITH HEADER LINE.
  DATA: lt_lips               LIKE lips OCCURS 0 WITH HEADER LINE.
  DATA: lt_vbak               LIKE vbak OCCURS 0 WITH HEADER LINE.
  DATA: lt_vbap               LIKE vbap OCCURS 0 WITH HEADER LINE.
  DATA: lt_ekko               LIKE ekko OCCURS 0 WITH HEADER LINE.
  DATA: lt_kna1               LIKE kna1 OCCURS 0 WITH HEADER LINE.
  DATA: lt_t001w              LIKE t001w OCCURS 0 WITH HEADER LINE.
  DATA: lt_makt               LIKE makt OCCURS 0 WITH HEADER LINE.


  DATA:   lf_subrc              LIKE sy-subrc.
  DATA:   lf_vkorg_error        LIKE zyte81-x_vkorg.

  PERFORM validar_organizacion_ventas
                     TABLES   s_vkorg
                     USING    ''
                     CHANGING lf_subrc
                              lf_vkorg_error.
  IF lf_subrc <> 0.
*   Sin autorización para organización de ventas ....
    MESSAGE i151(jgbp) WITH lf_vkorg_error.
    EXIT.
  ENDIF.


  SELECT vbeln fkart fkdat vkorg vtweg kunrg sfakn
  INTO CORRESPONDING FIELDS OF TABLE lt_salida_alv
  FROM vbrk
  WHERE vbeln IN s_vbeln
    AND fkart IN s_fkart
    AND fkdat IN s_fkdat
    AND vkorg IN s_vkorg
    AND vtweg IN s_vtweg
    AND kunrg IN s_kunrg.





  LOOP AT lt_salida_alv.
    MOVE-CORRESPONDING lt_salida_alv TO gt_salida_alv.

    SELECT posnr matnr
    INTO (gt_salida_alv-posnr, gt_salida_alv-matnr)
    FROM vbrp
    WHERE vbeln =  lt_salida_alv-vbeln
      AND matnr IN s_matnr.


      CLEAR: gt_salida_alv-entrega,
             gt_salida_alv-posicion_entrega,
             gt_salida_alv-pedido,
             gt_salida_alv-posicion_pedido.

      SELECT SINGLE vbelv posnv
      INTO (gt_salida_alv-entrega, gt_salida_alv-posicion_entrega)
      FROM vbfa
      WHERE vbeln   = gt_salida_alv-vbeln
        AND posnn   = gt_salida_alv-posnr
        AND vbtyp_v = 'J'.
      IF sy-subrc <> 0.
        SELECT SINGLE vbelv posnv
        INTO (gt_salida_alv-pedido, gt_salida_alv-posicion_pedido)
        FROM vbfa
        WHERE vbeln   = gt_salida_alv-vbeln
          AND posnn   = gt_salida_alv-posnr
          AND stufe   = '0'.
        IF sy-subrc <> 0.

          SELECT SINGLE vgbel vgpos aubel aupos
           INTO (gt_salida_alv-entrega, gt_salida_alv-posicion_entrega,
                 gt_salida_alv-pedido,  gt_salida_alv-posicion_pedido)
          FROM vbrp
          WHERE vbeln = lt_salida_alv-vbeln
            AND posnr = gt_salida_alv-posnr
            AND vgtyp = 'J'.

        ENDIF.
      ELSE.
        SELECT SINGLE vbelv posnv
        INTO (gt_salida_alv-pedido, gt_salida_alv-posicion_pedido)
        FROM vbfa
        WHERE vbeln   = gt_salida_alv-entrega
          AND posnn   = gt_salida_alv-posicion_entrega
          AND stufe   = '0'.
        IF sy-subrc <> 0.
          SELECT SINGLE vgbel vgpos
          INTO (gt_salida_alv-pedido_compras,
                gt_salida_alv-pos_pedido_compras)
          FROM lips
        WHERE vbeln = gt_salida_alv-entrega
          AND posnr = gt_salida_alv-posicion_entrega.
        ENDIF.
      ENDIF.

      APPEND gt_salida_alv.
    ENDSELECT.

  ENDLOOP.

  SORT gt_salida_alv BY vbeln           posnr
                        entrega         posicion_entrega
                        pedido          posicion_pedido
                        pedido_compras  pos_pedido_compras.




  IF NOT gt_salida_alv[] IS INITIAL.

*   Datos entrega, cabecera
    SELECT vbeln kunnr wadat_ist
    INTO CORRESPONDING FIELDS OF TABLE lt_likp
    FROM likp
    FOR ALL ENTRIES IN gt_salida_alv
    WHERE vbeln = gt_salida_alv-entrega.

    LOOP AT lt_likp.
      gt_salida_alv-kunwe     = lt_likp-kunnr.
      gt_salida_alv-wadat_ist = lt_likp-wadat_ist.
      MODIFY gt_salida_alv TRANSPORTING kunwe wadat_ist
                           WHERE entrega = lt_likp-vbeln.
    ENDLOOP.

*   Datos entrega, posición
    SELECT vbeln posnr matnr ntgew brgew gewei
    INTO CORRESPONDING FIELDS OF TABLE lt_lips
    FROM lips
    FOR ALL ENTRIES IN gt_salida_alv
    WHERE vbeln = gt_salida_alv-entrega
      AND posnr = gt_salida_alv-posicion_entrega.

    LOOP AT lt_lips.
      gt_salida_alv-gewei = p_gewei.

      IF p_gewei <> lt_lips-gewei.

        CALL FUNCTION 'Z_FT_CONVERTIR_UNIDADES'
          EXPORTING
            matnr    = lt_lips-matnr
            meinh    = lt_lips-gewei
            meins    = p_gewei
            cantidad = lt_lips-brgew
          IMPORTING
            salida   = gt_salida_alv-brgew.
        CALL FUNCTION 'Z_FT_CONVERTIR_UNIDADES'
          EXPORTING
            matnr    = lt_lips-matnr
            meinh    = lt_lips-gewei
            meins    = p_gewei
            cantidad = lt_lips-ntgew
          IMPORTING
            salida   = gt_salida_alv-ntgew.
      ELSE.
        gt_salida_alv-ntgew = lt_lips-ntgew.
        gt_salida_alv-brgew = lt_lips-brgew.
      ENDIF.

      MODIFY gt_salida_alv TRANSPORTING ntgew brgew gewei
                           WHERE entrega          = lt_lips-vbeln
                             AND posicion_entrega = lt_lips-posnr.
    ENDLOOP.


*   Datos pedido ventas, cabecera
    SELECT vbeln bstnk bstdk
    INTO CORRESPONDING FIELDS OF TABLE lt_vbak
    FROM vbak
    FOR ALL ENTRIES IN gt_salida_alv
    WHERE vbeln = gt_salida_alv-pedido.

    LOOP AT lt_vbak.
      gt_salida_alv-bstnk = lt_vbak-bstnk.
      gt_salida_alv-bstdk = lt_vbak-bstdk.
      MODIFY gt_salida_alv TRANSPORTING bstnk bstdk
                           WHERE pedido = lt_vbak-vbeln.
    ENDLOOP.


*   Datos pedido ventas, posición
    SELECT vbeln posnr ntgew brgew gewei werks
    INTO CORRESPONDING FIELDS OF TABLE lt_vbap
    FROM vbap
    FOR ALL ENTRIES IN gt_salida_alv
    WHERE vbeln = gt_salida_alv-pedido
      AND posnr = gt_salida_alv-posicion_pedido.

    LOOP AT lt_vbap.

      gt_salida_alv-werks        = lt_vbap-werks.
      gt_salida_alv-gewei_pedido = p_gewei.

      IF p_gewei <> lt_vbap-gewei.
        CALL FUNCTION 'Z_FT_CONVERTIR_UNIDADES'
          EXPORTING
            matnr    = lt_lips-matnr
            meinh    = lt_lips-gewei
            meins    = p_gewei
            cantidad = lt_vbap-brgew
          IMPORTING
            salida   = gt_salida_alv-brgew_pedido.
        CALL FUNCTION 'Z_FT_CONVERTIR_UNIDADES'
          EXPORTING
            matnr    = lt_lips-matnr
            meinh    = lt_lips-gewei
            meins    = p_gewei
            cantidad = lt_vbap-ntgew
          IMPORTING
            salida   = gt_salida_alv-ntgew_pedido.
      ELSE.
        gt_salida_alv-ntgew_pedido = lt_vbap-ntgew.
        gt_salida_alv-brgew_pedido = lt_vbap-brgew.
      ENDIF.

      MODIFY gt_salida_alv TRANSPORTING ntgew_pedido
                                        brgew_pedido
                                        gewei_pedido
                                        werks
                           WHERE pedido           = lt_vbap-vbeln
                             AND posicion_pedido  = lt_vbap-posnr.
    ENDLOOP.


    SELECT ebeln reswk
    INTO CORRESPONDING FIELDS OF TABLE lt_ekko
    FROM ekko
    FOR ALL ENTRIES IN gt_salida_alv
    WHERE ebeln = gt_salida_alv-pedido_compras.

    LOOP AT lt_ekko.
      gt_salida_alv-reswk = lt_ekko-reswk.
      MODIFY gt_salida_alv TRANSPORTING reswk
                           WHERE pedido_compras = lt_ekko-ebeln.
    ENDLOOP.





*   Descripción de Resp. Pago, Dest. Mercancía
    SELECT kunnr name1
    INTO CORRESPONDING FIELDS OF TABLE lt_kna1
    FROM kna1
    FOR ALL ENTRIES IN gt_salida_alv
    WHERE kunnr = gt_salida_alv-kunrg
       OR kunnr = gt_salida_alv-kunwe.

    LOOP AT lt_kna1.
      gt_salida_alv-kunrg_txt = lt_kna1-name1.
      MODIFY gt_salida_alv TRANSPORTING kunrg_txt
                           WHERE kunrg = lt_kna1-kunnr.
      gt_salida_alv-kunwe_txt = lt_kna1-name1.
      MODIFY gt_salida_alv TRANSPORTING kunwe_txt
                           WHERE kunwe = lt_kna1-kunnr.
    ENDLOOP.


*   Datos asociados a los centros
    SELECT werks name1
    INTO CORRESPONDING FIELDS OF TABLE lt_t001w
    FROM t001w
    FOR ALL ENTRIES IN gt_salida_alv
    WHERE werks = gt_salida_alv-werks
       OR werks = gt_salida_alv-reswk.

    LOOP AT lt_t001w.
      gt_salida_alv-werks_txt = lt_t001w-name1.
      MODIFY gt_salida_alv TRANSPORTING werks_txt
                           WHERE werks = lt_t001w-werks.
      gt_salida_alv-reswk_txt = lt_t001w-name1.
      MODIFY gt_salida_alv TRANSPORTING reswk_txt
                           WHERE reswk = lt_t001w-werks.
    ENDLOOP.

*   Textos de material
    SELECT matnr maktx
    INTO CORRESPONDING FIELDS OF TABLE lt_makt
    FROM makt
    FOR ALL ENTRIES IN gt_salida_alv
    WHERE matnr = gt_salida_alv-matnr
      AND spras = sy-langu.

    LOOP AT lt_makt.
      gt_salida_alv-matnr_txt = lt_makt-maktx.
      MODIFY gt_salida_alv TRANSPORTING matnr_txt
                           WHERE matnr = lt_makt-matnr.
    ENDLOOP.


*   Añadimos el doc. compensado y el importe
    DATA: lf_vbeln LIKE gt_salida_alv-vbeln.
    LOOP AT gt_salida_alv.
      SELECT SINGLE bukrs INTO *vbrk-bukrs FROM *vbrk
                     WHERE vbeln = gt_salida_alv-vbeln.

      SELECT SINGLE augbl dmbtr pswsl
               INTO (gt_salida_alv-augbl, gt_salida_alv-dmbtr,
                     gt_salida_alv-pswsl)
               FROM bseg
              WHERE bukrs = *vbrk-bukrs
                AND belnr = gt_salida_alv-vbeln
                AND augbl <> space
                AND bschl = '01'.     " Facturas

      IF gt_salida_alv-vbeln <> lf_vbeln.
        lf_vbeln = gt_salida_alv-vbeln.   " Solo una vez por factura
      ELSE.
        CLEAR gt_salida_alv-dmbtr.
      ENDIF.

      MODIFY gt_salida_alv.
    ENDLOOP.

  ENDIF.


ENDFORM.                    " tomar_datos

*&---------------------------------------------------------------------*
*&      Form  SALIDA_ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM salida_alv .

  DATA: lf_alv_repid          LIKE sy-repid.

  DATA: ls_alv_doc_layout     TYPE slis_layout_alv,
        lt_alv_doc_fieldcat   TYPE slis_t_fieldcat_alv,
        ls_alv_doc_fieldcat   TYPE slis_fieldcat_alv.
  DATA: ls_alv_doc_variant    LIKE disvariant.

  DATA: lt_salida_alv         LIKE gt_salida_alv OCCURS 0
                                                 WITH HEADER LINE.

  lf_alv_repid = 'ZFLUJO_DOC'.


* Tomamos el catálogo de campos.
  PERFORM obt_descrip_campos_tabla USING lf_alv_repid
                                         'GT_SALIDA_ALV'.


  PERFORM cambio_descripcion USING:
  'POSNR'               text-001  text-001  text-001  text-001,
  'POSICION_ENTREGA'    text-002  text-002  text-002  text-002,
  'POSICION_PEDIDO'     text-003  text-003  text-003  text-003,
  'POS_PEDIDO_COMPRAS'  text-004  text-004  text-004  text-004.


  PERFORM copia_descripcion USING: 'KUNRG_TXT'  'KUNRG',
                                   'KUNWE_TXT'  'KUNWE',
                                   'WERKS_TXT'  'WERKS',
                                   'RESWK_TXT'  'RESWK'.


  PERFORM carac_gen_listado.

  PERFORM asign_o_quitar_campo_clave USING: 'VBELN'              ' ',
                                            'POSNR'              ' ',
                                            'ENTREGA'            ' ',
                                            'POSICION_ENTREGA'   ' ',
                                            'PEDIDO'             ' ',
                                            'POSICION_PEDIDO'    ' ',
                                            'PEDIDO_COMPRAS'     ' ',
                                            'POS_PEDIDO_COMPRAS' ' '.

  PERFORM activar_hotspot USING: 'VBELN'           'X',
                                 'SFAKN'           'X',
                                 'ENTREGA'         'X',
                                 'PEDIDO'          'X',
                                 'PEDIDO_COMPRAS'  'X'.


  ls_alv_doc_variant-report  = lf_alv_repid.
  ls_alv_doc_variant-variant = p_vari.



  IF p_det IS INITIAL.

    LOOP AT gt_salida_alv.
      lt_salida_alv = gt_salida_alv.

      CLEAR: lt_salida_alv-posnr,
             lt_salida_alv-matnr,
             lt_salida_alv-matnr_txt,
             lt_salida_alv-posicion_entrega,
             lt_salida_alv-posicion_pedido,
             lt_salida_alv-pos_pedido_compras.
      COLLECT lt_salida_alv.
    ENDLOOP.

    gt_salida_alv[] = lt_salida_alv[].

    PERFORM eliminar_campos USING: 'POSNR',
                                   'MATNR',
                                   'MATNR_TXT',
                                   'POSICION_ENTREGA',
                                   'POSICION_PEDIDO',
                                   'POS_PEDIDO_COMPRAS'.

  ENDIF.

  PERFORM eliminar_campos USING: 'NTGEW',
                                 'BRGEW',
                                 'GEWEI',
                                 'NTGEW_PEDIDO',
                                 'BRGEW_PEDIDO',
                                 'GEWEI_PEDIDO',
                                 'WERKS',
                                 'WERKS_TXT',
                                 'PEDIDO_COMPRAS',
                                 'POS_PEDIDO_COMPRAS',
                                 'ERSWK',
                                 'RESWK_TXT'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = lf_alv_repid
      is_layout               = layout
      it_fieldcat             = fieldtab
      i_callback_user_command = 'USER_COMMAND'
      i_default               = 'X'
      i_save                  = 'A'
      is_variant              = ls_alv_doc_variant
    TABLES
      t_outtab                = gt_salida_alv
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 99.



ENDFORM.                    " SALIDA_ALV

*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM user_command USING pf_ucomm    TYPE sy-ucomm
                        ps_selfield TYPE slis_selfield.

  DATA: lf_ebeln              LIKE  ekko-ebeln.

  CASE pf_ucomm.
    WHEN '&IC1'.
      CASE ps_selfield-fieldname.
        WHEN 'VBELN' OR 'SFAKN'.
          CHECK NOT ps_selfield-value IS INITIAL.
          SET PARAMETER ID 'VF' FIELD ps_selfield-value.
          CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.

        WHEN 'ENTREGA'.
          CHECK NOT ps_selfield-value IS INITIAL.
          SET PARAMETER ID 'VL' FIELD ps_selfield-value.
          CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.

        WHEN 'PEDIDO'.
          CHECK NOT ps_selfield-value IS INITIAL.
          SET PARAMETER ID 'AUN' FIELD ps_selfield-value.
          CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

        WHEN 'PEDIDO_COMPRAS'.
          CHECK NOT ps_selfield-value IS INITIAL.

          CLEAR gt_salida_alv.
          READ TABLE gt_salida_alv INDEX ps_selfield-tabindex.
          CHECK sy-subrc = 0.

          CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT'
            EXPORTING
              i_ebeln              = gt_salida_alv-pedido_compras
              i_ebelp              = gt_salida_alv-pos_pedido_compras
              i_enjoy              = 'X'
              i_display_only       = 'X'
            EXCEPTIONS
              not_found            = 1
              no_authority         = 2
              invalid_call         = 3
              preview_not_possible = 4
              OTHERS               = 5.

      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.

  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.
  ENDIF.

ENDFORM.                    " cambio_descripcion

*&---------------------------------------------------------------------*
*&      Form  copia_descripcion
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM copia_descripcion USING pf_fieldname_destino
                             pf_fieldname_origen.

  FIELD-SYMBOLS: <lfs_fieldtab> TYPE slis_fieldcat_alv.

  READ TABLE fieldtab WITH KEY fieldname = pf_fieldname_origen
                      ASSIGNING <lfs_fieldtab>.

  CHECK sy-subrc = 0.

  READ TABLE fieldtab WITH KEY fieldname = pf_fieldname_destino
                      ASSIGNING <fs>.
  IF sy-subrc EQ 0.
    <fs>-seltext_l    = <lfs_fieldtab>-seltext_l.
    <fs>-seltext_m    = <lfs_fieldtab>-seltext_m.
    <fs>-seltext_s    = <lfs_fieldtab>-seltext_s.
    <fs>-reptext_ddic = <lfs_fieldtab>-reptext_ddic.
  ENDIF.

ENDFORM.                    " cambio_descripcion

*&---------------------------------------------------------------------*
*&      Form  activar_hotspot
*&---------------------------------------------------------------------*
FORM eliminar_campos USING p1 TYPE slis_fieldname.

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

ENDFORM.                    " activar_hotspot

13
Reports / Re:Duplicidad en tabla EKKI
« en: 15 de Abril de 2014, 12:50:44 pm »
Otro programa similar pero mejorado...


*&---------------------------------------------------------------------*
*& Report  ZEKKI_MEJORADO
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZEKKI_MEJORADO.

INCLUDE: zalv.


DATA: gt_ekki                LIKE ekki OCCURS 0 WITH HEADER LINE.

SELECT-OPTIONS: s_ebeln FOR gt_ekki-ebeln OBLIGATORY.
SELECT-OPTIONS: s_klief FOR gt_ekki-klief.
SELECT-OPTIONS: s_lifnr FOR gt_ekki-lifnr.

SELECTION-SCREEN SKIP 2.

PARAMETERS: p_real AS CHECKBOX.

START-OF-SELECTION.

  SELECT * INTO TABLE gt_ekki
  FROM ekki
  WHERE ebeln IN s_ebeln.

  SORT gt_ekki BY ebeln ASCENDING
                  klief ASCENDING
                  lifnr ASCENDING.


  IF NOT p_real IS INITIAL.
    LOOP AT gt_ekki.
      DELETE ekki FROM gt_ekki.
    ENDLOOP.
    COMMIT WORK AND WAIT.
    MESSAGE s836(sd) WITH 'Registros borrados'.
  ELSE.
    MESSAGE s836(sd) WITH 'Registros NO borrados'.
  ENDIF.


  PERFORM mostrar_alv.


*&---------------------------------------------------------------------*
*&      Form  mostrar_alv
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM mostrar_alv .

  DATA: lf_alv_repid          LIKE sy-repid.

  DATA: lt_sort               TYPE slis_t_sortinfo_alv.
  DATA: ls_sort               TYPE slis_sortinfo_alv.

  DATA: lt_fieldtab           TYPE slis_t_fieldcat_alv.
  DATA: ls_fieldtab           TYPE slis_fieldcat_alv.


  lf_alv_repid = sy-repid.

  PERFORM obt_descrip_campos_tabla USING lf_alv_repid
                                         'GT_EKKI'.

  PERFORM activar_hotspot USING: 'EBELN'   'X'.

  PERFORM carac_gen_listado.


  ls_fieldtab-ddictxt = 'M'.
  MODIFY fieldtab FROM ls_fieldtab TRANSPORTING ddictxt
                                   WHERE fieldname <> space.

  DATA: lf_grid_title TYPE lvc_title.
  IF NOT p_real IS INITIAL.
    lf_grid_title = 'Registros borrados'.
  ELSE.
    lf_grid_title = 'Registros NO borrados'.
  ENDIF.



* Mostramos el listado
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = lf_alv_repid
      is_layout               = layout
      it_fieldcat             = fieldtab
      it_sort                 = lt_sort
      i_callback_user_command = 'USER_COMMAND'
      i_grid_title            = lf_grid_title
*     i_default               = ' '
*     i_save                  = 'A'
*     is_variant              = variant
    TABLES
      t_outtab                = gt_ekki
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 99.

  IF NOT sy-subrc IS INITIAL.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.


ENDFORM.                    " mostrar_alv

*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM user_command USING pf_ucomm TYPE sy-ucomm
                        ps_selfield TYPE slis_selfield.

  DATA: ls_venum TYPE hum_venum,
        lt_venum TYPE hum_venum_t.


  CASE pf_ucomm.
    WHEN '&IC1'.

      READ TABLE gt_ekki INDEX ps_selfield-tabindex.

      CHECK NOT gt_ekki-ebeln IS INITIAL.

      CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT'
        EXPORTING
          i_ebeln              = gt_ekki-ebeln
          i_enjoy              = 'X'
          i_display_only       = 'X'
        EXCEPTIONS
          not_found            = 1
          no_authority         = 2
          invalid_call         = 3
          preview_not_possible = 4
          OTHERS               = 5.


  ENDCASE.

ENDFORM.                    "USER_COMMAND

14
Programación ABAP / Re:Leer Bascula / puerto serial
« en: 15 de Abril de 2014, 08:18:12 am »
Por lo que nos comentas, no tengo ninguna duda que lo mejor es lo que nos comentas. Para nosotros acceder a una tabla SQL es sencillo y seguro.

Saludos,


15
Programación ABAP / Re:Leer Bascula / puerto serial
« en: 11 de Abril de 2014, 09:31:05 am »
Entiendo que los datos van a ser grabados en SAP, por lo que yo pienso que todo lo que vaya directamente a SAP será mejor que andar dando vueltas por distintas máquinas o procesos.

Leer de una tabla SQL directamente tampoco estaría mal, pero entiendo que SAP será el que ordena o lanza el proceso de la pesada, y ya estamos trabajando con dos sistemas distintos. ¿no?

Al final creo que si todo se hace directamente con SAP mucho mejor.


Saludos,


Páginas: [1] 2 3 ... 12