ABAP Adventure
Código ABAP y transacciones SAP utiles para sobrevivir en el mundo moderno
domingo, 30 de septiembre de 2012
Bloquear una tabla completa
Para bloquear todos los registros de una tabla utilizar:
CALL FUNCTION'ENQUEUE_E_TABLE'
EXPORTING
MODE_RSTABLE ='E'
TABNAME ='ZNOMBRETABLA'
* VARKEY =
* X_TABNAME = ' '
* X_VARKEY = ' '
* _SCOPE = '2'
* _WAIT = ' '
* _COLLECT = ' '
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3
.
IF sy-subrc = 0.
WRITE: 'Lock table successfully!'.
else.
write: 'Failed'.
ENDIF.
Bloquear un registro de tabla VBAK
* Bloquea un registro de tabla VBAK
CALL FUNCTION 'ENQUEUE_EVVBAKE'
EXPORTING
mode_vbak = 'E'
mandt = sy-mandt
vbeln = p_vbeln
x_vbeln = ' '
_scope = '2'
_wait = ' '
_collect = ' '
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
* Desbloquea un registro de tabla VBAK
CALL FUNCTION 'DEQUEUE_EVVBAKE'
EXPORTING
mode_vbak = 'E'
mandt = sy-mandt
vbeln = p_vbeln
x_vbeln = ' '
_scope = '3'
_synchron = ' '
_collect = ' '.
Llamar a función en background
Para llamar a función en background.
data: w_tid TYPE arfctid,
w_fnum TYPE qretstate-qrfnum.
CALL FUNCTION 'ZNOMBREFUNCION'
IN BACKGROUND TASK
EXPORTING
i_incentivo = w_incentivo
i_inc_act = p_act1
i_archivo = p_file
TABLES
t_vbak = t_vbak_back
t_vbak_agru = t_vbak_agru_back
t_liq = u_liq_back.
CALL FUNCTION 'START_OF_BACKGROUNDTASK'
EXPORTING
startdate = sy-datum
starttime = sy-uzeit.
CALL FUNCTION 'ID_OF_BACKGROUNDTASK'
IMPORTING
tid = w_tid
fnum = w_fnum.
IF sy-subrc EQ 0.
COMMIT WORK.
ENDIF.
Y en los atributos de la función, Módulo de acceso remoto y inicio inmediato
Mensajes de error varios en una pantalla
data:
e_log TYPE bapiret2,
t_log TYPE bapiret2tab,
CLEAR e_log.
e_log-type = 'S'.
e_log-id = 'ZZZZZ'.
e_log-number = 437.
APPEND e_log TO t_log.
CALL FUNCTION 'SUSR_DISPLAY_LOG'
EXPORTING
display_in_popup = abap_true
log_title = text-002
TABLES
it_log_bapiret2 = t_log[]
EXCEPTIONS
parameter_error = 1
OTHERS = 2.
IF NOT sy-subrc IS INITIAL.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
2 checkbox en una misma línea
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN: COMMENT 23(22) text-062, POSITION 20.
PARAMETERS: v_cm_mod AS CHECKBOX.
SELECTION-SCREEN: COMMENT 53(24) text-063, POSITION 50.
PARAMETERS: v_cm_sld AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
Caja de texto en dynpro
Crear custom control en dynpro
TYPES: BEGIN OF tp_text,
line TYPE c LENGTH 120,
END OF tp_text.
data:
v_container_104_1 TYPE REF TO cl_gui_custom_container,
v_ccontrol_104_1 TYPE scrfname VALUE 'CCCOMENTARIOS',
v_texto TYPE REF TO cl_gui_textedit,
t_text TYPE tp_ttext,
tp_ttext TYPE STANDARD TABLE OF tp_text.
EN PAI:
FORM f_crea_contenedor_texto .
DATA lw_line_length TYPE i VALUE 120.
* Crea contenedor y lo asocia con la DYNPRO
CREATE OBJECT v_container_104_1
EXPORTING
container_name = v_ccontrol_104_1
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
IF NOT sy-subrc IS INITIAL.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*$ Crea el Objeto EDITOR
CREATE OBJECT v_texto
EXPORTING
wordwrap_mode = cl_gui_textedit=>wordwrap_at_fixed_position
wordwrap_position = lw_line_length
parent = v_container_104_1
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
gui_type_not_supported = 5
OTHERS = 6.
IF NOT sy-subrc IS INITIAL.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF v_actvt = '03' AND v_edit IS INITIAL.
CALL METHOD v_texto->set_readonly_mode
EXPORTING
readonly_mode = '1'
EXCEPTIONS
error_cntl_call_method = 1
invalid_parameter = 2.
ELSE.
CALL METHOD v_texto->set_readonly_mode
EXPORTING
readonly_mode = '0'
EXCEPTIONS
error_cntl_call_method = 1
invalid_parameter = 2.
ENDIF.
CALL METHOD v_texto->set_toolbar_mode
EXPORTING
toolbar_mode = cl_gui_textedit=>false
EXCEPTIONS
error_cntl_call_method = 1
invalid_parameter = 2
OTHERS = 3.
CALL METHOD v_texto->set_statusbar_mode
EXPORTING
statusbar_mode = cl_gui_textedit=>false
EXCEPTIONS
error_cntl_call_method = 1
invalid_parameter = 2
OTHERS = 3.
ENDFORM. " f_crea_contenedor_texto
EN PBO: fuera de todo
MODULE rescata_comentarios INPUT.
CHECK sy-ucomm NE 'YPR9_NO'.
IF NOT v_texto IS INITIAL.
PERFORM f_rescata_dd_dynpro.
ENDIF.
ENDMODULE. " rescata_comentarios
FORM f_rescata_dd_dynpro .
DATA: u_text TYPE tp_ttext,
w_true TYPE i.
CLEAR u_text[].
w_true = 1.
CALL METHOD v_texto->get_text_as_r3table
IMPORTING
table = u_text
EXCEPTIONS
error_dp = 1
error_cntl_call_method = 2
error_dp_create = 3
potential_data_loss = 4
OTHERS = 5.
.
IF NOT sy-subrc IS INITIAL.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
t_text[] = u_text[].
ENDFORM. " f_rescata_dd_dynpro
-----
FORM f_recupera_comentarios .
TYPES: tp_lines TYPE STANDARD TABLE OF tline.
DATA: w_name TYPE tdobname,
u_line TYPE tp_lines,
x_line TYPE tline,
x_line_txt TYPE tp_text.
w_name = v_vbeln.
* Rescata comentarios
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = c_0002
language = c_s
name = w_name
object = c_vbbk
TABLES
lines = u_line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc IS INITIAL.
LOOP AT u_line INTO x_line.
x_line_txt-line = x_line-tdline.
APPEND x_line_txt TO t_text.
CLEAR x_line_txt.
ENDLOOP.
ENDIF.
* Mueve el texto al Objeto Editor
IF NOT t_text[] IS INITIAL.
IF v_vehiculo_rasa = abap_true.
CALL METHOD v_texto->set_enable
EXPORTING
enable = abap_false
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF NOT sy-subrc IS INITIAL.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
CALL METHOD v_texto->set_text_as_stream
EXPORTING
text = t_text
EXCEPTIONS
error_dp = 1
error_dp_create = 2
OTHERS = 3.
IF NOT sy-subrc IS INITIAL.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1
sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDFORM. " f_recupera_comentarios
Día laboral próximo
CALL FUNCTION 'BKK_GET_NEXT_WORKDAY'
EXPORTING
i_date = p_fecha
i_calendar1 = 'SI'
IMPORTING
e_workday = p_vto
EXCEPTIONS
calendar_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.
Suscribirse a:
Entradas (Atom)