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 - Enrique.Borroni

Páginas: [1] 2 3 ... 6
1
Programación ABAP / Re:Asignación dinámica a tabla y referencia de campo
« en: 06 de Julio de 2018, 04:29:38 pm »
Aquí te dejo un ejemplo...

DATA  : lt_mara           TYPE STANDARD TABLE OF mara.
DATA  : ld_nomb_tabla     TYPE tabname.
DATA  : ld_tbi_dinamica   TYPE tabname.
DATA  : ld_condicion      TYPE string.
*
DATA  : ld_matnr          TYPE matnr.
DATA  : ld_matkl          TYPE matkl.
*
FIELD-SYMBOLS : <fs_tabla_interna> TYPE STANDARD TABLE.
*
ld_nomb_tabla     = 'MARA'.
ld_tbi_dinamica   = 'LT_MARA'.
ld_matnr          = '10050'.
ld_matkl          = '0001'.
*
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
  EXPORTING
    input        = ld_matnr
  IMPORTING
    output       = ld_matnr
  EXCEPTIONS
    length_error = 1
    OTHERS       = 2.
*
CONCATENATE 'MATNR EQ' 'LD_MATNR' 'AND'
            'MATKL EQ' 'LD_MATKL'
              INTO ld_condicion SEPARATED BY space.
*
ASSIGN (ld_tbi_dinamica) TO <fs_tabla_interna>.
IF ( sy-subrc EQ 0 ).
  SELECT *
    INTO TABLE <fs_tabla_interna>
      FROM (ld_nomb_tabla)
        WHERE (ld_condicion).
ENDIF.


Saludos.

2
Aquí les dejo un report  que permite seleccionar archivos desde el servidor de aplicación o presentación.
Espero les sea de utilidad.

REPORT Z_GET_ARCHIVO_SRV_LOCAL.
*-----------------------------------------------------------------------------------------------------------------------------------------*
DATA : ld_rc(10)              TYPE c.
DATA : ld_filename            TYPE string.
*-----------------------------------------------------------------------------------------------------------------------------------------*
DATA : ld_location_flag       TYPE  dxlocation.     " Indicador: Servidor de aplicación o presentación : A = Server SAP   // P = PC Local
DATA : ld_server              TYPE  msname2.        " Nombre del servidor de aplicación (SOLO PARA SERVER SAP)
DATA : ld_path                TYPE  dxlpath.        " Vía acceso más larga
DATA : ld_filemask            TYPE  dxfilemask.     " Máscara p.nom.fichero
DATA : ld_fileoperation       TYPE  dxfileoper.     " Tipo de Operacion con el Archivo : R = Leer  // W = Escribir
*-----------------------------------------------------------------------------------------------------------------------------------------*
*

PARAMETERS : p_srv            RADIOBUTTON GROUP gr1.
PARAMETERS : p_loc            RADIOBUTTON GROUP gr1.
*
*-----------------------------------------------------------------------------------------------------------------------------------------*


*
*--->> PARA SELECIONAR ARCHIVOS DESDE EL SERVER SAP
IF ( p_srv EQ 'X' ).
  ld_location_flag  = 'A'.
  ld_path           = '/usr/sap/tmp'.
  ld_filemask       = '*.*'.
  ld_fileoperation  = 'R'.
ENDIF.

*
*--->> PARA SELECIONAR ARCHIVOS DESDE LOCAL PC
IF ( p_loc EQ 'X' ).
  ld_location_flag  = 'P'.
  ld_path           = 'C:\TEMP\'.
  ld_filemask       = '*.*'.
  ld_fileoperation  = 'R'.
ENDIF.


*-----------------------------------------------------------------------------------------------------------------------------------------*
START-OF-SELECTION.
*
  PERFORM get_filename_pc_sev USING     ld_location_flag
                                        ld_path
                                        ld_filemask
                                        ld_fileoperation
                              CHANGING  ld_rc
                                        ld_filename.
*
  WRITE : / 'RC       : ', ld_rc.
  WRITE : / 'ARCHIVO  : ', ld_filename.
*
END-OF-SELECTION.
*-----------------------------------------------------------------------------------------------------------------------------------------*
*
*
*-----------------------------------------------------------------------------------------------------------------------------------------*
*  FORM : GET_FILENAME_PC_SEV
*-----------------------------------------------------------------------------------------------------------------------------------------*
*       Leer Nombre de un archivo desde el servidor SAP o LOCAL
*-----------------------------------------------------------------------------------------------------------------------------------------*
*      -->P_LD_LOCATION_FLAG      Indicador: Servidor de aplicación o presentación : A = Server SAP   // P = PC Local
*      -->P_LD_PATH               Vía acceso más larga
*      -->P_LD_FILEMASK           Máscara p.nom.fichero
*      -->P_LD_FILEOPERATION      Tipo de Operacion con el Archivo : R = Leer  // W = Escribir
*      <--P_LD_RC
*      <--P_LD_FILENAME
*-----------------------------------------------------------------------------------------------------------------------------------------*
FORM get_filename_pc_sev  USING    p_location_flag
                                   p_path
                                   p_filemask
                                   p_fileoperation
                          CHANGING p_rc
                                   p_filename.

*
* ----->>> DECLARACION DE VARIABLES
  DATA  : ld_o_location_flag      TYPE dxlocation.                      " Indicador: Servidor de aplicación o presentación
  DATA  : ld_o_server             TYPE msname2.                         " Nombre del servidor de aplicación
  DATA  : ld_o_path               TYPE dxlpath.                         " Vía acceso más larga
  DATA  : ld_abend_flag           TYPE dxxabend.                        " Indicador: Cancelación del proceso
  DATA  : ld_filesys              TYPE filesys_d.                       " Grupo de sintaxis para nombres de ficheros y vías de acceso
  DATA  : lw_rfcsi_export         TYPE rfcsi.                           " RFC Versión log
  DATA  : ld_server               TYPE msname2.                         " Nombre del servidor de aplicación
