Field Groups – Como funcionan ? caso del famoso LOOP.

Los Fields Groups son muy comunes al momento de usar Base de datos lógicas. Por lo tanto seguramente lo veremos mucho en reportes standard de HR y de FI.

Seguramente alguna vez nos hemos cruzado con el famoso “LOOP. … ENDLOOP.” y nos habremos preguntado que es eso.

Como funcionan ?

Los fields groups trabajan de la siguiente manera:

INSERT field1 field2 INTO fg
EXTRACT fg.
SORT BY fg.
LOOP. … ENDLOOP.

INSERT field1 field2 INTO fg : La instrucción INSERT es usado para crear el field grupo de forma dinámica. Algo importante es que solamente variables globales pueden ser insertados en un field group. Así que si estamos dentro de una subrutina no podemos usar una variable declarada en forma local.

EXTRACT fg: Esta instrucción “combina” todos los campos en el field group y los va grabando en forma secuencial.

SORT BY fg: Simplemente ordena el field group.

LOOP AND ENDLOOP: Va recorriendo el field group creado. Se pueden usar cortes de control AT.

LOOP.
AT ***
……
….
ENDAT.
AT ***
…..
….
ENDAT.
ENDLOOP.

Cuando usarlos ?

En simples palabras técnicamente los field groups no están en memoria sino que están en un espacio de paginado. así que deberían ser usado cuando estamos tratando con más de 50.000 registros. Sino no tiene sentido.

Como usarlos ?

Dejo un reporte simple de ejemplo que encontré por la web usando las tablas de de SPFLI típicas en los tutoriales de SAP.

*************************************************************************
*& Report  ZSPFLI                                                       *
*************************************************************************
REPORT  ZSPFLI  LINE-SIZE 132 LINE-COUNT 65(3)
NO STANDARD PAGE HEADING.
TABLES:SPFLI,SCARR, SFLIGHT, SBOOK.
SELECT-OPTIONS: MYCARRID FOR SPFLI-CARRID.FIELD-GROUPS: HEADER, SPFLI_FG, SFLIGHT_FG, SBOOK_FG.

INSERT:
SPFLI-CARRID
SPFLI-CONNID
SFLIGHT-FLDATE
SBOOK-BOOKID
INTO HEADER,

SPFLI-CARRID
SPFLI-CONNID
SPFLI-CITYFROM
SPFLI-AIRPFROM
SPFLI-CITYTO
SPFLI-AIRPTO
SPFLI-DEPTIME
SCARR-CARRNAME
INTO SPFLI_FG,

SFLIGHT-FLDATE
SFLIGHT-SEATSMAX
SFLIGHT-SEATSOCC
SFLIGHT-PRICE
INTO SFLIGHT_FG,

SBOOK-BOOKID
SBOOK-CUSTOMID
SBOOK-CUSTTYPE
SBOOK-SMOKER
INTO SBOOK_FG.

SELECT * FROM SPFLI WHERE CARRID IN MYCARRID.
SELECT SINGLE * FROM SCARR WHERE CARRID = SPFLI-CARRID.
EXTRACT SPFLI_FG.

SELECT * FROM SFLIGHT
WHERE CARRID = SPFLI-CARRID AND  CONNID = SPFLI-CONNID.
EXTRACT SFLIGHT_FG.

SELECT * FROM SBOOK
WHERE CARRID = SFLIGHT-CARRID AND
CONNID = SFLIGHT-CONNID AND FLDATE = SFLIGHT-FLDATE.
EXTRACT SBOOK_FG.
CLEAR SBOOK.
ENDSELECT.
CLEAR SFLIGHT.
ENDSELECT.
CLEAR SPFLI.
ENDSELECT.

SORT.
LOOP.
AT SPFLI_FG.
FORMAT COLOR COL_HEADING.
WRITE: / SCARR-CARRNAME,
SPFLI-CONNID, SPFLI-CITYFROM,
SPFLI-AIRPFROM, SPFLI-CITYTO, SPFLI-AIRPTO, SPFLI-DEPTIME.
FORMAT COLOR OFF.
ENDAT.

AT SFLIGHT_FG.
WRITE: /15 SFLIGHT-FLDATE, SFLIGHT-PRICE, SFLIGHT-SEATSMAX,
SFLIGHT-SEATSOCC.
ENDAT.

AT SBOOK_FG.
WRITE: /30 SBOOK-BOOKID, SBOOK-CUSTOMID,
SBOOK-CUSTTYPE, SBOOK-SMOKER.
ENDAT.
ENDLOOP.

************************************************************************
*&      END OF REPORT                                                  *
************************************************************************

Tabstrip – Solapas en reportes

Una manera de organizar distintos grupos de parámetros de selección es escondiendo y mostrando los parámetros con un radio buton dinámico por ejemplo como se explica en la siguiente entrada.

Radio Buttons dinámicos – ocultar/mostrar grupos de parámetros de selección

Otra forma es dividir la pantalla de selección con TabStrip sin tener que usar Module Pool

image

En el ejemplo de abajo si corremos el reporte en la primer solapa mostrará 20 clientes, si se ejecuta en la segunda solapa mostrará 20 acreedores y si se ejecuta en la tercera mostrará un simple ‘Hola Mundo’.

