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 4 ... 6
16
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.

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

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

 

19
Programación ABAP / Re:CONSULTA Mundo Idocs
« en: 15 de Marzo de 2014, 06:42:07 am »
Carlos,

Los IDOCs en si son una estructura desarrollada para el intercambio de informacion entre sistemas SAP o bien la comunicación del SAP con sistemas externos (EDI - ALE), se utilizan principalmente para carga y actualizacion de datos en SAP...La estructura de los IDOCs tambien puede ser ampliada (como las tablas SAP con estructuras APPEND) o bien puedes crear tus propios IDOCs.

La Estructuras del IDOC esta formada por Registros de control, Registros de Datos y Registros de Estado :

- Registro de control:
     Contiene toda la información administrativa del IDOC, como el sistema origen y el de destino, el tipo de IDOC del que se trata.
     Este registro es de vital importancia ya que a partir de él se permitirá saber quien va a ser el destinatario del IDOC.
     La estructura de este segmento de control es igual para todos los IDOCs. Cada IDOC contiene uno y sólo un registro de control.

- Registro de datos:
     En el registro de datos esta toda la información enviada/recibida.
     El registro de datos va a estar dividido en distintos segmentos en los cuáles van a estar almacenados los datos. Estos segmentos a su vez pueden
     contener otros segmentos. Cada IDOC podrá tener dentro de los registros de datos “N” segmentos donde se almacenan los datos.

- Registro de estado:
     Es el historial del procesamiento del IDOC en las distintas etapas.
     Cada IDOC tendrá “N” registros de estado.

 · Generación del IDOC
        La generación del IDOC se puede dar por medio de mensajes asignados a los procesos – Mensaje con procesamiento EDI – o bien directamente         
        desde aplicación - Programas ABAP / BAPIs, punteros de modificaciones, programas generación de IDOCs, procesos empresariales ALE;
        El IDOC generado es almacenado en la base de datos SAP a espera de su envío;
· Envío del IDOC a la puerta de salida SAP
        Mediante el programa específico de procesamiento, el sistema hace la lectura del IDOC generado y se lo envía a su puerta de salida.
        Se determina el interlocutor destinatario que tiene asignado la puerta de salida SAP y se actualiza el status de procesamiento del IDOC.
· Interfase SAP/Sistema destino
        Al procesar el IDOC para salida se envía la información al sistema destino por asignado a la puerta de comunicación del SAP

Sobre la configuracion de IDOCs...puertos, ampliacion...etc, son parte del trabajo nuestro (desarrollador), no de los BASIS.

Los IDOCs mas utilizados son los siguientes :
    - Datos Maestros: Clientes - DEBMAS03
    - Datos Maestros: Proveedores - CREMAS05
    - Datos Maestros: Materiales - MATMAS05
    - Pedidos de ventas - ORDERS05
    - Datos de Entregas - DELVRY05
    - Facturas de ventas - INVOIC02
    - Facturas de compras - INVOIC01

Algunas transacciones utilizadas para los IDOCs son :
   - WE19    : (Ingresar datos y reprocesar Idocs para testeo - visible/debugging)
   - WE21     : Puertas IDoc
   - WE20    : Interlocutores EDI
   - WE02    : Listado IDoc con status
   - WE05    : (Listar Idocs )
   - WE60    : Mensajes IDoc
   - WE16    : Cargar fichero de texto IDoc
   - BD87    : Reprocesado de IDoc

Espero esto aclare un poco tus dudas...Si necesitas algo mas especifico avisame por correo.

Saludos.

20
Programación ABAP / Re:Ayuda con Dynpro
« en: 20 de Febrero de 2014, 04:48:33 am »
Estimado...

No me queda muy claro tu problema cuando dices :

1. Lo que debo implementar es una pantalla donde pueda copiar los datos de un excel ---> Te refieres a importar desde un archivo excel o hacer copy paste ??

Si tu respuesta es importar los datos desde un archivo excel...la respuesta es utilizar un ALV ... recuerda que puedes utilizar OLE comunicarte con excel desde ABAP.

Para mayor informacion revisa este link : http://www.abap.es/centro_OLE_Excel.html

Aqui te voy a pegar un ejemplo que encontre hace un tiempo...lo puedes modificar para que en lugar de mostrar lo datos leidos los envie a un ALV..Si necesitas mas ayuda avisame.


Aqui va Programa ejemplo para subir archivo excel

REPORT YTEST .

types: begin of ttab ,
fld1(30) type c,
fld2(30) type c,
fld3(30) type c,
fld4(30) type c,
fld5(30) type c,
end of ttab.

data: itab type table of ttab with header line.

selection-screen skip 1.
parameters: p_file type localfile default'C:\test.txt'.
selection-screen skip 1.

at selection-screen on value-request for p_file.
call function 'KD_GET_FILENAME_ON_F4'
exporting
static = 'X'
changing
file_name = p_file.

start-of-selection.

 clear itab. refresh itab.
 perform upload_data.

 loop at itab.
   write:/ itab-fld1, itab-fld2, itab-fld3, itab-fld4, itab-fld5.
 endloop.


************************************************************************
* Upload_Data
************************************************************************

form upload_data.

data: file type rlgrap-filename.
data: xcel type table of alsmex_tabline with header line.

file = p_file.

call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
  exporting
   filename = file
   i_begin_col = '1'
   i_begin_row = '1'
   i_end_col = '200'
   i_end_row = '5000'
  tables
   intern = xcel
   exceptions
   inconsistent_parameters = 1
   upload_ole = 2
   others = 3.

loop at xcel.

case xcel-col.
 when '0001'.
  itab-fld1 = xcel-value.
 when '0002'.
  itab-fld2 = xcel-value.
 when '0003'.
  itab-fld3 = xcel-value.
 when '0004'.
  itab-fld4 = xcel-value.
 when '0005'.
  itab-fld5 = xcel-value.
endcase.

at end of row.
 append itab.
 clear itab.
endat.

endloop.
endform.

