Mensajes recientes

Páginas: [1] 2 3 ... 10
1
Programación ABAP / Re:Definición de work-area
« Último mensaje por molaci en 19 de Septiembre de 2018, 10:04:49 am »
¿Te vale declararlo así?

Por ejemplo...
DATA wa_matnr TYPE mara-matnr.

2
Programación ABAP / Definición de work-area
« Último mensaje por Federico en 18 de Septiembre de 2018, 08:02:29 pm »
Buenas a todos.

Estoy comenzando el estudio de la programación ABAP.

Como dice el título ¿Es posible definir una work area de un sólo campo de una tabla?

Ejemplo:

DATA wa_campo TYPE TABLE OF ztabla-campo

Gracias de antemano por la respuesta.

Saludos.
3
Bapis / Re:SD_CUSTOMER_MAINTAIN_ALL - Ejemplo de Uso
« Último mensaje por CekarC en 03 de Septiembre de 2018, 03:13:44 pm »
Estimado, buen día,

Necesito modificar los siguientes campos de clientes:

Tabla KNA1: NAME1, ORT01,  STRAS, MCOD3, NAME3 y ORT01
Tabla ADRC: NAME1, NAME3, CITY1, CITY2, STREET, HOUSE_NUM1 y MC_CITY1

Nota: Miré el ejemplo REPORT y_ebf_058 de este sitio, pero no logro dar con la solución.

Traté de modificar solo la tabla KNA1 de la siguiente forma, pero me da error 2:

CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
     EXPORTING
       I_KNA1 = gt_kna1
*      I_KNB1 =
*      I_KNVV =
*      I_BAPIADDR1 =
*      I_BAPIADDR2 =
      I_MAINTAIN_ADDRESS_BY_KNA1 = 'X'
*      I_KNB1_REFERENCE = ' '
*      I_FORCE_EXTERNAL_NUMBER_RANGE = 'X'
*      I_NO_BANK_MASTER_UPDATE = ' '
       I_CUSTOMER_IS_CONSUMER = 'X'
*      I_RAISE_NO_BTE = ' '
       PI_POSTFLAG = 'X'
*      PI_CAM_CHANGED = ' '
*    IMPORTING
*      E_KUNNR =
*      O_KNA1 =
*    TABLES
*      T_XKNAS =
*      T_XKNBK =
*      T_XKNB5 =
*      T_XKNEX =
*      T_XKNVA =
*      T_XKNVD =
*      T_XKNVI =
*      T_XKNVK =
*      T_XKNVL =
*      T_XKNVP =
*      T_XKNZA =
*      T_YKNAS =
*      T_YKNBK =
*      T_YKNB5 =
*      T_YKNEX =
*      T_YKNVA =
*      T_YKNVD =
*      T_YKNVI =
*      T_YKNVK =
*      T_YKNVL =
*      T_YKNVP =
*      T_YKNZA =
    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.



Consultas:

1. ¿Se puede hacer con la función SD_CUSTOMER_MAINTAIN_ALL para ambas tablas?
2. De ser si la respuesta a la consulta 1, ¿cómo debiera definir la función?

De antemano, gracias!

Atte.
CekarC
4
Programación ABAP / Re:Asignación dinámica a tabla y referencia de campo
« Último mensaje por Enrique.Borroni 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.
5
Programación ABAP / Asignación dinámica a tabla y referencia de campo
« Último mensaje por akiestudio en 06 de Julio de 2018, 09:30:21 am »
Me gustaría saber si hay alguna manera de realizar la asignación dinamica a una campo de una estructura para hacer una select, mediante field symbol o cl_abap_structdescr etc...

Código: [Seleccionar]
Data: lv_struc type zstruc_1,
         lv_struct_2 type zstruct_2.

if lv_type eq 1.
  lv_test = * aquí cargo el valor de lv_struc.
else.
 
  lv_test = * aquí cargo el valor de lv_struc_2.
endif.

** la asignación de lv_test tendría que ser dinámica, no me valdría ponerlo literalmente, por eso quiero usar cl_abap_structdescr etc...

select single * into ztest
                     from mara
                     where  mantnr eq lv_test-mantnr.

Muchas gracias
6
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.                                                                                                                                                                   "
*-----------------------------------------------------------------------------------------------------------------------------------------*


7
Formularios / Re:Saber páginas a imprimir en ADOBE Forms
« Último mensaje por molaci en 05 de Junio de 2018, 05:57:09 pm »
No recuerdo muy bien ahora, pero había una instrucción que se controlaba desde el script de Java (en el menú de las paletas). Lo que puedes hacer es ocultar todas las páginas menos la última.

Algo así...

Language:Form calc:
Run at : Client.

var curpage = $layout.page ( ref ( $ ) )

var totpages = $layout.pageCount()

if ( curpage ne totpages ) then

  $.presence = "hidden"

endif
8
Formularios / Saber páginas a imprimir en ADOBE Forms
« Último mensaje por facufe en 05 de Junio de 2018, 12:53:15 pm »
Hola a todos, estoy teniendo un problema de superposición de datos en un ADOBE Form y necesitaría saber la cantidad de páginas que se van a imprimir para establecer una página última como fija o si se imprime sólo una, q esa sea el diseño de la última

Desde ya muchas gracias
9
CRM / Re:Documentacion de Web CRM
« Último mensaje por FuryNocturn en 29 de Mayo de 2018, 04:39:45 pm »
podias publicarlos aqui para tener aceso todos.
10
Ampliaciones / Re:Consulta User Exit
« Último mensaje por Nelsonut en 09 de Abril de 2018, 12:29:26 pm »
Gracias por el consejo, realmente me ayudó mucho. Me gusta mucho Es muy útil para mí.
Páginas: [1] 2 3 ... 10