REPORT  zreport_tab.

*———————————————————————*
*   Declaraciones                                                     *
*———————————————————————*
TABLES: kna1, lfa1.
DATA: ti_kna1 TYPE TABLE OF kna1 WITH HEADER LINE,
ti_lfa1 TYPE TABLE OF lfa1 WITH HEADER LINE,
g_tab(1) VALUE ’1′.

*———————————————————————*
*   selection screen                                                  *
*———————————————————————*
* Primer Tab
SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t00.
SELECT-OPTIONS so_kunnr FOR kna1-kunnr.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN END OF SCREEN 101.

* Segundo Tab
SELECTION-SCREEN BEGIN OF SCREEN 102 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t02.
SELECT-OPTIONS so_lifnr FOR lfa1-lifnr.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 102.

* Tercer Tab
SELECTION-SCREEN BEGIN OF SCREEN 103 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-t03.

SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN END OF SCREEN 103.

* Pantalla de Tabs
SELECTION-SCREEN BEGIN OF TABBED BLOCK t1 FOR 20 LINES.
SELECTION-SCREEN TAB (10) name1 USER-COMMAND ucomm1 DEFAULT SCREEN 101.
SELECTION-SCREEN TAB (20) name2 USER-COMMAND ucomm2 DEFAULT SCREEN 102.
SELECTION-SCREEN TAB (30) name3 USER-COMMAND ucomm3 DEFAULT SCREEN 103.
SELECTION-SCREEN END OF BLOCK t1.

INITIALIZATION.
* Nombre de los Tabs
name1 = ‘Primer Tab ‘.
name2 = ‘Segundo Tab’.
name3 = ‘Tercer Tab’.

AT SELECTION-SCREEN.
* Control de que tab fue elegido
CHECK sy-ucomm = ‘UCOMM1′
OR sy-ucomm = ‘UCOMM2′
OR sy-ucomm = ‘UCOMM3′.
CASE sy-ucomm.
WHEN ‘UCOMM1′.
g_tab = ’1′.
WHEN ‘UCOMM2′.
g_tab = ’2′.
WHEN ‘UCOMM3′.
g_tab = ’3′.
ENDCASE.

START-OF-SELECTION.
* Al ejecutar el reporte, dependiendo del tab seleccionado
* Correrá una lógica o la otra.
CASE g_tab.
* Primer Tab
WHEN ’1′.
SELECT * UP TO 20 ROWS FROM kna1 INTO TABLE ti_kna1.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = sy-repid
i_structure_name   = ‘KNA1′
i_grid_title       = ‘Datos de Clientes’
TABLES
t_outtab           = ti_kna1
EXCEPTIONS
program_error      = 1
OTHERS             = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* Segundo Tab
WHEN ’2′.
SELECT * UP TO 20 ROWS FROM lfa1 INTO TABLE ti_lfa1.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = sy-repid
i_structure_name   = ‘LFA1′
i_grid_title       = ‘Datos de Acreedores’
TABLES
t_outtab           = ti_lfa1
EXCEPTIONS
program_error      = 1
OTHERS             = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* Tercer Tab
WHEN ’3′.
WRITE ‘Hola Mundo’.
ENDCASE.

Agregar Botones en Toolbar dentro de la pantalla de selección

El siguiente código es un ejemplo de como agregar botones en la toolbar dentro de la pantalla de selección.

image

REPORT zreport .
TABLES: sscrfields.DATA smp_dyntxt TYPE smp_dyntxt.

SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.
PARAMETERS : p_m TYPE mara-matnr .

*&———————————————————————*
*& INITIALIZATION
*&———————————————————————*
INITIALIZATION .

CLEAR smp_dyntxt.
smp_dyntxt-text = text-t01.
smp_dyntxt-icon_id = ‘@1U@’.
smp_dyntxt-icon_text = ‘Icon 1′.
smp_dyntxt-QUICKINFO = ‘Tooltip 1′.
sscrfields-functxt_01 = smp_dyntxt.

CLEAR smp_dyntxt.
smp_dyntxt-text = text-t02.
smp_dyntxt-icon_id = ‘@A8@’.
smp_dyntxt-icon_text = ‘Icon 2′.
smp_dyntxt-QUICKINFO = ‘Tooltip 2′.
sscrfields-functxt_02 = smp_dyntxt.

*&———————————————————————*
*& AT SELECTION-SCREEN
*&———————————————————————*
AT SELECTION-SCREEN.

CASE sscrfields-ucomm.
WHEN ‘FC01′.
“PERFORM custom_button_a.
WHEN ‘FC02′.
“PERFORM custom_button_b.
ENDCASE .

Iconos en pantalla de selección

Si deseamos que nuestra pantalla de selección salga por ejemplo así:

image

Lo único que debemos hacer es editar los textos de parámetro de selección de la siguiente forma:

 image

Para saber que código de ID es cada ícono dejo un programa que lista todos los íconos disponibles en SAP con su ID.

DATA :
gs_icon TYPE ICON,
gt_icon TYPE TABLE OF ICON.