*
  DATA  : ld_path                 TYPE string.                          " Path para Archivos PC
  DATA  : ld_mascara              TYPE string.                          " Marcara para Archivos PC
  DATA  : lt_file_table           TYPE STANDARD TABLE OF file_table.    " Tabla Interna para guardar archivo seleccionado desde el PC
  DATA  : lw_file_table           LIKE LINE OF lt_file_table.           "
  DATA  : ld_subrc                TYPE i.                               " Para retorno de la funcion de seleccion de archivos del PC

  IF ( p_location_flag EQ 'A' ).
  ENDIF.


  CASE p_location_flag.
*
*   ----->>> EJECUTAR FUNCION PARA SELECCIONAR ARCHIVO DESDE SERVIDOR DE APLICACION : 'SAP'
    WHEN 'A'.
*
*     ----->>> RECUPERAR EL SISTEMA OPERATIVO DEL LOS SERVIDORES DE APLICACIONES : APLICACION Y PRESENTACION
      SELECT SINGLE filesys
        FROM opsystem INTO ld_filesys
          WHERE opsys EQ sy-opsys.
*
*     ----->>> RECUPERAR DESTINO LOGICO DEL SISTEMA
      CALL FUNCTION 'RFC_SYSTEM_INFO'
        IMPORTING
          rfcsi_export = lw_rfcsi_export.
*
*     ----->>> RECUPERAR NOMBER DEL SERVER SAP
      ld_server = lw_rfcsi_export-rfcdest.
*
*     ----->>> SI RUTA ES VACIO : UTILIZAR '?'
      IF ( ld_server IS INITIAL ).
        ld_server = '?'.
      ENDIF.
*
*     ----->>> SI MASCARA PARA SELECCION DE TIPO DE ARCHIVOS ES VACIA : UTILIZAR '*.*'
      IF ( p_filemask IS INITIAL ).
        p_filemask = '*.*'.
      ENDIF.
*
*     ----->>> LLAMADA A LA FUNCION DE SELECCION DE ARCHIVOS EN SERVER SAP
      CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION'
        EXPORTING
          i_location_flag = p_location_flag             " Indicador: Servidor de aplicación o presentación : A = Server SAP   // P = PC Local
          i_server        = ld_server                   " Nombre del servidor de aplicación
          i_path          = p_path                      " Vía acceso más larga
          filemask        = p_filemask                  " Máscara p.nom.fichero
          fileoperation   = p_fileoperation             " Tipo de Operacion con el Archivo : R = Leer  // W = Escribir
        IMPORTING
          o_location_flag = ld_o_location_flag
          o_server        = ld_o_server
          o_path          = ld_o_path
          abend_flag      = ld_abend_flag
        EXCEPTIONS
          rfc_error       = 1
          error_with_gui  = 2
          OTHERS          = 3.
*
*   ----->>> EJECUTAR FUNCION PARA SELECCIONAR ARCHIVO DESDE SERVIDOR DE PRESENTACION : 'LOCAL PC'
    WHEN 'P'.
*
      IF ( p_path IS INITIAL ).
        ld_path = 'C:\'.
      ELSE.
        ld_path     = p_path.
      ENDIF.
*
      IF ( p_filemask IS INITIAL ).
        ld_mascara  = '*.*'.
      ELSE.
        ld_mascara  = p_filemask.
      ENDIF.
*
*     ----->>> LLAMADA AL METODO DE SELECCION DE ARCHIVOS DESDE PC
      CALL METHOD cl_gui_frontend_services=>file_open_dialog
        EXPORTING
          window_title            = 'Seleccione Archivo'
          default_extension       = ld_mascara
          initial_directory       = ld_path
        CHANGING
          file_table              = lt_file_table
          rc                      = ld_subrc
        EXCEPTIONS
          file_open_dialog_failed = 1
          cntl_error              = 2
          error_no_gui            = 3
          not_supported_by_gui    = 4
          OTHERS                  = 5.
*
*   ----->>> VALIDA LA EJECUCION Y HOMOLOGA VALORES DE RETORNO DE LA RUTINA
    IF NOT ( lt_file_table IS INITIAL ).
        READ TABLE lt_file_table INTO lw_file_table INDEX 1.
        ld_o_path     = lw_file_table-filename.
        sy-subrc      = 0.
      ELSEIF ( ld_subrc GT 1 ).
        sy-subrc      = ld_subrc.
      ELSEIF ( lt_file_table IS INITIAL ).
        sy-subrc      = 0.
        ld_abend_flag = 'X'.
        ld_o_path     = ''.
      ENDIF.
  ENDCASE.
*
* ----->>> VALIDA LA EJECUCION Y RETORNA VALORES
  IF ( sy-subrc EQ 0 ) AND ( ld_o_path NE '' ).
    p_filename  = ld_o_path.
    p_rc        = 'OK'.
  ELSEIF ( ld_abend_flag EQ 'X' ) OR ( ld_o_path EQ '' ).
    p_rc        = 'CANCEL'.
  ELSE.
    p_rc        = 'ERROR'.
  ENDIF.
*
ENDFORM.                                                                                                                                                                   "
*-----------------------------------------------------------------------------------------------------------------------------------------*



3
Programación ABAP / Performance en Acceso a Tablas de SD
« en: 30 de Septiembre de 2016, 05:50:53 pm »
Hace un tiempo buscando mejorar el acceso a las tablas de SD encontre esto...Ojala les sirva.