Subir archivo de tipo CSV

 type-POOLs TRUXS.
 data ld_filename type string.
 data : rawdata type TRUXS_T_TEXT_DATA.

 ld_filename = DXFILE-FILENAME.

 CALL FUNCTION 'GUI_UPLOAD'
   EXPORTING
     FILENAME                      = ld_filename
    FILETYPE                      = 'ASC'
   TABLES
     DATA_TAB                      = rawdata
  EXCEPTIONS
    FILE_OPEN_ERROR               = 1
    FILE_READ_ERROR               = 2
    NO_BATCH                      = 3
    GUI_REFUSE_FILETRANSFER       = 4
    INVALID_TYPE                  = 5
    NO_AUTHORITY                  = 6
    UNKNOWN_ERROR                 = 7
    BAD_DATA_FORMAT               = 8
    HEADER_NOT_ALLOWED            = 9
    SEPARATOR_NOT_ALLOWED         = 10
    HEADER_TOO_LONG               = 11
    UNKNOWN_DP_ERROR              = 12
    ACCESS_DENIED                 = 13
    DP_OUT_OF_MEMORY              = 14
    DISK_FULL                     = 15
    DP_TIMEOUT                    = 16
    OTHERS                        = 17
           .
 IF SY-SUBRC <> 0.
   exit.
 ENDIF.
 data ls_rawdata like LINE OF rawdata.
 loop at rawdata into ls_rawdata.
   if sy-tabix = 1.  "borrar header
     delete rawdata.
     exit.
   endif.
 ENDLOOP.

 CALL FUNCTION 'TEXT_CONVERT_CSV_TO_SAP'
 EXPORTING
 I_FIELD_SEPERATOR = ';'
 I_TAB_RAW_DATA = rawdata
 TABLES
 I_TAB_CONVERTED_DATA = gt_data
 EXCEPTIONS
 CONVERSION_FAILED = 1
 OTHERS = 2
 .

TEXT_CONVERT_XLS_TO_SAP

 DATA : l_i_tab_raw_data  TYPE truxs_t_text_data.

* Read data from Excel shet
 CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
   EXPORTING
     i_tab_raw_data       = l_i_tab_raw_data
     i_filename           = p_file
   TABLES
     i_tab_converted_data = gt_data
   EXCEPTIONS
     conversion_failed    = 1
     OTHERS               = 2.

21
Programación ABAP / Re:INFORMACIÓN DE 4 TABLAS
« en: 07 de Febrero de 2014, 04:16:37 am »
Estimado, para poder ayudarte necesito me detalles mas lo que te piden..
Lo que tienes hasta el momento aunque no es lo optimo es la base de lo que necesitas...el repetir la declaracion de tablas internas y juntar los datos en una
tabla de salida o mediante LOOP's filtrar lo que quieres y mostrar el resultado...todo depende de lo que realmente necesites.

Saludos

22
Programación ABAP / Re:Columna inmovil ALV GRID OO
« en: 21 de Octubre de 2013, 10:46:18 pm »
Estimado,

Fijate en las propiedades de la columa del fieldcat si mal no recuerdo hay una que dice set "KEY" y pasale una "X".

Saludos.

23
Ampliaciones / Re:Consulta User Exit
« en: 01 de Junio de 2013, 01:05:15 am »
Estimado...la funcion en donde esta el User-Exit es la siguiente y como podras notar viene la estructura I_EKKO ... solo tienes que rescatar de alli el
ebeln .... I_EKKO-EBELN.


function exit_sapmm06e_004.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     VALUE(I_T001) LIKE  T001 STRUCTURE  T001
*"     VALUE(I_EKKO) LIKE  EKKO STRUCTURE  EKKO
*"     VALUE(I_LFA1) LIKE  LFA1 STRUCTURE  LFA1
*"  CHANGING
*"     VALUE(IMPORT)
*"     VALUE(XEGIMP)
*"     VALUE(EGIMP)
*"----------------------------------------------------------------------


  include zxm06u24.


endfunction.

24
ALV / Re:Colores en celdas editables
« en: 31 de Mayo de 2013, 05:11:37 pm »
Aqui va un ejemplo..

REPORT Y_TEST_001.

* Table
TABLES : mara.

* Type
TYPES : BEGIN OF ty_mara,
matnr LIKE mara-matnr,
matkl LIKE mara-matkl,
counter(4) TYPE n,
free_text(15) TYPE c,
color_line(4) TYPE c, " Line color
color_cell TYPE lvc_t_scol, " Cell color
END OF ty_mara.

* Structures
DATA : wa_mara TYPE ty_mara,
wa_fieldcat TYPE lvc_s_fcat,
is_layout TYPE lvc_s_layo,
wa_color TYPE lvc_s_scol.

* Internal table
DATA : it_mara TYPE STANDARD TABLE OF ty_mara,
it_fieldcat TYPE STANDARD TABLE OF lvc_s_fcat,
it_color TYPE TABLE OF lvc_s_scol.

* Variables
DATA : okcode LIKE sy-ucomm,
w_alv_grid TYPE REF TO cl_gui_alv_grid,
w_docking_container TYPE REF TO cl_gui_docking_container.


PARAMETERS : p_column AS CHECKBOX,
p_line AS CHECKBOX,
p_cell AS CHECKBOX.

START-OF-SELECTION.
PERFORM get_data.

END-OF-SELECTION.

PERFORM fill_catalog.
PERFORM fill_layout.

CALL SCREEN 2000.
*&--------------------------------------------------------------*
*& Module status_2000 OUTPUT
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
MODULE status_2000 OUTPUT.

SET PF-STATUS '2000'.

ENDMODULE. " status_2000 OUTPUT
*&---------------------------------------------------------------*
*& Module user_command_2000 INPUT
*&---------------------------------------------------------------*
* text
*----------------------------------------------------------------*
MODULE user_command_2000 INPUT.

DATA : w_okcode LIKE sy-ucomm.

MOVE okcode TO w_okcode.
CLEAR okcode.

CASE w_okcode.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.

ENDMODULE. " user_command_2000 INPUT
*&--------------------------------------------------------------*
*& Module alv_grid OUTPUT
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
MODULE alv_grid OUTPUT.

IF w_docking_container IS INITIAL.
PERFORM create_objects.
PERFORM display_alv_grid.
ENDIF.

ENDMODULE. " alv_grid OUTPUT
*&--------------------------------------------------------------*
*& Form create_objects
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
FORM create_objects.

* Ratio must be included in [5..95]

