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
lunes, 23 de marzo de 2015
martes, 17 de marzo de 2015
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
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.
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:
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
Bapi contabilización documento FI
data: gwa_doc_header like bapiache09 occurs 0 with header line,
gt_curr like bapiaccr09 occurs 0 with header line,
gt_accgl like bapiacgl09 occurs 0 with header line,
gt_accountreceiva like bapiacar09 occurs 0 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 0 with header line,
gt_acc_taxes like bapiactx09 occurs 0 with header line,
gt_return like bapiret2 occurs 0 with header line.
gt_curr like bapiaccr09 occurs 0 with header line,
gt_accgl like bapiacgl09 occurs 0 with header line,
gt_accountreceiva like bapiacar09 occurs 0 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 0 with header line,
gt_acc_taxes like bapiactx09 occurs 0 with header line,
gt_return like bapiret2 occurs 0 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.
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
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.
data: wa_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
data: aux_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
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
data: aux_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.
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
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
Suscribirse a:
Comentarios (Atom)