Mostrando entradas con la etiqueta Abap Avanzado. Mostrar todas las entradas
Mostrando entradas con la etiqueta Abap Avanzado. Mostrar todas las entradas
miércoles, 12 de abril de 2017
jueves, 1 de septiembre de 2016
- septiembre 01, 2016
- 1 Comment
En el siguiente programa podremos transferir un xml a una tabla interna.
El código es el siguiente:
DATA: gcl_xml TYPE REF TO cl_xml_document.
DATA: gv_subrc TYPE sy-subrc.
DATA: gv_xml_string TYPE xstring.
DATA: gv_size TYPE sytabix.
DATA: gt_xml_data TYPE TABLE OF smum_xmltb.
DATA: gwa_xml_data TYPE smum_xmltb.
DATA: gt_return TYPE TABLE OF bapiret2.
DATA: gv_tabix TYPE sytabix.
DATA: gt_student TYPE TABLE OF ty_xml.
DATA: gwa_student TYPE ty_xml.
CREATE OBJECT gcl_xml.
*Upload XML File
CALL METHOD gcl_xml->import_from_file
EXPORTING
filename = p_p_filout
RECEIVING
retcode = gv_subrc.
IF gv_subrc = 0.
CALL METHOD gcl_xml->render_2_xstring
IMPORTING
retcode = gv_subrc
stream = gv_xml_string
size = gv_size.
IF gv_subrc = 0.
* Convert XML to internal table
CALL FUNCTION 'SMUM_XML_PARSE'
EXPORTING
xml_input = gv_xml_string
TABLES
xml_table = gt_xml_data
return = gt_return.
ENDIF.
ENDIF.
WRITE:/ 'fecha',6 'moneda',26 'compra', 33 'venta'.
*Convert XML internal table to Target Student table
LOOP AT gt_xml_data INTO gwa_xml_data WHERE hier EQ 2.
IF gwa_xml_data-type is INITIAL.
gv_tabix = sy-tabix + 1.
READ TABLE gt_xml_data INTO gwa_xml_data INDEX gv_tabix.
gwa_student-fecha = gwa_xml_data-cvalue.
gv_tabix = gv_tabix + 1.
READ TABLE gt_xml_data INTO gwa_xml_data INDEX gv_tabix.
gwa_student-moneda = gwa_xml_data-cvalue.
gv_tabix = gv_tabix + 1.
READ TABLE gt_xml_data INTO gwa_xml_data INDEX gv_tabix.
gwa_student-tccompra = gwa_xml_data-cvalue.
gv_tabix = gv_tabix + 1.
READ TABLE gt_xml_data INTO gwa_xml_data INDEX gv_tabix.
gwa_student-tcventa = gwa_xml_data-cvalue.
APPEND gwa_student to gt_student.
ENDIF.
CLEAR: gwa_xml_data, gwa_student.
ENDLOOP.
*Display data
LOOP AT gt_student INTO gwa_student.
WRITE:/ gwa_student-fecha,11 gwa_student-moneda,27 gwa_student-tccompra,
33 gwa_student-tcventa.
CLEAR: gwa_student.
ENDLOOP.
- septiembre 01, 2016
- 0 Comments
A veces queremos mostrar más información que la que podemos mostrar en un popup, para ello tenemos la opción de mostrar una tabla como popup, donde podamos visualizar más de un dato.
El código a implementar es el siguiente:
mostrar alv como popup
======================
FORM f_layout_build_det USING pi_layout TYPE slis_layout_alv.
CLEAR: pi_layout.
pi_layout-zebra = ''.
pi_layout-colwidth_optimize = 'X'.
pi_layout-box_fieldname = space.
pi_layout-no_input = 'X'.
pi_layout-no_vline = ' '.
pi_layout-no_colhead = ' '.
pi_layout-lights_condense = 'X'.
pi_layout-confirmation_prompt = ''.
pi_layout-detail_popup = 'X'.
pi_layout-detail_initial_lines = ''.
pi_layout-detail_titlebar = 'RECLASIFICACIÓN DE RETENCIONES POR GARANTÍA'.
ENDFORM. " f_layout_build
FORM f_build_struct_det .
REFRESH gtd_fiel_det.
PERFORM f_define_campo2 USING:
'TIPOM' '' '' '4' 'GTD_LISTMES' '' '' 'TipoM' 'TipoM' 'TipoM' '' '' '',
'BUKRS' '' '' '' 'BKPF' 'BUKRS' '' 'Sociedad' 'Sociedad' 'Sociedad' '' '' 'X',
'AUGBL' '' '' '' 'BKPF' 'BELNR' '' 'Doc.Pago' 'Doc.Pago' 'Doc.Pago' '' '' '',
'BELNR' '' '' '' 'BKPF' 'BELNR' '' 'Doc Fi' 'Doc Fi' 'Doc Fi' '' '' '',
'DOCGE' 'C500' '' '' 'BKPF' 'BELNR' '' 'Doc.Reclasif.' 'Doc.Reclasif.' 'Doc.Reclasif.' '' '' '',
'EJEGE' 'C500' '' '' 'BKPF' 'BELNR' '' 'Ejercicio Recl.' 'Ejercicio Recl.' 'Ejercicio Recl.' '' '' '',
'TEXTO' '' '' '200' 'GTD_LISTMES' '' '' 'Mensaje' 'Mensaje' 'Mensaje' '' '' ''.
ENDFORM. " F_BUILD_STRUCT_DET
ALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gv_repid
is_layout = gwa_layout
it_fieldcat = gtd_fiel_det[]
i_screen_start_column = 15
i_screen_start_line = 6
i_screen_end_column = 150
i_screen_end_line = 25
TABLES
t_outtab = gtd_listmes
EXCEPTIONS
program_error = 1
OTHERS = 2.
para regresar a la pantalla anterior se debe agregar:
SET SCREEN 0.
El código a implementar es el siguiente:
mostrar alv como popup
======================
FORM f_layout_build_det USING pi_layout TYPE slis_layout_alv.
CLEAR: pi_layout.
pi_layout-zebra = ''.
pi_layout-colwidth_optimize = 'X'.
pi_layout-box_fieldname = space.
pi_layout-no_input = 'X'.
pi_layout-no_vline = ' '.
pi_layout-no_colhead = ' '.
pi_layout-lights_condense = 'X'.
pi_layout-confirmation_prompt = ''.
pi_layout-detail_popup = 'X'.
pi_layout-detail_initial_lines = ''.
pi_layout-detail_titlebar = 'RECLASIFICACIÓN DE RETENCIONES POR GARANTÍA'.
ENDFORM. " f_layout_build
FORM f_build_struct_det .
REFRESH gtd_fiel_det.
PERFORM f_define_campo2 USING:
'TIPOM' '' '' '4' 'GTD_LISTMES' '' '' 'TipoM' 'TipoM' 'TipoM' '' '' '',
'BUKRS' '' '' '' 'BKPF' 'BUKRS' '' 'Sociedad' 'Sociedad' 'Sociedad' '' '' 'X',
'AUGBL' '' '' '' 'BKPF' 'BELNR' '' 'Doc.Pago' 'Doc.Pago' 'Doc.Pago' '' '' '',
'BELNR' '' '' '' 'BKPF' 'BELNR' '' 'Doc Fi' 'Doc Fi' 'Doc Fi' '' '' '',
'DOCGE' 'C500' '' '' 'BKPF' 'BELNR' '' 'Doc.Reclasif.' 'Doc.Reclasif.' 'Doc.Reclasif.' '' '' '',
'EJEGE' 'C500' '' '' 'BKPF' 'BELNR' '' 'Ejercicio Recl.' 'Ejercicio Recl.' 'Ejercicio Recl.' '' '' '',
'TEXTO' '' '' '200' 'GTD_LISTMES' '' '' 'Mensaje' 'Mensaje' 'Mensaje' '' '' ''.
ENDFORM. " F_BUILD_STRUCT_DET
ALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gv_repid
is_layout = gwa_layout
it_fieldcat = gtd_fiel_det[]
i_screen_start_column = 15
i_screen_start_line = 6
i_screen_end_column = 150
i_screen_end_line = 25
TABLES
t_outtab = gtd_listmes
EXCEPTIONS
program_error = 1
OTHERS = 2.
para regresar a la pantalla anterior se debe agregar:
SET SCREEN 0.
- septiembre 01, 2016
- 0 Comments
La siguiente publicación nos ayudará a debuger popus o ventanas modales en las que el famoso /h no puede.
Es necesario copiar el siguiente código en un txt y grabarlo, luego arrastramos el archivo txt hacia el popup o la ventana que necesitemos debuger.
[FUNCTION]
Command=/H
Title=Debugeando
Type=SystemCommand
Es necesario copiar el siguiente código en un txt y grabarlo, luego arrastramos el archivo txt hacia el popup o la ventana que necesitemos debuger.
[FUNCTION]
Command=/H
Title=Debugeando
Type=SystemCommand
- septiembre 01, 2016
- 0 Comments
Es muy importante manejar el try-catch como parte estándar de un desarrollo. Se utiliza para capturar un error, que no se genere un dump y los usuarios no salgan corriendo, creyendo que el programa exploto (es mi parte irónica).... en fin, una forma de arreglar este problemilla es capturar dichos errores y mostrarlos como mensajes.
El código es el siguiente:
TRY.
SELECT *
INTO TABLE g_ti_marc
FROM marc
FOR ALL ENTRIES IN g_ti_mara
WHERE matnr EQ g_ti_mara-matnr.
*.Capturamos el error y lo llevamos a la instancia lr_cx_root.
CATCH CX_ROOT INTO lr_cx_root.
*.....Luego extraemos el mensaje de error que arroja el sistema accediendo al metodo *.....if_message~get_longtext( ).
l_c_message = lr_cx_root->if_message~get_longtext( ).
*.....Por ultimo podremos realizar ya lo que queramos con el mensaje de error por ejemplo *.....imprimirlo.
MESSAGE l_c_message TYPE 'E'.
END TRY.
- septiembre 01, 2016
- 0 Comments
Muchas veces he tenido que desarrollar ALV's dinámicos, los casos en lo que lo he necesitado es cuando he tenido que mostrar data con meses como columnas o días, tipo calendario donde muestre valores o importes por mes, años o días.
Para dar un ejemplo de como implementar he desarrollado un código de prueba que pueden probar y adaptar según sus necesidades.
El código es el siguiente:
TYPE-POOLS: slis.
FIELD-SYMBOLS: <t_dyntable> TYPE STANDARD TABLE,
<t_prueba> TYPE STANDARD TABLE, " Dynamic internal table name
<fs_dyntable>,
<t_dinamic>, " Field symbol to create work area
<fs_fldval> TYPE any. " Field symbol to assign values
PARAMETERS: p_cols(5) TYPE c, " Input number of columns
p_rows(5) TYPE c.
DATA: t_newtable TYPE REF TO data,
t_newline TYPE REF TO data,
t_newline2 TYPE REF TO data,
fs_fldcat TYPE slis_t_fieldcat_alv,
t_fldcat TYPE lvc_t_fcat,
wa_it_fldcat TYPE lvc_s_fcat,
wa_colno(2) TYPE n,
wa_flname(5) TYPE c.
* Create fields .
wa_it_fldcat-fieldname = 'CAMPO1'.
wa_it_fldcat-datatype = 'CHAR'.
wa_it_fldcat-intlen = 10.
APPEND wa_it_fldcat TO t_fldcat.
wa_it_fldcat-fieldname = 'CAMPO2'.
wa_it_fldcat-datatype = 'CHAR'.
wa_it_fldcat-intlen = 10.
APPEND wa_it_fldcat TO t_fldcat.
DO p_cols TIMES.
CLEAR wa_it_fldcat.
MOVE sy-index TO wa_colno.
CONCATENATE 'COL'
wa_colno
INTO wa_flname.
wa_it_fldcat-fieldname = wa_flname.
wa_it_fldcat-datatype = 'CHAR'.
wa_it_fldcat-intlen = 10.
APPEND wa_it_fldcat TO t_fldcat.
ENDDO.
* Crea tabla interna dinamica y asigna a FieldSymbols
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = t_fldcat
IMPORTING
ep_table = t_newtable.
ASSIGN t_newtable->* TO <t_dyntable>.
* Create dynamic work area and assign to FS
CREATE DATA t_newline LIKE LINE OF <t_dyntable>.
ASSIGN t_newline->* TO <fs_dyntable>.
************************
** Tablas
************************
DATA: fieldname(20) TYPE c.
DATA: fieldvalue(10) TYPE c.
DATA: lv_numcol TYPE i.
DATA: lv_numfil TYPE i.
DATA: INDEX2 TYPE char3,
acu TYPE CHAR3,
lv_acu TYPE i.
data: x_filcat LIKE LINE OF t_fldcat.
DATA : ti_details TYPE abap_compdescr_tab, "<- Aqui tenemos la estructura.
wa_details TYPE abap_compdescr.
DATA : ref_table_des TYPE REF TO cl_abap_structdescr.
types: BEGIN OF TY_PRUEBA,
INDEx TYPE CHAR5,
codigo type char1,
END OF TY_PRUEBA.
types: itty TYPE ty_prueba.
DATA: IT TYPE TY_PRUEBA,
TB TYPE STANDARD TABLE OF ITTY,
WA LIKE LINE OF tb.
FIELD-SYMBOLS: <f> LIKE LINE OF t_fldcat.
ref_table_des ?= cl_abap_typedescr=>describe_by_data( IT ).
*ref_table_des ?= cl_abap_typedescr=>DESCRIBE_BY_NAME( wa-index ).
ti_details[] = ref_table_des->components[].
DESCRIBE TABLE t_fldcat LINES lv_numcol.
READ TABLE t_fldcat into x_filcat INDEX 1.
DO p_rows TIMES.
index2 = sy-index.
lv_acu = 0.
DO p_cols TIMES.
while lv_acu < lv_numcol.
lv_acu = lv_acu + 1.
acu = lv_acu.
condense ACU NO-GAPS.
READ TABLE t_fldcat into wa_it_fldcat index lv_acu.
ASSIGN COMPONENT lv_acu OF STRUCTURE t_fldcat TO <f>.
" Se Asigna el valor
CONCATENATE 'VALUE '
index2
'-'
acu
INTO fieldvalue.
CONDENSE fieldvalue NO-GAPS.
ASSIGN COMPONENT wa_it_fldcat-fieldname
OF STRUCTURE <fs_dyntable>
TO <fs_fldval>.
<fs_fldval> = fieldvalue.
ENDWHILE.
ENDDO.
APPEND <fs_dyntable> TO <t_dyntable>.
ENDDO.
************************
** Muestra tabla interna
************************
DATA: wa_cat LIKE LINE OF fs_fldcat.
wa_cat-fieldname = 'CAMPO1'.
wa_cat-seltext_s = 'CAMPO1'.
wa_cat-outputlen = '10'.
APPEND wa_cat TO fs_fldcat.
wa_cat-fieldname = 'CAMPO2'.
wa_cat-seltext_s = 'CAMPO2'.
wa_cat-outputlen = '10'.
APPEND wa_cat TO fs_fldcat.
DO p_cols TIMES.
CLEAR wa_cat.
MOVE sy-index TO wa_colno.
CONCATENATE 'COL'
wa_colno
INTO wa_flname.
wa_cat-fieldname = wa_flname.
wa_cat-seltext_s = wa_flname.
wa_cat-outputlen = '10'.
APPEND wa_cat TO fs_fldcat.
ENDDO.
* Muestra lista
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = fs_fldcat
TABLES
t_outtab = <t_dyntable>."<t_dyntable>.
Para dar un ejemplo de como implementar he desarrollado un código de prueba que pueden probar y adaptar según sus necesidades.
El código es el siguiente:
TYPE-POOLS: slis.
FIELD-SYMBOLS: <t_dyntable> TYPE STANDARD TABLE,
<t_prueba> TYPE STANDARD TABLE, " Dynamic internal table name
<fs_dyntable>,
<t_dinamic>, " Field symbol to create work area
<fs_fldval> TYPE any. " Field symbol to assign values
PARAMETERS: p_cols(5) TYPE c, " Input number of columns
p_rows(5) TYPE c.
DATA: t_newtable TYPE REF TO data,
t_newline TYPE REF TO data,
t_newline2 TYPE REF TO data,
fs_fldcat TYPE slis_t_fieldcat_alv,
t_fldcat TYPE lvc_t_fcat,
wa_it_fldcat TYPE lvc_s_fcat,
wa_colno(2) TYPE n,
wa_flname(5) TYPE c.
* Create fields .
wa_it_fldcat-fieldname = 'CAMPO1'.
wa_it_fldcat-datatype = 'CHAR'.
wa_it_fldcat-intlen = 10.
APPEND wa_it_fldcat TO t_fldcat.
wa_it_fldcat-fieldname = 'CAMPO2'.
wa_it_fldcat-datatype = 'CHAR'.
wa_it_fldcat-intlen = 10.
APPEND wa_it_fldcat TO t_fldcat.
DO p_cols TIMES.
CLEAR wa_it_fldcat.
MOVE sy-index TO wa_colno.
CONCATENATE 'COL'
wa_colno
INTO wa_flname.
wa_it_fldcat-fieldname = wa_flname.
wa_it_fldcat-datatype = 'CHAR'.
wa_it_fldcat-intlen = 10.
APPEND wa_it_fldcat TO t_fldcat.
ENDDO.
* Crea tabla interna dinamica y asigna a FieldSymbols
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = t_fldcat
IMPORTING
ep_table = t_newtable.
ASSIGN t_newtable->* TO <t_dyntable>.
* Create dynamic work area and assign to FS
CREATE DATA t_newline LIKE LINE OF <t_dyntable>.
ASSIGN t_newline->* TO <fs_dyntable>.
************************
** Tablas
************************
DATA: fieldname(20) TYPE c.
DATA: fieldvalue(10) TYPE c.
DATA: lv_numcol TYPE i.
DATA: lv_numfil TYPE i.
DATA: INDEX2 TYPE char3,
acu TYPE CHAR3,
lv_acu TYPE i.
data: x_filcat LIKE LINE OF t_fldcat.
DATA : ti_details TYPE abap_compdescr_tab, "<- Aqui tenemos la estructura.
wa_details TYPE abap_compdescr.
DATA : ref_table_des TYPE REF TO cl_abap_structdescr.
types: BEGIN OF TY_PRUEBA,
INDEx TYPE CHAR5,
codigo type char1,
END OF TY_PRUEBA.
types: itty TYPE ty_prueba.
DATA: IT TYPE TY_PRUEBA,
TB TYPE STANDARD TABLE OF ITTY,
WA LIKE LINE OF tb.
FIELD-SYMBOLS: <f> LIKE LINE OF t_fldcat.
ref_table_des ?= cl_abap_typedescr=>describe_by_data( IT ).
*ref_table_des ?= cl_abap_typedescr=>DESCRIBE_BY_NAME( wa-index ).
ti_details[] = ref_table_des->components[].
DESCRIBE TABLE t_fldcat LINES lv_numcol.
READ TABLE t_fldcat into x_filcat INDEX 1.
DO p_rows TIMES.
index2 = sy-index.
lv_acu = 0.
DO p_cols TIMES.
while lv_acu < lv_numcol.
lv_acu = lv_acu + 1.
acu = lv_acu.
condense ACU NO-GAPS.
READ TABLE t_fldcat into wa_it_fldcat index lv_acu.
ASSIGN COMPONENT lv_acu OF STRUCTURE t_fldcat TO <f>.
" Se Asigna el valor
CONCATENATE 'VALUE '
index2
'-'
acu
INTO fieldvalue.
CONDENSE fieldvalue NO-GAPS.
ASSIGN COMPONENT wa_it_fldcat-fieldname
OF STRUCTURE <fs_dyntable>
TO <fs_fldval>.
<fs_fldval> = fieldvalue.
ENDWHILE.
ENDDO.
APPEND <fs_dyntable> TO <t_dyntable>.
ENDDO.
************************
** Muestra tabla interna
************************
DATA: wa_cat LIKE LINE OF fs_fldcat.
wa_cat-fieldname = 'CAMPO1'.
wa_cat-seltext_s = 'CAMPO1'.
wa_cat-outputlen = '10'.
APPEND wa_cat TO fs_fldcat.
wa_cat-fieldname = 'CAMPO2'.
wa_cat-seltext_s = 'CAMPO2'.
wa_cat-outputlen = '10'.
APPEND wa_cat TO fs_fldcat.
DO p_cols TIMES.
CLEAR wa_cat.
MOVE sy-index TO wa_colno.
CONCATENATE 'COL'
wa_colno
INTO wa_flname.
wa_cat-fieldname = wa_flname.
wa_cat-seltext_s = wa_flname.
wa_cat-outputlen = '10'.
APPEND wa_cat TO fs_fldcat.
ENDDO.
* Muestra lista
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = fs_fldcat
TABLES
t_outtab = <t_dyntable>."<t_dyntable>.
- septiembre 01, 2016
- 0 Comments
Muchas veces en FI, se desear realizar la sustitución del valor de un determinado campo, pero resulta que al querer realizar la sustitución (tx obbh) no encontramos el campo que queremos sustituir y esto normalmente se debe a que el campo está marcado (excluido )para no ser sustituido, para solucionar es inconveniente se debe desactivar un flag (check) para que este campo sea sustituible.

