lunes, 23 de marzo de 2015

Condición <> INITIAL en Smartform

Cuando queramos que un nodo de un Smartform no aparezca cuando el texto que muestra esté en blanco, las opciones <> '' y <> INITIAL no funcionan.
En su lugar, debemos indicar <> SPACE

martes, 17 de marzo de 2015

Manual de querys


Útil manual de querys

Manual Querys

Asignar orden de transporte a traducciones

Ejecutar la transacción SE63 y traducir los textos necesarios de los objetos a tratar.

Una vez realizada la traducción, ejecutar la transacción SLXT para crear una orden de transporte o añadir el transporte a una orden existente


Traducir mediante se63 sin el idioma instalado mediante debug

1 - Poner un break point en el módulo de función SCP_ALLOWED_LANGUAGES, linea 23.

if sy-subrc <> 0 or languages = space.

2 - Ejecutar la transacción SE63 con el idioma destino y clicar en el botón de editar.

3 - Cuando el programa se pare, comprobar los valores en la variable languages e introducir en la lista el que necesitamos.

4 - Presionando F8 podremos traducir el formulario a pesar de no tener el idioma destino instalado en el sistema. 

Impresión ZEBRA

Ver las siguientes notas:

179534 - Label printing using Zebra printers (SAPscript)
750002 - Support for Zebra label printers (ZPL2)

Para poder previsualizar este tipo de etiquetas podemos utilizar la web:

Se pone el texto obtenido en la impresión por pantalla (que podemos copiar con la transacción pdf!, sin /n ni /o ni nada) y pulsamos en "redraw".

Cargar fuente de Office en SAP

Para cargar una fuente de las de office en SAP, utilizar el report RSTXPDF2

Debuguear sapscript

Se debe de ejecutar el report RSTXDBUG para activar este tipo de debug

Bapi contabilización documento FI


datagwa_doc_header    like bapiache09 occurs with header line
    gt_curr           
like bapiaccr09 occurs with header line
    gt_accgl          
like bapiacgl09 occurs with header line
    gt_accountreceiva 
like bapiacar09 occurs with header line
    g_obj_type        
like bapiache09-obj_type,
    g_obj_key         
like bapiache09-obj_key,
    g_obj_sys         
like bapiache09-obj_sys,
    gt_accountpayable 
like bapiacap09 occurs with header line
    gt_acc_taxes      
like bapiactx09 occurs with header line,
    gt_return         
like bapiret2   occurs with header line.


call function 'BAPI_ACC_DOCUMENT_POST'
      
exporting
        documentheader    
gwa_doc_header “Datos de cabecera
      
importing
        obj_type          
g_obj_type
        obj_key           
g_obj_key    “Chequea que se rellene
        obj_sys           
g_obj_sys
      
tables
        accountgl         
gt_accgl     “Datos de cuentas de mayor
        accountreceivable 
gt_accountreceiva “Datos de cliente
        accountpayable    
gt_accountpayable “Datos de acreedor
        accounttax        
gt_acc_taxes      “Datos de IVA
        currencyamount    
gt_curr            “Importes (obligatorio)
        
return            lt_return.

    
read table lt_return
      
with key type 'E'.

    
if sy-subrc <> 0.
      
call function 'BAPI_TRANSACTION_COMMIT'
        
exporting
          
wait c_ok.
      p_subrc 
sy-subrc.
    
else.
      
call function 'BAPI_TRANSACTION_ROLLBACK'.
      p_subrc 
4.
    
endif.

Función para encontrar querys y usuarios de quickviews

Utilizar la función RSAQ_IMPORT_USERGROUP_CATALOG

Modificar contenido de tabla cuando no hay permisos de debug

Utilizaremos la función SE16N_INTERFACE

Obtener dirección de un interlocutor comercial de un documento de ventas

Buscar en la tabla VBPA el campo ADRNR de nuestro interlocutor comercial.

Ojo, utilizar funciones CONVERSION_EXIT_PARVW_INPUT y CONVERSION_EXIT_PARVW_OUTPUT