SELECT * FROM icon INTO TABLE gt_icon.

LOOP AT gt_icon INTO gs_icon.

WRITE :/
gs_icon-name,
33 ‘@’,
34 gs_icon-id+1(2),
36 ‘@’,
40 gs_icon-id.

ENDLOOP.

Este reporte muestra lo siguiente:

image

Bajar un reporte de fondo en .xls

El usuario requería bajar la información de un ALV grid a un xls, pero la corrida iba a ser en fondo. Y la bajada tenía que ser tal cual el ALV grid, mismo orden de columnas, nombres, etc.

En resumen, antes de la ejecución del ALV se uso la función  ‘LT_DBDATA_READ_FROM_LTDX’ para leer el catálogo de una variante de disposición, después por medio de una tabla dinámica parseo los datos y son bajados en el servidor por medio de OPEN DATASET en un texto plano separado con tabuladores pero con extensión .xls

El Excel ya automáticamente lo abre correctamente.

Dejo el código para darse una idea del desarrollo.

DATA: l_varkey    TYPE LTDXKEY,
TI_LTDXDATA TYPE TABLE OF LTDXDATA WITH HEADER LINE,
WA_LTDXDATA TYPE LTDXDATA,
flag_no_out(1),
l_variante  TYPE ZRPT_HPARAM1-DESCRIPCION,
l_ruta      TYPE ZRPT_HPARAM1-DESCRIPCION,
l_archivo   TYPE ZRPT_HPARAM1-DESCRIPCION,
l_path(120).

l_varkey-REPORT = sy-repid.
l_varkey-VARIANT = l_variante.
l_varkey-TYPE = ‘F’.

* Se lee el catálogo de la variante
CALL FUNCTION ‘LT_DBDATA_READ_FROM_LTDX’
EXPORTING
I_TOOL             = ‘LT’
IS_VARKEY          = l_varkey
TABLES
T_DBFIELDCAT       = TI_LTDXDATA
EXCEPTIONS
NOT_FOUND          = 1
WRONG_RELID        = 2
OTHERS             = 3 .
IF SY-SUBRC = 0.

LOOP AT TI_LTDXDATA.
WA_LTDXDATA = TI_LTDXDATA.
AT NEW KEY1.
CLEAR flag_no_out.
ENDAT.

IF WA_LTDXDATA-PARAM = ‘NO_OUT’ AND WA_LTDXDATA-VALUE = ‘X’.
flag_no_out = ‘X’.
ENDIF.

AT END OF KEY1.
IF flag_no_out IS INITIAL.
ti_columns-name = TI_LTDXDATA-KEY1.
APPEND ti_columns.
ENDIF.
ENDAT.
ENDLOOP.
ENDIF.

* Creación de tabla interna dinámica
TYPE-POOLS : abap.
FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,
<dyn_wa>,
<dyn_field>.

DATA: dy_table TYPE REF TO data,
dy_line  TYPE REF TO data,
xfc TYPE lvc_s_fcat,
ifc TYPE lvc_t_fcat,
l_string(1024),
l_xls(1024).

class cl_abap_char_utilities definition load.
DATA: tab type x value 9,
htab(1) type c,
l_newline(1),
f_flag(1),
ls_fieldcat TYPE LINE OF slis_t_fieldcat_alv..

htab = cl_abap_char_utilities=>horizontal_tab.
l_newline = cl_abap_char_utilities=>CR_LF.

DATA: begin of ti_lines OCCURS 0,
texto(40),
END OF ti_lines.

LOOP AT ti_columns.
CLEAR xfc.
xfc-fieldname = ti_columns-name .
xfc-datatype = ‘CHAR’.
xfc-OUTPUTLEN = ’40′.
APPEND xfc TO ifc.
ENDLOOP.

* Create dynamic internal table and assign to FS
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog  = ifc
i_length_in_byte = ‘X’
IMPORTING
ep_table         = dy_table.
ASSIGN dy_table->* TO <dyn_table>.

* Create dynamic work area and assign to FS
CREATE DATA dy_line LIKE LINE OF <dyn_table>.
ASSIGN dy_line->* TO <dyn_wa>.

CONCATENATE l_ruta l_archivo ‘.xls’ INTO l_path.

OPEN DATASET l_path FOR OUTPUT IN TEXT MODE ENCODING DEFAULT .
IF sy-subrc <> 0.
WRITE: / text-M05, l_path.
ENDIF.

CLEAR: l_xls, f_flag.
LOOP AT ti_columns.
READ TABLE gt_fieldcat WITH KEY fieldname =     ti_columns-name INTO ls_fieldcat.
IF sy-subrc = 0.
IF f_flag IS INITIAL.
l_xls = ls_fieldcat-seltext_l.
f_flag = ‘X’.
ELSE.
concatenate l_xls ls_fieldcat-seltext_l INTO l_xls SEPARATED BY htab.
ENDIF.
ENDIF.
ENDLOOP.
TRANSFER l_xls TO l_path.

DATA: TYP(1),
col(40),
l_i TYPE I,
col_wa(40).

FIELD-SYMBOLS: <col_value> TYPE ANY,
<column> TYPE ANY.