1. Accesses to sales orders (tables VBAK, VBAP)

a) Search orders for customer number (field VBAK-KUNNR):

*Incorrect:
SELECT FROM vbak WHERE kunnr = ...
*Correct:   
SELECT FROM vakpa WHERE kunde = ... 
SELECT FROM vbak WHERE vbeln = vakpa-vbeln.


b) Search order items for material number (field VBAP-MATNR):

*Incorrect:
SELECT FROM vbap WHERE matnr = ...
*Correct:   
SELECT FROM vapma WHERE matnr = ...   
SELECT FROM vbap WHERE vbeln = vapma-vbeln
                   AND posnr = vapma-posnr



c) Other search helps for sales orders offer the matchcode tables and views M_VMVAx, x. = A, B, C, ... M; for example search for purchase order number of the customer, description and so on

2. Accesses to deliveries (tables LIKP, LIPS)

a) Search for deliveries with customer number (field LIKP-KUNNR):

*Incorrect:
SELECT FROM likp WHERE kunnr = ...
*Correct:
SELECT FROM vlkpa WHERE kunde = ...   
SELECT FROM likp WHERE vbeln = vlkpa-vbeln.


b) Search for delivery items with material number (field LIKP-MATNR):

*Incorrect:
SELECT FROM lips WHERE matnr = ...
*Correct:
SELECT FROM vlpma WHERE matnr = ...   
SELECT FROM lips WHERE vbeln = vlpma-vbeln
                   AND posnr = vlpma-posnr



c) Search for deliveries with sales order number (preceding document, field LIPS-VGBEL):

*Incorrect:
SELECT FROM lips WHERE vgbel = ...
*Correct:
SELECT FROM vbfa WHERE VBELV  = ...
                   AND VBTYP_N = 'J'   
SELECT FROM lips WHERE vbeln = vbfa-vbeln
                   AND posnr = vbfa-posnn



d) Other search helps for deliveries offer matchcode tables and views M_VMVLx, x. = A, B, C, ... M; for example search for goods issue date, picking date, transportation planning date and so on.


3. Accesses to invoices (tables VBRK, VBRP)

a) Search for invoices with customer number ("payer") (field VBRK-KUNRG):

*Incorrect:
SELECT FROM vbrk WHERE kunrg = ...
*Correct:
SELECT FROM vrkpa WHERE kunde = ...   
SELECT FROM vbrk WHERE vbeln = vrkpa-vbeln



b) Search for invoice items with material number (field VBRP-MATNR):

*Incorrect:
SELECT FROM vbrp WHERE matnr = ...
*Correct:
SELECT FROM vrpma WHERE matnr = ...   
SELECT FROM vbrp WHERE vbeln = vrpma-vbeln
                   AND posnr = vrpma-posnr



c) Search for invoices with delivery number (preceding document, field VBRP-VGBEL):

 
*Incorrect:
SELECT FROM vbrp WHERE vgbel = ...
*Correct:
SELECT FROM vbfa WHERE vbtyp_n = 'M'
                   AND vbelv  = ...   
SELECT FROM vbrp WHERE vbeln = vbfa-vbeln
                   AND posnr = vbfa-posnn



d) Search for invoices with order number (preceding document, field VBRP-AUBEL):

*Incorrect:
SELECT FROM vbrp WHERE aubel = ...
*Correct:
SELECT FROM vbfa WHERE vbtyp_n = 'M'                   
                   AND vbelv   = ...
SELECT FROM vbrp WHERE vbeln = vbfa-vbeln
                   AND posnr = vbfa-posnn



4. Other accesses in SD:

a) Document flow:
*Incorrect:
SELECT vbelv FROM vbfa WHERE vbeln ...


In table VBFA only the preceeding document is used to search for the subsequent document (for example, delivery for order). Searching the other way makes no sense with this table since the preceding documents (for example, order for delivery) are stored directly in the document tables. Thus reading in table VBFA is a one-way street.

*Correct:
SELECT vgbel FROM lips WHERE vbeln = ...
or
SELECT vgbel FROM vbrp WHERE vbeln = ...
or
SELECT aubel FROM vbrp WHERE vbeln = ...


b) Search for shipping unit item with delivery

Incorrect:
SELECT FROM vepo WHERE vbtyp = 'J'                   
                   AND vbeln = i_lips-vbeln
Correct:
SELECT FROM vbfa WHERE vbtyp_n = 'X'                   
                   AND vbelv = i_lips-vbeln
SELECT FROM vepo WHERE venum = vbfa-vbeln

4
Reports / Ingresar texto dentro de un cuadro de texto en una Dynpro
« en: 31 de Enero de 2016, 10:09:07 am »
Para ingresar texto en un cuadro de texto creado en la Dynpro
se debe hacer los siguiente :


*--------------------------------------------------------------------*
* Declaracion variables para el cuadro de textos
*--------------------------------------------------------------------*
*
CLASS event_handler DEFINITION.
 PUBLIC SECTION.
   METHODS: handle_f1 FOR EVENT f1 OF cl_gui_textedit
            IMPORTING sender,
            handle_f4 FOR EVENT f4 OF cl_gui_textedit
            IMPORTING sender.
ENDCLASS.
*--------------------------------------------------------------------*
DATA: init,
     container   TYPE REF TO cl_gui_custom_container,
     editor      TYPE REF TO cl_gui_textedit.
DATA: event_tab  TYPE cntl_simple_events,
     event       TYPE cntl_simple_event.
DATA handle      TYPE REF TO event_handler.
DATA: line(256)  TYPE c,
     text_tab    LIKE STANDARD TABLE OF line,
     field      LIKE line.
