MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 27/03/17, 21:13:54
goyleo goyleo is offline
Senior Member
 
Fecha de Ingreso: sep 2007
Mensajes: 102
Agregar columna a tabla dinámica.

Hola! ¿Como están?.

Hice un programa que baja el contenido de las tablas dinamicamente a una archivo en el servidor, funciona bien.

El probrlema que tengo es que se requiere agregar un campo adelante de todos los archivos (el campo sy-sysid), como las estrucutras y tablas se crean dinamicamente no se como agregar el dato.

En el siguiente perform bajo la tabla al servidor.

*&---------------------------------------------------------------------*
*& Form F_BAJAR_ARCHIVO_SERVIDOR
*&---------------------------------------------------------------------*
FORM f_bajar_archivo_servidor
CHANGING pve_fs_table TYPE STANDARD TABLE "-----> Tabla generica con datos
pvi_le_zuinfotabla TYPE tye_zuinfotabla. "-----> En pvi_le_zuinfotabla-ztabname figura el nombre de la tabla.

DATA: l_filename TYPE string,
lv_string TYPE c LENGTH 70,
le_estructura TYPE REF TO data.

FIELD-SYMBOLS <fs_estructura> TYPE ANY.

*Se crea tabla dinámica.
CREATE DATA le_estructura TYPE (pvi_le_zuinfotabla-ztabname).
ASSIGN le_estructura->* TO <fs_estructura>.

CONCATENATE pvi_le_zuinfotabla-zpath_server
pvi_le_zuinfotabla-zsysid
'_' pvi_le_zuinfotabla-zmandt
'_' pvi_le_zuinfotabla-ztabname
'.TXT' INTO l_filename.

OPEN DATASET l_filename FOR OUTPUT IN BINARY MODE.
IF sy-subrc = 0.
LOOP AT pve_fs_table INTO <fs_estructura>.
TRANSFER <fs_estructura> TO l_filename.
ENDLOOP.

CLOSE DATASET l_filename.

ENDIF.
Responder Con Cita
  #2  
Viejo 28/03/17, 20:13:41
goyleo goyleo is offline
Senior Member
 
Fecha de Ingreso: sep 2007
Mensajes: 102
Ya lo resolví.

Cualqueir cosa que quieran mas info, por inbox.

Para el que quiera le dejo parte del codigo donde se realiza la generación del archivo.

Saludos.


DATA: le_zuinfotabla TYPE tye_zuinfotabla,
lt_generic_table TYPE REF TO data,
lv_tabix TYPE sy-tabix,
lt_dd03l TYPE tyt_dd03l,
lt_dd04t TYPE tyt_dd04t.

* Se crea dinamicamente la tabla
CREATE DATA lt_generic_table
TYPE STANDARD TABLE OF (le_zuinfotabla-ztabname). "--> Tabla generica
ASSIGN lt_generic_table->* TO <fs_table>.


PERFORM f_bajar_archivo_servidor CHANGING lt_dd03l
<fs_table>
le_zuinfotabla.



*&---------------------------------------------------------------------*
*& Form F_BAJAR_ARCHIVO_SERVIDOR
*&---------------------------------------------------------------------*
FORM f_bajar_archivo_servidor
CHANGING pve_gt_dd03l TYPE tyt_dd03l
pve_fs_table TYPE STANDARD TABLE
pvi_le_zuinfotabla TYPE tye_zuinfotabla.

*&---------------------------------------------------------------------*
*& Declaración de datos.
*&---------------------------------------------------------------------*

* Datos para el proceso.
DATA: l_filename TYPE string,
lv_string TYPE c LENGTH 70,

* Estrucutra del tipo pve_fs_table que viene por parametro.
le_estructura TYPE REF TO data.
FIELD-SYMBOLS <fs_estructura> TYPE ANY.

* Estrucutra que contiene los campos a declarar.
DATA: lt_comp_tab TYPE cl_abap_structdescr=>component_table,

* Estructura Dinámica.
le_dref TYPE REF TO data,
le_struct_type TYPE REF TO cl_abap_structdescr.
FIELD-SYMBOLS: <fs_struc> TYPE ANY.

* Tabla Dinámica
DATA: lt_tabla TYPE REF TO data,
lt_table_type TYPE REF TO cl_abap_tabledescr.
FIELD-SYMBOLS: <fs_tabla> TYPE STANDARD TABLE.

* Campo Sysid
FIELD-SYMBOLS: <fs_comp> TYPE ANY.

*&---------------------------------------------------------------------*
*& Proceso de bajada de tabla dinámico.
*&---------------------------------------------------------------------*