CREATE OBJECT w_docking_container
EXPORTING
ratio = 95
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
others = 6.

CREATE OBJECT w_alv_grid
EXPORTING
i_parent = w_docking_container.

ENDFORM. " create_objects
*&--------------------------------------------------------------*
*& Form display_alv_grid
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
FORM display_alv_grid.

CALL METHOD w_alv_grid->set_table_for_first_display
EXPORTING
is_layout = is_layout
CHANGING
it_outtab = it_mara
it_fieldcatalog = it_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.

ENDFORM. " display_alv_grid
*&--------------------------------------------------------------*
*& Form get_data
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
FORM get_data.

SELECT * FROM mara UP TO 5 ROWS.
CLEAR : wa_mara-color_line, wa_mara-color_cell.

MOVE-CORRESPONDING mara TO wa_mara.
ADD 1 TO wa_mara-counter.
MOVE 'Blabla' TO wa_mara-free_text.

IF wa_mara-counter = '0002'
AND p_line = 'X'.
* Color line
MOVE 'C410' TO wa_mara-color_line.
ELSEIF wa_mara-counter = '0004'
AND p_cell = 'X'.
* Color cell
MOVE 'FREE_TEXT' TO wa_color-fname.
MOVE '5' TO wa_color-color-col.
MOVE '1' TO wa_color-color-int.
MOVE '1' TO wa_color-color-inv.
APPEND wa_color TO it_color.
wa_mara-color_cell[] = it_color[].
ENDIF.

APPEND wa_mara TO it_mara.
ENDSELECT.

ENDFORM. " get_data
*&--------------------------------------------------------------*
*& Form fill_catalog
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
FORM fill_catalog.

*****************************************************************
* Colour code : *
* Colour is a 4-char field where : *
* - 1st char = C (color property) *
* - 2nd char = color code (from 0 to 7) *
* 0 = background color *
* 1 = blue *
* 2 = gray *
* 3 = yellow *
* 4 = blue/gray *
* 5 = green *
* 6 = red *
* 7 = orange *
* - 3rd char = intensified (0=off, 1=on) *
* - 4th char = inverse display (0=off, 1=on) *
* *
* Colour overwriting priority : *
* 1. Line *
* 2. Cell *
* 3. Column *
*****************************************************************
DATA : w_position TYPE i VALUE '1'.

CLEAR wa_fieldcat.
MOVE w_position TO wa_fieldcat-col_pos.
MOVE 'MATNR' TO wa_fieldcat-fieldname.
MOVE 'MARA' TO wa_fieldcat-ref_table.
MOVE 'MATNR' TO wa_fieldcat-ref_field.
APPEND wa_fieldcat TO it_fieldcat.

ADD 1 TO w_position.

CLEAR wa_fieldcat.
MOVE w_position TO wa_fieldcat-col_pos.
MOVE 'MATKL' TO wa_fieldcat-fieldname.
MOVE 'MARA' TO wa_fieldcat-ref_table.
MOVE 'MATKL' TO wa_fieldcat-ref_field.
* Color column
IF p_column = 'X'.
MOVE 'C610' TO wa_fieldcat-emphasize.
ENDIF.
APPEND wa_fieldcat TO it_fieldcat.

ADD 1 TO w_position.

CLEAR wa_fieldcat.
MOVE w_position TO wa_fieldcat-col_pos.
MOVE 'COUNTER' TO wa_fieldcat-fieldname.
MOVE 'N' TO wa_fieldcat-inttype.
MOVE '4' TO wa_fieldcat-intlen.
MOVE 'Counter' TO wa_fieldcat-coltext.
APPEND wa_fieldcat TO it_fieldcat.

ADD 1 TO w_position.

CLEAR wa_fieldcat.
MOVE w_position TO wa_fieldcat-col_pos.
MOVE 'FREE_TEXT' TO wa_fieldcat-fieldname.
MOVE 'C' TO wa_fieldcat-inttype.
MOVE '20' TO wa_fieldcat-intlen.
MOVE 'Text' TO wa_fieldcat-coltext.
APPEND wa_fieldcat TO it_fieldcat.

ENDFORM. " fill_catalog
*&--------------------------------------------------------------*
*& Form fill_layout
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
FORM fill_layout.

* Field that identify color line in internal table
MOVE 'COLOR_LINE' TO is_layout-info_fname.

* Field that identify cell color in inetrnal table
MOVE 'COLOR_CELL' TO is_layout-ctab_fname.

ENDFORM. " fill_layout

25
Programación ABAP / Re:ACTUALIZAR CAMPO DYNPRO CON PESTAÑAS
« en: 01 de Febrero de 2013, 04:23:41 am »
Estimado...te cuento como lo he hecho y no tengo problemas...por ejemplo tengo
una Dynpro principal del tipo normal y los TAB son Subscreen que son siete.

Si te fijas no he identificado ningun campo en la logica de proceso de las Dynpro...lo
que si estan definidos y declarados como estructuras en el TOP...una estructura para
cada Dynpro. con todos sus campos.

Otra forma es que en la logica del PAI... despues del USER_COMMAND...actualices valores sin necesidad de dar un ENTER...para esto tienes que utilizar la funcion "DYNP_VALUES_UPDATE".

Cualquier cosa avisame

Ojala esto te ayude...


La Dynpro principal es la : 3000
*
*----------------------------------------------------------------------*
* PBO
*----------------------------------------------------------------------*
*
PROCESS BEFORE OUTPUT.
*
  MODULE status_3000.                        " Aqui actualizo atributos de los campos de la dynpro
*
  MODULE t_ctrl_active_tab_set.                  " Aqui controlo en que TAB estoy
*
  CALL SUBSCREEN:
       3001_sca INCLUDING g_t_ctrl-prog '3001',
       3002_sca INCLUDING g_t_ctrl-prog '3002',
       3003_sca INCLUDING g_t_ctrl-prog '3003',
       3004_sca INCLUDING g_t_ctrl-prog '3004',
       3005_sca INCLUDING g_t_ctrl-prog '3005',
       3006_sca INCLUDING g_t_ctrl-prog '3006',
       3007_sca INCLUDING g_t_ctrl-prog '3007'.