CLEAR: l_xls, f_flag.
LOOP AT gt_outtab. “gt_outtab es la tabla que muestra el ALV con sus datos y columnas.
MOVE-CORRESPONDING gt_outtab TO <dyn_wa>.
LOOP AT ti_columns.
READ TABLE gt_fieldcat WITH KEY fieldname = ti_columns-NAME INTO ls_fieldcat.
IF sy-subrc = 0.
CONCATENATE ls_fieldcat-tabname ‘-’ ls_fieldcat-fieldname INTO col.
CONCATENATE ‘<dyn_wa>-’ ls_fieldcat-fieldname INTO col_wa.
ASSIGN (col) TO <col_value>.
ASSIGN (col_wa) TO <column>.
CLEAR typ.
DESCRIBE FIELD <col_value> TYPE typ LENGTH l_i.
IF typ = ‘D’.

CONCATENATE <col_value>+6(2) <col_value>+4(2) <col_value>(4) INTO <column> SEPARATED BY ‘-’.
ELSEIF typ = ‘P’.
<column> = <col_value>.
TRANSLATE <column> USING ‘.,’.
ELSEIF typ = ‘I’.
<column> = <col_value>.
IF <col_value> < 0.
<column>  = <col_value>.
CALL FUNCTION ‘CLOI_PUT_SIGN_IN_FRONT’
CHANGING
VALUE         = <column>.
ENDIF.
ENDIF.

CONDENSE <column>.
IF f_flag IS INITIAL.
l_xls = <column>.
f_flag = ‘X’.
ELSE.
concatenate l_xls <column> INTO l_xls SEPARATED BY htab.
ENDIF.
ENDIF.
ENDLOOP.

TRANSFER l_xls TO l_path.
CLEAR: l_xls, f_flag.
ENDLOOP.

CLOSE DATASET l_path.
ENDIF. “Variant

Signo Negativo a la izq. en ALV GRID

Por default, el ALV siempre muestra el signo negativo del lado derecho. Si deseamos mostrar un valor numérico negativo con signo a la izq. sin tener que pasarlo a CHAR (porque si se tenemos que hacer sumatorias, no nos sirve).

En el Catálogo setear la siguiente máscara de edición.

LV_FIELDCAT-EDIT_MASK = 'RRV________,__'.

Esto dará como resultado:

-        82,90

Footer (Pie de Página) en un ALV GRID

Buscando otra cosa por la web me cruce con esta página, quizás en algún momento tenga que usarla, así que la agrego en mi blog, poniendo el link original del artículo. Es como agregar un footer en un ALV GRID con la restricción que no va a salir impreso.

Artículo original: http://www.sapdev.co.uk/reporting/alv/alvgrid_endlist.htm

In order to add a footer which is always displayed on screen to an ALV grid report you need to perform the steps below. Please note this will not be displayed in the printed output
Step 1. Update ‘REUSE_ALV_GRID_DISPLAY’ FM call to include parameter ‘i_callback_html_end_of_list’
Step 2. Create new FORM ‘END_OF_LIST_HTML’ for building footer

 call function 'REUSE_ALV_GRID_DISPLAY'
       exporting
            i_callback_program      = gd_repid
            i_callback_top_of_page   = 'TOP-OF-PAGE'
            i_callback_html_end_of_list = 'END_OF_LIST_HTML'
            is_layout               = gd_layout
            it_fieldcat             = fieldcatalog[]
            i_save                  = 'X'
       tables
            t_outtab                = it_ekko
       exceptions
            program_error           = 1
            others                  = 2.
*&-----------------------------------------------------------*
*&      Form  end_of_list_html
*&-----------------------------------------------------------*
*       output at the end of the list - not in printed output*
*&-----------------------------------------------------------*

FORM end_of_list_html USING end TYPE REF TO cl_dd_document.
  DATA: ls_text TYPE sdydo_text_element,
        l_grid     TYPE REF TO cl_gui_alv_grid,
        f(14) TYPE c VALUE 'SET_ROW_HEIGHT'.

  ls_text = 'Footer title'.

* adds and icon (red triangle)
  CALL METHOD end->add_icon
    EXPORTING
      sap_icon = 'ICON_MESSAGE_ERROR_SMALL'.

* adds test (via variable)
  CALL METHOD end->add_text
    EXPORTING
      text         = ls_text
      sap_emphasis = 'strong'.

* adds new line (start new line)
  CALL METHOD end->new_line.

* display text(bold)
  CALL METHOD end->add_text
    EXPORTING
      text         = 'Bold text'
      sap_emphasis = 'strong'.

* adds new line (start new line)
  CALL METHOD end->new_line.

* display text(normal)
  CALL METHOD end->add_text
    EXPORTING
      text         = 'Normal text'.

* adds new line (start new line)
  CALL METHOD end->new_line.

* display text(bold)
  CALL METHOD end->add_text
    EXPORTING
      text         = 'Yellow triangle'
      sap_emphasis = 'strong'.

* adds and icon (yellow triangle)
  CALL METHOD end->add_icon
    EXPORTING
      sap_icon = 'ICON_LED_YELLOW'.