*--------------------------------------------------------------------*
* Declaracion de datos para el texto
*--------------------------------------------------------------------*
DATA: gt_THEADER LIKE THEAD.
DATA  BEGIN OF gt_TLINETAB OCCURS 10.
     INCLUDE STRUCTURE TLINE.
DATA: END OF gt_TLINETAB.
*--------------------------------------------------------------------*
* Implementacion de la Clase
*--------------------------------------------------------------------*
CLASS event_handler IMPLEMENTATION.
 METHOD handle_f1.
   DATA row TYPE i.
   MESSAGE i888(sabapdocu) WITH text-004.
   CALL METHOD sender->get_selection_pos
        IMPORTING from_line = row.
   CALL METHOD sender->get_line_text
        EXPORTING line_number = row
        IMPORTING text = field.
   CALL METHOD cl_gui_cfw=>set_new_ok_code   "raise PAI for
        EXPORTING new_code = 'F1'.           "system events
   CALL METHOD cl_gui_cfw=>flush.
 ENDMETHOD.
 METHOD handle_f4.
   DATA row TYPE i.
   MESSAGE i888(sabapdocu) WITH text-005.
   CALL METHOD sender->get_selection_pos
        IMPORTING from_line = row.
   CALL METHOD sender->get_line_text
        EXPORTING line_number = row
        IMPORTING text = field.
   CALL METHOD cl_gui_cfw=>flush.
 ENDMETHOD.
ENDCLASS.

*----->>> Crear custom container en la Dynpro, llamado 'CUST_TEXTO'
*----->>> En el PBO de la Dynpro crear modulo:
*---------------------------------------------------------------------*
*      Module  PBO_TEXTO  OUTPUT
*---------------------------------------------------------------------*
MODULE PBO_TEXTO OUTPUT.
 IF init is initial.
   init = 'X'.
*--------------------------------------------------------------------*
* Crear Control del Container
*--------------------------------------------------------------------*
   CREATE OBJECT: container EXPORTING container_name = 'CUST_TEXTO',
                  editor    EXPORTING parent = container,
                  handle.
*
   event-eventid = cl_gui_textedit=>event_f1.
   event-appl_event = ' '.                     
   APPEND event TO event_tab.
   event-eventid = cl_gui_textedit=>event_f4.
   event-appl_event = 'X'.                     
   APPEND event TO event_tab.
   CALL METHOD: editor->set_registered_events
                EXPORTING events = event_tab.
*--------------------------------------------------------------------*
*  Mostrar Status Bar en la Dynpro
*--------------------------------------------------------------------*
   CALL METHOD editor->set_toolbar_mode
     EXPORTING
       toolbar_mode = editor->false. 
   CALL METHOD editor->set_statusbar_mode
     EXPORTING
       statusbar_mode = editor->false.
*
   SET HANDLER handle->handle_f1
               handle->handle_f4 FOR editor.
 ENDIF.
 CALL METHOD editor->set_text_as_stream
   EXPORTING
     text = text_tab.
*
ENDMODULE.

*---->>> En el PAI de la Dynpro crear modulo:
*---------------------------------------------------------------------*
*      Module  PAI_TEXTO_REFRESH  INPUT
*---------------------------------------------------------------------*
MODULE PAI_TEXTO_REFRESH.
 CALL METHOD editor->get_text_as_stream
   IMPORTING
     text = text_tab.
ENDMODULE.

5
Programación ABAP / Re:Select option a tabla
« en: 24 de Abril de 2015, 05:28:45 pm »
Por nada amigo...

Suerte.

6
Programación ABAP / Re:Select option a tabla
« en: 24 de Abril de 2015, 05:44:44 am »
Estimado,

Si necesitase hacer algo como lo que dices...trataria de obtener los datos luego de hacer los select a las tablas...pero si fuese realmente necesario
utilizaria algo como lo siguiente codigo...

En la Tabla Interna : "TI_MATNR", quedarian todos los materiales

Ojo...este es un ejemplo rapido...y separe los rangos de los valores individuales solo como ejemplo...

REPORT  y_test_004.
*
TABLES : mara.
*
TYPES       : BEGIN OF ty_matnr,
                      matnr                        TYPE matnr,
                  END OF ty_matnr.
*
DATA        : ti_matnr                        TYPE SORTED TABLE OF ty_matnr
                                                      WITH UNIQUE KEY matnr,
                  wa_matnr                      LIKE LINE OF ti_matnr.
*
RANGES    : ra_matnr                       FOR mara-matnr.
*
DATA        : wr_matnr                       LIKE LINE OF ra_matnr.
*
*
*
SELECT-OPTIONS so_matnr FOR mara-matnr.
*
*
*
*----------------------------------------------------------------------------------------*
* OBTENER VALORES DE RANGOS : "BT"
*----------------------------------------------------------------------------------------*
LOOP AT so_matnr INTO wr_matnr.
  IF ( wr_matnr-option EQ 'BT' ).
    APPEND wr_matnr TO ra_matnr.
  ENDIF.
ENDLOOP.
*----------------------------------------------------------------------------------------*
* OBTENER MATERIALES EN RANGO
*----------------------------------------------------------------------------------------*
SELECT matnr INTO TABLE ti_matnr
  FROM mara CLIENT SPECIFIED
    WHERE mandt EQ sy-mandt
    AND   matnr IN ra_matnr.
*----------------------------------------------------------------------------------------*
* AGREGAR VALORES INDIVIDUALES DEL SELECT-OPTION A LA TABLA DE MATERIALES
*----------------------------------------------------------------------------------------*
LOOP AT so_matnr INTO wr_matnr.
  IF ( wr_matnr-option EQ 'EQ' ).
    CLEAR : wa_matnr.
    wa_matnr-matnr = wr_matnr-low.
    INSERT wa_matnr INTO TABLE ti_matnr.
  ENDIF.