*
*
*----------------------------------------------------------------------*
* PAI
*----------------------------------------------------------------------*
*
PROCESS AFTER INPUT.
*
  CALL SUBSCREEN:
         3001_sca,
         3002_sca,
         3003_sca,
         3004_sca,
         3005_sca,
         3006_sca,
         3007_sca.


  FIELD wa_dato_xx MODULE get_datos_generales_pai ON REQUEST.              " Aqui traigo y asigno valores de campos a la dynpro
*
  MODULE user_command_3000.                               " Aqui controlas botones y modifica valores...etc.






La Subscreen : 3001 ( primer TAB )
*
*----------------------------------------------------------------------*
* PBO
*----------------------------------------------------------------------*
*
PROCESS BEFORE OUTPUT.
*
  MODULE atrib_dynpro_3001.                              " Aqui modifico atributos de los campos en la pantalla
*
  MODULE act_data_dynpro_3001.                           " Aqui valido posibles modificaciones, traigo textos, etc.
*

*
*----------------------------------------------------------------------*
* PAI
*----------------------------------------------------------------------*
*
PROCESS AFTER INPUT.
*
*
  FIELD wa_dato_001           MODULE valida_dato_001.           " Validaciones especificas a un campo

*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
  MODULE user_command_3001.                    " Aqui controlas botones y modifica valores de campos de la Subscreen etc.
*
*








26
Bapis / SD_CUSTOMER_MAINTAIN_ALL - Ejemplo de Uso
« en: 05 de Diciembre de 2012, 06:36:35 am »
Ejemplo de como utilizar esta BAPI...


REPORT y_ebf_058.

*----------------------------------------------------------------------*
* DECLARACION DE VARIABLES
*----------------------------------------------------------------------*
*
DATA : ld_kunnr             TYPE kunnr.
DATA : ld_sd_cust_1321_done TYPE c.
DATA : ld_addnr             TYPE ad_addrnum.
*
*----------------------------------------------------------------------*
* DECLARACION DE TABLAS INTERNAS Y ESTRUCTURAS
*----------------------------------------------------------------------*
*
DATA : wa_kna1              TYPE kna1.                                " Maestro de clientes (parte general)
DATA : wa_knb1              TYPE knb1.                                " Maestro de clientes (sociedad)
DATA : wa_knvv              TYPE knvv.                                " Maestro de clientes datos comerciales
DATA : wa_bapiaddr1         TYPE bapiaddr1.                           " Estructura de referencia BAPI p.direcciones (org./empresa)
DATA : wa_bapiaddr2         TYPE bapiaddr2.                           " Estructura referencia BAPI p.direcciones (personas físicas)
*
DATA : it_xknvi             TYPE STANDARD TABLE OF fknvi,             " Change document structure; generated using RSSCD000
       wa_xknvi             TYPE fknvi,
       wx_xknvi             TYPE fknvi.
*
DATA : it_xknvp             TYPE STANDARD TABLE OF fknvp,             " Change document structure; generated using RSSCD000
       wa_xknvp             TYPE fknvp,
       wx_xknvp             TYPE fknvp.
*
DATA : it_yknvp             TYPE STANDARD TABLE OF fknvp,             " Change document structure; generated using RSSCD000
       wa_yknvp             TYPE fknvp,
       wx_yknvp             TYPE fknvp.
*
DATA : it_ad1vl             TYPE STANDARD TABLE OF bapiad1vl,         " Estructura BAPI p.distribución tp.dirección 1
       wa_ad1vl             TYPE bapiad1vl.
DATA : it_adsmtp            TYPE STANDARD TABLE OF bapiadsmtp,        " Estructura BAPI p.direcciones correo electr.(Bus.Addr.Serv.)
       wa_adsmtp            TYPE bapiadsmtp.
DATA : it_adtel             TYPE STANDARD TABLE OF bapiadtel,         " Estructura BAPI p.números teléfono (Business Address Serv.)
       wa_adtel             TYPE bapiadtel.
DATA : it_return            TYPE STANDARD TABLE OF bapiret2,          " Parámetro de retorno
       wa_return            TYPE bapiret2.
DATA : it_ad1vlx            TYPE STANDARD TABLE OF bapiad1vlx,        " Estructura referencia modif.BAPI p.estructura BAPIAD1VL
       wa_ad1vlx            TYPE bapiad1vlx.
DATA : it_adtelx            TYPE STANDARD TABLE OF bapiadtelx,        " Estructura referencia modif.BAPI p.estructura BAPIADTEL
       wa_adtelx            TYPE bapiadtelx.
DATA : it_adsmtx            TYPE STANDARD TABLE OF bapiadsmtx,        " Estructura referencia modif.BAPI p.estructura BAPIADSMTP
       wa_adsmtx            TYPE bapiadsmtx.
*
DATA : wx_kna1              TYPE kna1.                                "


*
*----------------------------------------------------------------------*
*  INICIO SECUENCIA DE CREACION DE PACIENTES
*----------------------------------------------------------------------*
*

*
*   -------------------------------------------------------------------*
*    LLENADO TBI : IT_KNA1 ( MAESTR DE CLIENTES DATOS GENERALES )
*   -------------------------------------------------------------------*
*
CLEAR   : wa_kna1.
*
wa_kna1-kunnr   = '0000000100'.                                     " Numero de Cliente
wa_kna1-land1   = 'CL'.                                             " Pais
wa_kna1-ktokd   = 'DPCT'.                                           " Grupo de Cuentas Deudor
wa_kna1-spras   = 'S'.                                              " Idioma
wa_kna1-name3   = 'Nombre 3'.                                       " Nombre 3
*