* display text(normal)
  CALL METHOD end->add_text
    EXPORTING
      text         = 'More text'.

*set height of this section
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = l_grid.

  CALL METHOD l_grid->parent->parent->(f)
    EXPORTING
      id     = 3
      height = 14.

ENDFORM. "end_of_list_html.

image

Salvar datos en ALV editable con un status bar Z

El otro día me cruce con un error muy bizarro. Yo tenía un ALV editable al cual tuve que agregarle un status bar Z por agregar un botón nuevo.

Copie la status bar standard a mi programa y lo modifique. La status bar STANDARD que esta en el grupo de funciones SALV, no tiene definido el Function Code del boton Grabar (SAVE). entonces le setee el nombre &SAVE.

Que paso ? Si yo cambiaba el valor de algun campo editable del ALV al llegar al USER_COMMAND no veía el nuevo valor ingresado sino que veía el antiguo. Y eso andaba bien por lo cual el error debía estar en la status bar. Y efectivamente así fue.

Para que los datos de un ALV editable sea visibles en el FORM USER_COMMAND, el function code de la status bar tiene que ser &DATA_SAVE. De tener otro nombre la información no es pasada al USER_COMMAND.

Colores en ALV

Si corremos el reporte DEMO_LIST_FORMAT_COLOR_1, podemos ver los números que podemos usar para los determinados colores en el ALV

CODIFICACION DE COLORES: El color del ALV sigue el siguiente formato CXYZ donde…
C-> indica que es un color
X-> indica el numero de color, que debe ser del 1 al 9
Y-> indica la intensidad: (’0′=off / ’1′=on).
X-> indica si el color es inverso (’0′=off / ’1′=on).

Ejemplo para ver facilmente

image

Por ejemplo C500 mostrará un verde claro.

Radio Buttons dinámicos y ocultar/mostrar grupos de parámetros de selección

Una vez necesite hacer una pantalla de selección dinámica, es decir que si elegía un radio button debía mostrar X cantidad de parámetros y ocultar otros, y viceversa sin la necesidad de que tengamos que apretar un ENTER para que se dispare el evento AT-SELECTION-SCREEN.

El siguiente código lo arme como modo ejemplo para que se den cuenta de como usarlo

REPORT ZRADIO_BUTTONS.
PARAMETERS: p_1(10) MODIF ID A,
p_2(2)   MODIF ID B,
p_3(5).
PARAMETERS: p_A RADIOBUTTON GROUP rad1 USER-COMMAND ACT DEFAULT ‘X’,
p_B RADIOBUTTON GROUP rad1.

AT SELECTION-SCREEN OUTPUT.
LOOP AT screen.
IF p_A = ‘X’.
IF screen-group1 = ‘B’.
screen-active = 0.
ENDIF.
ELSEIF p_B = ‘X’.
IF screen-group1 = ‘A’.
screen-active = 0.
ENDIF.
ENDIF.

MODIFY screen.
ENDLOOP.

El MODIF ID lo que hace es darle un identificador a cada parámetro por lo cual no es necesario ocultar cada uno de los parámetros, sino que es más práctico ocultar directamente todos los elementos de un grupo.

La adición USER-COMMAND es la que permite que la selección sea dinámica y que no haya que apretar un enter para ejecutar un PAI.

NOTA: Al usar este método es muy molesto tener parámetros de selección OBLIGATORIOS, porque de no estar completos nos va a saltar la validación y los radio button no funcionarán de la forma deseada. Así que de usar Radio buttons dinámicos la validaciones las deberemos hacer manualmente nosotros mismos.

Anuncios

Debug de un Job

Otro método al de como crear un loop infinito y desde la SM50 ingresar al debug, es el siguiente:

El único requerimiento que tenemos es que el job haya finalizado, ya sea de forma correcta o incorrecta.

Desde la SM37 tildamos y seleccionamos el JOB que deseamos debuguear y en el Browser (donde ponemos las transacciones) ponemos JDBG entonces se activa el modo debug. Aconsejo antes meter un break en la programa para directamente ir a la sección que deseemos debuguear.

Pop Up Debug

Crear un text con lo siguiente:

[FUNCTION]

Command=/H

Title=Debugger

Type=SystemCommand

Luego… drag and drop en la ventana que queremos debbuguear.

El lanzamiento del iPhone 5 será el 21 de septiembre

iphone 5 apple

El iPhone 5 será presentado por Apple el 12 de septiembre y saldrá a la venta unos días más tarde, el 21 del mismo mes. Esta es la información que más están sonando en las últimas semanas. Pero además se ha sabido que las reservas de del terminal podrían empezar a partir de ese mismo día 12, lo que acrecienta la certeza de que en efecto se trata de su presentación. El lanzamiento internacional será el 5 de octubre.

El 12 de septiembre ya se podrá reservar el iPhone 5. Esta es la información que ha publicado el portal iMore, que también proclamó recientemente, basado en rumores de un portal chino, que la presentación del terminal sería ese mismo día y que el lanzamiento se podrucirá el día 21 de septiembre. El día 5 de octubre será el lanzamiento internacional, que hará llegar el nuevo smartphone a otros países.