A - Luego llamar a la función ADDR_COMM_GET con este número y tabletype ADSMTP
El resultado lo tendremos en INF_ADR6-SMTP_ADDR

B - También se puede buscar directamente en la tabla ADR6 con ese número y la fecha actual >= date_from
Si queremos la dirección por defecto tomamos el de flgdefault = 'X'.
El resultado lo tenemos en el campo SMTP_ADDR

Popup con mensajes de exito o error

form log.

  
datawa_return type bapiret2_t with header line,
        p_command   
type char1,
        p_return    
type char1.

  
loop at gt_return into wa_return.

    
perform fw_inicializa_mensajes.

    
perform fw_registrar_message using wa_return-id " Clase de mensaje
                             wa_return
-type         " tipo
                             wa_return
-number       " num de msg en clase M
                             wa_return
-message_v1   " vars
                             wa_return
-message_v2
                             wa_return
-message_v3
                             wa_return
-message_v4.

  
endloop.

  
perform fw_mostrar_mensajes changing p_command
                                     p_return
.

  
perform fw_finaliza_mensajes.

endform.

**********************************************************

form fw_inicializa_mensajes .

  
call function 'MESSAGES_INITIALIZE'.

endform.                    " FW_INICIALIZA_MENSAJES

form fw_registrar_message  using value(p_msgid" Clase de mensaje
                             
value(p_msgtyp)     " tipo
                             
value(p_msgnr)      " num de msg en clase M
                             
value(p_msgv1)      " vars
                             
value(p_msgv2)
                             
value(p_msgv3)
                             
value(p_msgv4).


  
if sy-batch <> 'X'.
*   Sólo si el proceso no es en fondo
    
call function 'MESSAGE_STORE'
      
exporting
        arbgb                         
p_msgid
*        exception_if_not_active       = ' '
        msgty                         
p_msgtyp
        msgv1                         
p_msgv1
        msgv2                         
p_msgv2
        msgv3                         
p_msgv3
        msgv4                         
p_msgv4
        txtnr                         
p_msgnr
*        zeile                         = gl_posic_mess " l_posic
      
exceptions
        message_type_not_valid        
1
        not_active                    
2
        
others                        3.
  
else.
*   Si es en fondo se lanza el mensaje
    
dataaux_msgty like sy-msgty.
    
aux_msgty p_msgtyp.
    
if aux_msgty 'E' or aux_msgty 'A'.
      aux_msgty 
'I'.
    
endif.
    
message id p_msgid
          
type aux_msgty
        
number p_msgnr
          
with p_msgv1 p_msgv2 p_msgv3 p_msgv4.
  
endif.

endform.                    " FW_REGISTRAR_MESSAGE

form fw_mostrar_mensajes changing p_return p_command.

  datau_command type bal_s_excm.   clearu_commandp_returnp_command.
  call function 'MESSAGES_SHOW'     exporting       batch_list_type    'J' " J job, L spool, B spool y job       i_use_grid         'X'     importing       e_exit_command     u_command
    
    exceptions       inconsistent_range 1       no_messages        2       others             3.
  p_return sy-subrc.
  case 'X'.
    when u_command-back.       p_command 'B'.     when u_command-exit.       p_command 'E'.     when u_command-cancel.       p_command 'C'.     when u_command-continue.       p_command 'K'.     when u_command-external.       p_command 'X'.   endcase.


endform.                    " FW_MOSTRAR_MENSAJES


form fw_finaliza_mensajes .



  call function 'MESSAGES_INITIALIZE'
    
exceptions
      log_not_active       
1
      wrong_identification 
2
      
others               3.

  
call function 'MESSAGES_STOP'
    
exporting
      i_reset_messages  
'X'
    
exceptions
      a_message         
1
      e_message         
2
      w_message         
3
      i_message         
4
      s_message         
5
      deactivated_by_md 
6
      
others            7.

endform.                    " FW_FINALIZA_MENSAJES

Transportes de customizing entre mandantes

Guardamos el numero de la OT y ejecutamos la transacción SCC1 desde el mandante destino para importarla