*
*   -------------------------------------------------------------------*
*    LLENADO TBI : IT_KNVV ( MAESTRO CLIENTE DATOS COMERCIALES )
*   -------------------------------------------------------------------*
*
CLEAR   : wa_knvv.
*
wa_knvv-kunnr   = '0000000100'.                                     " Numero de Cliente
wa_knvv-vkorg   = '1000'.                                           " Organizacion de Venta
wa_knvv-vtweg   = '10'.                                             " Canal de distribución
wa_knvv-spart   = '10'.                                             " Sector
wa_knvv-kdgrp   = '01'.                                             " Grupo de clientes
wa_knvv-waers   = 'CLP'.                                            " Moneda
wa_knvv-kalks   = '1'.                                              " Esquema calculo del paciente
wa_knvv-versg   = '1'.                                              " Grupo de estadísticas cliente
wa_knvv-zterm   = 'ZXXX'.                                           " Clave de condiciones de pago
wa_knvv-pltyp   = 'A1'.                                             " Tipo de lista de precios
wa_knvv-awahr   = '100'.                                            " Probabilidad de pedido de posición
wa_knvv-antlf   = '9'.                                              " Cantidad máxima de entregas parciales permitidas p/posición
wa_knvv-kzazu   = 'X'.                                              " Indicador de agrupamiento de pedidos
wa_knvv-vwerk   = 'CE0Q'.                                           " Centro suministrador
wa_knvv-vkbur   = '1001'.                                           " Oficina de ventas
wa_knvv-vkgrp   = 'GR1'.                                            " Grupo de Vendedores

*
*   -------------------------------------------------------------------*
*    LLENADO TBI : IT_BAPIADDR2 ( ESTR.BAPI DIREC.PERSONAS FISICAS )
*   -------------------------------------------------------------------*
*
CLEAR   : wa_bapiaddr2.
*
wa_bapiaddr2-firstname    = 'NOMBRE 1'.                             " Nombre Cliente
wa_bapiaddr2-lastname     = 'NOMBRE 2'.                             " Nombre Cliente
wa_bapiaddr2-langu_p      = 'S'.                                    " Idioma
wa_bapiaddr2-langup_iso   = 'S'.                                    " Idioma ISO
wa_bapiaddr2-fullname_x   = 'X'.

wa_bapiaddr2-house_no     = '1345'.                                 " Nº en la Direccion

wa_bapiaddr2-country      = 'CL'.                                   " Pais
wa_bapiaddr2-countryiso   = 'CL'.                                   " Pais ISO
wa_bapiaddr2-region       = '13'.                                   " Region
wa_bapiaddr2-time_zone    = 'CHILE'.                                " Zona Horaria
wa_bapiaddr2-e_mail       = 'CUALQUIER.CORREO@EMAIL.COM'.           " Direccion Correo
wa_bapiaddr2-city         = 'CITY'.
wa_bapiaddr2-district     = 'DISTRICT'.

*
*----------------------------------------------------------------------*
* DATOS DE IMPUESTOS
*----------------------------------------------------------------------*
*
REFRESH : it_xknvi.
CLEAR   : it_xknvi, wa_xknvi, wx_xknvi.

wa_xknvi-kunnr            = '0000000100'.                       " Numero de Cliente
wa_xknvi-aland            = 'CL'.                               " Pais
wa_xknvi-tatyp            = 'MWST'.                             " Tipo de Impuesto
wa_xknvi-taxkd            = '0'.                                " Tipo de Casificacion Fiscal (Exento )
wa_xknvi-kz               = 'U'.                                " Tipo de modificación (U, I, E, D)
APPEND wa_xknvi TO it_xknvi.
*
*----------------------------------------------------------------------*
*  DATOS DE INTERLOCUTOR COMERCIAL
*----------------------------------------------------------------------*
*
REFRESH : it_xknvp.
CLEAR   : it_xknvp, wa_xknvp, wx_xknvp.
*
wa_xknvp-kunnr            = '0000000100'.                           " Numero de Cliente
wa_xknvp-vkorg            = '1000'.                                 " Organizacion de Ventas
wa_xknvp-vtweg            = '10'.                                   " Canal de Disrtibucion
wa_xknvp-spart            = '10'.                                   " Funcion
wa_xknvp-parvw            = 'RG'.                                   " Tipo de Interlocutor
wa_xknvp-kunn2            = '99999999-9'.                           " Número de cliente del interlocutor
wa_xknvp-kz               = 'I'.                                    " Tipo de modificación (U, I, E, D)
*
APPEND wa_xknvp TO it_xknvp.


*   -------------------------------------------------------------------*
*    EJECUTAR BAPI MODIFICACION DE CLIENTES : SD_CUSTOMER_MAINTAIN_ALL
*   -------------------------------------------------------------------*
*
CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
  EXPORTING
    i_kna1                  = wa_kna1
    i_knb1                  = wa_knb1
    i_knvv                  = wa_knvv
    i_bapiaddr1             = wa_bapiaddr1
    i_bapiaddr2             = wa_bapiaddr2
    pi_postflag             = 'X'
    pi_cam_changed          = 'X'
  IMPORTING
    e_kunnr                 = ld_kunnr
    o_kna1                  = wx_kna1
    e_sd_cust_1321_done     = ld_sd_cust_1321_done
  TABLES
    t_xknvi                 = it_xknvi
    t_xknvp                 = it_xknvp
    t_yknvp                 = it_yknvp
  EXCEPTIONS
    client_error            = 1
    kna1_incomplete         = 2
    knb1_incomplete         = 3
    knb5_incomplete         = 4
    knvv_incomplete         = 5
    kunnr_not_unique        = 6
    sales_area_not_unique   = 7
    sales_area_not_valid    = 8
    insert_update_conflict  = 9
    number_assignment_error = 10
    number_not_in_range     = 11
    number_range_not_extern = 12
    number_range_not_intern = 13
    account_group_not_valid = 14
    parnr_invalid           = 15
    bank_address_invalid    = 16
    tax_data_not_valid      = 17
    no_authority            = 18
    company_code_not_unique = 19
    dunning_data_not_valid  = 20
    knb1_reference_invalid  = 21
    cam_error               = 22
    OTHERS                  = 23.
*
IF ( sy-subrc EQ 0 ).
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'.
ENDIF.


27
Bapis / ADDR_MAINTAIN_COMPLETE - Modificar Datos de Direccion
« en: 05 de Diciembre de 2012, 06:14:15 am »
Aqui les dejo un pequeño ejemplo de como modificar datos de direccion...


REPORT y_test_050.

TYPE-POOLS: szadr.

*
*----------------------------------------------------------------------*
* DECLARACION DE VARIABLES
*----------------------------------------------------------------------*
*
DATA : ld_addnr             TYPE ad_addrnum.

*
*----------------------------------------------------------------------*
* DECLARACION DE TABLAS INTERNAS Y ESTRUCTURAS
*----------------------------------------------------------------------*
*