Junto con el smartphone de Apple, que se presentará en un evento el 12 del septiembre, también se podrá ver un iPad Mini, si atendemos a las información surgidas de una web china, en contacto con la cadena de producción.

Las informaciones provienen de fuentes sólidas, que han probado su eficacia anteriormente, según explican desde iMore. Pero aún hay más, porque han surgido nuevas imágenes del iPhone 5, recogidas por 9to5mac.Proceden de una tienda de reparaciones china.

iphone 5 apple

Constantemente están surgiendo rumores acerca del nuevo smartphone de Apple. Uno de los últimosha sido publicado por The Wall Street Journal y afirma que el iPhone 5 incorporará una pantalla más delgada. Según las fuentes consultadas por el diario, Sharp, LG Display y Japan Display ya están produciendo este componente para el smartphone.

Á esta información se le suma otra procedente de un blog de Japón, que asegura que el terminal ya estaría en producción. A través del portal Alibaba ya se podría reservar el dispositivo. Incluso se ha llegado a señalar que estaría disponible en el mes de agosto, dado que Apple tendría intención de adelantar el lanzamiento con el objetivo de competir contra el Samsung Galaxy III.

El hardware podría llevar un procesador de cuatro núcleos. La potencia de un procesador así, como el que se atribuye al iPhone 5, constituye una puerta a nuevas oportunidades, así como un gran salto hacie delante. Ninguno de los smartphones que hay hoy en día en el mercado se acerca a esta complejidad.

La publicación especializada en rumores procedentes de la cadena de producción,DigiTimes, ha sido quien ha informado de un posible procesador de cuatro núcleos, que además estaría basado en la arquitectura del Exynos 4, de Samsung, máximo rival de Apple.

Otras supuestas imágenes del iPhone 5

Han aparecido unas imágenes que serían de la carcasa del nuevo terminal de Apple. Se habrían filtrado a través de Photobucket, según TechCrunch, y han sido recogidas por el sitio chino Apple.pro. Tanto el modelo blanco como el negro que se muestra en las fotografías pertenecen a la parte frontal del dispositivo.

iphone 5 imagenes

Pero además el secretismo de Apple sobre el iPhone 5 puede haberse visto truncado con estas fotos que han aparecido de su presunto nuevo terminal. Obtenidas de los proveedores, muestran un dispositivo con una pantalla mayor, de 4 pulgadas, igual de ancho pero más largo que la última versión del smartphone. Los rumores más recientes apuntan a octubre como fecha de lanzamiento.

Las primeras imágenes del iPhone 5 han sido filtradas por los proveedores de componentes, que ya trabajarían en este dispositivo bajo las órdenes de Apple.

El portal 9to5Mac ha publicado unas fotos que asegura son del nuevo smartphone que la firma de Cuperitno lanzará en los próximos meses. Las últimas informaciones apuntaban a octubre, aunque también se ha especulado con el verano como fecha posible.

iphone 5

La pantalla, con una resolución de 1136×640, será de 3,99 pulgadas según se deduce de las imágenes, en las que también se aprecia que el dispositivo será más largo, aunque igual de ancho. Se ahorraría espacio debido a la forma de encajar la antena, destinándose éste a albergar la tecnología para una conexión LTE.

iphone 5 carcasa

El iPhone 5, ¿por fin para después de verano?

Las últimas informaciones indican que habrá que esperar hasta después de verano para poder comprar el iPhone 5. El portal especializado en gadgets de Apple, iMore, lo ha publicado así, basándose en “nuestras fuentes”, de las que no dan más detalle.

Aun así, según iMore, la fecha de lanzamiento de octubre es un rumor más fiable que el de una pantalla más grande o la construcción de las partes externas en metal negro. Ambas características se han atribuido al nuevo smartphone de Apple, entre la maraña de informaciones que surgen cuando se espera un producto de la firma de Cupertino.

Una entrevista para un canal de televisión japonés, en el programa ‘World Business Satillite’ ha desvelado que el lanzamiento del iPhone 5 está previsto para el mes de junio. Un empleado de Foxconn ha señalado esta fecha para la aparición del dispositivo. Se trata del mes en el que Apple acostumbra a celebrar su conferencia de desarrolladores, un marco que podría ser adecuado para una posible presentación.

Aparte de la fecha de lanzamiento también se han filtrado algunas características del nuevo smartphone de Apple. Entre ellas hay que destacar la que tiene que ver con la pantalla, que ha mantenido el mismo tamaño desde que se presentó el primer modelo en 2007. Son 3,5 pulgadas que se han mantenido durante las cinco generaciones que se han puesto a la venta. Sin embargo, en el iPhone 5 podría cambiar y pasar a 4,6 pulgadas, lo que haría que la superficie táctil fuera sensiblemente mayor.

De esta manera el iPhone 5 tendría una pantalla de igual tamaño que el Galaxy S II, uno de sus principales rivales, que funciona con la plataforma Android. Según las fuentes consultadas por Maeil Business, este tipo de paneles se habrían empezado a encargar ya a los proveedores.

Según ha asegurado una fuente de la fábrica de Apple en Foxconn, el iPhone 5 estápreparado para comenzar su producción. De ser cierto, lo más probable es que el dispositivo estuviera listo para su venta en verano. Por el momento hay varios modelos diferentes, pero todos ellos tienen características comunes.