* Asígnación dinámica de la estructura del diccionario.
CREATE DATA le_estructura TYPE (pvi_le_zuinfotabla-ztabname).
ASSIGN le_estructura->* TO <fs_estructura>.

PERFORM f_obtener_campos_estructura CHANGING pve_gt_dd03l
lt_comp_tab.

* Se crea una estrucutra dinámica.
le_struct_type = cl_abap_structdescr=>create( lt_comp_tab ).
CREATE DATA le_dref TYPE HANDLE le_struct_type.
ASSIGN le_dref->* TO <fs_struc>.

* Se crea la tabla dinámica.
lt_table_type = cl_abap_tabledescr=>create(
p_line_type = le_struct_type
p_table_kind = cl_abap_tabledescr=>tablekind_std ).
CREATE DATA lt_tabla TYPE HANDLE lt_table_type .
ASSIGN lt_tabla->* TO <fs_tabla>.

* Se recorren los registros de la tabla generica.
LOOP AT pve_fs_table INTO <fs_estructura>.
ASSIGN COMPONENT 'ZSYSID' OF STRUCTURE <fs_struc> TO <fs_comp>.
<fs_comp> = pvi_le_zuinfotabla-zsysid.
MOVE-CORRESPONDING <fs_estructura> TO <fs_struc>.
APPEND <fs_struc> TO <fs_tabla>.
ENDLOOP.

* Ruta de bajada.
CONCATENATE pvi_le_zuinfotabla-zpath_server
pvi_le_zuinfotabla-zsysid
'_' pvi_le_zuinfotabla-zmandt
'_' pvi_le_zuinfotabla-ztabname
'.TXT' INTO l_filename.

* Bajada de archivo.
OPEN DATASET l_filename FOR OUTPUT IN BINARY MODE.
IF sy-subrc = 0.
LOOP AT <fs_tabla> INTO <fs_struc>.
TRANSFER <fs_struc> TO l_filename.
ENDLOOP.

CLOSE DATASET l_filename.

ELSE.
CONCATENATE text-004 l_filename
INTO pvi_le_zuinfotabla-message
SEPARATED BY space.
pvi_le_zuinfotabla-id = c_error.
ENDIF.

ENDFORM. "F_BAJAR_ARCHIVO_SERVIDOR



*&---------------------------------------------------------------------*
*& Form F_OBTENER_CAMPOS_ESTRUCTURA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_PVE_GT_DD03L text
* <--P_LT_COMP_TAB text
*----------------------------------------------------------------------*
FORM f_obtener_campos_estructura
CHANGING pve_gt_dd03l TYPE tyt_dd03l
pve_comp_tab TYPE cl_abap_structdescr=>component_table.

DATA: le_comp LIKE LINE OF pve_comp_tab,
le_dd03l TYPE dd03l,
le_aux TYPE dd03l,
lv_length TYPE i,
lv_decimals TYPE i.

DELETE pve_gt_dd03l WHERE fieldname = '.INCLUDE'.

* Se recorren los campos de la tabla.
SORT pve_gt_dd03l BY position.
LOOP AT pve_gt_dd03l INTO le_aux.

le_dd03l = le_aux.

AT FIRST.
le_comp-name = 'ZSYSID'.
le_comp-type = cl_abap_elemdescr=>get_c( 8 ).
APPEND le_comp TO pve_comp_tab.
ENDAT.

* Nombre del campo.
le_comp-name = le_dd03l-fieldname.

CASE le_dd03l-inttype.
WHEN 'I'.
le_comp-type = cl_abap_elemdescr=>get_i( ).
WHEN 'F'.
le_comp-type = cl_abap_elemdescr=>get_f( ).
WHEN 'D'.
le_comp-type = cl_abap_elemdescr=>get_d( ).
WHEN 'T'.
le_comp-type = cl_abap_elemdescr=>get_t( ).
WHEN 'C'.
lv_length = le_dd03l-intlen.
le_comp-type = cl_abap_elemdescr=>get_c( lv_length ).
WHEN 'N'.
lv_length = le_dd03l-intlen.
le_comp-type = cl_abap_elemdescr=>get_n( lv_length ).
WHEN 'X'.
lv_length = le_dd03l-intlen.
le_comp-type = cl_abap_elemdescr=>get_x( lv_length ).
WHEN 'P'.
lv_length = le_dd03l-intlen.
lv_decimals = le_dd03l-decimals.
le_comp-type = cl_abap_elemdescr=>get_p( p_length = lv_length
p_decimals = lv_decimals ).
ENDCASE.

* Se guardan los campos de la estructura.
APPEND le_comp TO pve_comp_tab.

ENDLOOP.

ENDFORM. " F_OBTENER_CAMPOS_ESTRUCTURA
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 10:51:53.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web