ENDLOOP.


7
Programación ABAP / Re:Adjuntar ficheros mdf
« en: 07 de Marzo de 2015, 02:04:45 am »
Hace tiempo encontre esto en la WEB, Oajala te sriva.

Involved Classes

    CL_SQL_CONNECTION – This class handles the external DB connection. If you want to connect to any other DB other than your default DB, you need to instantiate the connection object with connection name.
    CL_SQL_STATEMENT – This class contains methods to execute the DB operations. When you instantiate an object for SQL, you can pass the Connection reference of type CL_SQL_CONNECTION. Use the Connection object if you want to execute the statement on other DB.
    CL_SQL_PREPARED_STATEMENT – This class is inherited from CL_SQL_STATEMENT. This class will accept the SQL Statement which is ready to be understood by DB. Since DB doesn’t need to convert translate this to internal format, you can execute this multiple times and improve the performance over using CL_SQL_STATEMENT.
    CL_SQL_RESULT_SET – Class would be used to get the result back from the SQL statements.
    CX_SQL_EXCEPTION – Will raise this exception if any of the error occurs

Demo Program using CL_SQL_STATEMENT

A simple demo program to read the data from default database table T100 using the provided input.

 
REPORT znp_ADBC_demo.
*
CLASS lcl_main DEFINITION.
  PUBLIC SECTION.
    METHODS:
      get_data,
      generate_output.
  PRIVATE SECTION.
    DATA: t_output TYPE STANDARD TABLE OF t100.
ENDCLASS.                    "lcl_main DEFINITION
*
 
PARAMETERS: p_arbgb TYPE t100-arbgb OBLIGATORY DEFAULT '00'.
 
START-OF-SELECTION.
  DATA: o_main TYPE REF TO lcl_main.
  CREATE OBJECT o_main.
  o_main->get_data( ).
  o_main->generate_output( ).
 
*
CLASS lcl_main IMPLEMENTATION.
  METHOD get_data.
 
    DATA:  lo_sql        TYPE REF TO cl_sql_statement,
           lo_result     TYPE REF TO cl_sql_result_set,
           lo_exc        TYPE REF TO cx_sql_exception,
           lt_cols       TYPE adbc_column_tab,
           lv_query      TYPE string,
           lo_output     TYPE REF TO data,
           dref2      TYPE REF TO data.
 
    " Fill up the columns which you want to select from the DB
    " The order should match with the output table
    APPEND 'SPRSL' TO lt_cols.
    APPEND 'ARBGB' TO lt_cols.
    APPEND 'MSGNR' TO lt_cols.
    APPEND 'TEXT' TO lt_cols.
 
    CONCATENATE
     `SELECT * `
     `FROM T100 `
     `WHERE sprsl = '` sy-langu `' `
     `AND   ARBGB = '` p_arbgb `' `
     INTO lv_query.
 
    TRY.
        CREATE OBJECT lo_sql.
        GET REFERENCE OF t_output INTO lo_output.
        lo_result = lo_sql->execute_query( lv_query ).
        lo_result->set_param_table( itab_ref = lo_output
                                    corresponding_fields = lt_cols ).
        IF lo_result->next_package( ) > 0.
          EXIT.
        ENDIF.
      CATCH cx_sql_exception INTO lo_exc.
        MESSAGE lo_exc TYPE 'I' DISPLAY LIKE 'E'.
    ENDTRY.
 
  ENDMETHOD.                    "get_Data
  METHOD generate_output.
    DATA: o_salv TYPE REF TO cl_salv_table.
 
    cl_salv_table=>factory(
      IMPORTING
        r_salv_table   = o_salv
      CHANGING
        t_table        = t_output ).
 
    o_salv->display( ).
 
  ENDMETHOD.                    "generate_otuput
ENDCLASS.                    "lcl_main IMPLEMENTATION
 

Variations

You can also provide field = ? in the Query and use the method SET_PARAM to set the proper data reference to the field in question.

 
    CONCATENATE
     `SELECT * `
     `FROM T100 `
     `WHERE sprsl = '` sy-langu `' `
     `AND   ARBGB = ?`
     INTO lv_query.
 
* After SQL Instance & Before Executing the statement
    DATA: lo_arbgb TYPE REF TO data.
    GET REFERENCE OF p_arbgb INTO lo_arbgb.
    lo_sql->set_param( lo_arbgb ).

8
Programación ABAP / Re:CONSULTA Mundo Idocs
« en: 27 de Enero de 2015, 04:21:45 am »
Fijate en este link...ahi esta explicado : https://danielpanaro.wordpress.com/tag/we20/

9
Reports / Genera Salida de como llenar una BAPI Completamente..
« en: 20 de Enero de 2015, 04:30:25 am »
REPORT y_ebf_044 NO STANDARD PAGE HEADING.
*
TABLES : tfdir.
*
*
*
PARAMETERS: pa_func             LIKE rs38l-name.
*
*
*      Fuente ABAP
DATA : lt_codfte                TYPE rswsourcet,
       wa_codfte                LIKE LINE OF lt_codfte.

*      Fuente ABAP
DATA : lt_fte_aux_00            TYPE rswsourcet,
       ld_fte_aux_00            LIKE LINE OF lt_fte_aux_00.

*      Fuente ABAP
DATA : lt_fte_aux               TYPE rswsourcet,
       wa_fte_aux               LIKE LINE OF lt_fte_aux_00.

*      Fuente ABAP
DATA : lt_fte_prefinal          TYPE rswsourcet,
       wa_fte_prefinal          LIKE LINE OF lt_fte_prefinal.