La noticia llegó poco después de que Apple presentase el mejor trimestre de su historia. En la felicitación que Tim Cook envió a sus empleados por este logro, les invitó a un evento en el que podría presentarles oficialmente su nuevo teléfono. Sin embargo, el último gran evento de Apple fue la que todo el mundo esperaba terminara siendo la presentación del iPad 3, aunque finalmente no se hizo referencia al dispositivo con otro nombre que el de’nuevo iPad‘.

En cualquier caso, el iPhone 5, según ha asegurado un trabajador de Foxconn a9to5mac, tendrá una pantalla de más de 4 pulgadas. Y al menos en uno de los prototipos esta pantalla la proporcionará LG. Esta fuente coincidiría con la información recibida por el diario de Corea del Sur.

Además, parece que al final el diseño no será curvado (más ancho en la parte superior). De todos modos, ninguno de los modelos con los que se está trabajando coincidiría exactamente con el modelo final.

También existen informaciones que apuntan a que Apple presente el iPhone 5 en laConferencia de Desarrolladores que celebra cada verano. La compañía ya ha aprovechado este evento para presentar dispositivos (el iPhone 4, por ejemplo) y software, (iOS 5 y iCloud). Ahora, se espera que presente su nuevo teléfono en elverano de 2012.

Según se ha sabido recientemente, el iPhone 5 fue el último dispositivo en el que trabajó Steve Jobs y tendrá un diseño que lo diferenciará del iPhone 4 y el iPhone 4S.

iFixit alaba la construcción de la tableta Galaxy Note 10.1 de Samsung

El popular sitio le dio 8 de 10 puntos a la tableta de la surcoreana, una puntuación muy alta en comparación con los dos 2 de 10 que logró el Nuevo iPad.

iFixit alaba la construcción de la tableta Galaxy Note 10.1 de Samsung
Galaxy Note 10.1.

CALIFORNIA.- El popular sitio iFixit publicó su análisis de la última tableta de Samsung, la Galaxy Note 10.1, el segundo modelo de la surcoreana en incorporar un stylus (o “S-Pen”) como método de creación de contenido.

La evaluación del producto fue mayormente positiva, alabando lo fácil que resultaría reparar el producto en caso de una falla (esto es lo que suele medir el sitio en sus revisiones).

Entre los puntos positivos se destacó lo fácil que es cambiar la batería, que la pantalla LCD y vidrio del frente se pueden sacar separados y el hecho que ocupa tornillos de uso universal en vez de tecnología propietaria y el uso de pegamento industrial (como en los últimos productos de Apple). Además, se destacó que toda esto se hace en un dispositivo con procesador de cuatro núcleos y que además es más delgado que el Nuevo iPad.

En definitiva, la Note 10.1 recibió 8 de 10 puntos, mientras que el Nuevo iPad marcó apenas 2 de 10 cuando fue lanzado en marzo. La principal razón es que extremadamente difícil de desarmar, por lo que su reparación es muy compleja.

Pero no todo es positivo para la tableta de Samsung ya que varios sitios han reportado problemas de usabilidad y lentitud del dispositivo, especialmente cuando se hace uso de la función que permite tener dos aplicaciones abiertas al mismo tiempo, con cada una usando una mitad de la pantalla.

Obtener ruta de Menú SAP ingresando la transacción

Puede obtener la/s ruta/s de Menú SAP ingresando la transacción buscada ejecutando:

SEARCH_SAP_MENU

x ejemplo ME21N:

Nodo Código transacción Texto 

Nodos ME21N Proveedor/centro suministrador conocido 
Nodo predecesor Crear 
Nodo predecesor Pedido 
Nodo predecesor Compras 
Nodo predecesor Gestión de materiales 
Nodo predecesor Logística 

Nodos ME21N Proveedor/centro suministrador conocido 
Nodo predecesor Crear 
Nodo predecesor Pedido 
Nodo predecesor Compras 
Nodo predecesor Compras: Importación 
Nodo predecesor Entorno 
Nodo predecesor Gestión general comercio exterior 
Nodo predecesor Comercio exterior/Aduana 
Nodo predecesor Gestión de materiales 
Nodo predecesor Logística 

Nodos ME21N Proveedor/centro suministrador conocido 
Nodo predecesor Crear 
Nodo predecesor Pedido 
Nodo predecesor Compras 
Nodo predecesor Compras: Importación 
Nodo predecesor Entorno 
Nodo predecesor Gestión general comercio exterior 
Nodo predecesor Comercio exterior/Aduana 
Nodo predecesor Comercial 
Nodo predecesor Logística 