DATA : wx_kna1              TYPE kna1.                                "
DATA : addr_complete        TYPE szadr_addr1_complete.
DATA : adsmtp_line          TYPE szadr_adsmtp_line,
       addr1_line           TYPE szadr_addr1_line,
       adtel_line           TYPE szadr_adtel_line.

DATA : ld_recode            LIKE  szad_field-returncode.
DATA : lt_error             TYPE STANDARD TABLE OF addr_error.

* ----------------------------------------------------------------*
* EJECUTAR BAPI : ADDR_GET_COMPLETE
* ----------------------------------------------------------------*

*
*  Aqui codigo para obtener en WX_KNA1 en Numero de Direccion "ADRNR"
*



*

addr_complete-addrnumber = wx_kna1-adrnr.

*
*  Obtener Datos de Direccion Completos
*
CALL FUNCTION 'ADDR_GET_COMPLETE'
  EXPORTING
    addrnumber        = addr_complete-addrnumber
    addrhandle        = addr_complete-addrhandle
  IMPORTING
    addr1_complete    = addr_complete
  EXCEPTIONS
    parameter_error   = 1
    address_not_exist = 2
    internal_error    = 4
    OTHERS            = 5.

*
*  Aqui codigo de lo que se quiera modificar...
*



*
* Ejemplo : Para Modificar Datos de : addr1_line
*
READ TABLE addr_complete-addr1_tab INTO addr1_line INDEX 1 .
addr1_line-data-extension2  = 'TEST 01'.
addr1_line-data-house_num1  = '1232'.

MODIFY addr_complete-addr1_tab FROM addr1_line
                               INDEX 1.


*
* Ejemplo : Para Modificar el Telefono 01
*

CLEAR : adtel_line-adtel.
adtel_line-adtel-country      = 'CL'.                                    " Pais
adtel_line-adtel-tel_number   = '666222666'.                             " Telefono Fijo - 01
adtel_line-adtel-telnr_long   = '666222666'.                             " Telefono Fijo - 01
adtel_line-adtel-telnr_call   = '666222666'.                             " Telefono Fijo - 01
adtel_line-adtel-home_flag    = 'X'.                                     " Dirección destinatario en esta cl.comunicación (vínc.correo)
adtel_line-adtel-r3_user      = '1'.                                     " Tipo de Telefono
adtel_line-adtel-updateflag   = 'I'.
APPEND adtel_line TO addr_complete-adtel_tab.

*
* ----------------------------------------------------------------*
* EJECUTAR BAPI : ADDR_MAINTAIN_COMPLETE
* ----------------------------------------------------------------*

CALL FUNCTION 'ADDR_MAINTAIN_COMPLETE'
  EXPORTING
    updateflag               = 'U'
    addr1_complete           = addr_complete
    address_group            = 'BP'
    substitute_all_comm_data = ' '
    check_address            = ' '
  IMPORTING
    returncode               = ld_recode
  TABLES
    error_table              = lt_error
  EXCEPTIONS
    parameter_error          = 1
    address_not_exist        = 2
    handle_exist             = 4
    internal_error           = 5
    OTHERS                   = 6.
*
IF ( sy-subrc EQ 0 ).

  CALL FUNCTION 'ADDR_MEMORY_SAVE'
    EXPORTING
      execute_in_update_task = 'X'
    EXCEPTIONS
      address_number_missing = 1
      person_number_missing  = 2
      internal_error         = 3
      database_error         = 4
      reference_missing      = 5
      OTHERS                 = 6.

*
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'.

*
ENDIF.


28
Reports / Re:Transformar Orden Spool a PDF
« en: 16 de Noviembre de 2012, 11:51:18 pm »
Si, tienes razon....pero la finalidad de este pequeño ejemplo es poder agregarle mas funcionalidades, como guardar imagenes de
documentos legales en algun directorio sap via FTP, o atachar el archivo para enviarlo por correo...o lo que se quiera hacer
con este archivo..


29
Reports / FIELD-SYMBOLS : Asignacion y Comparacion de Datos en Forma Dinamica
« en: 09 de Noviembre de 2012, 05:43:56 am »
La de idea de esta rutina es no tener que estar asignando variables, estructuras o comparando siempre línea a línea...
Esta idea llego cuando estaba desarrollando una aplicación que debe maneja bastantes datos en memoria, poder modificar
datos y luego reversar los datos, asignar valores a variables desde una pantalla a varios campos de distintas áreas de trabajo...
entonces pensé...si SAP maneja el concepto de áreas de trabajo...porque no aplicar esto a mi programa...entonces pensé en crear una
tabla interna con correlativos de áreas o procesos y los campos de estructuras o variables que deseo estar asignando de un lado a otro y
como resultado salió este programita...Ojala les sirva ...El código fuente da para mucho mas...

Cualquier idea o aporte...será bien recibido



REPORT y_proceso_dinamico.


*-----------------------------------------------------------------------------------------------------------------*
* Tabla para Catalogo de Campos de TBI's y Variables
* Para Utilizar Field-Symbols en Asignacion Dinamica
* De Datos desde un Lado a Otro...
*-----------------------------------------------------------------------------------------------------------------*
TYPES : BEGIN OF ty_itab,
          proceso(5)          TYPE n,                     " Correlativo Identifica Datos a Procesar
          tabla01             TYPE tabname,               " Area de Trabajo 01
          campo01             TYPE fieldname,             " Campo / Variable Area de Trabajo 01
          tabla02             TYPE tabname,               " Area de Trabajo 01
          campo02             TYPE fieldname,             " Campo / Variable Area de Trabajo 01
        END OF ty_itab.

DATA  : ti_itab               TYPE STANDARD TABLE OF ty_itab,
        wa_itab               TYPE ty_itab.
*-----------------------------------------------------------------------------------------------------------------*
DATA : gd_telefono_01(15)     TYPE c,
       gd_telefono_02(15)     TYPE c.
