- REPORT zini_prg_generator LINE-SIZE 1023.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Gestión de versiones
- *--[
- *--[ 20240305 01.00 First release
- *--[ 20240306 01.01 Se copia la pantalla de uno estandar
- *--[
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Constantes y Diccionario
- CONSTANTS:
- c_vers TYPE c LENGTH 006 VALUE 'v01.01',
- c_copyleft TYPE c LENGTH 200 VALUE 'CC BY-SA 4.0 | Alex Bergonzini 2024 | http://www.bergonzini.com',
- *--[ Constantes de bloques de plantillas
- C_beg TYPE c LENGTH 9 VALUE '**-->BEG_', "<-- Inicio de bloques
- c_end TYPE c LENGTH 9 VALUE '**<--END_', "<-- Final de bloques
- c_eof TYPE c LENGTH 9 VALUE '**<--EOF', "<-- Fín del Loader
- *--[ Variables para sustituir en el código
- c_var_prefix TYPE c LENGTH 15 VALUE '#PREFIX#',
- c_var_sufix TYPE c LENGTH 15 VALUE '#SUFIX#',
- c_var_minisufix TYPE c LENGTH 15 VALUE '#MINISUFIX#',
- c_var_tail TYPE c LENGTH 15 VALUE '#TAIL#',
- *--[ Constantes auxiliares de Control
- c_zip TYPE c LENGTH 8 VALUE 'A E I O U _ ',
- c_separator TYPE c LENGTH 1 VALUE '|',
- c_com TYPE c LENGTH 5 VALUE '*--[ ',
- c_prg TYPE c LENGTH 5 VALUE '_PRG_',
- c_prgtxt TYPE c LENGTH 10 VALUE 'Programa:',
- c_NO_trash TYPE c LENGTH 100 VALUE '1234567890QWERTYUIOPASDFGHJKLZXCVBNM_',
- *--[ Constantes del main program
- c_includes TYPE c LENGTH 50 VALUE 'TOP|SCR|CLS|EVE|FRM',
- c_toppings TYPE c LENGTH 50 VALUE 'ALV|MSG|BI|SF',
- c_i_source_000 TYPE c LENGTH 72 VALUE 'Report #PREFIX#_PRG_#SUFIX# Line-Size 1023.',
- c_i_source_top TYPE c LENGTH 72 VALUE 'Include #PREFIX#_I_#MINISUFIX#_#TAIL#. " Data Definition',
- c_i_source_scr TYPE c LENGTH 72 VALUE 'Include #PREFIX#_I_#MINISUFIX#_#TAIL#. " Screen Definition',
- c_i_source_cls TYPE c LENGTH 72 VALUE 'Include #PREFIX#_I_#MINISUFIX#_#TAIL#. " Class Definition',
- c_i_source_EVE TYPE c LENGTH 72 VALUE 'Include #PREFIX#_I_#MINISUFIX#_#TAIL#. " Events Definition',
- c_i_source_FRM TYPE c LENGTH 72 VALUE 'Include #PREFIX#_I_#MINISUFIX#_#TAIL#. " Forms Definition'.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Variables
- TYPES: source_line TYPE c LENGTH 200,
- ty_tt_source_line TYPE TABLE OF source_line.
- DATA: t_src TYPE STANDARD TABLE OF source_line,
- t_src_00 TYPE STANDARD TABLE OF source_line,
- l_src LIKE LINE OF t_src,
- g_name TYPE c LENGTH 30,
- g_error TYPE i,
- g_mini_sufix TYPE c LENGTH 30.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Pantalla
- SELECTION-SCREEN BEGIN OF LINE.
- SELECTION-SCREEN COMMENT 1(10) t_PRGTXT.
- PARAMETERS: p_prefix TYPE c LENGTH 10 OBLIGATORY DEFAULT 'ZGVA_XX'.
- SELECTION-SCREEN COMMENT 23(5) t_prg.
- PARAMETERS: p_sufix TYPE c LENGTH 20 OBLIGATORY DEFAULT 'my_programa'.
- SELECTION-SCREEN END OF LINE.
- SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME.
- *--[ Si se añaden nuevas rutinas, hay que añadirla a los c_toppings
- PARAMETERS: p_alv AS CHECKBOX DEFAULT ' ',
- p_msg AS CHECKBOX DEFAULT ' ',
- p_bi AS CHECKBOX DEFAULT ' ',
- p_sf AS CHECKBOX DEFAULT ' '.
- SELECTION-SCREEN SKIP 1.
- PARAMETERS: p_test AS CHECKBOX DEFAULT abap_true,
- p_dele AS CHECKBOX DEFAULT ' '. "READ ALERT!! RED ALERT!
- SELECTION-SCREEN END OF BLOCK b01.
- INITIALIZATION.
- PERFORM eve_initialization.
- START-OF-SELECTION.
- PERFORM data_work.
- END-OF-SELECTION.
- PERFORM data_list.
- FORM eve_initialization.
- t_PRGTXT = c_prgtxt.
- t_prg = c_prg.
- READ REPORT sy-repid INTO t_src_00.
- LOOP AT t_src_00 INTO DATA(l_src_00).
- DATA(l_tabix) = sy-tabix.
- IF l_src_00 = c_eof.
- DELETE t_src_00 INDEX 1.
- EXIT.
- ENDIF.
- DELETE t_src_00 INDEX 1.
- ENDLOOP.
- ENDFORM.
- FORM data_work.
- PERFORM data_check.
- PERFORM data_delete_trash.
- PERFORM data_work_core.
- PERFORM data_work_includes.
- ENDFORM.
- FORM data_delete_trash.
- TYPES: BEGIN OF ty_alv,
- ini TYPE i,
- end TYPE i,
- END OF ty_alv.
- DATA: t_alv TYPE STANDARD TABLE OF ty_alv,
- l_alv LIKE LINE OF t_alv.
- CHECK g_error IS INITIAL.
- SPLIT c_toppings AT c_separator INTO TABLE DATA(t_tab).
- LOOP AT t_tab INTO DATA(l_tab).
- DATA(p_param) = |p_{ l_tab }|.
- ASSIGN (p_param) TO FIELD-SYMBOL(<p_param>).
- CHECK <p_param> IS INITIAL. "<-- Buscamos no marcados para borrar.
- DATA(l_beg_alv) = |{ c_beg }{ l_tab }|.
- DATA(l_end_alv) = |{ c_end }{ l_tab }|.
- LOOP AT t_src_00 INTO DATA(l_src).
- IF l_src = l_beg_alv.
- l_alv-ini = sy-tabix.
- ENDIF.
- IF l_src = l_end_alv.
- l_alv-end = sy-tabix.
- APPEND l_alv TO t_alv.
- CLEAR: l_alv-end, l_alv-ini.
- ENDIF.
- ENDLOOP.
- SORT t_alv BY ini DESCENDING.
- LOOP AT t_alv INTO DATA(m_alv).
- DELETE t_src_00 FROM m_alv-ini TO m_alv-end.
- ENDLOOP.
- REFRESH t_alv.
- ENDLOOP.
- ENDFORM.
- FORM data_list.
- CASE g_error.
- WHEN 1. MESSAGE s398(00) WITH 'Nombre de pograma desmasiado largo' DISPLAY LIKE 'E'.
- WHEN 2. MESSAGE s398(00) WITH 'Nombre de includes desmasiado largo' DISPLAY LIKE 'E'.
- WHEN 3. MESSAGE s398(00) WITH 'Report ya existente' DISPLAY LIKE 'E'.
- WHEN 4. MESSAGE s398(00) WITH 'Include ya existente' DISPLAY LIKE 'E'.
- WHEN 99. MESSAGE s398(00) WITH 'Abortado' DISPLAY LIKE 'E'.
- ENDCASE.
- ENDFORM.
- FORM data_check.
- DATA: l_name(30),
- l_ans(1).
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Advertencia
- IF p_dele = abap_true.
- CALL FUNCTION 'POPUP_TO_CONFIRM'
- EXPORTING
- titlebar = '¡ Advertencia !'
- * DIAGNOSE_OBJECT =
- text_question = 'Flag de borrado marcado. ¿Quiere borrar programas ya existentes?'
- text_button_1 = 'Sí'
- * ICON_BUTTON_1 = ' '
- text_button_2 = 'No'
- * ICON_BUTTON_2 = ' '
- * DEFAULT_BUTTON = '1'
- * DISPLAY_CANCEL_BUTTON = 'X'
- * USERDEFINED_F1_HELP = ' '
- * START_COLUMN = 25
- * START_ROW = 6
- * POPUP_TYPE =
- * IV_QUICKINFO_BUTTON_1 = ' '
- * IV_QUICKINFO_BUTTON_2 = ' '
- IMPORTING
- answer = l_ans
- * TABLES
- * PARAMETER =
- EXCEPTIONS
- text_not_found = 1
- OTHERS = 2.
- IF sy-subrc <> 0 OR l_ans NE '1'.
- g_error = 99.
- CLEAR p_dele.
- EXIT.
- ENDIF.
- ENDIF.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Sanitize
- PERFORM data_sanitize CHANGING p_prefix.
- PERFORM data_sanitize CHANGING p_SUFIX.
- g_mini_sufix = p_sufix.
- TRANSLATE g_mini_sufix USING c_zip.
- CONDENSE p_sufix NO-GAPS.
- CONDENSE p_prefix NO-GAPS.
- CONDENSE g_mini_sufix NO-GAPS.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Verificamos longitudes
- DATA(l_str_prg) = |{ p_prefix }_PRG_{ p_sufix }|.
- DATA(l_str_inc) = |{ p_prefix }_I_XXX_{ g_mini_sufix }|.
- IF strlen( l_str_prg ) > 30. g_error = 1. ENDIF.
- IF strlen( l_str_inc ) > 30. g_error = 2. ENDIF.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Verificamos la existencia de los main + report
- l_name = |{ p_prefix }_PRG_{ p_sufix }|.
- READ REPORT l_name INTO t_src.
- IF sy-subrc EQ 0. IF p_dele = abap_true. DELETE REPORT l_name. ELSE. g_error = 3. ENDIF. ENDIF.
- SPLIT c_includes AT c_separator INTO TABLE DATA(t_tab).
- LOOP AT t_tab INTO DATA(l_Data).
- CHECK g_error IS INITIAL.
- l_name = |{ p_prefix }_I_{ g_mini_sufix }_{ l_data }|.
- READ REPORT l_name INTO t_src.
- IF sy-subrc EQ 0. IF p_dele = abap_true. DELETE REPORT l_name. ELSE. g_error = 3. ENDIF. ENDIF.
- ENDLOOP.
- ENDFORM.
- FORM data_sanitize CHANGING p_var.
- p_var = to_upper( p_var ).
- DO strlen( p_var ) TIMES.
- DATA(l_num) = sy-index - 1.
- CHECK p_var+l_num(1) NA c_NO_trash.
- p_var+l_num(1) = abap_false.
- ENDDO.
- CONDENSE p_var NO-GAPS.
- ENDFORM.
- FORM data_replace.
- CHECK g_error IS INITIAL.
- LOOP AT t_src ASSIGNING FIELD-SYMBOL(<f>).
- REPLACE ALL OCCURRENCES OF c_var_prefix IN <f> WITH p_prefix.
- REPLACE ALL OCCURRENCES OF c_var_sufix IN <f> WITH p_sufix.
- REPLACE ALL OCCURRENCES OF c_var_minisufix IN <f> WITH g_mini_sufix.
- ENDLOOP.
- ENDFORM.
- FORM data_work_core.
- CHECK g_error IS INITIAL.
- g_name = |{ p_prefix }_PRG_{ p_sufix }|.
- REFRESH t_src.
- t_src = VALUE #( ( c_i_source_000 ) ( ' ' ) ).
- SPLIT c_includes AT c_separator INTO TABLE DATA(t_tab).
- LOOP AT t_tab INTO DATA(l_tab).
- l_tab = to_upper( l_tab ).
- DATA(l_var) = |c_i_source_{ l_tab }|.
- ASSIGN (l_var) TO FIELD-SYMBOL(<f>).
- l_src = <f>.
- REPLACE c_var_tail IN l_src WITH l_tab.
- APPEND l_src TO t_src.
- ENDLOOP.
- PERFORM data_replace.
- PERFORM data_save using '1'.
- perform copy_screen.
- perform copy_status.
- ENDFORM.
- FORM data_save using p_type.
- CHECK g_error IS INITIAL.
- CHECK g_name IS NOT INITIAL.
- CHECK lines( t_src ) > 0.
- IF p_test IS INITIAL.
- INSERT REPORT g_name FROM t_src PROGRAM TYPE p_type.
- ELSE.
- LOOP AT t_src INTO l_src.
- AT FIRST.
- WRITE: / c_com, g_name.
- ENDAT.
- IF l_src CO ' ' OR l_Src IS INITIAL. l_src = '*'. ENDIF.
- WRITE: / l_src.
- ENDLOOP.
- ENDIF.
- ENDFORM.
- FORM data_work_includes.
- CHECK g_error IS INITIAL.
- SPLIT c_includes AT c_separator INTO TABLE DATA(t_tab).
- LOOP AT t_tab INTO DATA(l_Data).
- REFRESH t_src.
- g_name = |{ p_prefix }_I_{ g_mini_sufix }_{ l_data }|.
- DATA(l_beg) = |{ c_beg }{ l_data }|.
- DATA(l_end) = |{ c_end }{ l_data }|.
- LOOP AT t_src_00 ASSIGNING FIELD-SYMBOL(<l_linea>).
- IF <l_linea> = l_beg. DATA(l_tabix_beg) = sy-tabix + 1. ENDIF.
- IF <l_linea> = l_end. DATA(l_tabix_end) = sy-tabix - 1. ENDIF.
- IF l_tabix_beg IS NOT INITIAL AND
- l_tabix_end IS NOT INITIAL.
- APPEND LINES OF t_src_00 FROM l_tabix_beg TO l_tabix_end TO t_src.
- LOOP AT t_src ASSIGNING FIELD-SYMBOL(<l_src_new>).
- IF <l_src_new>+0(1) = '*'.
- SHIFT <l_src_new> LEFT.
- ENDIF.
- ENDLOOP.
- PERFORM data_save using 'I'.
- CLEAR: l_tabix_end, l_tabix_beg.
- EXIT.
- ENDIF.
- ENDLOOP.
- ENDLOOP.
- ENDFORM.
- form copy_status.
- data: rcode(5),
- p_origen(40),
- p_destino(40),
- s_origen(20),
- s_destino(20).
- p_origen = 'BCALV_DND_01'.
- s_origen = 'MAIN'.
- p_destino = g_name.
- perform copy_status_diff_progs_new in PROGRAM SAPLSMPE
- using abap_true p_origen p_destino s_origen s_origen
- changing rcode.
- endform.
- form copy_screen.
- DATA: BEGIN OF dynname,
- prog LIKE d020s-prog,
- dnum LIKE d020s-dnum,
- END OF dynname.
- DATA: h TYPE d020s. "Header
- DATA: f TYPE STANDARD TABLE OF d021s.
- DATA: e TYPE dyn_flowlist WITH HEADER LINE. "Ablauflogik
- DATA: m TYPE d023s OCCURS 0 WITH HEADER LINE. "Dynpro-Parameter
- check p_test is INITIAL.
- check g_error is INITIAL.
- dynname-prog = 'BCALV_DND_01'. "<-- Copiamos de uno estándar
- dynname-dnum = '0100'.
- IMPORT DYNPRO h f e m ID dynname.
- delete f from 1 to 2.
- *--[ Generamos un Custom Control
- f = VALUE #( BASE F ( FNAM = 'CC_ALV_01'
- DIDX = CONV #( '0028' )
- FLG2 = CONV #( '30' )
- FILL = CONV #( 'U' )
- FMB1 = CONV #( '30' )
- LENG = CONV #( 'E7' )
- LINE = CONV #( '01' )
- COLN = CONV #( '02' )
- AUTH = CONV #( '101' )
- AGLT = CONV #( '14' )
- ADEZ = CONV #( '73' ) ) ).
- h-PROG = dynname-prog = g_name. "<- Programa de destino
- * h-DNUM = dynname-dnum = '0100'. "<-- Por si hay que cambiar la pantalla
- EXPORT DYNPRO h f e m ID dynname.
- endform.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ FIN DEL ABAP, Inicio del Templeate.
- **<--EOF
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Source TOP
- **-->BEG_TOP
- ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- **--[ Data Definition
- *data: g_okcode type sy-ucomm,
- * g_error type i.
- **-->BEG_ALV
- *CONSTANTS: c_st_alv_01 TYPE dd02l-tabname VALUE '{NOMBRE_DE_LA_ESTRUCTURA}'.
- *
- *DATA: cc_01 TYPE REF TO cl_gui_custom_container,
- * cm_01 TYPE scrfname VALUE 'CC_ALV_01',
- *
- * gs_layout TYPE lvc_s_layo,
- * gs_variant TYPE disvariant,
- * gt_toolbar TYPE ui_functions,
- * t_rows TYPE lvc_t_row,
- * grid_01 TYPE REF TO cl_gui_alv_grid,
- * t_fcat_01 type lvc_t_fcat,
- * t_tab_01 TYPE STANDARD TABLE OF {TABLA_DEL_ALV}.
- **<--END_ALV
- **<--END_TOP
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Clase Definicion
- **-->BEG_CLS
- **-->BEG_ALV
- *CLASS lcl_event_receiver_01 DEFINITION.
- * PUBLIC SECTION.
- * CLASS-METHODS:
- * handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
- * IMPORTING e_object e_interactive,
- * handle_menu_button FOR EVENT menu_button OF cl_gui_alv_grid
- * IMPORTING e_object e_ucomm,
- * handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
- * IMPORTING e_ucomm,
- * handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
- * IMPORTING e_row_id e_column_id.
- *
- *
- * PRIVATE SECTION.
- *ENDCLASS.
- *
- *CLASS lcl_event_receiver_01 IMPLEMENTATION.
- * METHOD handle_toolbar.
- * DATA: ls_toolbar TYPE stb_button.
- *
- ** CLEAR ls_toolbar.
- ** MOVE 'BOT1' TO ls_toolbar-function. "#EC NOTEXT
- ** MOVE 0 TO ls_toolbar-butn_type.
- ** MOVE icon_financing TO ls_toolbar-icon.
- ** MOVE 'XXXXXXX' TO ls_toolbar-quickinfo.
- ** MOVE 'XXXXXXX' TO ls_toolbar-text.
- ** MOVE ' ' TO ls_toolbar-disabled. "#EC NOTEXT
- ** APPEND ls_toolbar TO e_object->mt_toolbar.
- *
- * ENDMETHOD.
- *
- * METHOD handle_menu_button.
- * " perform soome operations
- * CASE e_ucomm.
- * WHEN 'DETAIL_MENU'.
- ** IF NOT <test>.
- ** CALL METHOD e_object->add_function
- ** EXPORTING
- ** fcode = 'XXXX'
- ** text = text-002.
- ** ENDIF.
- * ENDCASE.
- * ENDMETHOD.
- *
- * METHOD handle_user_command.
- * REFRESH t_rows.
- * grid_01->get_selected_rows( IMPORTING et_index_rows = t_rows ).
- * grid_01->check_changed_data( ).
- *
- ** CASE e_ucomm.
- ** WHEN 'BOT1'. PERFORM ...
- ** ENDCASE.
- * ENDMETHOD.
- *
- * METHOD handle_hotspot_click.
- *
- ** READ TABLE t_tab_01 ASSIGNING FIELD-SYMBOL(<ls_s>) INDEX e_row_id.
- * CHECK sy-subrc = 0.
- *
- ** CASE e_column_id.
- **
- ** WHEN 'XXXXX'. ....
- ** ENDCASE.
- *
- * ENDMETHOD.
- *
- *ENDCLASS.
- *
- * DATA: lcl_01 TYPE REF TO lcl_event_receiver_01.
- **<--END_ALV
- **-->BEG_MSG
- *CLASS zcl_msg DEFINITION.
- *
- * PUBLIC SECTION.
- *
- * TYPES: BEGIN OF ty_msg,
- * text TYPE char100sm,
- * msgid TYPE symsgid,
- * msgty TYPE symsgty,
- * msgno TYPE symsgno,
- * msgv1 TYPE symsgv,
- * msgv2 TYPE symsgv,
- * msgv3 TYPE symsgv,
- * msgv4 TYPE symsgv,
- * END OF ty_msg.
- *
- * DATA: t_msg TYPE STANDARD TABLE OF ty_msg.
- *
- * METHODS: msg_add_sys IMPORTING iv_msgid TYPE symsgid
- * iv_msgno TYPE symsgno
- * iv_msgty TYPE symsgty
- * iv_msgv1 TYPE symsgv OPTIONAL
- * iv_msgv2 TYPE symsgv OPTIONAL
- * iv_msgv3 TYPE symsgv OPTIONAL
- * iv_msgv4 TYPE symsgv OPTIONAL,
- * msg_add_txt IMPORTING iv_text TYPE string
- * iv_msgty TYPE symsgty OPTIONAL,
- * msg_display IMPORTING iv_popup TYPE boolean,
- * msg_refresh,
- * msg_check_error RETURNING VALUE(rv_result) TYPE boolean.
- *
- *ENDCLASS. "ZCL_MSG DEFINITION
- *
- *CLASS zcl_msg IMPLEMENTATION.
- *
- * METHOD msg_check_error.
- * DATA: l_msg TYPE ty_msg.
- *
- * READ TABLE t_msg WITH KEY msgty = 'E' TRANSPORTING NO FIELDS.
- * IF sy-subrc = 0.
- * rv_result = 'X'.
- * ELSE.
- * rv_result = ' '.
- * ENDIF.
- * ENDMETHOD. "msg_check_error
- *
- * METHOD msg_refresh.
- * REFRESH t_msg.
- * ENDMETHOD. "msg_refresh
- *
- * METHOD msg_display.
- * TYPE-POOLS esp1.
- * DATA: lt_message_tab TYPE esp1_message_tab_type,
- * ls_message_tab TYPE LINE OF esp1_message_tab_type,
- * l_msg TYPE ty_msg,
- * l_lineno TYPE mesg-zeile.
- * CHECK t_msg[] IS NOT INITIAL.
- * l_lineno = lines( t_msg ).
- * IF iv_popup = 'X' OR l_lineno > 1.
- * LOOP AT t_msg INTO l_msg.
- * IF l_msg-msgid IS INITIAL.
- **--[ Si es s�lo texto lo maquillamos
- * l_msg-msgid = '00'.
- * l_msg-msgno = '398'.
- * ENDIF.
- * MOVE-CORRESPONDING l_msg TO ls_message_tab.
- * l_lineno = l_lineno + 1.
- * ls_message_tab-lineno = l_lineno.
- * INSERT ls_message_tab INTO TABLE lt_message_tab.
- * ENDLOOP.
- * CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
- * TABLES
- * i_message_tab = lt_message_tab.
- * ELSEIF iv_popup IS INITIAL OR l_lineno = 1.
- * READ TABLE t_msg INTO l_msg INDEX 1.
- * IF l_msg-msgid IS INITIAL.
- **--[ Si es s�Olo texto lo maquillamos
- * l_msg-msgid = '00'.
- * l_msg-msgno = '398'.
- * ENDIF.
- * MESSAGE ID l_msg-msgid TYPE l_msg-msgty NUMBER l_msg-msgno WITH l_msg-msgv1 l_msg-msgv2 l_msg-msgv3 l_msg-msgv4.
- * ENDIF.
- * ENDMETHOD. "msg_display
- *
- * METHOD msg_add_txt.
- **--[ S�lo metemos texto sin importar c�digo
- * DATA: l_msg TYPE ty_msg,
- * l_string TYPE string.
- *
- * l_msg-msgv1 = l_string = l_msg-text = iv_text.
- * l_msg-msgty = iv_msgty.
- * if l_msg-msgty is INITIAL.
- * l_msg-msgty = 'E'.
- * endif.
- * SHIFT l_string LEFT BY 50 PLACES.
- * l_msg-msgv2 = l_string.
- * INSERT l_msg INTO TABLE t_msg.
- * ENDMETHOD. "msg_add_txt
- *
- * METHOD msg_add_sys.
- **--[ Metemos todo el mensaje completo
- * DATA: l_msg TYPE ty_msg.
- * l_msg-msgid = iv_msgid .
- * l_msg-msgno = iv_msgno .
- * l_msg-msgty = iv_msgty .
- * l_msg-msgv1 = iv_msgv1 .
- * l_msg-msgv2 = iv_msgv2 .
- * l_msg-msgv3 = iv_msgv3 .
- * l_msg-msgv4 = iv_msgv4 .
- * MESSAGE ID iv_msgid TYPE l_msg-msgty
- * NUMBER l_msg-msgno
- * INTO l_msg-text
- * WITH l_msg-msgv1
- * l_msg-msgv2.
- * INSERT l_msg INTO TABLE t_msg.
- *
- * ENDMETHOD. "MSG_ADD
- *
- *ENDCLASS. "ZCL_MSG IMPLEMENTATION
- *
- *DATA: obj_msg TYPE REF TO zcl_msg.
- **<--END_MSG
- **<--END_CLS
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Source Eventos
- **-->BEG_EVE
- *at SELECTION-SCREEN OUTPUT.
- * perform eve_selection_screen_output.
- *
- *INITIALIZATION.
- * perform eve_initialization.
- *
- *START-OF-SELECTION.
- * perform eve_start_of_selection.
- *
- *end-of-selection.
- * perform eve_end_of_selection.
- **<--END_EVE
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Source Screen
- **-->BEG_SCR
- *SELECTION-SCREEN begin of BLOCK b01 WITH FRAME. "Title TEXT-T01
- *
- **Select-OPTIONS: s_... for ....,
- ** s_... for .....
- *
- *PARAMETERS: p_test AS CHECKBOX DEFAULT ' '.
- *
- *SELECTION-SCREEN end of BLOCK b01.
- **-->BEG_ALV
- *MODULE pbo_100 OUTPUT.
- * PERFORM pbo_0100.
- *ENDMODULE.
- *
- *MODULE pai_100 INPUT.
- * PERFORM pai_0100.
- *ENDMODULE.
- **<--END_ALV
- **<--END_SCR
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Source Procedimientos
- **-->BEG_FRM
- **-->BEG_ALV
- ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- **--[ Rutinas ALV
- *FORM pbo_0100.
- * SET PF-STATUS 'MAIN'.
- * SET TITLEBAR 'TIT01' WITH TEXT-t01.
- *
- * IF cc_01 IS INITIAL.
- *
- * cc_01 = NEW cl_gui_custom_container( container_name = cm_01 ).
- * grid_01 = NEW cl_gui_alv_grid( i_parent = cc_01 ).
- *
- * gs_layout-stylefname = 'CELLSTYLES'.
- *
- * gs_layout-cwidth_opt = 'X'.
- * gs_layout-zebra = abap_true.
- * gs_variant-report = sy-tcode. " o sy-repid.
- *
- * perform alv_get_catalog USING c_st_alv_01 CHANGING t_fcat_01.
- * perform alv_set_events using grid_01.
- *
- * grid_01->set_table_for_first_display(
- * EXPORTING
- * i_SAVE = 'A'
- * is_variant = gs_variant
- * is_layout = gs_layout
- * it_toolbar_excluding = gt_toolbar
- * CHANGING
- * it_fieldcatalog = t_fcat_01
- * it_outtab = t_tab_01 ).
- *
- * grid_01->set_ready_for_input( i_ready_for_input = '1' ).
- * grid_01->register_edit_event( i_event_id = cl_gui_alv_grid=>mc_evt_modified ).
- * grid_01->register_edit_event( i_event_id = cl_gui_alv_grid=>mc_evt_enter ).
- * endif.
- *
- *endform.
- *
- *form alv_set_events USING p_grid_01 TYPE REF TO cl_gui_alv_grid.
- * CREATE OBJECT lcl_01.
- * SET HANDLER lcl_01->handle_toolbar FOR p_grid_01.
- * SET HANDLER lcl_01->handle_user_command FOR p_grid_01.
- * SET HANDLER lcl_01->handle_hotspot_click FOR p_grid_01.
- *endform.
- *
- *form alv_get_catalog using p_structure type DD02L-TABNAME
- * CHANGING p_fcat type lvc_t_fcat.
- *
- * CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
- * EXPORTING
- * i_structure_name = p_structure
- * i_buffer_active = abap_false
- * i_bypassing_buffer = abap_true
- * CHANGING
- * ct_fieldcat = p_fcat[]
- * EXCEPTIONS
- * inconsistent_interface = 1
- * program_error = 2
- * OTHERS = 3.
- *
- ** LOOP AT t_fcat_01 ASSIGNING FIELD-SYMBOL(<f>).
- ** CASE <f>-fieldname.
- ** WHEN 'XXXX'.
- ** <f>-scrtext_s =
- ** <f>-scrtext_m =
- ** <f>-coltext =
- ** <f>-scrtext_l = TEXT-c01.
- ** endcase.
- ** endloop.
- *
- *endform.
- *
- *FORM pai_0100.
- * DATA(l_okcode) = g_okcode.
- * CLEAR g_okcode.
- *
- * REFRESH t_rows.
- * grid_01->get_selected_rows( IMPORTING et_index_rows = t_rows ).
- * grid_01->check_changed_data( ).
- * CASE l_okcode.
- ** WHEN 'BOTON01'. PERFORM ...
- ** WHEN 'BOTON02'. PERFORM ...
- * WHEN 'BACK'. PERFORM exit_program.
- * WHEN 'SAVE'. PERFORM data_save.
- * ENDCASE.
- *ENDFORM.
- *
- *FORM exit_program.
- * cc_01->free( ).
- * FREE: cc_01.
- * CLEAR: cc_01, grid_01.
- * LEAVE TO SCREEN 0.
- *endform.
- *
- *form data_save.
- **--[ Nothing To Do
- *endform.
- **<--END_ALV
- ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- **--[ Rutinas de Control
- *form eve_selection_screen_output.
- **--[ Nothing To Do
- *endform.
- *
- *form eve_initialization.
- **--[ Nothing To Do
- **-->BEG_MSG
- * obj_msg = new zcl_msg( ). "Creamos objeto de mensajes
- **<--END_MSG
- *endform.
- *
- *form eve_start_of_selection.
- * perform data_check.
- * perform data_load.
- *endform.
- *
- *form eve_end_of_selection.
- * perform Data_list.
- * perform data_errors.
- *endform.
- *
- *form data_list.
- **--[ Nothing To Do
- **-->BEG_ALV
- * call screen '0100'.
- **<--END_ALV
- *endform.
- *
- *form data_errors.
- **--[ Nothing To Do
- *endform.
- *
- *form data_check.
- **--[ Nothing To Do
- *endform.
- *
- *form data_load.
- **--[ Nothing To Do
- *endform.
- **-->BEG_BI
- *form SAMPLE_call_transaction.
- *
- *data: t_BDCDATA type STANDARD TABLE OF BDCDATA,
- * st_options type CTU_PARAMS,
- * t_messages type STANDARD TABLE OF BDCMSGCOLL.
- *
- * ST_options-DISMODE = 'A'.
- *
- * t_BDCDATA = VALUE #( ( PROGRAM = ''
- * DYNPRO = ''
- * DYNBEGIN = ''
- * FNAM = ''
- * FVAL = '' )
- * ).
- * call transaction 'XXXX' USING t_BDCDATA OPTIONS FROM ST_options MESSAGES INTO T_MESSAGES.
- *
- *
- *endform.
- **<--END_BI
- **-->BEG_SF
- *FORM sample_smartform using p_formulario type tdsfname.
- * DATA: lv_smf_funcion TYPE rs38l_fnam,
- * ls_control_parameters TYPE ssfctrlop,
- * ls_output_options TYPE ssfcompop,
- * ls_job_output_info TYPE ssfcrescl,
- * ls_document_output_info TYPE ssfcrespd,
- * ls_job_output_options TYPE ssfcresop,
- * gt_pdf_table TYPE rcl_bag_tline,
- * gv_pdf_fsize TYPE i.
- *
- * CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
- * EXPORTING
- * formname = p_formulario
- * IMPORTING
- * fm_name = lv_smf_funcion
- * EXCEPTIONS
- * no_form = 1
- * no_function_module = 2
- * OTHERS = 3.
- * IF sy-subrc EQ 0.
- **--[ Borrado de buffer de textos estándar
- * CALL FUNCTION 'INIT_LOAD_TEXT_BUFFER'
- * EXPORTING
- * excl_name = 'HELLO' "<- Para que no lo encuentre
- * EXCEPTIONS
- * not_found = 1
- * OTHERS = 2.
- *
- * ls_control_parameters-preview = abap_true.
- * ls_control_parameters-no_dialog = abap_true.
- * ls_control_parameters-langu = sy-langu.
- * ls_control_parameters-getotf = abap_true.
- *
- * ls_output_options-tddest = 'LOCL'.
- * ls_output_options-tdnoprint = abap_true.
- *
- * CALL FUNCTION lv_smf_funcion
- * EXPORTING
- * control_parameters = ls_control_parameters
- * output_options = ls_output_options
- * user_settings = space
- ** (... parametros de SF ...)
- * IMPORTING
- * document_output_info = ls_document_output_info
- * job_output_info = ls_job_output_info
- * job_output_options = ls_job_output_options
- * EXCEPTIONS
- * formatting_error = 1
- * internal_error = 2
- * send_error = 3
- * user_canceled = 4
- * OTHERS = 5.
- * IF sy-subrc EQ 0.
- *
- * CALL FUNCTION 'CONVERT_OTF'
- * EXPORTING
- * format = 'PDF'
- * IMPORTING
- * bin_filesize = gv_pdf_fsize
- * TABLES
- * otf = ls_job_output_info-otfdata[]
- * lines = gt_pdf_table " --> Aquí estará el PDF
- * EXCEPTIONS
- * err_max_linewidth = 1
- * err_format = 2
- * err_conv_not_possible = 3
- * OTHERS = 4.
- *
- * ENDIF.
- *
- * ENDIF.
- *ENDFORM.
- **<--END_SF
- **<--END_FRM
Última modificación de la página el 06 March 2024 a las 08h55
Powered by
PmWiki