Algunos Consejos sobre SAP.

  • Inicio de sesión sin estar autorizado
    El Cliente 066 normalmente existe en un sistema SAP, debido a los servicios de EarlyWatch. A menudo, este cliente no tiene los master users. Si es cierto, cualquier persona puede registrarse en el sistema utilizando el cliente 066, el usuario SAP*, y la contraseña PASS. Diviértete  .
  • Especiales de copia y pega
    Hacer clic en el área y presione CTRL + Y. Nos permitirá copiar las líneas a la vez y pegarlas después.
  • Mensajes largos a pie de página
    Hacer clic en el mensaje y mantener pulsado el botón del ratón. Después mover el ratón hacia la izquierda.
  • Log de direct input.
    La transacción BMV0 (Gestión de los log de direct input.) muestra todos los registros de entrada directa.
  • Gráficos en SAPscript
    El programa RSTXLDMC puede ser usado para cargar gráficos tipo TIF en SAP como textos estándar.
  • Agregar iconos
    Comprobar el código de un icono usando la transacción ICON. Puedes encontrar una vista técnica en el include llamado «ICON». Las secuencias de caracteres comienzan y terminan con el símbolo @. Incluso textos planos bajo sistemas operativos puede contener estos caracteres.

    Os dejo aquí un programa que lista todos los iconos que hay en sap

    Cita:
    REPORT ZICONS .
    TABLES: ICON.
    INCLUDE .
    FIELD-SYMBOLS: .

    SELECT * FROM ICON.
    ASSIGN (ICON-NAME) TO .
    WRITE: /(5) , 20 ‘@’,21 ICON-ID+1(2),23 ‘@’,ICON-OLENG,
    ICON-BUTTON,ICON-STATUS,ICON-MESSAGE,ICON-FUNCTION,
    ICON-NAME.
    ENDSELECT.

    Esto es sólo para que puedáis ver todos los que existen, pero para utilizarlos en un report, sólo tenéis que usar un include:

    INCLUDE .
    Y poner por ejemplo:

    WRITE: ICON_RED_LIGHT.

  • LLenar un campo de fecha vacío rápidamente
    [b]Pulsa la tecla F4 ( o pulsa en el simbolo de matchcode) y presiona ESCAPE. Se completará automáticamente con la fecha actual.
  • Configuración del módulo FI / CO sin utilizar IMG
    Casi todos los parámetros se puede ajustar mediante las transacciones ORFA (Contabilidad de Activos), ORFB (Contabilidad Financiera), y BRAS (Centro de Coste de Contabilidad).
  • Análisis de la tabla entre dos sistemas
    El contenido de una tabla entre dos sistemas puede verificarse a través de la OY19 transacción.
  • Formatos de comando generales

    /n Ir al siguiente registro si está procesando una sesión de batch input
    /doble Anular el proceso de batch input en primer plano
    /nend Cierre todas las sesiones R/3 y hace un logoff
    /nxxxx Llame a la transacción xxxx transacción en la misma ventana de SAP
    E / S Generara una lista de sesiones
    /oxxxx Llame a la transacción xxxx en una ventana nueva de SAP
    /i Cierra la venta actual
    /h Actuva el modo de Debug
    /$tab Resetea todos los buffers (para administradores de sistemas)
    /$sync Sincroniza los instances buffers (para administradores de sistemas)

  • Comandos de report
    PRI% Imprime el informe actual
    PC% Descarga el informe actual
    SC% Llama a la función Find
    p+ Ir a la página siguiente
    p- Ir a la página anterior
    p++ Ir a la última página
    P– Ir a la primera página
  • Reports Útiles
    RSCLTCOP Copiar tablas entre clientes
    RSAVGL00 Ajuste de tablas entre clientes
    RSINCL00 Listado de programas extendidos
    RSBDCSUB Liberación de juegos de datos de forma automática
    RSORAREL Obtiene la versión de la base de datos ORACLE
    RSPARAM Permite ver todos los parámetros de sistema
    RSUSR003 Comprueba las claves de acceso de los usuarios SAP* y DDIC en todos los mandantes de un sistema
    BDCRECXX Para batch input
    RBSTCHH0 Para header de batch input
    RSBDC_ANALYSE Analiza los Batch input (Revisar para ver cómo se podrían recuperar los datos de batch)
    RSWATCH0 Browser de ficheros unix
    RSMODPRF Report para ejecutar Field_Exits
    RSTXR3TR Transportar SapScript
    RSTXSCRP Upload/download de objetos SAPscript
    RSTXTCRP Transporte de formularios SAPSCRIPT entre sistemas
    RPDTRA00 Lista todas las transacción de HR
    RSEINB00 Sube un fichero de tipo IDOC y lo crea.
    RSNAST00 Ejecutar un IDOC por report
    RSBDCBTC Ejecuta un job después de la finalización de un determinado batch-input.
    RSTXPDFT4 Report para convertir una número Spool a un PDF
    RSAVGL00 Ajusta tablas entre mandantes.
  • Debugeando en modal window 
    Si quieres entrar en modo debug pero estas en una ventana modal de windows y no puedes acceder al cuadro de transacciones de sap para escribir /H aqui hay una solución que puedes usar.

    Abre el Notepad.

    Copia y pega la siguiente línea:

    [FUNCTION]Command=/HTitle=DebuggerType=SystemCommand

    Guarda el documento como debug.txt

    Abre el Windows Explorer y arrastra el archicodebug.txt dentro de la SAP modal window. Voi la, ya estas en modo debug

Bueno hay muchísimos tips más y los encontraréis en esta sección del foro