*-----------------------------------------------------------------------------------------------------------------*
DATA : lx_kna1                TYPE kna1.
*-----------------------------------------------------------------------------------------------------------------*
DATA : gd_retorno(1)          TYPE c.
*-----------------------------------------------------------------------------------------------------------------*
DATA : BEGIN OF wa_area_001,
         name1                LIKE lx_kna1-name1,
         ort01                LIKE lx_kna1-ort01,
         regio                LIKE lx_kna1-regio,
         name3                LIKE lx_kna1-name3,
         fono_01(20)          TYPE c,
         fono_02(20)          TYPE c,
         fecha                TYPE datum,
         hora                 TYPE uzeit,
       END OF wa_area_001.

DATA : gd_usuario(15)         TYPE c.
*
*-----------------------------------------------------------------------------------------------------------------*
* MACRO : MC_ADD_TO_ITAB : Agrega definiciones de asignacion o comparacion
*-----------------------------------------------------------------------------------------------------------------*
*
DEFINE mc_add_to_itab.
*
  clear : wa_itab.
  wa_itab-proceso   = &1.
  wa_itab-tabla01   = &2.
  wa_itab-campo01   = &3.
  wa_itab-tabla02   = &4.
  wa_itab-campo02   = &5.
  append wa_itab to ti_itab.
*
END-OF-DEFINITION.
*
*-----------------------------------------------------------------------------------------------------------------*
* START-OF-SELECTION
*-----------------------------------------------------------------------------------------------------------------*
*
START-OF-SELECTION.
*
  PERFORM llena_tbi_diccionario.
*-----------------------------------------------------------------------------------------------------------------*
*  llenado de las tablas internas o variables
*  Aqui el Codigo...de Ejemplo.  AREA 01
*-----------------------------------------------------------------------------------------------------------------*
  wa_area_001-name1       = 'JUAN PEREZ GONZALEZ'.
  wa_area_001-ort01       = 'CUALQUIER COSA'.
  wa_area_001-regio       = '13'.
  wa_area_001-name3       = 'NOMBRE TRES'.
  wa_area_001-fono_01     = '(56 2) 6771474'.
  wa_area_001-fono_02     = '(56 9) 9234532'.

  gd_usuario              = 'XXXX'.

  BREAK-POINT.
* REVISAR ESTADO DE WA_AREA_001 Y LX_KNA1 Y LA VARIABLE GD_USUARIO

*-----------------------------------------------------------------------------------------------------------------*
*  Mover de Izquierda a Derecha.
  PERFORM frm_proceso_dinamico USING 'DE_01_A_02'
                                     '00001'
                                CHANGING gd_retorno.
  BREAK-POINT.
* GD_RETORNO = 'T' --> OK
* GD_RETORNO = 'F' --> ERROR
*
* REVISAR ESTADO DE WA_AREA_001 Y LX_KNA1 Y LA VARIABLE GD_USUARIO



*-----------------------------------------------------------------------------------------------------------------*
*  llenado de las tablas internas o variables
*  Aqui el Codigo...de Ejemplo.  AREA 02
*-----------------------------------------------------------------------------------------------------------------*
  lx_kna1-name1           = 'JOSE LX_KNA1'.
  gd_telefono_01          = '(56 2) LX_KNA1'.
  gd_telefono_02          = '(56 9) LX_KNA1'.
*-----------------------------------------------------------------------------------------------------------------*
*  Mover de Derecha a Izquierda.

  PERFORM frm_proceso_dinamico USING 'DE_02_A_01'
                                     '00001'
                                CHANGING gd_retorno.
  BREAK-POINT.
* GD_RETORNO = 'T' --> OK
* GD_RETORNO = 'F' --> ERROR
*
* REVISAR ESTADO DE WA_AREA_001 Y LX_KNA1 Y LA VARIABLE GD_USUARIO

*-----------------------------------------------------------------------------------------------------------------*
*  Validar si contenido de los campos son iguales.
  PERFORM frm_proceso_dinamico USING '01_EQ_02'
                                     '00001'
                                CHANGING gd_retorno.
  BREAK-POINT.
* GD_RETORNO = 'T' --> OK
* GD_RETORNO = 'F' --> ERROR
*
* REVISAR ESTADO DE WA_AREA_001 Y LX_KNA1 Y LA VARIABLE GD_USUARIO

*-----------------------------------------------------------------------------------------------------------------*
*  Mover de Izquierda a Derecha.
  PERFORM frm_proceso_dinamico USING 'DE_01_A_02'
                                     '00001'
                                CHANGING gd_retorno.

  BREAK-POINT.
* GD_RETORNO = 'T' --> OK
* GD_RETORNO = 'F' --> ERROR
*
* REVISAR ESTADO DE WA_AREA_001 Y LX_KNA1 Y LA VARIABLE GD_USUARIO
*

*
END-OF-SELECTION.
*
*-----------------------------------------------------------------------------------------------------------------*
*  Aqui es donde vamos agregando las estrcuras, tablas o variables que deaseamos
*  asignar o comparar en un determinado momento
*-----------------------------------------------------------------------------------------------------------------*
*
FORM llena_tbi_diccionario.

  REFRESH : ti_itab.
  CLEAR   : ti_itab, wa_itab.

  mc_add_to_itab    '00001'   'WA_AREA_001'   'NAME1'                 'LX_KNA1'      'NAME1'.
  mc_add_to_itab    '00001'   'WA_AREA_001'   'ORT01'                 'LX_KNA1'      'ORT01'.
  mc_add_to_itab    '00001'   'WA_AREA_001'   'REGIO'                 'LX_KNA1'      'REGIO'.
  mc_add_to_itab    '00001'   'WA_AREA_001'   'NAME3'                 'LX_KNA1'      'NAME3'.
  mc_add_to_itab    '00001'   'WA_AREA_001'   'FONO_01'               ''             'GD_TELEFONO_01'.
  mc_add_to_itab    '00001'   'WA_AREA_001'   'FONO_02'               ''             'GD_TELEFONO_02'.
  mc_add_to_itab    '00001'   'WA_AREA_001'   'FECHA'                 ''             'SY-DATUM'.
  mc_add_to_itab    '00001'   'WA_AREA_001'   'HORA'                  ''             'SY-UZEIT'.
  mc_add_to_itab    '00001'   ''              'GD_USUARIO'            ''             'SY-UNAME'.

