Archivo
Crear grupo de autorización para tabla
Caso: se requiere crear un grupo de autorización para asignarlo a una tabla Z, para luego indicarlo al área de Roles & Perfiles para asignación de las autorizaciones correspondientes.
Solución: Se debe ingresar a la transacción SM30, y actualizar la vista V_BRG_54.
Aquí podremos ver los valores del objeto de autorización S_TABU_DIS, creamos un nuevo registro y nos quedará creado el grupo a asignar.

Este cambio solicitará OT de customizing y se podrá utilizar luego en la SE11 (Utilidades-Asignar grupo de autorización) o también cuando seleccionamos Utilidades-Generador actualiz.tab.


Tipos de Popup en SAP – Parte 4 – POPUP ALV GRID
Caso: Encontré un POPUP para visualizar en ALV GRID la información de una tabla interna, adjunto link directo de la fuente ya que fue probado y quedó funcionando.
Fuente: https://blogs.sap.com/2014/05/07/very-simple-alv-in-pop-up-window/
Color en celda de ALV GRID
Caso: Se desea ponerle color a una celda de un ALV.
Solución: Para pintar una celda, podemos utilizar, en el fieldcat del ALV la estructura lvc_t_scol, por ejemplo (sólo pongo lo importante):
TYPES: BEGIN OF ty_alv.
TYPES: name1 TYPE name1,
cellcolors TYPE lvc_t_scol,
TYPES: END OF ty_alv.
TYPES: tty_alv TYPE STANDARD TABLE OF ty_alv.
DATA: gt_alv TYPE ty_alv OCCURS 0 WITH HEADER LINE,
gs_alv TYPE LINE OF tty_alv.
FORM layout_alv USING ls_layout TYPE slis_layout_alv.
DATA l_color TYPE lvc_s_scol.
ls_layout-zebra = ‘X’.
ls_layout-colwidth_optimize = ‘X’.
FIELD-SYMBOLS <fs_report> LIKE LINE OF gt_alv.
ls_layout-coltab_fieldname = ‘CELLCOLORS’.
UNASSIGN <fs_report>.
LOOP AT GT_alv ASSIGNING <fs_report>.
CASE <fs_report>-name1.
WHEN ‘PEDRO’.
l_color-fname = ‘NAME1’ .
l_color-color-col = ‘6’. «ROJO
l_color-color-int = ‘1’. «INTENSIDAD
l_color-color-inv = ‘0’. «INVERSO
APPEND l_color TO <fs_report>-CELLCOLORS.
WHEN ‘JUAN’.
l_color-fname = ‘NAME1’ .
l_color-color-col = ‘3’. «AMARILLO
l_color-color-int = ‘1’.
l_color-color-inv = ‘0’.
APPEND l_color TO <fs_report>-CELLCOLORS.
ENDCASE.
ENDLOOP.
ENDFORM. » layout_alv
Cómo obtener las propiedades de los campos
Caso: a veces en la lógica cuando se trabaja con field-symbols o queremos optimizar código necesitamos saber de que tipo es cada campo.
Solución: Si son campos del diccionario de datos podemos utilizar la función DDIF_FIELDINFO_GET, si son de una tabla interna podemos usar el siguiente código:
REPORT obtener_info_campos_itab.
TYPES: BEGIN OF typ_itab,
char20(20) TYPE c,
monto type kbetr,
entero type i,
meins type meins,
cantidad type menge_d,
fecha TYPE sy-datum,
type_p TYPE p LENGTH 12 DECIMALS 3,
END OF typ_itab.
DATA: i_itab TYPE TABLE OF typ_itab,
l_tabledescr_ref TYPE REF TO cl_abap_tabledescr,
l_descr_ref TYPE REF TO cl_abap_structdescr,
wa_table TYPE abap_compdescr.
l_tabledescr_ref ?= cl_abap_typedescr=>describe_by_data( i_itab ).
l_descr_ref ?= l_tabledescr_ref->get_table_line_type( ).
LOOP AT l_descr_ref->components INTO wa_table .
WRITE: / wa_table-name,wa_table-type_kind,
wa_table-length,wa_table-decimals.
ENDLOOP.
BAPI para liberar documentos de venta (VKM1)
Caso: se requería encontrar una BAPI para liberar documentos de venta por bloqueo de facturación (cliente bloqueado por gestión de crédito).
Solución: la función SD_ORDER_CREDIT_RELEASE funciona perfecto, indicándole el documento de venta y si queremos que sea sincrónica la actualización.
CALL FUNCTION 'SD_ORDER_CREDIT_RELEASE'
EXPORTING
vbeln = lv_vbeln
if_synchron = 'X'.
RS_HDSYS_CALL_TC_VARIANT – Ejecutar transacciones sin tener acceso
Caso: se desea ejecutar una transacción pero no se poseen accesos de ejecución en QAS.
Solución: Existen algunas funciones para saltear la autorización de las transacciones
- RS_HDSYS_CALL_TC_VARIANT
- CALL_TRANSACTION_FROM_TABLE
Yo probé la primera, por la SE37 ejecutamos la RS_HDSYS_CALL_TC_VARIANT.
Cargamos el parámetro
TCODE = Transacción a la cual queremos evitar autorización
AUTHORITY_CHECK = » (quitamos la X y dejamos vacío el valor)
Ejecutamos….y genial!
Rangos para fechas Select-options
Caso: un post solo para tener en la bitácora este código para calcular la fecha de inicio-fin de los campos MONAT-GJAHR típicos en libros legales FI.
PERFORM armar_fecha using p_gjahr
s_monat-low
s_monat-high.
FORM armar_fecha USING p_gjahr TYPE gjahr
p_monatl TYPE monat
p_monath TYPE monat.
DATA: w_ifecha TYPE bsid-budat,
w_ffecha TYPE bsid-budat,
w_auxfch TYPE bsid-budat.
CONCATENATE p_gjahr p_monatl ’01’ INTO w_ifecha.
CONCATENATE p_gjahr p_monath ’01’ INTO w_auxfch.
CALL FUNCTION ‘LAST_DAY_OF_MONTHS’
EXPORTING
day_in = w_auxfch
IMPORTING
last_day_of_month = w_ffecha.
IF sy-subrc EQ 0.
r_fecha-low = w_ifecha.
r_fecha-high = w_ffecha.
r_fecha-option = ‘BT’.
r_fecha-sign = ‘I’.
APPEND r_fecha.
ENDIF.
ENDFORM. » ARMAR_FECHA
BAPI_ACC_DOCUMENT_POST – Actualizar campo REBZG
Caso: Al querer modificar los campos REBZG, REBZZ, REBZJ, la BAPI_ACC_DOCUMENT_POST no tiene disponibles los campos.
Solución: Se debe revisar la nota SAP 487722, en la cual indica en la segunda opción (la que utilicé yo) la creación de una BTE por la FIBF.
Pasos:
1. Por lo pronto, se debe hacer la llamada a la BAPI BAPI BAPI_ACC_DOCUMENT_POST con la tabla EXTENSION1 (no agrego todo el código para no aburrir)
DATA:it_bapiacextc TYPE TABLE OF bapiacextc.
DATA lwa_bapiacextc TYPE bapiacextc.
CLEAR lwa_bapiacextc.
lwa_bapiacextc-field1 = lv_posnr.
lwa_bapiacextc-field2 = lwa_out-belnr. » Nro. documento factura
lwa_bapiacextc-field3 = lwa_out-gjahr. » Ejercicio doc.factura
lwa_bapiacextc-field4 = ‘001’. » Posición doc.factura (siempre 001)
APPEND lwa_bapiacextc TO it_bapiacextc.
CALL FUNCTION ‘BAPI_ACC_DOCUMENT_POST’
EXPORTING
documentheader = lwa_header
TABLES
accountgl = lit_accountgl
currencyamount = lit_curr
extension1 = it_bapiacextc » Se habilita esta tabla para enviar el doc.ref.fact
return = lit_return
extension2 = it_bapiparex.
2. Luego por la SE37, copiamos el módulo de función SAMPLE_INTERFACE_RWBAPI01 (en mi caso la copié al módulo ZACT_DOC_REF_FACT_RWBAPI01), en donde vamos a agregar el código para actualizar los campos. Se crea entonces el módulo de funciones: ZACT_DOC_REF_FACT_RWBAPI01.
3. Modificamos la función para modificar los campos
DATA: lw_bapiacextc TYPE bapiacextc.
LOOP AT extension.
MOVE extension TO lw_bapiacextc.
LOOP AT it_accit WHERE posnr = lw_bapiacextc-field1.
it_accit-rebzg = lw_bapiacextc-field2.
it_accit-rebzj = lw_bapiacextc-field3.
it_accit-rebzz = lw_bapiacextc-field4.
modify it_accit.
ENDLOOP.
ENDLOOP.
4. Luego ingresamos a la transacción FIBF para crear una BTE:
- image010
- image011
- image012
- image013
5. Finalmente al ejecutar la BAPI, vemos que se actualizan los campos requeridos
DY_GET_CURRENT_TRANSACTION – Diferenciar variantes de transacción
[title DY_GET_CURRENT_TRANSACTION – Diferenciar variantes de transacción]
Caso: se requiere determinar en el código ABAP si estoy en una transacción estándar o en una variante de transacción.
Solución: Creando una variante de transacción para la MB21, me topé con la necesidad de determinar si luego estaba en la estándar o en la variante creada (a la cual la llamé ZMB21). Encontré que podía usar esto:
DATA: lv_tcode TYPE shdtv-tcode.
CALL ‘DY_GET_CURRENT_TRANSACTION’
ID ‘TRANSACTION_NAME’
FIELD lv_tcode.
IF lv_tcode = ‘ZMB21’.
MESSAGE ‘Estoy en la variante de transacción ZMB21’.
ELSEIF lv_tcode = ‘MB21’.
MESSAGE ‘Estoy en la transacción MB21 estándar’.
ENDIF.
Nuevo SAP GUI 7.5
Noticia: SAP liberó el nuevo GUI 7.50
El 04.05.2017 SAP liberó la versión GUI 7.50, disponible para descargar e instalar para todos los clientes.
Algunas de las características de esta nueva versión son:
– Mayor vida útil para SAP GUI, ya que está desarrollado con Visual Studio 2013
– Selección de colores por cliente / sistema con Blue Crystal Theme
– Soporte productivo para las características de SAP Screen Personas 3.0
Las nuevas características se mencionan en las siguientes notas:
2417687 – New features in SAP GUI for Windows 7.50
147519 – Maintenance strategy / deadlines for SAP GUI
Para aquellos que no tienen acceso a SAP Service Marketplace, se adjunta link: http://www.sabitlink.com/index.php/l/jc