*      Fuente ABAP
DATA : lt_fte_final             TYPE rswsourcet,
       wa_fte_final             LIKE LINE OF lt_fte_prefinal.

*      Estructura interna de los datos de entorno de test
DATA : lt_datadir               TYPE STANDARD TABLE OF eudatadir WITH HEADER LINE.

*      Objetos del entorno de desarrollo
DATA : lt_eufunc                TYPE STANDARD TABLE OF eufunc WITH HEADER LINE.

*      Parametros IMPORT
DATA : lt_import                TYPE STANDARD TABLE OF rsimp WITH HEADER LINE.

*      Parametros Changing
DATA : lt_change                TYPE STANDARD TABLE OF rscha WITH HEADER LINE.

*      Pararametros EXPORT
DATA : lt_export                TYPE STANDARD TABLE OF rsexp WITH HEADER LINE.

*      Parametros TABLAS
DATA : lt_tables                TYPE STANDARD TABLE OF rstbl WITH HEADER LINE.

*      Parametros EXCEPTION
DATA : lt_except                TYPE STANDARD TABLE OF rsexc WITH HEADER LINE.

*      Biblioteca de funciones: Interfase documentación
DATA : lt_paradocu              TYPE STANDARD TABLE OF rsfdo WITH HEADER LINE.

*      Biblioteca de funciones: Parámetro Import
DATA : lt_param                 TYPE STANDARD TABLE OF rsimp WITH HEADER LINE.

*      Contador
DATA : ld_lines                 TYPE i.

*      Area de nombres
DATA : ld_namespace             LIKE rs38l-namespace.

*      Grupo funciones a la que está asignado el módulo funciones
DATA : ld_area                  LIKE rs38l-area.
*


*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_func.
*
  CALL FUNCTION 'RS_HELP_HANDLING'
    EXPORTING
      dynpfield                 = 'pa_func'
      dynpname                  = sy-dynnr
      object                    = 'FB'
      progname                  = 'Y_EBF_012'
      suppress_selection_screen = sy-input.

*
*
*
START-OF-SELECTION.
*
*
*
  PERFORM fu_import_interface_ext(sapms38l)
                             TABLES lt_import
                                    lt_change
                                    lt_export
                                    lt_tables
                                    lt_except
                                    lt_paradocu
                              USING pa_func.
*
  CALL FUNCTION 'FUNCTION_STUB_GENERATE'
    EXPORTING
      funcname           = pa_func
      ic_mode            = 'X'
    TABLES
      source             = lt_codfte
    EXCEPTIONS
      function_not_exist = 1
      OTHERS             = 2.
*
  IF ( sy-subrc EQ 0 ).


  ENDIF.

  DATA: ld_var_name TYPE string.
*
  FIELD-SYMBOLS: <fs> TYPE any.
*
  DATA: ld_string TYPE string.
  DATA: ld_search_string TYPE string.
*
  LOOP AT lt_codfte INTO wa_codfte.
*
    SEARCH wa_codfte FOR ' EXCEPTIONS'.
    IF ( sy-subrc EQ  0 ).
      EXIT.
    ENDIF.
    SEARCH wa_codfte FOR ' = '.
    CHECK sy-subrc EQ 0.
*
    LOOP AT lt_import.
      CONCATENATE '.' lt_import-parameter '.' INTO ld_search_string
                                              SEPARATED BY space.
*
      SEARCH wa_codfte FOR ld_search_string .
      IF ( sy-subrc EQ 0 ).
        CONCATENATE '= LD_' lt_import-parameter INTO ld_var_name.
        REPLACE '=' WITH ld_var_name INTO wa_codfte.
        MODIFY lt_codfte FROM wa_codfte.
*
        REPLACE '= LD_' WITH 'DATA: LD_' INTO ld_var_name.
        IF NOT lt_import-dbfield IS INITIAL.
          CONCATENATE ld_var_name 'TYPE' lt_import-dbfield '.'
                      INTO ld_fte_aux_00 SEPARATED BY space.
        ELSEIF lt_import-typ IS INITIAL.
          CONCATENATE ld_var_name 'TYPE'
                     'C' '.'
                     INTO ld_fte_aux_00 SEPARATED BY space.
        ELSE.
          CONCATENATE ld_var_name 'TYPE'
                     lt_import-typ '.'
                     INTO ld_fte_aux_00 SEPARATED BY space.
        ENDIF.
        APPEND ld_fte_aux_00 TO lt_fte_aux_00.
        IF lt_import-default IS INITIAL.
          CONCATENATE '* LD_' lt_import-parameter ' = '
               INTO wa_fte_aux.
        ELSE.
          CONCATENATE '* LD_' lt_import-parameter ' = '
                     lt_import-default '.'
               INTO wa_fte_aux.
        ENDIF.
        APPEND wa_fte_aux TO lt_fte_aux.
        CLEAR : wa_fte_aux.
        APPEND wa_fte_aux TO lt_fte_aux.

        lt_param-parameter = lt_import-parameter.
        lt_param-dbfield = lt_import-dbfield.
        lt_param-typ = lt_import-typ.
        APPEND lt_param.

        EXIT.
      ENDIF.
    ENDLOOP.