ENDFORM.                                                                                                          "
*
*-----------------------------------------------------------------------------------------------------------------*
* FORM : FRM_PROCESO_DINAMICO : Realiza Asignaciones o Comparaciones se excluyen
*                                                          las asignacines a variables de sistema "SY-*"
*-----------------------------------------------------------------------------------------------------------------*
*
FORM frm_proceso_dinamico  USING    p_ld_sentido
                                    p_ld_proceso
                           CHANGING p_gd_retorno.
*
  DATA : ld_tbicamp1(40)  TYPE c,
         ld_tbicamp2(40)  TYPE c.
  DATA : ld_var_aux1(100) TYPE c,
         ld_var_aux2(100) TYPE c.

  FIELD-SYMBOLS : <fs_scr>, <fs_tbi>.
  FIELD-SYMBOLS : <fs_ax1>, <fs_ax2>.

  p_gd_retorno = 'T'.
*

  LOOP AT ti_itab INTO wa_itab WHERE proceso EQ p_ld_proceso.
    CLEAR : ld_tbicamp1, ld_tbicamp2.
*
    IF ( wa_itab-tabla01 NE '' ).
      CONCATENATE wa_itab-tabla01 '-' wa_itab-campo01 INTO ld_tbicamp1.
    ELSE.
      MOVE wa_itab-campo01 TO ld_tbicamp1.
    ENDIF.
*
    IF ( wa_itab-tabla02 NE '' ).
      CONCATENATE wa_itab-tabla02 '-' wa_itab-campo02 INTO ld_tbicamp2.
    ELSE.
      MOVE wa_itab-campo02 TO ld_tbicamp2.
    ENDIF.

    ASSIGN (ld_tbicamp1) TO <fs_scr>.
    ASSIGN (ld_tbicamp2) TO <fs_tbi>.

    CASE p_ld_sentido.

      WHEN 'DE_01_A_02'.
*
        IF ( wa_itab-campo02+00(03) NE 'SY-' ).
          IF ( wa_itab-tabla01 EQ '' ) AND ( wa_itab-tabla02 EQ '' ).
            ASSIGN (ld_tbicamp2) TO <fs_ax2>.
            <fs_tbi> = <fs_scr>.
          ELSE.
            <fs_tbi> = <fs_scr>.
          ENDIF.
        ENDIF.


*
      WHEN 'DE_02_A_01'.
*
        IF ( wa_itab-campo01+00(03) NE 'SY-' ).

          IF ( wa_itab-tabla01 EQ '' ) AND ( wa_itab-tabla02 EQ '' ).
            ASSIGN (ld_tbicamp2) TO <fs_ax2>.
            <fs_scr> =  <fs_ax2>.
          ELSE.
            <fs_scr> = <fs_tbi>.
          ENDIF.
        ENDIF.
*
      WHEN '01_EQ_02'.

        IF ( <fs_tbi> NE <fs_scr> ).
          p_gd_retorno = 'F'.
          EXIT.
        ENDIF.

    ENDCASE.

*
  ENDLOOP.
*
ENDFORM.                                                                                                          "
*


30
Reports / Transformar Orden Spool a PDF
« en: 09 de Noviembre de 2012, 02:23:31 am »
Aqui dejo un pequeño ejemplo de como leer la ultima orden Spool del Usuario actual, transformarla a PDF y luego bajarla al PC.

REPORT Y_TEST_PDF_A_PC.
*
*---------------------------------------------------------------------------------------*
* DECLARACION DE VARIABLES
*---------------------------------------------------------------------------------------*
*
*
*---------->>>  Path + Nombre del Archivo de Salida
*
DATA : ld_archivo             TYPE string VALUE 'C:\PASO\TEST_PDF_002.PDF'.
*
*---------->>>
*
DATA : ld_bin_filesize        TYPE i.
DATA : ld_pdf_spoolid         TYPE rspoid.
DATA : ld_otf_pagecount       TYPE i.
DATA : ld_btc_jobname         TYPE btcjob.
DATA : ld_btc_jobcount        TYPE btcjobcnt.
DATA : ld_bin_file            TYPE xstring.
DATA : it_arch_pdf            TYPE STANDARD TABLE OF tline.
DATA : it_tsp01               TYPE STANDARD TABLE OF tsp01  WITH HEADER LINE.
*
*---------------------------------------------------------------------------------------*
* SELECCION DE DATOS - ULTIMA ORDEN SPOOL DEL USURIO
*---------------------------------------------------------------------------------------*
*
SELECT rqident INTO CORRESPONDING FIELDS OF TABLE it_tsp01
  FROM tsp01
    WHERE rqowner EQ sy-uname.
*
SORT it_tsp01 BY rqident DESCENDING.
*
READ TABLE it_tsp01 INDEX 1.
*
*---------------------------------------------------------------------------------------*
* CONVERTIR SPOOL A PDF
*---------------------------------------------------------------------------------------*
*
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
  EXPORTING
    src_spoolid              = it_tsp01-rqident
    no_dialog                = ''
  IMPORTING
    pdf_bytecount            = ld_bin_filesize
    pdf_spoolid              = ld_pdf_spoolid
    btc_jobname              = ld_btc_jobname
    btc_jobcount             = ld_btc_jobcount
  TABLES
    pdf                      = it_arch_pdf
  EXCEPTIONS
    err_no_otf_spooljob      = 1
    err_no_spooljob          = 2
    err_no_permission        = 3
    err_conv_not_possible    = 4
    err_bad_dstdevice        = 5
    user_cancelled           = 6
    err_spoolerror           = 7
    err_temseerror           = 8
    err_btcjob_open_failed   = 9
    err_btcjob_submit_failed = 10
    err_btcjob_close_failed  = 11
    OTHERS                   = 12.
*
*---------------------------------------------------------------------------------------*
* BAJAR EL ARCHIVO PDF AL PC
*---------------------------------------------------------------------------------------*
*
IF ( sy-subrc EQ 0 ).

  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      bin_filesize            = ld_bin_filesize
      filename                = ld_archivo
      filetype                = 'BIN'
    TABLES
      data_tab                = it_arch_pdf
    EXCEPTIONS
      file_write_error        = 1
      no_batch                = 2
      gui_refuse_filetransfer = 3
      invalid_type            = 4
      no_authority            = 5
      unknown_error           = 6.

ENDIF.
*
*---------------------------------------------------------------------------------------*
*

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