Para ello se realizan los siguiente simples pasos.
1.- Revisar si el campo se encuentra como campo sustituible o si tiene permisos de ser sustituible (flag no marcado quiere decir que si esta listo para ser sustituido)
ir a la TABLA ==> GB01

en la imagen vemos que el campo HKONT (cuenta contable) si es sustituible
2.- en caso de que se encuentre pero que no tenga marcado el flag de sustituible nos vamos a la vista y marcamos el flag.
VISTA DE ACT. ==> V_GB01C

vemos en la siguiente imagen que sólo se listan los campos sustituibles, para poder sustituir un campo se debe ir a la tabla GB01 y quitar la X del registro q queremos sustituir.
3.- para que los cambios se vean reflejados tenemos que ingresas al siguiente programa y ejecutarlo, esto regenerará nuevamente los campos que estén listos para ser sustituidos y agregará nuestro campo.
Programa de Regeneración ==> RGUGBR00
al ejecutar solo se debe marcar el flag de sustitución.

Para ello se realizan los siguiente simples pasos.
1.- Revisar si el campo se encuentra como campo sustituible o si tiene permisos de ser sustituible (flag no marcado quiere decir que si esta listo para ser sustituido)
ir a la TABLA ==> GB01
en la imagen vemos que el campo HKONT (cuenta contable) si es sustituible
2.- en caso de que se encuentre pero que no tenga marcado el flag de sustituible nos vamos a la vista y marcamos el flag.
VISTA DE ACT. ==> V_GB01C
vemos en la siguiente imagen que sólo se listan los campos sustituibles, para poder sustituir un campo se debe ir a la tabla GB01 y quitar la X del registro q queremos sustituir.
3.- para que los cambios se vean reflejados tenemos que ingresas al siguiente programa y ejecutarlo, esto regenerará nuevamente los campos que estén listos para ser sustituidos y agregará nuestro campo.
Programa de Regeneración ==> RGUGBR00
al ejecutar solo se debe marcar el flag de sustitución.
- septiembre 01, 2016
- 0 Comments
Muchas veces hemos tenido inconvenientes para agregar objetos a un SAPSCRIPT, en esta ocasión vamos a agregar un Logo para mostrarlo por SAPSCRIPT.
tamaño de imagen en sapscript:
BITMAP 'IMAGEN' OBJECT GRAPHICS ID BMAP TYPE BCOL DPI 600
SUBIR LOGO PARA SAPSCRIPT:
1. Ir a la SE38, introduzca el nombre del programa "RSTXLDMC" y ejecutarlo.
2. En la ejecución de este programa se muestra una nueva sesión en la que es necesario mencionar su nombre de Logo.
Para ello, introduzca su nombre en el selecto Logo opción "Param para el estándar de texto> Texto Nombre.".
El nombre dado aquí debe comenzar con 'Y' o 'Z' Ej:. YLOGO o ZLOGO.
En executin este le pedirá la ubicación en su logotipo es stored.The logotipo debe ser de tipo. Extensión TIFF.
Una vez se especifica la ubicación del archivo TIFF. Se carga y se almacena como un elemento de texto en SO10 y
una nueva sesión se muestra que diga si el logo se guarda o no con éxito.
3. Para ver su logo ir a la tx SO10 mencionar el nombre del archivo, es decir, YLOGO o ZLOGO y haga clic en visualización
de impresión y verá la imagen subida.
4. A continuación, introduzca la línea de comandos (/ :) en la "Columna Tag" y recorrer a través de el siguiente menú:
Insertar -> Texto -> Estándar.
Mencione el nombre del logotipo en nuestro caso es bien YLOGO o ZLOGO.On hacer esto,
el logo se insertará en los elementos de texto con el mensaje de la siguiente manera:
INCLUIR ZLOGO TEXTO OBJETO ID ST.
tamaño de imagen en sapscript:
BITMAP 'IMAGEN' OBJECT GRAPHICS ID BMAP TYPE BCOL DPI 600
SUBIR LOGO PARA SAPSCRIPT:
1. Ir a la SE38, introduzca el nombre del programa "RSTXLDMC" y ejecutarlo.
2. En la ejecución de este programa se muestra una nueva sesión en la que es necesario mencionar su nombre de Logo.
Para ello, introduzca su nombre en el selecto Logo opción "Param para el estándar de texto> Texto Nombre.".
El nombre dado aquí debe comenzar con 'Y' o 'Z' Ej:. YLOGO o ZLOGO.
En executin este le pedirá la ubicación en su logotipo es stored.The logotipo debe ser de tipo. Extensión TIFF.
Una vez se especifica la ubicación del archivo TIFF. Se carga y se almacena como un elemento de texto en SO10 y
una nueva sesión se muestra que diga si el logo se guarda o no con éxito.
3. Para ver su logo ir a la tx SO10 mencionar el nombre del archivo, es decir, YLOGO o ZLOGO y haga clic en visualización
de impresión y verá la imagen subida.
4. A continuación, introduzca la línea de comandos (/ :) en la "Columna Tag" y recorrer a través de el siguiente menú:
Insertar -> Texto -> Estándar.
Mencione el nombre del logotipo en nuestro caso es bien YLOGO o ZLOGO.On hacer esto,
el logo se insertará en los elementos de texto con el mensaje de la siguiente manera:
INCLUIR ZLOGO TEXTO OBJETO ID ST.
- septiembre 01, 2016
- 0 Comments
Estos botones normal mente se crear ya sea para ejecutar un proceso adicional o realizar la descargar de algún formato que se arme de la data del reporte generado. Para agregar el botón realizamos lo siguiente:
METHOD handle_toolbar.
DATA: e_toolbar TYPE stb_button.
* >>>> Agrega separador
MOVE 3 TO e_toolbar-butn_type.
APPEND e_toolbar TO e_object->mt_toolbar.
CLEAR e_toolbar.
MOVE: 'FC_FILE' TO e_toolbar-function,
icon_activity TO e_toolbar-icon,
'Generar archivo' TO e_toolbar-quickinfo,
'Generar archivo' TO e_toolbar-text.
APPEND e_toolbar TO e_object->mt_toolbar.
ENDMETHOD.
METHOD handle_toolbar.
DATA: e_toolbar TYPE stb_button.
* >>>> Agrega separador
MOVE 3 TO e_toolbar-butn_type.
APPEND e_toolbar TO e_object->mt_toolbar.
CLEAR e_toolbar.
MOVE: 'FC_FILE' TO e_toolbar-function,
icon_activity TO e_toolbar-icon,
'Generar archivo' TO e_toolbar-quickinfo,
'Generar archivo' TO e_toolbar-text.
APPEND e_toolbar TO e_object->mt_toolbar.
ENDMETHOD.
- septiembre 01, 2016
- 0 Comments
miércoles, 31 de agosto de 2016
- agosto 31, 2016
- 0 Comments
LECTURA Y ESCRITURA DE INFOTIPOS - HCM
CASO
Se requiere insertar registros a un infotipo para una sola persona y luego obtener a nivel de consulta los registros ingresados.
El Problema:
que al ingresar o eliminar registros para una persona, el programa no está obteniendo dichos registros. Ejemplo:
en tabla:
Registro 1
Registro 2
Registro 3
Se quiere agregar el Registro 4 y el Registro 5, pero al consultar desde la misma función los registros consultados, sólo se muestran los Registros 1,2 y 3.
El porqué?...
Esto se debe a que cuando se está ejecutando la función para obtener datos ( HR_READ_INFOTYPE,) luego de haber insertado algunos más (ambas lógicas en la misma función), se está ejecutando a nivel de BUFFER, por ello sólo trae los datos que se cargaron al BUFFER y no desde la tabla (que ya tiene los datos agregados).
La solución:
Para ello se agrega un parámetro más a la función HR_READ_INFOTYPE.