*
    LOOP AT lt_export.
      CONCATENATE '.' lt_export-parameter '.' INTO ld_search_string
                   SEPARATED BY space.
      SEARCH wa_codfte FOR ld_search_string .
      IF sy-subrc EQ 0.
        CONCATENATE '= LD_' lt_export-parameter INTO ld_var_name.
        REPLACE '=' WITH ld_var_name INTO wa_codfte.
        MODIFY lt_codfte FROM wa_codfte.

        REPLACE '= LD_' WITH 'DATA: LD_' INTO ld_var_name.
        IF NOT ( lt_export-dbfield IS INITIAL ).
          CONCATENATE ld_var_name 'TYPE' lt_export-dbfield '.'
                      INTO ld_fte_aux_00 SEPARATED BY space.
        ELSEIF lt_export-typ IS INITIAL.
          CONCATENATE ld_var_name 'TYPE'
                     'C' '.'
                     INTO ld_fte_aux_00 SEPARATED BY space.
*
        ELSE.
          CONCATENATE ld_var_name 'TYPE'
                     lt_export-typ '.'
                     INTO ld_fte_aux_00 SEPARATED BY space.
        ENDIF.
        APPEND ld_fte_aux_00 TO lt_fte_aux_00.

        EXIT.
      ENDIF.
    ENDLOOP.
*
    LOOP AT lt_change.
      CONCATENATE '.' lt_change-parameter '.' INTO ld_search_string
      SEPARATED BY space.
      SEARCH wa_codfte FOR ld_search_string .
      IF ( sy-subrc EQ 0 ).
        CONCATENATE '= LD_' lt_change-parameter INTO ld_var_name.
        REPLACE '=' WITH ld_var_name INTO wa_codfte.

        MODIFY lt_codfte FROM wa_codfte.

        REPLACE '= LD_' WITH 'DATA: LD_' INTO ld_var_name.
        IF NOT lt_change-dbfield IS INITIAL.
          CONCATENATE ld_var_name 'TYPE' lt_change-dbfield '.'
                      INTO ld_fte_aux_00 SEPARATED BY space.

        ELSEIF lt_change-typ IS INITIAL.
          CONCATENATE ld_var_name 'TYPE'
                     'C' '.'
                     INTO ld_fte_aux_00 SEPARATED BY space.
        ELSE.
          CONCATENATE ld_var_name 'TYPE'
                     lt_change-typ '.'
                     INTO ld_fte_aux_00 SEPARATED BY space.
        ENDIF.
        APPEND ld_fte_aux_00 TO lt_fte_aux_00.

        CONCATENATE '* LD_' lt_change-parameter   ' = '
                    lt_change-default
               INTO wa_fte_aux.
        APPEND wa_fte_aux TO lt_fte_aux.
        CLEAR : wa_fte_aux.
        APPEND wa_fte_aux TO lt_fte_aux.

        lt_param-parameter = lt_change-parameter.
        lt_param-dbfield = lt_change-dbfield.
        lt_param-typ = lt_change-typ.
        APPEND lt_param.

        EXIT.
      ENDIF.
    ENDLOOP.

    LOOP AT lt_tables.
      CONCATENATE '.' lt_tables-parameter '.' INTO ld_search_string
      SEPARATED BY space.
      SEARCH wa_codfte FOR ld_search_string .
      IF ( sy-subrc EQ 0 ).
        CONCATENATE '= LT_' lt_tables-parameter INTO ld_var_name.
        REPLACE '=' WITH ld_var_name INTO wa_codfte.
        MODIFY lt_codfte FROM wa_codfte.

        REPLACE '= LT_' WITH 'DATA: LT_' INTO ld_var_name.
        IF NOT ( lt_tables-dbstruct IS INITIAL ).
          CONCATENATE ld_var_name 'TYPE standard table of '
                      lt_tables-dbstruct '.'
                      INTO ld_fte_aux_00 SEPARATED BY space.

        ELSEIF ( lt_tables-typ IS INITIAL ).
          CONCATENATE ld_var_name 'TYPE standard table of '
                     'char255' '.'
                     INTO ld_fte_aux_00 SEPARATED BY space.
        ELSE.
          CONCATENATE ld_var_name 'TYPE'
                     lt_tables-typ '.'
                     INTO ld_fte_aux_00 SEPARATED BY space.

        ENDIF.
        APPEND ld_fte_aux_00 TO lt_fte_aux_00.

        CONCATENATE 'DATA: WA_' lt_tables-parameter  space
                    ' LIKE LINE OF LT_' lt_tables-parameter '.'
                    INTO ld_fte_aux_00.
        APPEND ld_fte_aux_00 TO lt_fte_aux_00.

*
        DATA : lt_dfies_tab TYPE STANDARD TABLE OF dfies WITH HEADER LINE.
        DATA : ld_tabname TYPE ddobjname.

        ld_tabname = lt_tables-dbstruct.

        CALL FUNCTION 'DDIF_FIELDINFO_GET'
          EXPORTING
            tabname        = ld_tabname
          TABLES
            dfies_tab      = lt_dfies_tab
          EXCEPTIONS
            not_found      = 1
            internal_error = 2
            OTHERS         = 3.

        IF ( sy-subrc EQ 0 ).

        ENDIF.

        IF ( lt_dfies_tab[] IS INITIAL ).

          CONCATENATE '* WA_' lt_tables-parameter  ' = '
                 INTO wa_fte_aux.

          APPEND wa_fte_aux TO lt_fte_aux.
        ELSE.
          LOOP AT lt_dfies_tab.

            CONCATENATE '* WA_' lt_tables-parameter '-'
                        lt_dfies_tab-fieldname ' = '
                   INTO wa_fte_aux.

            APPEND wa_fte_aux TO lt_fte_aux.
          ENDLOOP.
        ENDIF.


        CONCATENATE '* APPEND WA_' lt_tables-parameter ' TO '
               ' LT_' lt_tables-parameter
               INTO wa_fte_aux.
        APPEND wa_fte_aux TO lt_fte_aux.
        CLEAR : wa_fte_aux.
        APPEND wa_fte_aux TO lt_fte_aux.

        EXIT.
      ENDIF.
    ENDLOOP.
  ENDLOOP.


  LOOP AT lt_fte_aux_00 INTO ld_fte_aux_00.
    WRITE : / ld_fte_aux_00.
    APPEND  ld_fte_aux_00  TO lt_fte_prefinal.
    APPEND  ld_fte_aux_00 TO lt_fte_final.


  ENDLOOP.
  APPEND INITIAL LINE TO lt_fte_prefinal.
  APPEND INITIAL LINE TO lt_fte_final.
  WRITE : /.

  LOOP AT lt_fte_aux INTO wa_fte_aux.
    WRITE : / wa_fte_aux.
    APPEND  wa_fte_aux  TO lt_fte_prefinal.
  ENDLOOP.
  WRITE : /.


  LOOP AT lt_codfte INTO wa_codfte.
    REPLACE '"' WITH '*' INTO wa_codfte.
    MODIFY lt_codfte FROM wa_codfte.


    WRITE : / wa_codfte.
    APPEND  wa_codfte  TO lt_fte_prefinal.
    APPEND  wa_codfte TO lt_fte_final.
  ENDLOOP.
*

10
Reports / Leer Valores Fijos de un Dominio
« en: 20 de Enero de 2015, 03:36:39 am »
Este es un pequeño ejemplo de como leer los valores fijos asociados a un Dominio.
*

REPORT y_ebf_012 NO STANDARD PAGE HEADING.

*
DATA    : it_dd07v                TYPE STANDARD TABLE OF dd07v,
              wa_dd07v              LIKE LINE OF it_dd07v.
*
*
PARAMETERS : pa_dom             LIKE dcobjdef-name OBLIGATORY.
*
*

START-OF-SELECTION.

  REFRESH : it_dd07v.
  CLEAR    : it_dd07v.
*
  CALL FUNCTION 'DDIF_DOMA_GET'
    EXPORTING
      name          = pa_dom
      langu         = sy-langu
    TABLES
      dd07v_tab     = it_dd07v
    EXCEPTIONS
      illegal_input = 1
      OTHERS        = 2.
*
  IF ( sy-subrc EQ 0 ).
*
    IF ( sy-subrc EQ 0 ).
      LOOP AT it_dd07v INTO wa_dd07v.
*
        WRITE / : wa_dd07v-domvalue_l.
        WRITE   : wa_dd07v-ddtext.
*
      ENDLOOP.
*
    ENDIF.
*
  ENDIF.

11
Programación ABAP / Re:Cambio de codigo de transaccion en viajes
« en: 11 de Enero de 2015, 03:31:29 am »
Estimado,

Las transacciones que mencionas pertenecen al paquete "PTRP_ADDON".

Puedes porbar con la SE80 y en paquete colocar "PTRP_ADDON"

Ahi te saldran todos los objetos de este paquete y en Ampliaciones pudes ver las BADI's que hay disponibles

Espero esto te ayude.

12
Programación ABAP / Re:IDOC DEBMAS
« en: 11 de Enero de 2015, 03:17:33 am »
Estimado,

-  Adicionalmente hay otro Exit es el : VSV00001 EXIT_SAPLVV01_001 Outbound: Create additional customer master segments

-  Tambien Puedes probar buscando en la SE84
    ->Ampliaciones
        ->Puntos de Ampliacion
    - En paquete coloca : "VSV" y presiona F8  ahi te saldran una lista de puntos de ampliacion que puedes investigar.
      - ES_RBDFEDEB
      - ES_RBDSEDEB
      - ES_SAPLKD01
      - ES_SAPLKD02
      - ES_SAPLVV01
      - ES_SAPLVV02
      - ES_VVSCONST

-  Lo otro que se me ocurre es buscar una BADI de la siguiente forma :
     - Ir a la transacción SE24
     - Ingresar clase CL_EXITHANDLER
     - Ingresás en el método GET_INSTANCE de esta clase y ponés un break-point en CALL METHOD cl_exithandler=>get_class_name_by_interface.

     - Ahora ejecutás tu transacción normalmente y te fijás si frena en el momento deseado. Va a frenar en muchos lugares porque va a frenar en todas
       las BADI's por las que pases, por lo que te recomiendo que pongas el break justo en el momento en que deseás ver si existe una BADI.
       En la variable EXIT_NAME vas a encotrar el nombre de la BADI.


-  Por ultimo recuerda que para leer ese campo que dices de largo 1000 se hace mas o menos de la siguiente forma :

       DATA : kna1m   TYPE e1kna1m.
       LOOP AT IDOC_DATA.
         CASE idoc_data-segnam.
           WHEN 'E1KNA1M'.
             kna1m = idoc_data-sdata.
*
*             AQUI TU CODIGO
*
         ENDCASE.                             
       ENDLOOP.

Ojala esto te ayude en algo.

13
Programación ABAP / Re:ALV Grid OO con Checkbox
« en: 30 de Septiembre de 2014, 10:51:44 pm »
Esitmado,

   Asi sin ver tu codigo es un poco dificil saber realmente cual es el problema...pero me da la impresion que error se debe
   al tipo de tabla interna y como la tienes definida.

   Mandame tu correo y te mando un ejemplo completo.

   Saludos.

14
Programación ABAP / Re:Leer Bascula / puerto serial
« en: 14 de Abril de 2014, 04:16:16 pm »
Excelente...Felicitaciones.

15
Programación ABAP / Re:Leer Bascula / puerto serial
« en: 12 de Abril de 2014, 02:46:33 am »
achairez,

  Lo que propones es lo mas facil, esto por que cualquier otra solucion implica mas desarrollo y con lo que tu propones es solo una lectura a
  una tabla.

 

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