<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: BADI's in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/badi-s/m-p/4183480#M1000049</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, &lt;/P&gt;&lt;P&gt;here there's a program wich will help you to find, enhancements in any transaction..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;======================================================================&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;PROGRAMA...: Z_AMPLIACIONES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;OBJETIVO...: BUSCA USER-EXITS, FIELD-EXITS, BADI'S, BTE Y            *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             SUSTITUCIONES EN UNA DETERMINADA TRANSACCION O PROGRAMA.*&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             SE VISUALIZAN LAS AMPLIACIONES EN UN ALV Y SE REALIZA   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             UN LINK AL PROGRAMA DONDE SE ENCUENTRA LA AMPLIACIÓN.   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;PARAMETROS.: P_PROG  = NOMBRE DE PROGRAMA A SER REVISADO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_TCODE = NOMBRE DE TRANSACCION A SER REVISADA&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             OBS.: UNO DE LOS PARAMETROS DEBE SER ESPECIFICADO&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*......................................................................&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_UE    = DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LOS USER-EXITS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_BADI  = DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LAS BADI'S.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_BTE   = DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LAS BTE.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_SUST  = DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LAS SUSTITUCIONES.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_FDEX  = DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LOS FIELD-EXITS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             OBS.: UNO DE LOS PARAMETROS DEBE SER ESPECIFICADO&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*......................................................................&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_INCL  = DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LOS INCLUDES.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_FUNC  = DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LAS FUNCIONES.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_SUBMIT= DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LOS DEMAS PROGRAMAS LLAMADOS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       POR SUBMIT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*......................................................................&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_NIVEL = DETERMINA EL NIVEL DE LA REVISION HECHA DENTRO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       DE LOS INCLUDES, FUNCIONES Y DEMAS PROGRAMAS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       EN EL NIVEL 1 SOLAMENTE SERA TOMADOS EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION EN EL PROGRAMA RAIZ. EN EL NIVEL&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       2 SE REVISARAN LOS INCLUDES, FUNCIONES DENTRO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       LOS INCLUDES, FUNCIONES DEL NIVEL 1 Y ASI&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       SUCESIVAMENTE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             OBS.: EN EL PARAMETRO P_NIVEL INFORMAR VALORES BAJOS,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             YA QUE A MAYOR NUMERO, MAYOR CANTIDAD DE CODIGO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             SERA ANALIZADO&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;======================================================================&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  z_ampliaciones_block_alv LINE-SIZE 255&lt;/P&gt;&lt;P&gt;                                 NO STANDARD PAGE HEADING.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS:&lt;/P&gt;&lt;P&gt;  icon,&lt;/P&gt;&lt;P&gt;  rsfs,&lt;/P&gt;&lt;P&gt;  rsds,&lt;/P&gt;&lt;P&gt;  slis.              "Tipos de datos para listas genéricas.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES:&lt;/P&gt;&lt;P&gt;  d010inc,          "Tabla de utilización para Includes ABAP&lt;/P&gt;&lt;P&gt;  dd03l,            "Campos de tabla&lt;/P&gt;&lt;P&gt;  modact,           "Modificaciones de la CMOD&lt;/P&gt;&lt;P&gt;  modsap,           "Ampliaciones SAP&lt;/P&gt;&lt;P&gt;  sxs_inter,        "Exit: Pág.definición: Interfaces&lt;/P&gt;&lt;P&gt;  sscrfields,       "Campos en las imágenes de selección&lt;/P&gt;&lt;P&gt;  tddir,            "Exits de campo activos para elementos de datos&lt;/P&gt;&lt;P&gt;  tddirs,           "Exits de campos en determinados dynpros&lt;/P&gt;&lt;P&gt;  tftit,            "Texto breve de un módulo de funciones&lt;/P&gt;&lt;P&gt;  trdirt,           "Textos tͭtulo p.programas en TRDIR&lt;/P&gt;&lt;P&gt;  tstc,             "Códigos de transacción SAP&lt;/P&gt;&lt;P&gt;  tstct.            "Textos de códigos de transacción&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CONSTANTS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;  c_sust(22)      TYPE c VALUE 'SUBSTITUTION',&lt;/P&gt;&lt;P&gt;  c_user_exit(22) TYPE c VALUE 'USEREXIT',&lt;/P&gt;&lt;P&gt;  c_badi(22)      TYPE c VALUE 'BADI',&lt;/P&gt;&lt;P&gt;  c_handler(30)   TYPE c VALUE 'CL_EXITHANDLER=&amp;gt;GET_INSTANCE',&lt;/P&gt;&lt;P&gt;  c_method(22)    TYPE c VALUE 'CALL METHOD',&lt;/P&gt;&lt;P&gt;  c_type_ref(22)  TYPE c VALUE 'TYPE REF TO',&lt;/P&gt;&lt;P&gt;  c_perform(22)   TYPE c VALUE 'PERFORM',&lt;/P&gt;&lt;P&gt;  c_form(22)      TYPE c VALUE 'FORM',&lt;/P&gt;&lt;P&gt;  c_endform(22)   TYPE c VALUE 'ENDFORM',&lt;/P&gt;&lt;P&gt;  c_bte(22)       TYPE c VALUE 'OPEN_FI_PERFORM',&lt;/P&gt;&lt;P&gt;  c_bte1(22)      TYPE c VALUE 'OUTBOUND_CALL',&lt;/P&gt;&lt;P&gt;  c_enhance(22)   TYPE c VALUE 'CALL CUSTOMER-FUNCTION',&lt;/P&gt;&lt;P&gt;  c_funcao_1(13)  TYPE c VALUE 'CALLFUNCTION''',&lt;/P&gt;&lt;P&gt;  c_funcao_2(13)  TYPE c VALUE 'CALL FUNCTION',&lt;/P&gt;&lt;P&gt;  c_enh(11)       TYPE c VALUE 'ENHANCEMENT',&lt;/P&gt;&lt;P&gt;  c_enh1(17)      TYPE c VALUE 'ENHANCEMENT-POINT',&lt;/P&gt;&lt;P&gt;  c_enh2(19)      TYPE c VALUE 'ENHANCEMENT-SECTION',&lt;/P&gt;&lt;P&gt;  c_endenh(14)    TYPE c VALUE 'ENDENHANCEMENT',&lt;/P&gt;&lt;P&gt;  c_endenh1(23)   TYPE c VALUE 'END-ENHANCEMENT-SECTION',&lt;/P&gt;&lt;P&gt;  c_include(07)   TYPE c VALUE 'INCLUDE',&lt;/P&gt;&lt;P&gt;  c_submit(06)    TYPE c VALUE 'SUBMIT',&lt;/P&gt;&lt;P&gt;  c_struct(11)    TYPE c VALUE ' STRUCTURE ',&lt;/P&gt;&lt;P&gt;  c_comentario    TYPE c VALUE '*',&lt;/P&gt;&lt;P&gt;  c_ponto         TYPE c VALUE '.',&lt;/P&gt;&lt;P&gt;  c_aspa          TYPE c VALUE '''',&lt;/P&gt;&lt;P&gt;  c_igual(3)      TYPE c VALUE ' = ',&lt;/P&gt;&lt;P&gt;  c_x             TYPE c VALUE 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;  c_ue(4)   TYPE c VALUE 'EXIT',&lt;/P&gt;&lt;P&gt;  c_b(4)    TYPE c VALUE 'BADI',&lt;/P&gt;&lt;P&gt;  c_bt(4)   TYPE c VALUE 'BTE',&lt;/P&gt;&lt;P&gt;  c_st(4)   TYPE c VALUE 'SUST',&lt;/P&gt;&lt;P&gt;  c_fdex(4) TYPE c VALUE 'FDEX',&lt;/P&gt;&lt;P&gt;  c_enht(4) TYPE c VALUE 'ENH',&lt;/P&gt;&lt;P&gt;  c_operation(4) TYPE c VALUE 'SHOW',&lt;/P&gt;&lt;P&gt;  c_type(4)      TYPE c VALUE 'PROG',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Textos&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  c_text_01  TYPE slis_fieldcat_alv-reptext_ddic VALUE 'Programa',&lt;/P&gt;&lt;P&gt;  c_text_02  TYPE slis_fieldcat_alv-reptext_ddic VALUE 'Nivel',&lt;/P&gt;&lt;P&gt;  c_text_03  TYPE slis_fieldcat_alv-reptext_ddic VALUE 'Linea',&lt;/P&gt;&lt;P&gt;  c_text_04  TYPE slis_fieldcat_alv-reptext_ddic VALUE 'Código fuente',&lt;/P&gt;&lt;P&gt;  c_text_05  TYPE slis_fieldcat_alv-reptext_ddic VALUE 'Tipo',&lt;/P&gt;&lt;P&gt;  c_text_06  TYPE string                         VALUE 'Breakpoint',&lt;/P&gt;&lt;P&gt;  c_text_07  TYPE slis_fieldcat_alv-reptext_ddic VALUE 'STOP',&lt;/P&gt;&lt;P&gt;  c_text_08  TYPE string                     VALUE 'Marcar todo',&lt;/P&gt;&lt;P&gt;  c_text_09  TYPE string                     VALUE 'Desmarcar todo',&lt;/P&gt;&lt;P&gt;  c_text_e01 TYPE slis_fieldcat_alv-reptext_ddic VALUE&lt;/P&gt;&lt;P&gt;    'Debe ingresar programa o transacción',&lt;/P&gt;&lt;P&gt;  c_text_e02 TYPE slis_fieldcat_alv-reptext_ddic VALUE&lt;/P&gt;&lt;P&gt;    'Debe ingresar solo programa o transacción',&lt;/P&gt;&lt;P&gt;  c_text_e03 TYPE slis_fieldcat_alv-reptext_ddic VALUE&lt;/P&gt;&lt;P&gt;    'Debe seleccionar un tipo de mejora'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;  c_std_definition(3) TYPE c VALUE 'SAP',&lt;/P&gt;&lt;P&gt;  c_std_implmnt(3)    TYPE c VALUE 'KUN'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;TABLAS INTERNAS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF x_tadir,&lt;/P&gt;&lt;P&gt;          obj_name TYPE sobj_name,&lt;/P&gt;&lt;P&gt;          devclass TYPE devclass,&lt;/P&gt;&lt;P&gt;       END OF x_tadir.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF x_slog,&lt;/P&gt;&lt;P&gt;          obj_name TYPE sobj_name,&lt;/P&gt;&lt;P&gt;       END OF x_slog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_programa OCCURS 0,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       cf like rssource-line,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        cf(500),&lt;/P&gt;&lt;P&gt;      END   OF ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_includes OCCURS 0,&lt;/P&gt;&lt;P&gt;        nome     LIKE sy-repid,&lt;/P&gt;&lt;P&gt;        nivel(2) TYPE n,&lt;/P&gt;&lt;P&gt;      END   OF ti_includes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_user_exit OCCURS 0,&lt;/P&gt;&lt;P&gt;        programa  LIKE sy-repid,&lt;/P&gt;&lt;P&gt;        tipo(4),&lt;/P&gt;&lt;P&gt;        linea(10) TYPE n,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       cf        LIKE rssource-line,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        cf(500),&lt;/P&gt;&lt;P&gt;        nivel(2)  TYPE n,&lt;/P&gt;&lt;P&gt;        break     LIKE icon-id,&lt;/P&gt;&lt;P&gt;        sel(1),&lt;/P&gt;&lt;P&gt;      END   OF ti_user_exit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_badi OCCURS 0,&lt;/P&gt;&lt;P&gt;        programa  LIKE sy-repid,&lt;/P&gt;&lt;P&gt;        tipo(4),&lt;/P&gt;&lt;P&gt;        linea(10) TYPE n,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       cf        LIKE rssource-line,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        cf(500),&lt;/P&gt;&lt;P&gt;        nivel(2)  TYPE n,&lt;/P&gt;&lt;P&gt;        break     LIKE icon-id,&lt;/P&gt;&lt;P&gt;        sel(1),&lt;/P&gt;&lt;P&gt;      END   OF ti_badi.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_bte OCCURS 0,&lt;/P&gt;&lt;P&gt;        programa  LIKE sy-repid,&lt;/P&gt;&lt;P&gt;        tipo(4),&lt;/P&gt;&lt;P&gt;        linea(10) TYPE n,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       cf        LIKE rssource-line,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        cf(500),&lt;/P&gt;&lt;P&gt;        nivel(2)  TYPE n,&lt;/P&gt;&lt;P&gt;        break     LIKE icon-id,&lt;/P&gt;&lt;P&gt;        sel(1),&lt;/P&gt;&lt;P&gt;      END   OF ti_bte.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_enh OCCURS 0,&lt;/P&gt;&lt;P&gt;        programa  LIKE sy-repid,&lt;/P&gt;&lt;P&gt;        tipo(4),&lt;/P&gt;&lt;P&gt;        linea(10) TYPE n,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       cf        LIKE rssource-line,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        cf(500),&lt;/P&gt;&lt;P&gt;        nivel(2)  TYPE n,&lt;/P&gt;&lt;P&gt;        break     LIKE icon-id,&lt;/P&gt;&lt;P&gt;        sel(1),&lt;/P&gt;&lt;P&gt;      END   OF ti_enh.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_enhobj OCCURS 0,&lt;/P&gt;&lt;P&gt;        enhname  LIKE enhobj-enhname,&lt;/P&gt;&lt;P&gt;        version  LIKE enhobj-version,&lt;/P&gt;&lt;P&gt;        obj_type LIKE enhobj-obj_type,&lt;/P&gt;&lt;P&gt;        obj_name LIKE enhobj-obj_name,&lt;/P&gt;&lt;P&gt;        sel(1),&lt;/P&gt;&lt;P&gt;      END   OF ti_enhobj.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_fdex OCCURS 0,&lt;/P&gt;&lt;P&gt;        tipo(4),&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       cf        LIKE rssource-line,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        cf(500),&lt;/P&gt;&lt;P&gt;        sel(1),&lt;/P&gt;&lt;P&gt;      END   OF ti_fdex.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;  ti_tadir TYPE STANDARD TABLE OF x_tadir WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;  ti_jtab  TYPE STANDARD TABLE OF x_slog  WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_final OCCURS 0,&lt;/P&gt;&lt;P&gt;          name     LIKE modsap-name,&lt;/P&gt;&lt;P&gt;          member   LIKE modsap-member,&lt;/P&gt;&lt;P&gt;          include  LIKE rs38l-include, "(15), "Include name&lt;/P&gt;&lt;P&gt;          stext    LIKE tftit-stext,&lt;/P&gt;&lt;P&gt;          programa LIKE rs38l-include,&lt;/P&gt;&lt;P&gt;          sel(1),&lt;/P&gt;&lt;P&gt;      END OF ti_final.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_sust OCCURS 0,&lt;/P&gt;&lt;P&gt;          substid   LIKE gb922-substid,&lt;/P&gt;&lt;P&gt;          subseqnr  LIKE gb922-subseqnr,&lt;/P&gt;&lt;P&gt;          conseqnr  LIKE gb922-conseqnr,&lt;/P&gt;&lt;P&gt;          substab   LIKE gb922-substab,&lt;/P&gt;&lt;P&gt;          subsfield LIKE gb922-subsfield,&lt;/P&gt;&lt;P&gt;          subsval   LIKE gb922-subsval,&lt;/P&gt;&lt;P&gt;          exitsubst LIKE gb922-exitsubst,&lt;/P&gt;&lt;P&gt;          sel(1),&lt;/P&gt;&lt;P&gt;      END OF ti_sust.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_val OCCURS 0,&lt;/P&gt;&lt;P&gt;          valid    LIKE gb931-valid,&lt;/P&gt;&lt;P&gt;          valseqnr LIKE gb931-valseqnr,&lt;/P&gt;&lt;P&gt;          condid   LIKE gb931-condid,&lt;/P&gt;&lt;P&gt;          checkid  LIKE gb931-checkid,&lt;/P&gt;&lt;P&gt;          sel(1),&lt;/P&gt;&lt;P&gt;      END OF ti_val.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF ti_bdcdata OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE bdcdata.&lt;/P&gt;&lt;P&gt;DATA : END OF ti_bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: ti_gb31t TYPE TABLE OF gb31t WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_cimp OCCURS 0,&lt;/P&gt;&lt;P&gt;        enhname    LIKE enhobj-enhname,&lt;/P&gt;&lt;P&gt;        obj_type   LIKE enhobj-obj_type,&lt;/P&gt;&lt;P&gt;        obj_name   LIKE enhobj-obj_name,&lt;/P&gt;&lt;P&gt;        elemusage  LIKE enhobj-elemusage,&lt;/P&gt;&lt;P&gt;        enhinclude(40),  "like ENHINCINX-ENHINCLUDE,&lt;/P&gt;&lt;P&gt;      END   OF ti_cimp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;VARIABLE GLOBALES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;  functxt         TYPE smp_dyntxt,&lt;/P&gt;&lt;P&gt;  w_tini          LIKE sy-timlo,&lt;/P&gt;&lt;P&gt;  vg_caracter     TYPE c,&lt;/P&gt;&lt;P&gt;  vg_palavra(50)  TYPE c,&lt;/P&gt;&lt;P&gt;  vg_inicial      LIKE sy-index,&lt;/P&gt;&lt;P&gt;  vg_conta_aspa   TYPE n,&lt;/P&gt;&lt;P&gt;  vg_pname LIKE   tfdir-pname,&lt;/P&gt;&lt;P&gt;  vg_texto(50)    TYPE c,&lt;/P&gt;&lt;P&gt;  vg_contador     LIKE sy-tfill,&lt;/P&gt;&lt;P&gt;  vg_nivel(2)     TYPE n,&lt;/P&gt;&lt;P&gt;  vg_ini_contagem TYPE c, " INDICA QUE DEBE SER INICIADO EL CONTADOR&lt;/P&gt;&lt;P&gt;  vg_conta_espaco TYPE n. " TOTAL DE ESPACIOS ( MÁXIMO 2 )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DEFINICION DE Estructuras y tablas para ALV (FM).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;  wa_cat     TYPE slis_fieldcat_alv,      " WA catálogo&lt;/P&gt;&lt;P&gt;  ti_cat     TYPE slis_t_fieldcat_alv,    " TI catálogo&lt;/P&gt;&lt;P&gt;  wa_layout  TYPE slis_layout_alv,        " WA opciones lista&lt;/P&gt;&lt;P&gt;  ti_header  TYPE slis_t_listheader,      " TI cabecera lista&lt;/P&gt;&lt;P&gt;  wa_header  TYPE slis_listheader,        " WA cabecera lista&lt;/P&gt;&lt;P&gt;  wa_events  TYPE slis_alv_event,         " WA eventos lista&lt;/P&gt;&lt;P&gt;  ti_events  TYPE slis_t_event,           " TI eventos lista&lt;/P&gt;&lt;P&gt;  wa_sort    TYPE slis_sortinfo_alv,      " WA sort&lt;/P&gt;&lt;P&gt;  ti_sort    TYPE slis_t_sortinfo_alv,    " TI sort&lt;/P&gt;&lt;P&gt;  wa_print   TYPE slis_print_alv.         " WA print&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;PARAMETROS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- DATOS OBLIGATORIOS.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK bl01 WITH FRAME TITLE tit1 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text2,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_tcode LIKE tstc-tcode.          "Transacción&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text1,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_prog  LIKE sy-repid.            "Programa&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END   OF BLOCK bl01.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK bl02 WITH FRAME TITLE tit2 .&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text7,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_ue AS CHECKBOX.             "User-exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Exit's en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 25(45) btn USER-COMMAND ext&lt;/P&gt;&lt;P&gt;                                        VISIBLE LENGTH 12.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Proyectos de Exit's en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 38(45) ext1 USER-COMMAND ext1&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 12.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de User-Exit's en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 51(45) ext2 USER-COMMAND ext2&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 12.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text8,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_badi AS CHECKBOX.           "Badi's&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Interface en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 25(60) badi USER-COMMAND badi&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 25.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  POSITION 25.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_handl AS CHECKBOX DEFAULT 'X'.&lt;/P&gt;&lt;P&gt;"CL_EXITHANDLER=&amp;gt;GET_INSTANCE&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: COMMENT 30(40) text12.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text9,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_bte AS CHECKBOX.            "Bte&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Tx. FIBF en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 25(60) bte1 USER-COMMAND bte1&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Tx. Evento en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 29(60) bte2 USER-COMMAND bte2&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 10.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Tx. Proceso en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 40(60) bte3 USER-COMMAND bte3&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 10.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(19) text14,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_enh AS CHECKBOX.            "Punto de ampliación&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Tx. SENH en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 25(60) senh USER-COMMAND senh&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Customer Implementation en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 29(60) cimp USER-COMMAND cimp&lt;/P&gt;&lt;P&gt;                                        VISIBLE LENGTH 24.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text10,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_sust AS CHECKBOX.            "Sustitución&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Sustitución en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 25(45) btn1 USER-COMMAND obb&lt;/P&gt;&lt;P&gt;                                        VISIBLE LENGTH 12.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de programa sustitución en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 38(45) sust USER-COMMAND sust&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 15.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text13,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_val AS CHECKBOX.            "Validación&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Validación en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 25(45) ob28 USER-COMMAND ob28&lt;/P&gt;&lt;P&gt;                                        VISIBLE LENGTH 12.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de programa sustitución en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 38(45) val USER-COMMAND val&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 15.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text11,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_fdex AS CHECKBOX.            "Field-exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Field-exit en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 25(60) btn2 USER-COMMAND fdex&lt;/P&gt;&lt;P&gt;                                        VISIBLE LENGTH 28.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END   OF BLOCK bl02.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- DATOS OPCIONALES.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK bl03 WITH FRAME TITLE tit3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de ALL en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 18(60) all USER-COMMAND all&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de DAL en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 21(60) dal USER-COMMAND dal&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 1.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text3,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_incl AS CHECKBOX DEFAULT 'X'.   "Includes&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text4,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_func AS CHECKBOX DEFAULT 'X'.   "Funciones&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text5,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_submit AS CHECKBOX DEFAULT 'X'. "Submit&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text6,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_nivel(2) TYPE n DEFAULT '04'.   "Nivel&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END   OF BLOCK bl03.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Botón de Marcar todo en el STATUS GUI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: FUNCTION KEY 1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Botón de Desmarcar todo en el STATUS GUI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: FUNCTION KEY 2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Botón de Breakpoint en el STATUS GUI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: FUNCTION KEY 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DEFINICIÓN DE MACROS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;DEFINE icon_create.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo para el botón indicado, el icono y los textos correspondientes.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  call function 'ICON_CREATE'&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      name   = &amp;amp;2&lt;/P&gt;&lt;P&gt;      text   = &amp;amp;3&lt;/P&gt;&lt;P&gt;      info   = &amp;amp;4&lt;/P&gt;&lt;P&gt;    importing&lt;/P&gt;&lt;P&gt;      result = &amp;amp;1&lt;/P&gt;&lt;P&gt;    exceptions&lt;/P&gt;&lt;P&gt;      others = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-DEFINITION. "icon_create&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;INICIALIZACIÓN DE VARIABLES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM def_text_parameter.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM def_botones.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR   ti_gb31t.&lt;/P&gt;&lt;P&gt;  REFRESH ti_gb31t.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo Validación/Sustitución/Eventos/Texto.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    INTO TABLE ti_gb31t&lt;/P&gt;&lt;P&gt;    FROM gb31t&lt;/P&gt;&lt;P&gt;    WHERE spras EQ sy-langu.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;AT SELECTION-SCREEN&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE sscrfields-ucomm.&lt;/P&gt;&lt;P&gt;    WHEN 'FC01'.&lt;/P&gt;&lt;P&gt;      MOVE 'X' TO : p_ue, p_badi, p_bte, p_sust, p_val, p_fdex, p_enh.&lt;/P&gt;&lt;P&gt;    WHEN 'FC02'.&lt;/P&gt;&lt;P&gt;      CLEAR: p_ue, p_badi, p_bte, p_sust, p_val, p_fdex, p_enh.&lt;/P&gt;&lt;P&gt;    WHEN 'FC03'.&lt;/P&gt;&lt;P&gt;      PERFORM breakpoint.&lt;/P&gt;&lt;P&gt;    WHEN 'EXT'.&lt;/P&gt;&lt;P&gt;      PERFORM visualizar_ampliacion.&lt;/P&gt;&lt;P&gt;    WHEN 'EXT1'.&lt;/P&gt;&lt;P&gt;      PERFORM visualizar_proyecto.&lt;/P&gt;&lt;P&gt;    WHEN 'EXT2'.&lt;/P&gt;&lt;P&gt;      PERFORM visualizar_fm_exit.&lt;/P&gt;&lt;P&gt;    WHEN 'BADI'.&lt;/P&gt;&lt;P&gt;      PERFORM visualizar_interface.&lt;/P&gt;&lt;P&gt;    WHEN 'OBB'.&lt;/P&gt;&lt;P&gt;      CALL TRANSACTION 'OBBH'.&lt;/P&gt;&lt;P&gt;    WHEN 'OB28'.&lt;/P&gt;&lt;P&gt;      CALL TRANSACTION 'OB28'.&lt;/P&gt;&lt;P&gt;    WHEN 'SUST' OR 'VAL'.&lt;/P&gt;&lt;P&gt;      PERFORM visualizar_programa.&lt;/P&gt;&lt;P&gt;    WHEN 'FDEX'.&lt;/P&gt;&lt;P&gt;      SUBMIT rsmodprf AND RETURN.&lt;/P&gt;&lt;P&gt;    WHEN 'BTE1'.&lt;/P&gt;&lt;P&gt;      CALL TRANSACTION 'FIBF'.&lt;/P&gt;&lt;P&gt;    WHEN 'BTE2'.&lt;/P&gt;&lt;P&gt;      PERFORM cargar_bte USING 'E'.&lt;/P&gt;&lt;P&gt;    WHEN 'BTE3'.&lt;/P&gt;&lt;P&gt;      PERFORM cargar_bte USING 'P'.&lt;/P&gt;&lt;P&gt;    WHEN 'SENH'.&lt;/P&gt;&lt;P&gt;      SUBMIT sapmsenh VIA SELECTION-SCREEN&lt;/P&gt;&lt;P&gt;        AND RETURN.&lt;/P&gt;&lt;P&gt;    WHEN 'CIMP'.&lt;/P&gt;&lt;P&gt;      PERFORM visualizar_imp_enh.&lt;/P&gt;&lt;P&gt;    WHEN 'ALL'.&lt;/P&gt;&lt;P&gt;      MOVE 'X' TO : p_incl, p_func, p_submit.&lt;/P&gt;&lt;P&gt;    WHEN 'DAL'.&lt;/P&gt;&lt;P&gt;      CLEAR: p_incl, p_func, p_submit.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do Nothing !!.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_prog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM repid_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;INICIO&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  GET TIME FIELD w_tini.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- CONSISTENCIAS DE LOS PARAMETROS.&lt;/P&gt;&lt;P&gt;  PERFORM consisti_parametros.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- INICIALIZA TABLA.&lt;/P&gt;&lt;P&gt;  PERFORM inicializa_tabela.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN EL PROGRAMA EXISTE ALGUN INCLUDE, FUNCION O SUBMIT.&lt;/P&gt;&lt;P&gt;  PERFORM verifica_include_funcao_submit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- ANALISA LOS INCLUDES Y BUSCA POR USER-EXIT, BADI'S Y BTE.&lt;/P&gt;&lt;P&gt;  PERFORM busca_user_exit_badi_bte.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- ANALISA LOS INCLUDES Y BUSCA LOS FIELD-EXIT'S.&lt;/P&gt;&lt;P&gt;  PERFORM buscar_field_exit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- OBTENGO LOS EXIT's DE LA TRANSACCIÓN.&lt;/P&gt;&lt;P&gt;  PERFORM buscar_user_exit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- OBTENGO LAS PUNTOS DE AMPLIACIÓN.&lt;/P&gt;&lt;P&gt;  PERFORM buscar_enh.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- OBTENGO LAS SUSTITUCIONES.&lt;/P&gt;&lt;P&gt;  PERFORM buscar_sustituciones.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- OBTENGO LAS VALIDACIONES.&lt;/P&gt;&lt;P&gt;  PERFORM buscar_validaciones.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- CARGO LOS BREAKPOINTS.&lt;/P&gt;&lt;P&gt;  PERFORM cargar_break.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VISUALIZA LAS AMPLIACIONES ENCONTRADAS.&lt;/P&gt;&lt;P&gt;  PERFORM exibe_user_exit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;FIN&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  BUSCA_USER_EXIT_BADI_BTE&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Busca EXIT's, BADI's y BTE en el código fuente.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM busca_user_exit_badi_bte.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LOS INCLUDES SELECIONADOS EXISTEN EXITS.&lt;/P&gt;&lt;P&gt;  LOOP AT ti_includes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;    PERFORM evitar_time_out USING sy-tfill.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- BORRA LA TABLA INTERNA.&lt;/P&gt;&lt;P&gt;    REFRESH ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- REALIZA LECTURA DE INCLUDE ALMACENANDO EN TABLA INTERNA&lt;/P&gt;&lt;P&gt;    READ REPORT ti_includes-nome INTO ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF p_ue EQ 'X'.&lt;/P&gt;&lt;P&gt;        PERFORM buscar_exit.&lt;/P&gt;&lt;P&gt;        PERFORM busca_enhancements.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF p_badi EQ 'X'.&lt;/P&gt;&lt;P&gt;        PERFORM buscar_badi.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF p_bte EQ 'X'.&lt;/P&gt;&lt;P&gt;        PERFORM buscar_bte.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF p_enh EQ 'X'.&lt;/P&gt;&lt;P&gt;        PERFORM buscar_punto_ampliacion.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " BUSCA_USER_EXIT_BADI_BTE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  BUSCA_ENHANCEMENTS&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Busca las llamadas a los USER-EXIT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM busca_enhancements.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE EN ALGUN ENHANCEMENT.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_enhance.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO EL ENHANCEMENT Y LA LINEA NO ESTÁ COMENTADA.&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;    CLEAR ti_user_exit.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;    SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;    MOVE: ti_includes-nome  TO ti_user_exit-programa,&lt;/P&gt;&lt;P&gt;          c_ue              TO ti_user_exit-tipo,&lt;/P&gt;&lt;P&gt;          sy-tabix          TO ti_user_exit-linea,&lt;/P&gt;&lt;P&gt;          ti_programa-cf    TO ti_user_exit-cf,&lt;/P&gt;&lt;P&gt;          ti_includes-nivel TO ti_user_exit-nivel.&lt;/P&gt;&lt;P&gt;    APPEND ti_user_exit.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " BUSCA_ENHANCEMENTS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  EXIBE_USER_EXIT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Muestra los datos.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM exibe_user_exit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM armar_alv.&lt;/P&gt;&lt;P&gt;  PERFORM mostrar_listado.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " EXIBE_USER_EXIT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  PROCURA_INCLUDE&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM procura_include.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR vg_palavra.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUN INCLUDE.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_include.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO EN EL INCLUDE Y LA LINEA NO ESTÁ COMENTADA.&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUN STRUCTURE.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_struct.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA TODOS LOS 500 CARACTERES DE LA LINEA PARA MONTAR NOMBRE&lt;/P&gt;&lt;P&gt;*- DEL INCLUDE&lt;/P&gt;&lt;P&gt;    DO 500 TIMES.&lt;/P&gt;&lt;P&gt;      vg_inicial = sy-index - 1.&lt;/P&gt;&lt;P&gt;      MOVE ti_programa-cf+vg_inicial(1) TO vg_caracter.&lt;/P&gt;&lt;P&gt;      IF NOT vg_caracter IS INITIAL.&lt;/P&gt;&lt;P&gt;*- VERIFICA SI NO ES FIN DE COMANDO.&lt;/P&gt;&lt;P&gt;        IF vg_caracter EQ c_ponto.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;*- ARMA PALABRA.&lt;/P&gt;&lt;P&gt;        CONCATENATE vg_palavra vg_caracter INTO vg_palavra.&lt;/P&gt;&lt;P&gt;*- CONVIERTE A MAYUSCULA PARA FUTURA COMPARACION.&lt;/P&gt;&lt;P&gt;        TRANSLATE vg_palavra TO UPPER CASE.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO ALGUN INCLUDE&lt;/P&gt;&lt;P&gt;        IF vg_palavra EQ c_include.&lt;/P&gt;&lt;P&gt;          CLEAR vg_palavra.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;*- GRABA NOMBRE DEL INCLUDE PARA FUTURA BUSQUEDA POR USER EXIT.&lt;/P&gt;&lt;P&gt;    READ TABLE ti_includes WITH KEY nome = vg_palavra.&lt;/P&gt;&lt;P&gt;    IF NOT sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;      IF vg_nivel LE p_nivel.&lt;/P&gt;&lt;P&gt;        MOVE: vg_palavra TO ti_includes-nome,&lt;/P&gt;&lt;P&gt;              vg_nivel   TO ti_includes-nivel.&lt;/P&gt;&lt;P&gt;        APPEND ti_includes.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " PROCURA_INCLUDE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  PROCURA_FUNCAO&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM procura_funcao.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: vg_conta_aspa,&lt;/P&gt;&lt;P&gt;         vg_palavra.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUNA FUNCION.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_funcao_2.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UNA FUNCION Y LA LINEA NO ESTA COMENTADA..&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;*- VERIFICA TODOS LOS 500 CARACTERES DE LA LINEA PARA MONTAR NOMBRE&lt;/P&gt;&lt;P&gt;*- DE LA INCLUDE&lt;/P&gt;&lt;P&gt;    DO 500 TIMES.&lt;/P&gt;&lt;P&gt;      vg_inicial = sy-index - 1.&lt;/P&gt;&lt;P&gt;      MOVE ti_programa-cf+vg_inicial(1) TO vg_caracter.&lt;/P&gt;&lt;P&gt;      IF NOT vg_caracter IS INITIAL.&lt;/P&gt;&lt;P&gt;*- VERIFICA SI NO ES FIN DE COMANDO.&lt;/P&gt;&lt;P&gt;        IF vg_caracter EQ c_aspa.&lt;/P&gt;&lt;P&gt;          ADD 1 TO vg_conta_aspa.&lt;/P&gt;&lt;P&gt;          IF vg_conta_aspa EQ 2.&lt;/P&gt;&lt;P&gt;            EXIT.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;*- ARMA PALABRA.&lt;/P&gt;&lt;P&gt;        CONCATENATE vg_palavra vg_caracter INTO vg_palavra.&lt;/P&gt;&lt;P&gt;*- CONVIERTE A MAYUSCULA PARA FUTURA COMPARACION.&lt;/P&gt;&lt;P&gt;        TRANSLATE vg_palavra TO UPPER CASE.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO ALGUN INCLUDE&lt;/P&gt;&lt;P&gt;        IF vg_palavra EQ c_funcao_1.&lt;/P&gt;&lt;P&gt;          CLEAR vg_palavra.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;*- BUSCA NOMBRE DE LA FUNCION PARA FUTURA BUSQUEDA POR USER EXIT.&lt;/P&gt;&lt;P&gt;    CLEAR vg_pname.&lt;/P&gt;&lt;P&gt;    SELECT SINGLE pname&lt;/P&gt;&lt;P&gt;           INTO   vg_pname&lt;/P&gt;&lt;P&gt;           FROM   tfdir&lt;/P&gt;&lt;P&gt;           WHERE  funcname EQ vg_palavra.&lt;/P&gt;&lt;P&gt;    IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      READ TABLE ti_includes WITH KEY nome = vg_pname.&lt;/P&gt;&lt;P&gt;      IF NOT sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;        IF vg_nivel LE p_nivel.&lt;/P&gt;&lt;P&gt;          MOVE: vg_pname TO ti_includes-nome,&lt;/P&gt;&lt;P&gt;                vg_nivel TO ti_includes-nivel.&lt;/P&gt;&lt;P&gt;          APPEND ti_includes.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " PROCURA_FUNCAO&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  VERIFICA_INCLUDE_FUNCAO_SUBMIT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM verifica_include_funcao_submit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK p_ue  IS NOT INITIAL OR p_badi IS NOT INITIAL&lt;/P&gt;&lt;P&gt;     OR p_bte IS NOT INITIAL OR p_enh  IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT ti_includes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ADD 1 TO vg_contador.&lt;/P&gt;&lt;P&gt;    DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;    PERFORM evitar_time_out USING sy-tfill.&lt;/P&gt;&lt;P&gt;    MOVE ti_includes-nivel TO vg_nivel.&lt;/P&gt;&lt;P&gt;    ADD 1 TO vg_nivel.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- BORRA TABLA INTERNA.&lt;/P&gt;&lt;P&gt;    REFRESH ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- REALIZA LECTURA DE INCLUDE/FUNCION ALMACENANDO EN TABLA INTERNA&lt;/P&gt;&lt;P&gt;    READ REPORT ti_includes-nome INTO ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- PROCURA POR INCLUDES.&lt;/P&gt;&lt;P&gt;      IF p_incl EQ c_x.&lt;/P&gt;&lt;P&gt;        PERFORM procura_include.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;*- PROCURA POR FUNCION.&lt;/P&gt;&lt;P&gt;      IF p_func EQ c_x.&lt;/P&gt;&lt;P&gt;        PERFORM procura_funcao.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;*- PROCURA POR SUBMIT.&lt;/P&gt;&lt;P&gt;      IF p_submit EQ c_x.&lt;/P&gt;&lt;P&gt;        PERFORM procura_submit.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " VERIFICA_INCLUDE_FUNCAO_SUBMIT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  EVITAR_TIME_OUT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Evito el TIME OUT visualizando un mensaje&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM evitar_time_out USING p_tfill LIKE sy-tfill.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    vl_total(10) TYPE n,&lt;/P&gt;&lt;P&gt;    vl_atual(10) TYPE n,&lt;/P&gt;&lt;P&gt;    l_tout       LIKE sy-timlo,&lt;/P&gt;&lt;P&gt;    l_time(10)   TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  GET TIME FIELD l_tout.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_tout = l_tout - w_tini.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE:&lt;/P&gt;&lt;P&gt;    p_tfill     TO vl_total,&lt;/P&gt;&lt;P&gt;    vg_contador TO vl_atual.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SHIFT vl_total LEFT DELETING LEADING '0'.&lt;/P&gt;&lt;P&gt;  SHIFT vl_atual LEFT DELETING LEADING '0'.&lt;/P&gt;&lt;P&gt;  WRITE l_tout TO l_time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONCATENATE 'Tpo:' l_time 'Total:' vl_total 'Actual:' vl_atual&lt;/P&gt;&lt;P&gt;         INTO vg_texto&lt;/P&gt;&lt;P&gt;         SEPARATED BY space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      text = vg_texto.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " EVITAR_TIME_OUT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  PROCURA_SUBMIT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM procura_submit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: vg_conta_espaco, vg_palavra, vg_ini_contagem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI LA LINEA DEL PROGRAMA EXISTE ALGUN INCLUDE.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_submit.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO EN EL INCLUDE Y LA LINEA NO ESTÁ COMENTADA.&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;*- VERIFICA TODOS LOS 500 CARACTERES DE LA LINEA PARA MONTAR NOMBRE&lt;/P&gt;&lt;P&gt;*- DEL INCLUDE&lt;/P&gt;&lt;P&gt;    DO 500 TIMES.&lt;/P&gt;&lt;P&gt;      vg_inicial = sy-index - 1.&lt;/P&gt;&lt;P&gt;      MOVE ti_programa-cf+vg_inicial(1) TO vg_caracter.&lt;/P&gt;&lt;P&gt;      IF vg_ini_contagem EQ c_x AND vg_caracter IS INITIAL.&lt;/P&gt;&lt;P&gt;        ADD 1 TO vg_conta_espaco.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF NOT vg_caracter IS INITIAL.&lt;/P&gt;&lt;P&gt;        MOVE c_x TO vg_ini_contagem.&lt;/P&gt;&lt;P&gt;        IF vg_caracter EQ c_ponto.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;*- ARMA PALABRA.&lt;/P&gt;&lt;P&gt;        IF vg_conta_espaco LT 2.&lt;/P&gt;&lt;P&gt;          CONCATENATE vg_palavra vg_caracter INTO vg_palavra.&lt;/P&gt;&lt;P&gt;*- CONVIERTE A MAYUSCULA PARA FUTURA COMPARACION..&lt;/P&gt;&lt;P&gt;          TRANSLATE vg_palavra TO UPPER CASE.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO ALGUN INCLUDE&lt;/P&gt;&lt;P&gt;          IF vg_palavra EQ c_submit.&lt;/P&gt;&lt;P&gt;            CLEAR vg_palavra.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;*- BUSCA NOMBRE DE LA FUNCION PARA FUTURA BUSQUEDA POR USER EXIT.&lt;/P&gt;&lt;P&gt;    READ TABLE ti_includes WITH KEY nome = vg_palavra.&lt;/P&gt;&lt;P&gt;    IF NOT sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;      IF vg_nivel LE p_nivel.&lt;/P&gt;&lt;P&gt;        MOVE: vg_palavra TO ti_includes-nome,&lt;/P&gt;&lt;P&gt;              vg_nivel   TO ti_includes-nivel.&lt;/P&gt;&lt;P&gt;        APPEND ti_includes.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " PROCURA_SUBMIT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  CONSISTI_PARAMETROS&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM consisti_parametros.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_nivel IS INITIAL.&lt;/P&gt;&lt;P&gt;    MOVE 1 TO p_nivel.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_prog IS INITIAL AND p_tcode IS INITIAL.&lt;/P&gt;&lt;P&gt;*- EL NOMBRE DEL PROGRAMA Y EL NOMBRE DE LA TRANSACCION NO PUEDEN SER&lt;/P&gt;&lt;P&gt;*- NULOS. UNO DE ELLOS DEBE SER INFORMADO.&lt;/P&gt;&lt;P&gt;    MESSAGE ID '00' TYPE 'I' NUMBER '398' WITH c_text_e01.&lt;/P&gt;&lt;P&gt;    STOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT p_prog IS INITIAL AND NOT p_tcode IS INITIAL.&lt;/P&gt;&lt;P&gt;*- SE SOLICITA AL USUARIO QUE INFORME NOMBRE DE PROGRAMA O TRANSACCION.&lt;/P&gt;&lt;P&gt;    MESSAGE ID '00' TYPE 'I' NUMBER '398' WITH c_text_e02.&lt;/P&gt;&lt;P&gt;    STOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_ue IS INITIAL    AND p_badi IS INITIAL AND p_bte IS INITIAL&lt;/P&gt;&lt;P&gt;  AND p_sust IS INITIAL AND p_val IS INITIAL  AND p_fdex IS INITIAL&lt;/P&gt;&lt;P&gt;  AND p_enh  IS INITIAL.&lt;/P&gt;&lt;P&gt;*- SE SOLICITA AL USUARIO QUE INFORME UN TIPO DE MEJORA.&lt;/P&gt;&lt;P&gt;    MESSAGE ID '00' TYPE 'I' NUMBER '398' WITH c_text_e03.&lt;/P&gt;&lt;P&gt;    STOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " CONSISTI_PARAMETROS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  INICIALIZA_TABELA&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM inicializa_tabela.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    e_tstc  TYPE tstc,&lt;/P&gt;&lt;P&gt;    l_tcode TYPE sy-tcode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH ti_includes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT p_prog IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE: p_prog TO ti_includes-nome,&lt;/P&gt;&lt;P&gt;          '0'    TO ti_includes-nivel.&lt;/P&gt;&lt;P&gt;    APPEND ti_includes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- BUSCO EL PROGRAMA.&lt;/P&gt;&lt;P&gt;    READ REPORT ti_includes-nome INTO ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;      REFRESH ti_programa.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;*- EL PROGRAMA NO EXISTE.&lt;/P&gt;&lt;P&gt;      MESSAGE s893(pz) WITH 'El programa' p_prog 'no existe.'.&lt;/P&gt;&lt;P&gt;      STOP.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSEIF NOT p_tcode IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT SINGLE *&lt;/P&gt;&lt;P&gt;      FROM tstc&lt;/P&gt;&lt;P&gt;      WHERE tcode EQ p_tcode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF tstc-pgmna IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;        MOVE: tstc-pgmna TO ti_includes-nome,&lt;/P&gt;&lt;P&gt;               '0'       TO ti_includes-nivel.&lt;/P&gt;&lt;P&gt;        APPEND ti_includes.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Se trata de una transacción de parámetros. Obtengo la transacción&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;asociada.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CALL FUNCTION 'RS_TRANSACTION_SINGLE_GET'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            parameter_tcode = p_tcode&lt;/P&gt;&lt;P&gt;          IMPORTING&lt;/P&gt;&lt;P&gt;            tcode           = l_tcode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        SELECT SINGLE *&lt;/P&gt;&lt;P&gt;          INTO e_tstc&lt;/P&gt;&lt;P&gt;          FROM tstc&lt;/P&gt;&lt;P&gt;          WHERE tcode EQ l_tcode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;          MOVE: e_tstc-pgmna TO ti_includes-nome,&lt;/P&gt;&lt;P&gt;                 '0'       TO ti_includes-nivel.&lt;/P&gt;&lt;P&gt;          APPEND ti_includes.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;*- LA TRANSACCIÓN NO EXISTE.&lt;/P&gt;&lt;P&gt;          MESSAGE s893(pz) WITH 'La transacción' p_tcode 'no existe.'.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;*- LA TRANSACCIÓN NO EXISTE.&lt;/P&gt;&lt;P&gt;      MESSAGE s893(pz) WITH 'La transacción' p_tcode 'no existe.'.&lt;/P&gt;&lt;P&gt;      STOP.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " INICIALIZA_TABELA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  armar_alv&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Armo el ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM armar_alv .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid TYPE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE sy-repid TO l_repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_callback_program      = l_repid&lt;/P&gt;&lt;P&gt;      i_callback_user_command = 'USER_COMMAND'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_ue IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_exit.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_USER_EXIT'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_USER_EXIT'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_USER_EXIT'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'User-exit'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_user_exit&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_uexit.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_FINAL'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_UEXIT'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_FINAL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_FINAL'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'User-exit Tx.CMOD'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_final&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_badi IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_badi.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_BADI'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_BADI'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_BADI'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_BADI'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'Badis'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_badi&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_bte IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_bte.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_BTE'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_BTE'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_BTE'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_BTE'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'BTE'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_bte&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_enh IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_enh.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_ENH'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_ENH'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_ENH'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_ENH'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'ENH'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_enh&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_enhobj.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_ENHOBJ'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_ENHOBJ'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_ENHOBJ'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_ENHOBJ'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'ENHOBJ'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_enhobj&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_sust IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_sust.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_SUST'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_SUST'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_SUST'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_SUST'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'Sustituciones'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_sust&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_val IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_val.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_VAL'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_VAL'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_VAL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_VAL'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'Validaciones'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_val&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_fdex IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_fdex.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_FDEX'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_FDEX'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_FDEX'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_FDEX'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'Field-exit'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_fdex&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " armar_alv&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_EXIT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_exit .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_USER_EXIT'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'PROGRAMA'  'X' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ' c_text_01,&lt;/P&gt;&lt;P&gt;  'TIPO'      'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_05,&lt;/P&gt;&lt;P&gt;  'NIVEL'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_02,&lt;/P&gt;&lt;P&gt;  'BREAK'     'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_07,&lt;/P&gt;&lt;P&gt;  'LINEA'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_03,&lt;/P&gt;&lt;P&gt;  'CF'        ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_04.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_EXIT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  asignar_campo_a_catalogo&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Asignar campo al catalogo ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM asignar_campo_a_catalogo TABLES pt_cat STRUCTURE wa_cat&lt;/P&gt;&lt;P&gt;                          USING  p_fieldname    LIKE wa_cat-fieldname&lt;/P&gt;&lt;P&gt;                                 p_key          LIKE wa_cat-key&lt;/P&gt;&lt;P&gt;                                 p_col_pos      TYPE c&lt;/P&gt;&lt;P&gt;                                 p_fix_column   LIKE wa_cat-fix_column&lt;/P&gt;&lt;P&gt;                                 p_hotspot      LIKE wa_cat-hotspot&lt;/P&gt;&lt;P&gt;                                 p_do_sum       LIKE wa_cat-do_sum&lt;/P&gt;&lt;P&gt;                                 p_input        LIKE wa_cat-input&lt;/P&gt;&lt;P&gt;                                 p_checkbox     LIKE wa_cat-checkbox&lt;/P&gt;&lt;P&gt;                                 p_no_out       LIKE wa_cat-no_out&lt;/P&gt;&lt;P&gt;                                 p_icon         LIKE wa_cat-icon&lt;/P&gt;&lt;P&gt;                                p_reptext_ddic LIKE wa_cat-reptext_ddic.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  STATICS l_col_pos LIKE sy-cucol.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de cabecera ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR wa_cat.&lt;/P&gt;&lt;P&gt;  READ TABLE pt_cat INTO wa_cat&lt;/P&gt;&lt;P&gt;             WITH KEY fieldname = p_fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT p_reptext_ddic IS INITIAL.&lt;/P&gt;&lt;P&gt;    wa_cat-seltext_l = wa_cat-seltext_m =&lt;/P&gt;&lt;P&gt;    wa_cat-seltext_s = wa_cat-reptext_ddic = p_reptext_ddic.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_col_pos EQ 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Inicializo el conteo para ordenar las columnas.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    l_col_pos = 1.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    ADD 1 TO l_col_pos.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  wa_cat-fieldname     = p_fieldname.&lt;/P&gt;&lt;P&gt;  wa_cat-key           = p_key.&lt;/P&gt;&lt;P&gt;  wa_cat-col_pos       = l_col_pos.&lt;/P&gt;&lt;P&gt;  wa_cat-fix_column    = p_fix_column.&lt;/P&gt;&lt;P&gt;  wa_cat-hotspot       = p_hotspot.&lt;/P&gt;&lt;P&gt;  wa_cat-do_sum        = p_do_sum.&lt;/P&gt;&lt;P&gt;  wa_cat-edit = wa_cat-input = p_input.&lt;/P&gt;&lt;P&gt;  wa_cat-checkbox      = p_checkbox.&lt;/P&gt;&lt;P&gt;  wa_cat-no_out        = p_no_out.&lt;/P&gt;&lt;P&gt;  wa_cat-icon          = p_icon.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MODIFY pt_cat FROM wa_cat INDEX sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " asignar_campo_a_catalogo&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  definir_layout&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Definir atributos del layout de reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM definir_layout USING    p_table  TYPE slis_layout_alv-box_tabname&lt;/P&gt;&lt;P&gt;                    CHANGING p_layout TYPE slis_layout_alv .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR p_layout.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_table NE 'TI_CIMP'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Marco el campo para la selección.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    p_layout-box_fieldname         = 'SEL'.&lt;/P&gt;&lt;P&gt;    p_layout-box_tabname           = p_table.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  p_layout-zebra                 = 'X'.&lt;/P&gt;&lt;P&gt;  p_layout-colwidth_optimize     = 'X'.&lt;/P&gt;&lt;P&gt;  p_layout-no_vline              = ' '.&lt;/P&gt;&lt;P&gt;  p_layout-no_colhead            = ' '.&lt;/P&gt;&lt;P&gt;  p_layout-lights_condense       = 'X'.&lt;/P&gt;&lt;P&gt;  p_layout-detail_popup          = 'X'.&lt;/P&gt;&lt;P&gt;  p_layout-detail_initial_lines  = 'X'.&lt;/P&gt;&lt;P&gt;  p_layout-flexible_key          = ' '.&lt;/P&gt;&lt;P&gt;  p_layout-key_hotspot           = ' '.&lt;/P&gt;&lt;P&gt;  p_layout-confirmation_prompt   = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " definir_layout&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_eventos&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Asignar eventos soportados&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_eventos USING p_form LIKE wa_events-form.&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_type(1) TYPE n.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_events.&lt;/P&gt;&lt;P&gt;  CLEAR:   wa_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ALV Simple Block append.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  l_type = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Buscar secciones para eventos&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_list_type = l_type&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      et_events   = ti_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Leer evento 'TOP_OF_PAGE'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  READ TABLE ti_events WITH KEY name = slis_ev_top_of_page&lt;/P&gt;&lt;P&gt;                           INTO wa_events.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar Rutina FORM 'TOP_OF_PAGE' a evento&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    MOVE p_form TO wa_events-form.&lt;/P&gt;&lt;P&gt;    MODIFY ti_events FROM wa_events INDEX sy-tabix.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_eventos&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  top_of_page&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_inc.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_inc NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_user_exit.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                              l_tfill_inc&lt;/P&gt;&lt;P&gt;                              'User-exit'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "top_of_page&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_UEXIT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_uexit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_final.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'USER-EXITs Tx.SMOD'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_UEXIT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_FDEX&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_fdex.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_fdex.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'FIELD-EXITs'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_FDEX&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_BADI&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_badi.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_inc.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_inc NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_badi.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'BADIs'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_BADI&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_BTE&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_bte.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_inc.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_inc NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_bte.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'BTEs'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_BTE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_ENH&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_enh.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_inc.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_inc NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_enh.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'Puntos de ampliación'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_ENH&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sort&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Creo el sort del ALV (FM).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;PT_sort     Tabla&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_tabname   Nombre de la tabla&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM sort  TABLES   pt_sort&lt;/P&gt;&lt;P&gt;           USING    p_tabname TYPE any.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;  REFRESH pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE p_tabname.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_SUST'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_sort-fieldname = 'SUBSTID'.&lt;/P&gt;&lt;P&gt;      wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;      wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;      wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_sort-fieldname = 'SUBSEQNR'.&lt;/P&gt;&lt;P&gt;      wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;      wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;      wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_sort-fieldname = 'CONSEQNR'.&lt;/P&gt;&lt;P&gt;      wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;      wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;      wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN 'TI_VAL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_sort-fieldname = 'VALID'.&lt;/P&gt;&lt;P&gt;      wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;      wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;      wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_sort-fieldname = 'VALSEQNR'.&lt;/P&gt;&lt;P&gt;      wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;      wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;      wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN 'TI_ENHOBJ'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_sort-fieldname = 'ENHNAME'.&lt;/P&gt;&lt;P&gt;      wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;      wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;      wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_sort-fieldname = 'VERSION'.&lt;/P&gt;&lt;P&gt;      wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;      wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;      wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF p_tabname NE 'TI_FINAL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        wa_sort-fieldname = 'TIPO'.&lt;/P&gt;&lt;P&gt;        wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;        wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;        wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;        APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF p_tabname NE 'TI_FDEX'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          wa_sort-fieldname = 'NIVEL'.&lt;/P&gt;&lt;P&gt;          wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;          wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;          wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;          APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          wa_sort-fieldname = 'PROGRAMA'.&lt;/P&gt;&lt;P&gt;          wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;          wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;          wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;          APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          wa_sort-fieldname = 'LINEA'.&lt;/P&gt;&lt;P&gt;          wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;          wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;          wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;          APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        wa_sort-fieldname = 'NAME'.&lt;/P&gt;&lt;P&gt;        wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;        wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;        wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;        APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        wa_sort-fieldname = 'MEMBER'.&lt;/P&gt;&lt;P&gt;        wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;        wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;        wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;        APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " sort&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  mostrar_listado&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar listado ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM mostrar_listado .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  wa_print-reserve_lines = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      is_print      = wa_print&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      program_error = 1&lt;/P&gt;&lt;P&gt;      OTHERS        = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " mostrar_listado&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  user_command&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Evaluar acciones del usuario&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM user_command USING ucomm   LIKE sy-ucomm&lt;/P&gt;&lt;P&gt;                        sfields TYPE slis_selfield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA l_break TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Rescatar el registro seleccionado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CASE sfields-tabname.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_USER_EXIT'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_user_exit INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_BADI'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_badi INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_BTE'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_bte INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_ENH'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_enh INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_ENHOBJ'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_enhobj INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_FDEX'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_fdex INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_FINAL'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_final INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_SUST'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_sust INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_VAL'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_val INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_CIMP'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_cimp INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Seleccion de opcion.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CASE ucomm.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOUBLE CLICK.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    WHEN '&amp;amp;IC1'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Evaluar valor de campo seleccionado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CHECK NOT sfields-value IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CASE sfields-tabname.&lt;/P&gt;&lt;P&gt;        WHEN 'TI_USER_EXIT'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USER-EXIT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_user_exit-tipo EQ sfields-value(4).&lt;/P&gt;&lt;P&gt;            SEARCH ti_user_exit-cf FOR c_enhance.&lt;/P&gt;&lt;P&gt;            CHECK sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_exit USING ti_user_exit-programa&lt;/P&gt;&lt;P&gt;                                          ti_user_exit-cf.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_user_exit-cf(60) EQ sfields-value.&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_linea USING ti_user_exit-programa&lt;/P&gt;&lt;P&gt;                                           ti_user_exit-linea.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_user_exit-break EQ sfields-value(4)&lt;/P&gt;&lt;P&gt;              OR ti_user_exit-break+1(2) EQ sfields-value(2).&lt;/P&gt;&lt;P&gt;            PERFORM asignar_break USING ti_user_exit-programa&lt;/P&gt;&lt;P&gt;                                        ti_user_exit-linea&lt;/P&gt;&lt;P&gt;                                        ti_user_exit-break.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_FINAL'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USER-EXIT Tx. CMOD.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_final-name EQ sfields-value.&lt;/P&gt;&lt;P&gt;            CALL FUNCTION 'MOD_SAP_HEAD'&lt;/P&gt;&lt;P&gt;              EXPORTING&lt;/P&gt;&lt;P&gt;                mode          = 'SHOM'&lt;/P&gt;&lt;P&gt;                modname       = ti_final-name&lt;/P&gt;&lt;P&gt;              EXCEPTIONS&lt;/P&gt;&lt;P&gt;                attr_enqueued = 1&lt;/P&gt;&lt;P&gt;                text_enqueued = 2&lt;/P&gt;&lt;P&gt;                OTHERS        = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          ELSEIF ti_final-include EQ sfields-value.&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_linea USING ti_final-programa&lt;/P&gt;&lt;P&gt;                                           '1'.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_BADI'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Badi.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_badi-tipo EQ sfields-value(4).&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_badi USING ti_badi-cf.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_badi-cf(60) EQ sfields-value.&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_linea USING ti_badi-programa&lt;/P&gt;&lt;P&gt;                                           ti_badi-linea.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_badi-break EQ sfields-value(4)&lt;/P&gt;&lt;P&gt;              OR ti_badi-break+1(2) EQ sfields-value(2).&lt;/P&gt;&lt;P&gt;            PERFORM asignar_break USING ti_badi-programa&lt;/P&gt;&lt;P&gt;                                        ti_badi-linea&lt;/P&gt;&lt;P&gt;                                        ti_badi-break.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_BTE'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      BTE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_bte-tipo EQ sfields-value(4).&lt;/P&gt;&lt;P&gt;            PERFORM fibf USING ti_bte-cf.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_bte-cf(60) EQ sfields-value.&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_linea USING ti_bte-programa&lt;/P&gt;&lt;P&gt;                                           ti_bte-linea.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_bte-break EQ sfields-value(4)&lt;/P&gt;&lt;P&gt;              OR ti_bte-break+1(2) EQ sfields-value(2).&lt;/P&gt;&lt;P&gt;            PERFORM asignar_break USING ti_bte-programa&lt;/P&gt;&lt;P&gt;                                        ti_bte-linea&lt;/P&gt;&lt;P&gt;                                        ti_bte-break.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_ENH'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Punto de ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_enh-cf(60) EQ sfields-value.&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_linea USING ti_enh-programa&lt;/P&gt;&lt;P&gt;                                           ti_enh-linea.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_enh-tipo EQ sfields-value(4).&lt;/P&gt;&lt;P&gt;            PERFORM bi_se18 USING ti_enh-cf.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_ENHOBJ'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Punto de ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_enhobj-enhname EQ sfields-value(30).&lt;/P&gt;&lt;P&gt;            PERFORM bi_se19 USING ti_enhobj-enhname.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_SUST'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Sustituciones.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_sust-substid  EQ sfields-value(7) OR&lt;/P&gt;&lt;P&gt;             ti_sust-subseqnr EQ sfields-value(3).&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_sust USING ti_sust-substid&lt;/P&gt;&lt;P&gt;                                          ti_sust-subseqnr.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_VAL'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Validaciones.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_val-valid    EQ sfields-value(7) OR&lt;/P&gt;&lt;P&gt;             ti_val-valseqnr EQ sfields-value(3).&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_val USING ti_val-valid&lt;/P&gt;&lt;P&gt;                                         ti_val-valseqnr.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_FDEX'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Field-exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_fdex-tipo EQ sfields-value.&lt;/P&gt;&lt;P&gt;            SUBMIT rsmodprf AND RETURN.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_fdex-cf(60) EQ sfields-value.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo el field-exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            CALL FUNCTION 'RS_FUNCTION_SHOW'&lt;/P&gt;&lt;P&gt;              EXPORTING&lt;/P&gt;&lt;P&gt;                funcname = ti_fdex-cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            CALL FUNCTION 'RS_NAVIGATION_MONITOR'.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_CIMP'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Customer implementation.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          CASE sfields-fieldname.&lt;/P&gt;&lt;P&gt;            WHEN 'ENHNAME'.&lt;/P&gt;&lt;P&gt;              PERFORM bi_se19 USING ti_cimp-enhname.&lt;/P&gt;&lt;P&gt;            WHEN 'ENHINCLUDE'.&lt;/P&gt;&lt;P&gt;              PERFORM visualizar_enh_cf USING ti_cimp-enhinclude.&lt;/P&gt;&lt;P&gt;            WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DO NOTHING !!!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DO NOTHING !!!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    DO NOTHING !!!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF l_break IS NOT INITIAL AND sfields-tabname NE 'TI_CIMP'.&lt;/P&gt;&lt;P&gt;    WAIT UP TO 1 SECONDS.&lt;/P&gt;&lt;P&gt;    PERFORM cargar_break.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  sfields-refresh = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "user_command&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_linea&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la linea de código del programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_linea USING p_programa TYPE sy-repid&lt;/P&gt;&lt;P&gt;                            p_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo la linea seleccionada en el programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_TOOL_ACCESS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      operation           = c_operation&lt;/P&gt;&lt;P&gt;      object_name         = p_programa&lt;/P&gt;&lt;P&gt;      object_type         = c_type&lt;/P&gt;&lt;P&gt;      position            = p_linea&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_executed        = 1&lt;/P&gt;&lt;P&gt;      invalid_object_type = 2&lt;/P&gt;&lt;P&gt;      OTHERS              = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_linea&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_exit&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Buscar USER-EXIT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_exit .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUN USER-EXIT.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_user_exit.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UN USER-EXIT Y SE VERIFICA SI LA LINEA NO ESTA COMENTADA&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS ENDFORM.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_endform.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS PERFORM.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_perform.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LAS ASIGNACIONES.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_igual.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR ti_user_exit.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INÍCIO DEL STRING.&lt;/P&gt;&lt;P&gt;    SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;    MOVE: ti_includes-nome  TO ti_user_exit-programa,&lt;/P&gt;&lt;P&gt;          c_ue              TO ti_user_exit-tipo,&lt;/P&gt;&lt;P&gt;          sy-tabix          TO ti_user_exit-linea,&lt;/P&gt;&lt;P&gt;          ti_programa-cf    TO ti_user_exit-cf,&lt;/P&gt;&lt;P&gt;          ti_includes-nivel TO ti_user_exit-nivel.&lt;/P&gt;&lt;P&gt;    APPEND ti_user_exit.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_badi&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Buscar BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_badi .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_subrc LIKE sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUNA BADI.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_badi.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UNA BADI Y SE VERIFICA SI LA LINEA NO ESTÁ COMENTADA.&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_include.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      CLEAR l_subrc.&lt;/P&gt;&lt;P&gt;      SEARCH ti_programa-cf FOR c_method.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        SEARCH ti_programa-cf FOR c_funcao_2.&lt;/P&gt;&lt;P&gt;        IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;          SEARCH ti_programa-cf FOR c_perform.&lt;/P&gt;&lt;P&gt;          IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;            SEARCH ti_programa-cf FOR c_type_ref.&lt;/P&gt;&lt;P&gt;            IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;              SEARCH ti_programa-cf FOR c_form.&lt;/P&gt;&lt;P&gt;              MOVE '4' TO l_subrc.&lt;/P&gt;&lt;P&gt;            ENDIF.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF l_subrc EQ 0.&lt;/P&gt;&lt;P&gt;        CLEAR ti_badi.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;        SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;        MOVE: ti_includes-nome  TO ti_badi-programa,&lt;/P&gt;&lt;P&gt;              c_b               TO ti_badi-tipo,&lt;/P&gt;&lt;P&gt;              sy-tabix          TO ti_badi-linea,&lt;/P&gt;&lt;P&gt;              ti_programa-cf    TO ti_badi-cf,&lt;/P&gt;&lt;P&gt;              ti_includes-nivel TO ti_badi-nivel.&lt;/P&gt;&lt;P&gt;        APPEND ti_badi.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    CHECK p_handl IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUNA INSTANCIA DE&lt;/P&gt;&lt;P&gt;*- UNA BADI.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_handler.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UNA INSTANCIA DE IMPLEMENACIÓN Y SE VERIFICA SI LA LINEA&lt;/P&gt;&lt;P&gt;*- NO ESTÁ COMENTADA.&lt;/P&gt;&lt;P&gt;    IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;    AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SEARCH ti_programa-cf FOR c_include.&lt;/P&gt;&lt;P&gt;      CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      CLEAR ti_badi.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;      SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;      MOVE: ti_includes-nome  TO ti_badi-programa,&lt;/P&gt;&lt;P&gt;            c_b               TO ti_badi-tipo,&lt;/P&gt;&lt;P&gt;            sy-tabix          TO ti_badi-linea,&lt;/P&gt;&lt;P&gt;            ti_programa-cf    TO ti_badi-cf,&lt;/P&gt;&lt;P&gt;            ti_includes-nivel TO ti_badi-nivel.&lt;/P&gt;&lt;P&gt;      APPEND ti_badi.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_badi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_bte&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Buscar BTE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_bte .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUNA BTE.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_bte.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UNA BTE Y SE VERIFICA SI LA LINEA NO ESTÁ COMENTADA.&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;'OPEN_FI_PERFORM'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE TRAIGA EL LLAMADO A LA FUNCIÓN DE LA BTE.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_funcao_2.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS INCLUDE DEL GRUPO DE FUNCIÓN.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_include.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS ENDFORM.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_endform.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR ti_bte.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;    SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;    MOVE: ti_includes-nome  TO ti_bte-programa,&lt;/P&gt;&lt;P&gt;          c_bt              TO ti_bte-tipo,&lt;/P&gt;&lt;P&gt;          sy-tabix          TO ti_bte-linea,&lt;/P&gt;&lt;P&gt;          ti_programa-cf    TO ti_bte-cf,&lt;/P&gt;&lt;P&gt;          ti_includes-nivel TO ti_bte-nivel.&lt;/P&gt;&lt;P&gt;    APPEND ti_bte.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUNA BTE.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_bte1.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UNA BTE Y SE VERIFICA SI LA LINEA NO ESTÁ COMENTADA.&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;'OUTBOUND_CALL'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE TRAIGA EL LLAMADO A LA FUNCIÓN DE LA BTE.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_funcao_2.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS INCLUDE DEL GRUPO DE FUNCIÓN.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_include.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS ENDFORM.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_endform.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR ti_bte.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;    SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;    MOVE: ti_includes-nome  TO ti_bte-programa,&lt;/P&gt;&lt;P&gt;          c_bt              TO ti_bte-tipo,&lt;/P&gt;&lt;P&gt;          sy-tabix          TO ti_bte-linea,&lt;/P&gt;&lt;P&gt;          ti_programa-cf    TO ti_bte-cf,&lt;/P&gt;&lt;P&gt;          ti_includes-nivel TO ti_bte-nivel.&lt;/P&gt;&lt;P&gt;    APPEND ti_bte.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_bte&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  repid_f4&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Ejecuto el F4 para buscar programas.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM repid_f4 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      object_type          = 'PROG'&lt;/P&gt;&lt;P&gt;      object_name          = p_prog&lt;/P&gt;&lt;P&gt;      suppress_selection   = 'X'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      object_name_selected = p_prog&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      cancel               = 1&lt;/P&gt;&lt;P&gt;      wrong_type           = 2&lt;/P&gt;&lt;P&gt;      OTHERS               = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                    " repid_f4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_badi&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo las definiciones de la BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------" /&gt;&lt;P&gt;ढ़----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_badi  USING p_cf LIKE ti_user_exit-cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_answer(1),&lt;/P&gt;&lt;P&gt;    l_inter_name LIKE sxs_inter-inter_name,&lt;/P&gt;&lt;P&gt;    l_cf TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF lt_cf OCCURS 0,&lt;/P&gt;&lt;P&gt;          linea(500),&lt;/P&gt;&lt;P&gt;        END OF lt_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SEARCH p_cf FOR c_type_ref.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH lt_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_cf = 500 - sy-fdpos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SPLIT p_cf+sy-fdpos(l_cf) AT space INTO TABLE lt_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE lt_cf INDEX 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRANSLATE lt_cf-linea TO UPPER CASE.&lt;/P&gt;&lt;P&gt;  TRANSLATE lt_cf-linea USING '. , '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE lt_cf-linea TO l_inter_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo a partir de la interface la definición de la BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM sxs_inter&lt;/P&gt;&lt;P&gt;    WHERE inter_name EQ l_inter_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Muestro POP-UP para selección de si se desea visualiar la definición&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;o la implementación de la BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'POPUP_WITH_2_BUTTONS_TO_CHOOSE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      defaultoption = '1'&lt;/P&gt;&lt;P&gt;      diagnosetext1 = 'Definición BADI:'&lt;/P&gt;&lt;P&gt;      diagnosetext2 = sxs_inter-exit_name&lt;/P&gt;&lt;P&gt;      diagnosetext3 = '.'&lt;/P&gt;&lt;P&gt;      textline1     = ' '&lt;/P&gt;&lt;P&gt;      textline2     = 'Defina la visualización:'&lt;/P&gt;&lt;P&gt;      textline3     = ' '&lt;/P&gt;&lt;P&gt;      text_option1  = 'Definición BADI'&lt;/P&gt;&lt;P&gt;      text_option2  = 'Implementación BADI'&lt;/P&gt;&lt;P&gt;      titel         = 'Seleccionar tipo:'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      answer        = l_answer.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE l_answer.&lt;/P&gt;&lt;P&gt;    WHEN '1'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo la definición de la BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'SXO_BADI_SHOW'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          exit_name         = sxs_inter-exit_name&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          action_canceled   = 1&lt;/P&gt;&lt;P&gt;          access_failure    = 2&lt;/P&gt;&lt;P&gt;          badi_not_exixting = 3&lt;/P&gt;&lt;P&gt;          OTHERS            = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN '2'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo la implementación de la BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'SXO_IMPL_FOR_BADI_OVER'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          exit_name         = sxs_inter-exit_name&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          no_imps_existing  = 1&lt;/P&gt;&lt;P&gt;          badi_not_existing = 2&lt;/P&gt;&lt;P&gt;          action_canceled   = 3&lt;/P&gt;&lt;P&gt;          OTHERS            = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 1.&lt;/P&gt;&lt;P&gt;        MESSAGE s380(enhancement) WITH sxs_inter-exit_name.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do Nothing !!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_badi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_exit&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo el USER-EXIT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_REPID Nombre del programa.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_CF    Linea de código del programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_exit USING p_repid LIKE sy-repid&lt;/P&gt;&lt;P&gt;                           p_cf    LIKE ti_user_exit-cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_exit        LIKE rs38l-name,&lt;/P&gt;&lt;P&gt;    l_modname     LIKE modact-name,&lt;/P&gt;&lt;P&gt;    l_standard(3) TYPE c,&lt;/P&gt;&lt;P&gt;    l_cf          TYPE i,&lt;/P&gt;&lt;P&gt;    l_linea(500)  TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF lt_cf OCCURS 0,&lt;/P&gt;&lt;P&gt;          linea(500),&lt;/P&gt;&lt;P&gt;        END OF lt_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: d010inc, modsap, modact.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo el programa de control.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM d010inc&lt;/P&gt;&lt;P&gt;    WHERE include EQ p_repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;No se trata de un INCLUDE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MOVE p_repid TO d010inc-master.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SEARCH p_cf FOR c_enhance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH lt_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_cf = 500 - sy-fdpos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE p_cf+sy-fdpos(l_cf) TO l_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SPLIT l_linea AT space INTO TABLE lt_cf.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo la posición del número del exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  READ TABLE lt_cf INDEX 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRANSLATE lt_cf USING ''' '.&lt;/P&gt;&lt;P&gt;  CONDENSE lt_cf NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Armo el nombre del exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CONCATENATE 'EXIT' d010inc-master lt_cf INTO l_exit&lt;/P&gt;&lt;P&gt;    SEPARATED BY '_'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo la ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM modsap&lt;/P&gt;&lt;P&gt;    WHERE member EQ l_exit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico las modificaciones.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM modact&lt;/P&gt;&lt;P&gt;    WHERE member EQ modsap-name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Se encontró el proyecto para la ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MOVE:&lt;/P&gt;&lt;P&gt;      modact-name   TO l_modname,&lt;/P&gt;&lt;P&gt;      c_std_implmnt TO l_standard.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'MOD_COMPONENTS'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        mode               = 'SHOM'&lt;/P&gt;&lt;P&gt;        modname            = l_modname&lt;/P&gt;&lt;P&gt;        p_standard         = l_standard&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        permission_failure = 1&lt;/P&gt;&lt;P&gt;        not_found          = 2&lt;/P&gt;&lt;P&gt;        OTHERS             = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;No hay proyecto para la ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MOVE:&lt;/P&gt;&lt;P&gt;      modsap-name      TO l_modname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'MOD_SAP_HEAD'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        mode          = 'SHOM'&lt;/P&gt;&lt;P&gt;        modname       = l_modname&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        attr_enqueued = 1&lt;/P&gt;&lt;P&gt;        text_enqueued = 2&lt;/P&gt;&lt;P&gt;        OTHERS        = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_field_exit&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Busco los field-exit's de los campos de las DYNPRO's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_field_exit .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF lt_campo OCCURS 0,&lt;/P&gt;&lt;P&gt;          repid     LIKE sy-repid,&lt;/P&gt;&lt;P&gt;          dnum      LIKE d020s-dnum,&lt;/P&gt;&lt;P&gt;          tabname   LIKE dd03l-tabname,&lt;/P&gt;&lt;P&gt;          fieldname LIKE dd03l-fieldname,&lt;/P&gt;&lt;P&gt;        END OF lt_campo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF lt_fe OCCURS 0,&lt;/P&gt;&lt;P&gt;          cf(500),&lt;/P&gt;&lt;P&gt;        END OF lt_fe.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_prog   LIKE sy-repid,&lt;/P&gt;&lt;P&gt;    lt_d020s LIKE d020s OCCURS 0 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;    lt_d021s LIKE d021s OCCURS 0 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;    lt_dd03l LIKE dd03l OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK p_fdex IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR ti_fdex.&lt;/P&gt;&lt;P&gt;  REFRESH: lt_d020s, lt_d021s, lt_dd03l, lt_fe.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE: c_fdex TO ti_fdex-tipo.&lt;/P&gt;&lt;P&gt;  APPEND ti_fdex.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_prog IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    MOVE p_prog   TO l_prog.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MOVE tstc-pgmna TO l_prog.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo las DYNPRO del programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    FROM d020s&lt;/P&gt;&lt;P&gt;    INTO CORRESPONDING FIELDS OF TABLE lt_d020s&lt;/P&gt;&lt;P&gt;    WHERE prog EQ l_prog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT lt_d020s.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;    PERFORM evitar_time_out USING sy-tfill.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    REFRESH lt_d021s.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo los campos de la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SCRP_GET_SCREEN_INFOS'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        dynnr                 = lt_d020s-dnum&lt;/P&gt;&lt;P&gt;        progname              = lt_d020s-prog&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        fieldlist             = lt_d021s&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        dynpro_does_not_exist = 1&lt;/P&gt;&lt;P&gt;        no_field_list         = 2&lt;/P&gt;&lt;P&gt;        cancelled             = 3&lt;/P&gt;&lt;P&gt;        OTHERS                = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Recorro solo los campos de entrada/salida.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    LOOP AT lt_d021s WHERE ityp = 'C'&lt;/P&gt;&lt;P&gt;                        OR ityp = 'N'&lt;/P&gt;&lt;P&gt;                        OR ityp = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SEARCH lt_d021s-fnam FOR '-'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        MOVE:&lt;/P&gt;&lt;P&gt;          lt_d020s-prog TO lt_campo-repid,&lt;/P&gt;&lt;P&gt;          lt_d020s-dnum TO lt_campo-dnum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Separo el campo de la tabla o estructura.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        SPLIT lt_d021s-fnam AT '-' INTO lt_campo-tabname&lt;/P&gt;&lt;P&gt;                                        lt_campo-fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND lt_campo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK lt_campo[] IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT lt_campo BY repid dnum tabname fieldname.&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM lt_campo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo los elementos de datos.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    FROM dd03l&lt;/P&gt;&lt;P&gt;    INTO CORRESPONDING FIELDS OF TABLE lt_dd03l&lt;/P&gt;&lt;P&gt;    FOR ALL ENTRIES IN lt_campo&lt;/P&gt;&lt;P&gt;    WHERE tabname   EQ lt_campo-tabname&lt;/P&gt;&lt;P&gt;      AND fieldname EQ lt_campo-fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT lt_dd03l BY rollname.&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM lt_dd03l.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT lt_dd03l.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR: tddir, tddirs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT SINGLE *&lt;/P&gt;&lt;P&gt;      FROM tddir&lt;/P&gt;&lt;P&gt;      WHERE de EQ lt_dd03l-rollname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;    PERFORM evitar_time_out USING sy-tfill.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF tddir-activ EQ 'S'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Selectivo en dynpros.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      SELECT SINGLE *&lt;/P&gt;&lt;P&gt;        FROM tddirs&lt;/P&gt;&lt;P&gt;        WHERE de    EQ lt_dd03l-rollname&lt;/P&gt;&lt;P&gt;          AND prog  EQ lt_d020s-prog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico si se trata del programa en cuestión.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Armo la FM.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CONCATENATE 'FIELD_EXIT_' lt_dd03l-rollname INTO lt_fe-cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF tddirs-exitnr IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;      CONCATENATE ti_user_exit-cf tddirs-exitnr INTO lt_fe-cf&lt;/P&gt;&lt;P&gt;        SEPARATED BY '_'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    READ TABLE lt_fe WITH KEY cf = lt_fe-cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc IS NOT INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Aún no se encontró el field-exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    APPEND lt_fe.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT lt_fe.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Cargo los field-exit's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MOVE:&lt;/P&gt;&lt;P&gt;      c_fdex   TO ti_fdex-tipo,&lt;/P&gt;&lt;P&gt;      lt_fe-cf TO ti_fdex-cf.&lt;/P&gt;&lt;P&gt;    APPEND ti_fdex.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_field_exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  fibf&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la BTE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_CF  Código fuente&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM fibf  USING p_cf LIKE ti_bte-cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_fdpos       TYPE sy-fdpos,&lt;/P&gt;&lt;P&gt;    l_cf          TYPE i,&lt;/P&gt;&lt;P&gt;    l_tipo        TYPE c,&lt;/P&gt;&lt;P&gt;    l_linea(500)  TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SEARCH p_cf FOR c_bte.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;'OPEN_FI_PERFORM'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    l_fdpos = sy-fdpos + 16.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_cf = 500 - l_fdpos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE p_cf+l_fdpos(l_cf) TO l_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE l_linea+9(1) TO l_tipo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SEARCH p_cf FOR c_bte1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;'OUTBOUND_CALL'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    l_fdpos = sy-fdpos + 14.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_cf = 500 - l_fdpos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE p_cf+l_fdpos(l_cf) TO l_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE l_linea+9(1) TO l_tipo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF l_tipo IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM visualizar_bte USING l_tipo&lt;/P&gt;&lt;P&gt;                                 l_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    CALL TRANSACTION 'FIBF'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " fibf&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  breakpoint&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Seteo los breakpoint para las intancias de las BADI's&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      y para los eventos de las BTE's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM breakpoint .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TYPES: BEGIN OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;  INCLUDE TYPE breakpoint.&lt;/P&gt;&lt;P&gt;  TYPES:   mainprog TYPE trdir-name,&lt;/P&gt;&lt;P&gt;          text(72),&lt;/P&gt;&lt;P&gt;          mark(1).&lt;/P&gt;&lt;P&gt;  TYPES: END OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;  DATA: showbreakpointtab TYPE TABLE OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_badi IS NOT INITIAL AND p_handl IS NOT INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Break en el método GET_INSTANCE de la clase CL_EXITHANDLER para&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;obtener la definiciones de las BADI's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = '25'&lt;/P&gt;&lt;P&gt;        program      = 'CL_EXITHANDLER================CM001'&lt;/P&gt;&lt;P&gt;        mainprogram  = 'CL_EXITHANDLER================CP'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_bte IS NOT INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Break en el módulo de funciones BF_FUNCTIONS_FIND para obtener los&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;eventos de las BTE's de proceso.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = '15'&lt;/P&gt;&lt;P&gt;        program      = 'LITSRU02'&lt;/P&gt;&lt;P&gt;        mainprogram  = 'SAPLITSR'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Break en el módulo de funciones PC_FUNCTION_FIND para obtener los&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;eventos de las P&amp;amp;S (publicación y suscripción) BTE's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = '18'&lt;/P&gt;&lt;P&gt;        program      = 'LITSRU07'&lt;/P&gt;&lt;P&gt;        mainprogram  = 'SAPLITSR'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_sust IS NOT INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Break en el módulo de funciones G_VSR_SUBSTITUTION_CALL del cual se&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;desprende el llamado a las sustituciones.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = '42'&lt;/P&gt;&lt;P&gt;        program      = 'LGBL5U04'&lt;/P&gt;&lt;P&gt;        mainprogram  = 'SAPLGBL5'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Break en el módulo de funciones G_VSR_MULTI_SUBSTITUTION_CALL del cual&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;se desprende el llamado a las sustituciones.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = '21'&lt;/P&gt;&lt;P&gt;        program      = 'LGBL5U09'&lt;/P&gt;&lt;P&gt;        mainprogram  = 'SAPLGBL5'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_val IS NOT INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Break en el módulo de funciones G_VSR_VALIDATION_CALL del cual se&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;desprende el llamado a las validaciones.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = '30'&lt;/P&gt;&lt;P&gt;        program      = 'LGBL5U01'&lt;/P&gt;&lt;P&gt;        mainprogram  = 'SAPLGBL5'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Break en el módulo de funciones G_VSR_MULTI_VALIDATION_CALL del cual&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;se desprende el llamado a las validaciones.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = '15'&lt;/P&gt;&lt;P&gt;        program      = 'LGBL5U08'&lt;/P&gt;&lt;P&gt;        mainprogram  = 'SAPLGBL5'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo todos los breakpoint.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_SHOW_BREAKPOINTS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      objektinfp  = '*'&lt;/P&gt;&lt;P&gt;      objekttypp  = 'PG'&lt;/P&gt;&lt;P&gt;      text1p      = ' '&lt;/P&gt;&lt;P&gt;      text2p      = ' '&lt;/P&gt;&lt;P&gt;      text3p      = ' '&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      breakpoints = showbreakpointtab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " breakpoint&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_badi&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_badi .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_BADI'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'PROGRAMA'  'X' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ' c_text_01,&lt;/P&gt;&lt;P&gt;  'TIPO'      'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_05,&lt;/P&gt;&lt;P&gt;  'NIVEL'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_02,&lt;/P&gt;&lt;P&gt;  'BREAK'     'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_07,&lt;/P&gt;&lt;P&gt;  'LINEA'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_03,&lt;/P&gt;&lt;P&gt;  'CF'        ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_04.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_badi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_bte&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_bte .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_BTE'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'PROGRAMA'  'X' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ' c_text_01,&lt;/P&gt;&lt;P&gt;  'TIPO'      'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_05,&lt;/P&gt;&lt;P&gt;  'NIVEL'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_02,&lt;/P&gt;&lt;P&gt;  'BREAK'     'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' 'X' c_text_07,&lt;/P&gt;&lt;P&gt;  'LINEA'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_03,&lt;/P&gt;&lt;P&gt;  'CF'        ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_04.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_bte&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_FDEX&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_fdex .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_FDEX'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'TIPO'      'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_05,&lt;/P&gt;&lt;P&gt;  'CF'        ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_04.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_FDEX&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  cargar_break&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Cargo los break-points en las tablas correspondientes.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM cargar_break .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TYPES: BEGIN OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;  INCLUDE TYPE breakpoint.&lt;/P&gt;&lt;P&gt;  TYPES:   mainprog TYPE trdir-name,&lt;/P&gt;&lt;P&gt;          text(72),&lt;/P&gt;&lt;P&gt;          mark(1).&lt;/P&gt;&lt;P&gt;  TYPES: END OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tabix   TYPE sy-tabix,&lt;/P&gt;&lt;P&gt;    l_line    TYPE breakpoint-line,&lt;/P&gt;&lt;P&gt;    l_program TYPE breakpoint-program,&lt;/P&gt;&lt;P&gt;    wa_break  TYPE showbreakpointstruc,&lt;/P&gt;&lt;P&gt;    lt_break  TYPE TABLE OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo todos los breakpoints marcados.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_GET_ALL_BREAKPOINTS'&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      breakpointtab = lt_break.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK lt_break[] IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_ue IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    LOOP AT ti_user_exit.&lt;/P&gt;&lt;P&gt;      l_tabix = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        ti_user_exit-linea    TO l_line,&lt;/P&gt;&lt;P&gt;        ti_user_exit-programa TO l_program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      READ TABLE lt_break INTO wa_break&lt;/P&gt;&lt;P&gt;                          WITH KEY program = l_program&lt;/P&gt;&lt;P&gt;                                   line    = l_line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;        MOVE icon_breakpoint TO ti_user_exit-break.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        MOVE icon_space TO ti_user_exit-break.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      MODIFY ti_user_exit INDEX l_tabix.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_badi IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    LOOP AT ti_badi.&lt;/P&gt;&lt;P&gt;      l_tabix = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        ti_badi-linea    TO l_line,&lt;/P&gt;&lt;P&gt;        ti_badi-programa TO l_program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      READ TABLE lt_break INTO wa_break&lt;/P&gt;&lt;P&gt;                          WITH KEY program = l_program&lt;/P&gt;&lt;P&gt;                                   line    = l_line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;        MOVE icon_breakpoint TO ti_badi-break.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        MOVE icon_space TO ti_badi-break.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      MODIFY ti_badi INDEX l_tabix.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_bte IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    LOOP AT ti_bte.&lt;/P&gt;&lt;P&gt;      l_tabix = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        ti_bte-linea    TO l_line,&lt;/P&gt;&lt;P&gt;        ti_bte-programa TO l_program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      READ TABLE lt_break INTO wa_break&lt;/P&gt;&lt;P&gt;                          WITH KEY program = l_program&lt;/P&gt;&lt;P&gt;                                   line    = l_line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;        MOVE icon_breakpoint TO ti_bte-break.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        MOVE icon_space TO ti_bte-break.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      MODIFY ti_bte INDEX l_tabix.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " cargar_break&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  asignar_break&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Asigno el break a la linea.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_PROGRAMA  text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_LINEA  text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_BREAK  text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM asignar_break  USING p_programa TYPE sy-repid&lt;/P&gt;&lt;P&gt;                          p_linea    LIKE ti_bte-linea&lt;/P&gt;&lt;P&gt;                          p_break    TYPE icon-id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TYPES: BEGIN OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;  INCLUDE TYPE breakpoint.&lt;/P&gt;&lt;P&gt;  TYPES:   mainprog TYPE trdir-name,&lt;/P&gt;&lt;P&gt;          text(72),&lt;/P&gt;&lt;P&gt;          mark(1).&lt;/P&gt;&lt;P&gt;  TYPES: END OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;  DATA: showbreakpointtab TYPE TABLE OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tabix   TYPE sy-tabix,&lt;/P&gt;&lt;P&gt;    l_line    TYPE breakpoint-line,&lt;/P&gt;&lt;P&gt;    l_program TYPE breakpoint-program,&lt;/P&gt;&lt;P&gt;    wa_break  TYPE showbreakpointstruc,&lt;/P&gt;&lt;P&gt;    lt_break  TYPE TABLE OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo todos los breakpoints marcados.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_GET_ALL_BREAKPOINTS'&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      breakpointtab = lt_break.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM d010inc&lt;/P&gt;&lt;P&gt;    WHERE include = p_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    MOVE p_programa TO d010inc-master.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE:&lt;/P&gt;&lt;P&gt;    p_linea    TO l_line,&lt;/P&gt;&lt;P&gt;    p_programa TO l_program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE lt_break INTO wa_break&lt;/P&gt;&lt;P&gt;                      WITH KEY program = l_program&lt;/P&gt;&lt;P&gt;                               line    = l_line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Borro el break.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_DELETE_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index    = p_linea&lt;/P&gt;&lt;P&gt;        mainprog = d010inc-master&lt;/P&gt;&lt;P&gt;        program  = p_programa.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Seteo el breakpoint.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = p_linea&lt;/P&gt;&lt;P&gt;        program      = p_programa&lt;/P&gt;&lt;P&gt;        mainprogram  = d010inc-master&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo todos los breakpoint.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_SHOW_BREAKPOINTS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      objektinfp  = '*'&lt;/P&gt;&lt;P&gt;      objekttypp  = 'PG'&lt;/P&gt;&lt;P&gt;      text1p      = ' '&lt;/P&gt;&lt;P&gt;      text2p      = ' '&lt;/P&gt;&lt;P&gt;      text3p      = ' '&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      breakpoints = showbreakpointtab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " asignar_break&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_user_exit&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Obtengo los user-exits.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_user_exit .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_prog IS INITIAL.&lt;/P&gt;&lt;P&gt;    MOVE tstc-pgmna TO p_prog.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM get_objects.     "Get Objects&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_user_exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp; Form get_objects&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get Objects&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM get_objects.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_fname LIKE rs38l-name,&lt;/P&gt;&lt;P&gt;    l_group LIKE rs38l-area,&lt;/P&gt;&lt;P&gt;    l_include LIKE rs38l-include,&lt;/P&gt;&lt;P&gt;    l_namespace LIKE rs38l-namespace,&lt;/P&gt;&lt;P&gt;    l_str_area LIKE rs38l-str_area.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: v_include LIKE rodiobj-iobjnm.&lt;/P&gt;&lt;P&gt;  DATA: e_t_include TYPE STANDARD TABLE OF abapsource WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_line TYPE string,&lt;/P&gt;&lt;P&gt;    l_tabix LIKE sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT obj_name devclass&lt;/P&gt;&lt;P&gt;    INTO TABLE ti_tadir&lt;/P&gt;&lt;P&gt;    FROM tadir&lt;/P&gt;&lt;P&gt;    WHERE pgmid    = 'R3TR' AND&lt;/P&gt;&lt;P&gt;          object   = 'PROG' AND&lt;/P&gt;&lt;P&gt;          obj_name = p_prog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SORT ti_tadir BY obj_name devclass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT obj_name&lt;/P&gt;&lt;P&gt;      INTO TABLE ti_jtab&lt;/P&gt;&lt;P&gt;      FROM tadir&lt;/P&gt;&lt;P&gt;      FOR ALL ENTRIES IN ti_tadir&lt;/P&gt;&lt;P&gt;      WHERE pgmid    = 'R3TR' AND&lt;/P&gt;&lt;P&gt;            object   = 'SMOD' AND&lt;/P&gt;&lt;P&gt;            devclass = ti_tadir-devclass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      SORT ti_jtab BY obj_name.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- Get UserExit names&lt;/P&gt;&lt;P&gt;  LOOP AT ti_jtab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT name member&lt;/P&gt;&lt;P&gt;      INTO (ti_final-name, ti_final-member)&lt;/P&gt;&lt;P&gt;      FROM modsap&lt;/P&gt;&lt;P&gt;      WHERE name = ti_jtab-obj_name AND&lt;/P&gt;&lt;P&gt;            typ  = 'E'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      APPEND ti_final.&lt;/P&gt;&lt;P&gt;      CLEAR ti_final.&lt;/P&gt;&lt;P&gt;    ENDSELECT.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;*- Process it_final contents.&lt;/P&gt;&lt;P&gt;  LOOP AT ti_final.&lt;/P&gt;&lt;P&gt;    l_tabix = sy-tabix.&lt;/P&gt;&lt;P&gt;    CLEAR:&lt;/P&gt;&lt;P&gt;      l_fname, l_group, l_include, l_namespace, l_str_area.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_fname = ti_final-member.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'FUNCTION_EXISTS'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        funcname           = l_fname&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        group              = l_group&lt;/P&gt;&lt;P&gt;        include            = l_include&lt;/P&gt;&lt;P&gt;        namespace          = l_namespace&lt;/P&gt;&lt;P&gt;        str_area           = l_str_area&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        function_not_exist = 1&lt;/P&gt;&lt;P&gt;        OTHERS             = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      IF NOT l_include IS INITIAL.&lt;/P&gt;&lt;P&gt;*- Get Source code of include.&lt;/P&gt;&lt;P&gt;        CLEAR: v_include, e_t_include, e_t_include[].&lt;/P&gt;&lt;P&gt;        v_include = l_include.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'MU_INCLUDE_GET'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            i_include   = v_include&lt;/P&gt;&lt;P&gt;          TABLES&lt;/P&gt;&lt;P&gt;            e_t_include = e_t_include.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        LOOP AT e_t_include.&lt;/P&gt;&lt;P&gt;          IF e_t_include-line CS 'INCLUDE'.&lt;/P&gt;&lt;P&gt;            CLEAR l_line.&lt;/P&gt;&lt;P&gt;            l_line = e_t_include-line.&lt;/P&gt;&lt;P&gt;            CONDENSE l_line NO-GAPS.&lt;/P&gt;&lt;P&gt;            TRANSLATE l_line USING '. '.&lt;/P&gt;&lt;P&gt;            l_line = l_line+7.&lt;/P&gt;&lt;P&gt;            ti_final-include  = l_line.&lt;/P&gt;&lt;P&gt;            ti_final-programa = l_include.&lt;/P&gt;&lt;P&gt;            MODIFY ti_final INDEX l_tabix&lt;/P&gt;&lt;P&gt;              TRANSPORTING include programa.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CLEAR tftit.&lt;/P&gt;&lt;P&gt;        SELECT SINGLE stext&lt;/P&gt;&lt;P&gt;          INTO ti_final-stext&lt;/P&gt;&lt;P&gt;          FROM tftit&lt;/P&gt;&lt;P&gt;          WHERE spras = sy-langu AND&lt;/P&gt;&lt;P&gt;                funcname = ti_final-member.&lt;/P&gt;&lt;P&gt;        MODIFY ti_final INDEX l_tabix TRANSPORTING stext.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                         " get_objects&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_uexit&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_uexit .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_FINAL'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'NAME'      'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'MEMBER'    'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'STEXT'     ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'INCLUDE'   ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'PROGRAMA'  ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'X' ' ' ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_uexit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_ampliacion&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la ampliación de un exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_ampliacion .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_ret     TYPE c,&lt;/P&gt;&lt;P&gt;    l_member  TYPE modsap-member,&lt;/P&gt;&lt;P&gt;    lt_fields TYPE sval OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE:&lt;/P&gt;&lt;P&gt;    'MODSAP'    TO lt_fields-tabname,&lt;/P&gt;&lt;P&gt;    'MEMBER'    TO lt_fields-fieldname,&lt;/P&gt;&lt;P&gt;    'User-Exit' TO lt_fields-fieldtext.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND lt_fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'POPUP_GET_VALUES'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      popup_title     = 'Ingrese user-exit:'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      returncode      = l_ret&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      fields          = lt_fields&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      error_in_fields = 1&lt;/P&gt;&lt;P&gt;      OTHERS          = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico que no haya cancelado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CHECK l_ret NE 'A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE lt_fields INDEX 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF lt_fields-value IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  El exit de función &amp;amp; no existe&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MESSAGE e015(enhancement) WITH lt_fields-value.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MOVE lt_fields-value TO l_member.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM modsap&lt;/P&gt;&lt;P&gt;    WHERE member EQ l_member.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo la ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'MOD_SAP_HEAD'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        mode          = 'SHOM'&lt;/P&gt;&lt;P&gt;        modname       = modsap-name&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        attr_enqueued = 1&lt;/P&gt;&lt;P&gt;        text_enqueued = 2&lt;/P&gt;&lt;P&gt;        OTHERS        = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  El exit de función &amp;amp; no existe&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MESSAGE e015(enhancement) WITH l_member.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_ampliacion&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_bte&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la BTE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_TIPO   Tipo de BTE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_LINEA  Evento o proceso.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_bte  USING p_tipo  TYPE c&lt;/P&gt;&lt;P&gt;                           p_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  RANGES:&lt;/P&gt;&lt;P&gt;    r_event FOR tbe01-event,&lt;/P&gt;&lt;P&gt;    r_procs FOR tps01-procs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: r_event, r_procs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE p_tipo.&lt;/P&gt;&lt;P&gt;    WHEN 'E'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Interface de publicación y suscripción.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        'I'          TO r_event-sign,&lt;/P&gt;&lt;P&gt;        'EQ'         TO r_event-option,&lt;/P&gt;&lt;P&gt;        p_linea(8)   TO r_event-low.&lt;/P&gt;&lt;P&gt;      APPEND r_event.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SUBMIT rfopfi00&lt;/P&gt;&lt;P&gt;             WITH event IN r_event&lt;/P&gt;&lt;P&gt;             WITH xonlk = ' '&lt;/P&gt;&lt;P&gt;             AND RETURN.&lt;/P&gt;&lt;P&gt;    WHEN 'P'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Interface de proceso.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        'I'          TO r_procs-sign,&lt;/P&gt;&lt;P&gt;        'EQ'         TO r_procs-option,&lt;/P&gt;&lt;P&gt;        p_linea(8)   TO r_procs-low.&lt;/P&gt;&lt;P&gt;      APPEND r_procs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SUBMIT rfopfi01&lt;/P&gt;&lt;P&gt;             WITH procs IN r_procs&lt;/P&gt;&lt;P&gt;             WITH xonlk = ' '&lt;/P&gt;&lt;P&gt;             AND RETURN.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do nothing !!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_bte&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  cargar_bte&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Ingreso la BTE que quiero visualizar.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_TIPO   Tipo de BTE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM cargar_bte  USING p_tipo TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_linea(500)  TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_ret     TYPE c,&lt;/P&gt;&lt;P&gt;    lt_fields TYPE sval OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE p_tipo.&lt;/P&gt;&lt;P&gt;    WHEN 'E'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Interface de publicación y suscripción.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        'TBE01' TO lt_fields-tabname,&lt;/P&gt;&lt;P&gt;        'EVENT' TO lt_fields-fieldname.&lt;/P&gt;&lt;P&gt;    WHEN 'P'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Interface de proceso.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        'TPS01' TO lt_fields-tabname,&lt;/P&gt;&lt;P&gt;        'PROCS' TO lt_fields-fieldname.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do nothing !!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;  APPEND lt_fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'POPUP_GET_VALUES'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      popup_title     = 'Ingrese BTE:'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      returncode      = l_ret&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      fields          = lt_fields&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      error_in_fields = 1&lt;/P&gt;&lt;P&gt;      OTHERS          = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico que no haya cancelado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CHECK l_ret NE 'A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE lt_fields INDEX 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE lt_fields-value TO l_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM visualizar_bte USING p_tipo&lt;/P&gt;&lt;P&gt;                               l_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " cargar_bte&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_interface&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la definición de la BADI que corresponde a la&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      interface.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_interface .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_linea(500)  TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_ret        TYPE c,&lt;/P&gt;&lt;P&gt;    l_inter_name TYPE sxs_inter-inter_name,&lt;/P&gt;&lt;P&gt;    lt_fields    TYPE sval OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Interface.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  MOVE:&lt;/P&gt;&lt;P&gt;    'SXS_INTER'  TO lt_fields-tabname,&lt;/P&gt;&lt;P&gt;    'INTER_NAME' TO lt_fields-fieldname.&lt;/P&gt;&lt;P&gt;  APPEND lt_fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'POPUP_GET_VALUES'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      popup_title     = 'Ingrese interface:'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      returncode      = l_ret&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      fields          = lt_fields&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      error_in_fields = 1&lt;/P&gt;&lt;P&gt;      OTHERS          = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico que no haya cancelado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CHECK l_ret NE 'A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE lt_fields INDEX 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRANSLATE lt_fields-value TO UPPER CASE.&lt;/P&gt;&lt;P&gt;  MOVE lt_fields-value TO l_inter_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo a partir de la interface la definición de la BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM sxs_inter&lt;/P&gt;&lt;P&gt;    WHERE inter_name EQ l_inter_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo la definición de la BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'SXO_BADI_SHOW'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        exit_name         = sxs_inter-exit_name&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        action_canceled   = 1&lt;/P&gt;&lt;P&gt;        access_failure    = 2&lt;/P&gt;&lt;P&gt;        badi_not_exixting = 3&lt;/P&gt;&lt;P&gt;        OTHERS            = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  El interface &amp;amp; es erróneo.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MESSAGE e226(enhancement) WITH l_inter_name.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "visualizar_interface&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_sustituciones&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Obtengo las sustituciones creadas.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_sustituciones .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK p_sust IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    INTO CORRESPONDING FIELDS OF TABLE ti_sust&lt;/P&gt;&lt;P&gt;    FROM gb922.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_sustituciones&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_sust&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_sust .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_SUST'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'SUBSTID'   'X' ' ' 'X' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'SUBSEQNR'  'X' ' ' 'X' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'CONSEQNR'  'X' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'SUBSTAB'   ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'SUBSFIELD' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'SUBSVAL'   ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'EXITSUBST' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_sust&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_SUST&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_sust.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_sust.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'Sustituciones'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_SUST&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_sust&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la sustitución.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_SUBSTID  Nombre de la sustitución&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_SUBSEQNR Número de paso de la sustitución&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_sust  USING p_substid  TYPE gb922-substid&lt;/P&gt;&lt;P&gt;                            p_subseqnr TYPE gb922-subseqnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_valuser LIKE gb31-valuser,&lt;/P&gt;&lt;P&gt;    l_valeven LIKE gb31-valevent.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'G_BOOL_EXIST_SUBSTITUTION'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      substitution = p_substid&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      valevent_fnd = l_valeven&lt;/P&gt;&lt;P&gt;      valuser_fnd  = l_valuser&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_found    = 1&lt;/P&gt;&lt;P&gt;      OTHERS       = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'G_SUBSTITUTION_ENVIRONMENT'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      bsubevent         = 'X'&lt;/P&gt;&lt;P&gt;      bsubuser          = 'X'&lt;/P&gt;&lt;P&gt;      subevent          = l_valeven&lt;/P&gt;&lt;P&gt;      substid           = p_substid&lt;/P&gt;&lt;P&gt;      subuser           = l_valuser&lt;/P&gt;&lt;P&gt;      view_only         = 'X'&lt;/P&gt;&lt;P&gt;      action_mode       = 'V'&lt;/P&gt;&lt;P&gt;      skip_first_screen = 'X'&lt;/P&gt;&lt;P&gt;      step              = p_subseqnr&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_found         = 1&lt;/P&gt;&lt;P&gt;      OTHERS            = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_sust&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_validaciones&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Obtengo las validaciones creadas.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_validaciones .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK p_val IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    INTO CORRESPONDING FIELDS OF TABLE ti_val&lt;/P&gt;&lt;P&gt;    FROM gb931.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_validaciones&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_val&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_val .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_VAL'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'VALID'     'X' ' ' 'X' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'VALSEQNR'  'X' ' ' 'X' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'CONDID'    ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'CHECKID'   ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_val&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_VAL&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_val.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_val.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'Validaciones'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_VAL&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_val&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la validación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_VALID    Validación&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_VALSEQNR Número secuencial de una etapa de validación&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_val  USING p_valid    TYPE gb931-valid&lt;/P&gt;&lt;P&gt;                           p_valseqnr TYPE gb931-valseqnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_valuser LIKE gb31-valuser,&lt;/P&gt;&lt;P&gt;    l_valeven LIKE gb31-valevent.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'G_BOOL_EXIST_VALIDATION'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      validation   = p_valid&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      valuser_fnd  = l_valuser&lt;/P&gt;&lt;P&gt;      valevent_fnd = l_valeven&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_found    = 1&lt;/P&gt;&lt;P&gt;      null_id      = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'G_VALIDATION_ENVIRONMENT'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      action_mode       = 'V'&lt;/P&gt;&lt;P&gt;      skip_first_screen = 'X'&lt;/P&gt;&lt;P&gt;      bvalevent         = 'X'&lt;/P&gt;&lt;P&gt;      bvaluser          = 'X'&lt;/P&gt;&lt;P&gt;      valid             = p_valid&lt;/P&gt;&lt;P&gt;      valuser           = l_valuser&lt;/P&gt;&lt;P&gt;      valevent          = l_valeven&lt;/P&gt;&lt;P&gt;      view_only         = 'X'&lt;/P&gt;&lt;P&gt;      step              = p_valseqnr&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_found         = 1&lt;/P&gt;&lt;P&gt;      OTHERS            = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_val&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_proyecto&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo el proyecto asosiado a una ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_proyecto .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_ret     TYPE c,&lt;/P&gt;&lt;P&gt;    l_name    TYPE modsap-name,&lt;/P&gt;&lt;P&gt;    l_member  TYPE modact-member,&lt;/P&gt;&lt;P&gt;    l_modname TYPE modact-name,&lt;/P&gt;&lt;P&gt;    l_standard(3) TYPE c,&lt;/P&gt;&lt;P&gt;    lt_fields TYPE sval OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE:&lt;/P&gt;&lt;P&gt;    'MODSAP' TO lt_fields-tabname,&lt;/P&gt;&lt;P&gt;    'NAME'   TO lt_fields-fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND lt_fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'POPUP_GET_VALUES'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      popup_title     = 'Ingrese ampliación:'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      returncode      = l_ret&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      fields          = lt_fields&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      error_in_fields = 1&lt;/P&gt;&lt;P&gt;      OTHERS          = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico que no haya cancelado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CHECK l_ret NE 'A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE lt_fields INDEX 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF lt_fields-value IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  La ampliación &amp;amp; no existe&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MESSAGE e012(enhancement) WITH lt_fields-value.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MOVE lt_fields-value TO l_name.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM modsap&lt;/P&gt;&lt;P&gt;    WHERE name EQ l_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE l_name TO l_member.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT SINGLE *&lt;/P&gt;&lt;P&gt;      FROM modact&lt;/P&gt;&lt;P&gt;      WHERE member EQ l_member.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Se encontró el proyecto para la ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        modact-name   TO l_modname,&lt;/P&gt;&lt;P&gt;        c_std_implmnt TO l_standard.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'MOD_COMPONENTS'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          mode               = 'SHOM'&lt;/P&gt;&lt;P&gt;          modname            = l_modname&lt;/P&gt;&lt;P&gt;          p_standard         = l_standard&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          permission_failure = 1&lt;/P&gt;&lt;P&gt;          not_found          = 2&lt;/P&gt;&lt;P&gt;          OTHERS             = 3.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Indicar un proyecto de ampliación&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MESSAGE e398(00)&lt;/P&gt;&lt;P&gt;        WITH 'La ampliación ' l_name ' no tiene proyecto.'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  La ampliación &amp;amp; no existe&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MESSAGE e012(enhancement) WITH lt_fields-value.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_proyecto&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_punto_ampliación&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Obtengo los puntos de ampliación ya implementados.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_punto_ampliacion .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUN PUNTO DE&lt;/P&gt;&lt;P&gt;*- AMPLIACIÓN.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_enh1.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UN PUNTO DE AMPLIACIÓN Y SE VERIFICA SI LA LINEA NO ESTÁ&lt;/P&gt;&lt;P&gt;*- COMENTADA.&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS INCLUDE DEL GRUPO DE FUNCIÓN.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_include.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS ENDENHANCEMENT.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_endenh.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS END-ENHANCEMENT-SECTION.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_endenh1.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR ti_enh.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;    SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;    MOVE: ti_includes-nome  TO ti_enh-programa,&lt;/P&gt;&lt;P&gt;          c_enht            TO ti_enh-tipo,&lt;/P&gt;&lt;P&gt;          sy-tabix          TO ti_enh-linea,&lt;/P&gt;&lt;P&gt;          ti_programa-cf    TO ti_enh-cf,&lt;/P&gt;&lt;P&gt;          ti_includes-nivel TO ti_enh-nivel.&lt;/P&gt;&lt;P&gt;    APPEND ti_enh.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUN PUNTO DE&lt;/P&gt;&lt;P&gt;*- AMPLIACIÓN.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_enh2.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UN PUNTO DE AMPLIACIÓN Y SE VERIFICA SI LA LINEA NO ESTÁ&lt;/P&gt;&lt;P&gt;*- COMENTADA.&lt;/P&gt;&lt;P&gt;    IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;    AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS ENDENHANCEMENT.&lt;/P&gt;&lt;P&gt;      SEARCH ti_programa-cf FOR c_endenh.&lt;/P&gt;&lt;P&gt;      CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS END-ENHANCEMENT-SECTION.&lt;/P&gt;&lt;P&gt;      SEARCH ti_programa-cf FOR c_endenh1.&lt;/P&gt;&lt;P&gt;      CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR ti_enh.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;      SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;      MOVE: ti_includes-nome  TO ti_enh-programa,&lt;/P&gt;&lt;P&gt;            c_enht            TO ti_enh-tipo,&lt;/P&gt;&lt;P&gt;            sy-tabix          TO ti_enh-linea,&lt;/P&gt;&lt;P&gt;            ti_programa-cf    TO ti_enh-cf,&lt;/P&gt;&lt;P&gt;            ti_includes-nivel TO ti_enh-nivel.&lt;/P&gt;&lt;P&gt;      APPEND ti_enh.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUN PUNTO DE&lt;/P&gt;&lt;P&gt;*- AMPLIACIÓN.&lt;/P&gt;&lt;P&gt;      SEARCH ti_programa-cf FOR c_enh.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UN PUNTO DE AMPLIACIÓN Y SE VERIFICA SI LA LINEA NO ESTÁ&lt;/P&gt;&lt;P&gt;*- COMENTADA.&lt;/P&gt;&lt;P&gt;      IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;      AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE TRAIGA LOS ENHANCEMENT.&lt;/P&gt;&lt;P&gt;        CHECK ti_programa-cf(11) EQ c_enh.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CLEAR ti_enh.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;        SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;        MOVE: ti_includes-nome  TO ti_enh-programa,&lt;/P&gt;&lt;P&gt;              c_enht            TO ti_enh-tipo,&lt;/P&gt;&lt;P&gt;              sy-tabix          TO ti_enh-linea,&lt;/P&gt;&lt;P&gt;              ti_programa-cf    TO ti_enh-cf,&lt;/P&gt;&lt;P&gt;              ti_includes-nivel TO ti_enh-nivel.&lt;/P&gt;&lt;P&gt;        APPEND ti_enh.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_punto_ampliación&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_enh&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_enh .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_ENH'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'PROGRAMA'  'X' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ' c_text_01,&lt;/P&gt;&lt;P&gt;  'TIPO'      'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_05,&lt;/P&gt;&lt;P&gt;  'NIVEL'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_02,&lt;/P&gt;&lt;P&gt;  'BREAK'     'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' 'X' c_text_07,&lt;/P&gt;&lt;P&gt;  'LINEA'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_03,&lt;/P&gt;&lt;P&gt;  'CF'        ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_04.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_enh&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_enh&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Busco los puntos de ampliación del programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_enh .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; DATA:&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   l_obj_name TYPE enhobj-obj_name.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF lt_obj_name OCCURS 0,&lt;/P&gt;&lt;P&gt;          obj_name TYPE enhobj-obj_name,&lt;/P&gt;&lt;P&gt;        END OF lt_obj_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK p_enh IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF p_prog IS NOT INITIAL.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   MOVE p_prog TO l_obj_name.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ELSE.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   MOVE tstc-pgmna TO l_obj_name.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH lt_obj_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT ti_includes.&lt;/P&gt;&lt;P&gt;    APPEND ti_includes-nome TO lt_obj_name.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT enhname version obj_type obj_name&lt;/P&gt;&lt;P&gt;    INTO CORRESPONDING FIELDS OF TABLE ti_enhobj&lt;/P&gt;&lt;P&gt;    FROM enhobj&lt;/P&gt;&lt;P&gt;    FOR ALL ENTRIES IN lt_obj_name&lt;/P&gt;&lt;P&gt;    WHERE obj_type EQ 'PROG'&lt;/P&gt;&lt;P&gt;      AND obj_name EQ lt_obj_name-obj_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_enh&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_enhobj&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_enhobj .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_ENHOBJ'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'ENHNAME'   'X' ' ' 'X' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'VERSION'   'X' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'OBJ_TYPE'  ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'X' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'OBJ_NAME'  ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_enhobj&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_ENHOBJ&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_enhobj.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_enhobj.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'Puntos de ampliación'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_ENHOBJ&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  bi_se19&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo el punto de ampliación implementado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_ENHNAME  Punto de ampliación implementado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM bi_se19  USING p_enhname TYPE enhobj-enhname .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo la linea seleccionada en el programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_TOOL_ACCESS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      operation           = c_operation&lt;/P&gt;&lt;P&gt;      object_name         = p_enhname&lt;/P&gt;&lt;P&gt;      object_type         = 'ENHO'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_executed        = 1&lt;/P&gt;&lt;P&gt;      invalid_object_type = 2&lt;/P&gt;&lt;P&gt;      OTHERS              = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                    " bi_se19&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  BDC_DYNPRO&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM bdc_dynpro USING program dynpro.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR ti_bdcdata.&lt;/P&gt;&lt;P&gt;  ti_bdcdata-program  = program.&lt;/P&gt;&lt;P&gt;  ti_bdcdata-dynpro   = dynpro.&lt;/P&gt;&lt;P&gt;  ti_bdcdata-dynbegin = 'X'.&lt;/P&gt;&lt;P&gt;  APPEND ti_bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " BDC_DYNPRO&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  BDC_FIELD&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM bdc_field USING fnam fval.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR ti_bdcdata.&lt;/P&gt;&lt;P&gt;  ti_bdcdata-fnam = fnam.&lt;/P&gt;&lt;P&gt;  ti_bdcdata-fval = fval.&lt;/P&gt;&lt;P&gt;  APPEND ti_bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "BDC_FIELD&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_programa&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo el programa que se genera dinámicamente para las&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      sustituciones y validaciones de FI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_programa .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_selfield     TYPE slis_selfield,&lt;/P&gt;&lt;P&gt;    l_exit         TYPE c,&lt;/P&gt;&lt;P&gt;    l_repid        TYPE sy-repid,&lt;/P&gt;&lt;P&gt;    l_boolpool(8).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK ti_gb31t[] IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo los distintos eventos para que puedan realizar la selección.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_title          = 'Validación/Sustitución Evento'&lt;/P&gt;&lt;P&gt;        i_zebra          = 'X'&lt;/P&gt;&lt;P&gt;        i_tabname        = 'TI_GB31T'&lt;/P&gt;&lt;P&gt;        i_structure_name = 'GB31T'&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        es_selfield      = l_selfield&lt;/P&gt;&lt;P&gt;        e_exit           = l_exit&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab         = ti_gb31t&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error    = 1&lt;/P&gt;&lt;P&gt;        OTHERS           = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF l_exit EQ 'X'.&lt;/P&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CHECK l_exit IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo el nombre del programa de sustitución y validación asociado&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;a la selección del usuario.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    PERFORM create_bool_filename(saplgbl5)&lt;/P&gt;&lt;P&gt;              USING    ti_gb31t-valuser&lt;/P&gt;&lt;P&gt;                       ti_gb31t-valevent&lt;/P&gt;&lt;P&gt;              CHANGING l_boolpool&lt;/P&gt;&lt;P&gt;              IF FOUND.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CHECK l_boolpool IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE l_boolpool TO l_repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo el programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    PERFORM visualizar_linea USING l_repid&lt;/P&gt;&lt;P&gt;                                   '01'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_programa&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  texto_tope&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Encabezado que explica la funcionalidad de algunas columnas&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      del reporte.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM texto_tope .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  STATICS l_flag TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA l_tit(65) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK l_flag IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_flag = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE 'FUNCIOANALIDAD DE LAS COLUMNAS:' TO l_tit CENTERED.&lt;/P&gt;&lt;P&gt;  FORMAT COLOR = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE:&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Título.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  /(70)   sy-uline,&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      l_tit,&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;P&gt;  /(70)   sy-uline,&lt;/P&gt;&lt;P&gt;*1er linea.&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      'TIPO: Se visualiza las definiciones de los objetos de',&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;P&gt;*2da linea.&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      '      ampliación.',&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;P&gt;*3ra linea.&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      'STOP: Agrega un BREAK en la línea de código seleccionada.',&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;P&gt;*4ta linea.&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      'CÓDIGO FUENTE: Se visualiza la línea de código en el ',&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;P&gt;*5ta linea.&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      '               programa correspondiente.',&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Cierro el cuadro.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   /(70)  sy-uline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SKIP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " texto_tope&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  bi_se18&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la definición del enhancement point.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM bi_se18  USING  p_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_enhspotname TYPE enhspotname,&lt;/P&gt;&lt;P&gt;    l_off TYPE i,&lt;/P&gt;&lt;P&gt;    l_cf  TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF lt_cf OCCURS 0,&lt;/P&gt;&lt;P&gt;          linea(500),&lt;/P&gt;&lt;P&gt;        END OF lt_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FIND FIRST OCCURRENCE OF ' SPOT ' IN p_cf MATCH OFFSET l_off.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK l_off IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ADD 7 TO l_off.&lt;/P&gt;&lt;P&gt;  l_cf = 500 - l_off.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SPLIT p_cf+l_off(l_cf) AT space INTO TABLE lt_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo el nombre de la definición del enhancement.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  READ TABLE lt_cf INDEX 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRANSLATE lt_cf-linea TO UPPER CASE.&lt;/P&gt;&lt;P&gt;  TRANSLATE lt_cf-linea USING '. , '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE lt_cf-linea TO l_enhspotname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo la linea seleccionada en el programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_TOOL_ACCESS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      operation           = c_operation&lt;/P&gt;&lt;P&gt;      object_name         = l_enhspotname&lt;/P&gt;&lt;P&gt;      object_type         = 'ENHS'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_executed        = 1&lt;/P&gt;&lt;P&gt;      invalid_object_type = 2&lt;/P&gt;&lt;P&gt;      OTHERS              = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                    " bi_se18&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_fm_exit&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Se visualiza el módulo de funciones del user-exit's que&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      contiene al include Z indicado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_fm_exit .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_ret     TYPE c,&lt;/P&gt;&lt;P&gt;    l_flag    TYPE c,&lt;/P&gt;&lt;P&gt;    l_name    TYPE trdir-name,&lt;/P&gt;&lt;P&gt;    lt_fields TYPE sval OCCURS 0 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;    lt_tfdir  TYPE tfdir OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    v_include LIKE rodiobj-iobjnm,&lt;/P&gt;&lt;P&gt;    l_fname LIKE rs38l-name,&lt;/P&gt;&lt;P&gt;    l_group LIKE rs38l-area,&lt;/P&gt;&lt;P&gt;    l_include LIKE rs38l-include,&lt;/P&gt;&lt;P&gt;    l_namespace LIKE rs38l-namespace,&lt;/P&gt;&lt;P&gt;    l_str_area LIKE rs38l-str_area,&lt;/P&gt;&lt;P&gt;    lt_incl TYPE STANDARD TABLE OF abapsource WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE:&lt;/P&gt;&lt;P&gt;    'RS38L'   TO lt_fields-tabname,&lt;/P&gt;&lt;P&gt;    'INCLUDE' TO lt_fields-fieldname,&lt;/P&gt;&lt;P&gt;    'Include' TO lt_fields-fieldtext.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND lt_fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'POPUP_GET_VALUES'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      popup_title     = 'Ingrese ampliación:'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      returncode      = l_ret&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      fields          = lt_fields&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      error_in_fields = 1&lt;/P&gt;&lt;P&gt;      OTHERS          = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico que no haya cancelado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CHECK l_ret NE 'A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE lt_fields INDEX 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF lt_fields-value IS INITIAL OR lt_fields-value(1) NE 'Z'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  La ampliación &amp;amp; no existe&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MESSAGE e012(enhancement) WITH lt_fields-value.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MOVE lt_fields-value TO l_name.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo los FM de los exit's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    INTO TABLE lt_tfdir&lt;/P&gt;&lt;P&gt;    FROM tfdir&lt;/P&gt;&lt;P&gt;    WHERE funcname LIKE 'EXIT_%'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT lt_tfdir.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR:&lt;/P&gt;&lt;P&gt;      l_group, l_include, l_namespace, l_str_area.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_fname = lt_tfdir-funcname.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo el include del user-exti's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'FUNCTION_EXISTS'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        funcname           = l_fname&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        group              = l_group&lt;/P&gt;&lt;P&gt;        include            = l_include&lt;/P&gt;&lt;P&gt;        namespace          = l_namespace&lt;/P&gt;&lt;P&gt;        str_area           = l_str_area&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        function_not_exist = 1&lt;/P&gt;&lt;P&gt;        OTHERS             = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      IF NOT l_include IS INITIAL.&lt;/P&gt;&lt;P&gt;*- Obtengo el código fuente del user-exit's.&lt;/P&gt;&lt;P&gt;        CLEAR: v_include, lt_incl, lt_incl[].&lt;/P&gt;&lt;P&gt;        v_include = l_include.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'MU_INCLUDE_GET'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            i_include   = v_include&lt;/P&gt;&lt;P&gt;          TABLES&lt;/P&gt;&lt;P&gt;            e_t_include = lt_incl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF lt_incl[] IS NOT INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico si alguna de las líneas contiene el include.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          FIND FIRST OCCURRENCE OF l_name&lt;/P&gt;&lt;P&gt;            IN TABLE lt_incl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo el FM del user-exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          PERFORM visualizar_linea USING l_include&lt;/P&gt;&lt;P&gt;                                         '01'.&lt;/P&gt;&lt;P&gt;          l_flag = 'X'.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK l_flag IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  La ampliación &amp;amp; no existe&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  MESSAGE e012(enhancement) WITH lt_fields-value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_fm_exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  def_text_parameter&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Defino los textos de los parámetros de selección.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM def_text_parameter .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  tit1   = 'Parámetros:'.&lt;/P&gt;&lt;P&gt;  tit2   = 'Tipo de ampliación:'.&lt;/P&gt;&lt;P&gt;  tit3   = 'Tipo de ejecución:'.&lt;/P&gt;&lt;P&gt;  text1  = 'Programa'.&lt;/P&gt;&lt;P&gt;  text2  = 'Transacción'.&lt;/P&gt;&lt;P&gt;  text3  = 'Includes'.&lt;/P&gt;&lt;P&gt;  text4  = 'Funciones'.&lt;/P&gt;&lt;P&gt;  text5  = 'Submit'.&lt;/P&gt;&lt;P&gt;  text6  = 'Nivel'.&lt;/P&gt;&lt;P&gt;  text7  = 'User-exit'.&lt;/P&gt;&lt;P&gt;  text8  = 'Badi'.&lt;/P&gt;&lt;P&gt;  text9  = 'BTE'.&lt;/P&gt;&lt;P&gt;  text10 = 'Sustitución'.&lt;/P&gt;&lt;P&gt;  text11 = 'Field-exit'.&lt;/P&gt;&lt;P&gt;  text12 = c_handler.&lt;/P&gt;&lt;P&gt;  text13 = 'Validación'.&lt;/P&gt;&lt;P&gt;  text14 = 'Punto de ampliación'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " def_text_parameter&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  def_botones&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Defino los textos de las botoneras de la pantalla de selección.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM def_botones .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Agrego el boton de marcar todo en STATUS GUI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  functxt-icon_id   = icon_select_all.&lt;/P&gt;&lt;P&gt;  functxt-quickinfo = c_text_08.&lt;/P&gt;&lt;P&gt;  sscrfields-functxt_01 = functxt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Agrego el boton de desmarcar todo en STATUS GUI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  functxt-icon_id   = icon_deselect_all.&lt;/P&gt;&lt;P&gt;  functxt-quickinfo = c_text_09.&lt;/P&gt;&lt;P&gt;  sscrfields-functxt_02 = functxt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Agrego el boton de Breakpoint en STATUS GUI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  functxt-icon_id   = icon_message_critical.&lt;/P&gt;&lt;P&gt;  functxt-quickinfo = c_text_06.&lt;/P&gt;&lt;P&gt;  functxt-icon_text = c_text_06.&lt;/P&gt;&lt;P&gt;  sscrfields-functxt_03 = functxt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;icon_create:   RESULT  name  text info.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  icon_create:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de exit's en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  btn icon_display_note 'Ampliación' 'Visualizar ampliación',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de proyectos exit's en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ext1 icon_display_note 'Proyecto' 'Visualizar Proyecto',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de proyectos exit's en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ext2 icon_display_note 'User-exit' 'Visualizar User-exit',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de Interface en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  badi icon_availability_display 'Interface' 'Visualizar Def.Interface',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de sustitución en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  btn1 icon_display_text 'Tx. OBBH' 'Visualizar sustituciones',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de sustitución en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  sust icon_report 'Prog.Generado' 'Vis.programa generado',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de sustitución en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ob28 icon_display_text 'Tx. OB28' 'Visualizar validaciones',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de sustitución en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  btn2 icon_display 'Field-exits' 'Visualizar Field-exits',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de FIBF en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  bte1 icon_toggle_display '' 'Visualizar FIBF',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de Evento en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  bte2 icon_show_events  'Evento' 'Visualizar Evento',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de Proceso en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  bte3 icon_bw_apd 'Proceso' 'Visualizar Proceso',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo Marcar todo en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  all  icon_select_all '' c_text_08,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo Desmarcar todo en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  dal  icon_deselect_all '' c_text_09,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de SENH en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  senh icon_detail '' 'Visualizar SENH',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de Customer Implement. en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  cimp icon_table_settings 'Cust.Impl.' 'Customer Implementation'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE sust TO val.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " def_botones&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  set_header&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Creo el encabezado del ALV correspondiente.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM set_header  USING p_cant&lt;/P&gt;&lt;P&gt;                       p_inc&lt;/P&gt;&lt;P&gt;                       p_text.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tit(65) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  STATICS l_col TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM texto_tope.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF l_col IS INITIAL OR l_col EQ 7.&lt;/P&gt;&lt;P&gt;    l_col = 3.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    ADD 1 TO l_col.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FORMAT COLOR = l_col.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE p_text TO l_tit CENTERED.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRANSLATE l_tit USING ' *'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE:&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Título.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  /(70)   sy-uline,&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      l_tit,&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;P&gt;  /(70)   sy-uline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FORMAT COLOR = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_tcode IS INITIAL.&lt;/P&gt;&lt;P&gt;    CONCATENATE 'Ampliaciones encontradas en el programa' p_prog&lt;/P&gt;&lt;P&gt;           INTO l_tit SEPARATED BY space.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    CONCATENATE 'Ampliaciones encontradas en la transacción' p_tcode&lt;/P&gt;&lt;P&gt;           INTO l_tit SEPARATED BY space.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE:&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Título.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      l_tit,&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_tcode IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo la descripción del programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SELECT SINGLE *&lt;/P&gt;&lt;P&gt;      FROM trdirt&lt;/P&gt;&lt;P&gt;      WHERE name  EQ p_prog&lt;/P&gt;&lt;P&gt;        AND sprsl EQ sy-langu.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE 'Descripción:' trdirt-text&lt;/P&gt;&lt;P&gt;      INTO l_tit SEPARATED BY space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo la descripción de la transacción.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SELECT SINGLE *&lt;/P&gt;&lt;P&gt;      FROM tstct&lt;/P&gt;&lt;P&gt;      WHERE sprsl EQ sy-langu&lt;/P&gt;&lt;P&gt;        AND tcode EQ p_tcode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE 'Descripción:' tstct-ttext&lt;/P&gt;&lt;P&gt;      INTO l_tit SEPARATED BY space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE:&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      l_tit,&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;P&gt;  /(70)   sy-uline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_inc IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE 'PGMs analizados:' p_inc&lt;/P&gt;&lt;P&gt;      INTO l_tit SEPARATED BY space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WRITE:&lt;/P&gt;&lt;P&gt;    /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;     3      l_tit,&lt;/P&gt;&lt;P&gt;     70(1)  sy-vline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE 'Nivel:' p_nivel&lt;/P&gt;&lt;P&gt;      INTO l_tit SEPARATED BY space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WRITE:&lt;/P&gt;&lt;P&gt;    /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;     3      l_tit,&lt;/P&gt;&lt;P&gt;     70(1)  sy-vline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONCATENATE 'Cant.Ampliaciones:' p_cant&lt;/P&gt;&lt;P&gt;    INTO l_tit SEPARATED BY space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE:&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      l_tit,&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Cierro el cuadro.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; /(70)  sy-uline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SKIP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " set_header&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_imp_enh&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo las implementaciones del cliente de los enhancement&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      de cualquier tipo.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_imp_enh .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM get_imp_enh.&lt;/P&gt;&lt;P&gt;  PERFORM construir_catalogo_cimp.&lt;/P&gt;&lt;P&gt;  PERFORM definir_layout  USING    'TI_CIMP'&lt;/P&gt;&lt;P&gt;                          CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_callback_program      = l_repid&lt;/P&gt;&lt;P&gt;      i_callback_user_command = 'USER_COMMAND'&lt;/P&gt;&lt;P&gt;      is_layout               = wa_layout&lt;/P&gt;&lt;P&gt;      it_fieldcat             = ti_cat&lt;/P&gt;&lt;P&gt;      i_default               = 'X'&lt;/P&gt;&lt;P&gt;      i_save                  = 'A'&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      t_outtab                = ti_cimp&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      program_error           = 1&lt;/P&gt;&lt;P&gt;      OTHERS                  = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_imp_enh&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_cimp&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_cimp .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_CIMP'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'ENHNAME'    'X' 'X' 'X' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'OBJ_TYPE'   ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'OBJ_NAME'   ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'ELEMUSAGE'  ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'ENHINCLUDE' ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_cimp&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  get_imp_enh&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Obtengo las implementaciones creadas.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM get_imp_enh .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT enhobj&lt;SUB&gt;enhname enhobj&lt;/SUB&gt;obj_type enhobj&lt;SUB&gt;obj_name enhobj&lt;/SUB&gt;elemusage&lt;/P&gt;&lt;P&gt;         enhincinx~enhinclude&lt;/P&gt;&lt;P&gt;    FROM enhobj LEFT OUTER JOIN enhincinx ON&lt;/P&gt;&lt;P&gt;      enhobj&lt;SUB&gt;enhname = enhincinx&lt;/SUB&gt;enhname&lt;/P&gt;&lt;P&gt;    INTO TABLE ti_cimp&lt;/P&gt;&lt;P&gt;    WHERE enhobj~enhname LIKE 'Z%' OR&lt;/P&gt;&lt;P&gt;          enhobj~enhname LIKE 'Y%' AND&lt;/P&gt;&lt;P&gt;          enhobj~version EQ 'A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT ti_cimp BY enhname obj_type.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " get_imp_enh&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_enh_cf&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo el código fuente del enhancement.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_enh_cf  USING p_enhinclude TYPE any.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;  l_changed LIKE s38e-buf_varied,&lt;/P&gt;&lt;P&gt;  l_subrc   LIKE sy-subrc,&lt;/P&gt;&lt;P&gt;  lt_source TYPE TABLE OF string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK p_enhinclude IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ REPORT p_enhinclude INTO lt_source.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EDITOR_TABLE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      display = 'X'&lt;/P&gt;&lt;P&gt;      name    = p_enhinclude&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      changed = l_changed&lt;/P&gt;&lt;P&gt;      subrc   = l_subrc&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      content = lt_source.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_enh_cf&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;___________________&lt;/P&gt;&lt;P&gt;Regards.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Guillermo Stortoni.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 21 Jul 2008 14:05:55 GMT</pubDate>
    <dc:creator>former_member322289</dc:creator>
    <dc:date>2008-07-21T14:05:55Z</dc:date>
    <item>
      <title>BADI's</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/badi-s/m-p/4183477#M1000046</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;How to find out all BADIs i.e Enhancement points in the transaction CJ20N.please explain?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 21 Jul 2008 14:00:50 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/badi-s/m-p/4183477#M1000046</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-07-21T14:00:50Z</dc:date>
    </item>
    <item>
      <title>Re: BADI's</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/badi-s/m-p/4183478#M1000047</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;go through the link given below :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="256199"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;(you will find the code for how to find badi for the particular transaction)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With regards &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nikunj shah&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 21 Jul 2008 14:02:19 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/badi-s/m-p/4183478#M1000047</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-07-21T14:02:19Z</dc:date>
    </item>
    <item>
      <title>Re: BADI's</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/badi-s/m-p/4183479#M1000048</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check below link &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="4987777"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="4556942"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Brijesh&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 21 Jul 2008 14:05:26 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/badi-s/m-p/4183479#M1000048</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-07-21T14:05:26Z</dc:date>
    </item>
    <item>
      <title>Re: BADI's</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/badi-s/m-p/4183480#M1000049</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, &lt;/P&gt;&lt;P&gt;here there's a program wich will help you to find, enhancements in any transaction..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;======================================================================&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;PROGRAMA...: Z_AMPLIACIONES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;OBJETIVO...: BUSCA USER-EXITS, FIELD-EXITS, BADI'S, BTE Y            *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             SUSTITUCIONES EN UNA DETERMINADA TRANSACCION O PROGRAMA.*&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             SE VISUALIZAN LAS AMPLIACIONES EN UN ALV Y SE REALIZA   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             UN LINK AL PROGRAMA DONDE SE ENCUENTRA LA AMPLIACIÓN.   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;PARAMETROS.: P_PROG  = NOMBRE DE PROGRAMA A SER REVISADO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_TCODE = NOMBRE DE TRANSACCION A SER REVISADA&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             OBS.: UNO DE LOS PARAMETROS DEBE SER ESPECIFICADO&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*......................................................................&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_UE    = DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LOS USER-EXITS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_BADI  = DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LAS BADI'S.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_BTE   = DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LAS BTE.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_SUST  = DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LAS SUSTITUCIONES.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_FDEX  = DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LOS FIELD-EXITS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             OBS.: UNO DE LOS PARAMETROS DEBE SER ESPECIFICADO&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*......................................................................&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_INCL  = DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LOS INCLUDES.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_FUNC  = DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LAS FUNCIONES.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_SUBMIT= DETERMINA SI LA REVISION DEBE TENER EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION LOS DEMAS PROGRAMAS LLAMADOS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       POR SUBMIT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*......................................................................&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             P_NIVEL = DETERMINA EL NIVEL DE LA REVISION HECHA DENTRO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       DE LOS INCLUDES, FUNCIONES Y DEMAS PROGRAMAS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       EN EL NIVEL 1 SOLAMENTE SERA TOMADOS EN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       CONSIDERACION EN EL PROGRAMA RAIZ. EN EL NIVEL&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       2 SE REVISARAN LOS INCLUDES, FUNCIONES DENTRO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       LOS INCLUDES, FUNCIONES DEL NIVEL 1 Y ASI&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       SUCESIVAMENTE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             OBS.: EN EL PARAMETRO P_NIVEL INFORMAR VALORES BAJOS,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             YA QUE A MAYOR NUMERO, MAYOR CANTIDAD DE CODIGO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             SERA ANALIZADO&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;======================================================================&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  z_ampliaciones_block_alv LINE-SIZE 255&lt;/P&gt;&lt;P&gt;                                 NO STANDARD PAGE HEADING.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS:&lt;/P&gt;&lt;P&gt;  icon,&lt;/P&gt;&lt;P&gt;  rsfs,&lt;/P&gt;&lt;P&gt;  rsds,&lt;/P&gt;&lt;P&gt;  slis.              "Tipos de datos para listas genéricas.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES:&lt;/P&gt;&lt;P&gt;  d010inc,          "Tabla de utilización para Includes ABAP&lt;/P&gt;&lt;P&gt;  dd03l,            "Campos de tabla&lt;/P&gt;&lt;P&gt;  modact,           "Modificaciones de la CMOD&lt;/P&gt;&lt;P&gt;  modsap,           "Ampliaciones SAP&lt;/P&gt;&lt;P&gt;  sxs_inter,        "Exit: Pág.definición: Interfaces&lt;/P&gt;&lt;P&gt;  sscrfields,       "Campos en las imágenes de selección&lt;/P&gt;&lt;P&gt;  tddir,            "Exits de campo activos para elementos de datos&lt;/P&gt;&lt;P&gt;  tddirs,           "Exits de campos en determinados dynpros&lt;/P&gt;&lt;P&gt;  tftit,            "Texto breve de un módulo de funciones&lt;/P&gt;&lt;P&gt;  trdirt,           "Textos tͭtulo p.programas en TRDIR&lt;/P&gt;&lt;P&gt;  tstc,             "Códigos de transacción SAP&lt;/P&gt;&lt;P&gt;  tstct.            "Textos de códigos de transacción&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CONSTANTS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;  c_sust(22)      TYPE c VALUE 'SUBSTITUTION',&lt;/P&gt;&lt;P&gt;  c_user_exit(22) TYPE c VALUE 'USEREXIT',&lt;/P&gt;&lt;P&gt;  c_badi(22)      TYPE c VALUE 'BADI',&lt;/P&gt;&lt;P&gt;  c_handler(30)   TYPE c VALUE 'CL_EXITHANDLER=&amp;gt;GET_INSTANCE',&lt;/P&gt;&lt;P&gt;  c_method(22)    TYPE c VALUE 'CALL METHOD',&lt;/P&gt;&lt;P&gt;  c_type_ref(22)  TYPE c VALUE 'TYPE REF TO',&lt;/P&gt;&lt;P&gt;  c_perform(22)   TYPE c VALUE 'PERFORM',&lt;/P&gt;&lt;P&gt;  c_form(22)      TYPE c VALUE 'FORM',&lt;/P&gt;&lt;P&gt;  c_endform(22)   TYPE c VALUE 'ENDFORM',&lt;/P&gt;&lt;P&gt;  c_bte(22)       TYPE c VALUE 'OPEN_FI_PERFORM',&lt;/P&gt;&lt;P&gt;  c_bte1(22)      TYPE c VALUE 'OUTBOUND_CALL',&lt;/P&gt;&lt;P&gt;  c_enhance(22)   TYPE c VALUE 'CALL CUSTOMER-FUNCTION',&lt;/P&gt;&lt;P&gt;  c_funcao_1(13)  TYPE c VALUE 'CALLFUNCTION''',&lt;/P&gt;&lt;P&gt;  c_funcao_2(13)  TYPE c VALUE 'CALL FUNCTION',&lt;/P&gt;&lt;P&gt;  c_enh(11)       TYPE c VALUE 'ENHANCEMENT',&lt;/P&gt;&lt;P&gt;  c_enh1(17)      TYPE c VALUE 'ENHANCEMENT-POINT',&lt;/P&gt;&lt;P&gt;  c_enh2(19)      TYPE c VALUE 'ENHANCEMENT-SECTION',&lt;/P&gt;&lt;P&gt;  c_endenh(14)    TYPE c VALUE 'ENDENHANCEMENT',&lt;/P&gt;&lt;P&gt;  c_endenh1(23)   TYPE c VALUE 'END-ENHANCEMENT-SECTION',&lt;/P&gt;&lt;P&gt;  c_include(07)   TYPE c VALUE 'INCLUDE',&lt;/P&gt;&lt;P&gt;  c_submit(06)    TYPE c VALUE 'SUBMIT',&lt;/P&gt;&lt;P&gt;  c_struct(11)    TYPE c VALUE ' STRUCTURE ',&lt;/P&gt;&lt;P&gt;  c_comentario    TYPE c VALUE '*',&lt;/P&gt;&lt;P&gt;  c_ponto         TYPE c VALUE '.',&lt;/P&gt;&lt;P&gt;  c_aspa          TYPE c VALUE '''',&lt;/P&gt;&lt;P&gt;  c_igual(3)      TYPE c VALUE ' = ',&lt;/P&gt;&lt;P&gt;  c_x             TYPE c VALUE 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;  c_ue(4)   TYPE c VALUE 'EXIT',&lt;/P&gt;&lt;P&gt;  c_b(4)    TYPE c VALUE 'BADI',&lt;/P&gt;&lt;P&gt;  c_bt(4)   TYPE c VALUE 'BTE',&lt;/P&gt;&lt;P&gt;  c_st(4)   TYPE c VALUE 'SUST',&lt;/P&gt;&lt;P&gt;  c_fdex(4) TYPE c VALUE 'FDEX',&lt;/P&gt;&lt;P&gt;  c_enht(4) TYPE c VALUE 'ENH',&lt;/P&gt;&lt;P&gt;  c_operation(4) TYPE c VALUE 'SHOW',&lt;/P&gt;&lt;P&gt;  c_type(4)      TYPE c VALUE 'PROG',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Textos&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  c_text_01  TYPE slis_fieldcat_alv-reptext_ddic VALUE 'Programa',&lt;/P&gt;&lt;P&gt;  c_text_02  TYPE slis_fieldcat_alv-reptext_ddic VALUE 'Nivel',&lt;/P&gt;&lt;P&gt;  c_text_03  TYPE slis_fieldcat_alv-reptext_ddic VALUE 'Linea',&lt;/P&gt;&lt;P&gt;  c_text_04  TYPE slis_fieldcat_alv-reptext_ddic VALUE 'Código fuente',&lt;/P&gt;&lt;P&gt;  c_text_05  TYPE slis_fieldcat_alv-reptext_ddic VALUE 'Tipo',&lt;/P&gt;&lt;P&gt;  c_text_06  TYPE string                         VALUE 'Breakpoint',&lt;/P&gt;&lt;P&gt;  c_text_07  TYPE slis_fieldcat_alv-reptext_ddic VALUE 'STOP',&lt;/P&gt;&lt;P&gt;  c_text_08  TYPE string                     VALUE 'Marcar todo',&lt;/P&gt;&lt;P&gt;  c_text_09  TYPE string                     VALUE 'Desmarcar todo',&lt;/P&gt;&lt;P&gt;  c_text_e01 TYPE slis_fieldcat_alv-reptext_ddic VALUE&lt;/P&gt;&lt;P&gt;    'Debe ingresar programa o transacción',&lt;/P&gt;&lt;P&gt;  c_text_e02 TYPE slis_fieldcat_alv-reptext_ddic VALUE&lt;/P&gt;&lt;P&gt;    'Debe ingresar solo programa o transacción',&lt;/P&gt;&lt;P&gt;  c_text_e03 TYPE slis_fieldcat_alv-reptext_ddic VALUE&lt;/P&gt;&lt;P&gt;    'Debe seleccionar un tipo de mejora'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;  c_std_definition(3) TYPE c VALUE 'SAP',&lt;/P&gt;&lt;P&gt;  c_std_implmnt(3)    TYPE c VALUE 'KUN'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;TABLAS INTERNAS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF x_tadir,&lt;/P&gt;&lt;P&gt;          obj_name TYPE sobj_name,&lt;/P&gt;&lt;P&gt;          devclass TYPE devclass,&lt;/P&gt;&lt;P&gt;       END OF x_tadir.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF x_slog,&lt;/P&gt;&lt;P&gt;          obj_name TYPE sobj_name,&lt;/P&gt;&lt;P&gt;       END OF x_slog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_programa OCCURS 0,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       cf like rssource-line,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        cf(500),&lt;/P&gt;&lt;P&gt;      END   OF ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_includes OCCURS 0,&lt;/P&gt;&lt;P&gt;        nome     LIKE sy-repid,&lt;/P&gt;&lt;P&gt;        nivel(2) TYPE n,&lt;/P&gt;&lt;P&gt;      END   OF ti_includes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_user_exit OCCURS 0,&lt;/P&gt;&lt;P&gt;        programa  LIKE sy-repid,&lt;/P&gt;&lt;P&gt;        tipo(4),&lt;/P&gt;&lt;P&gt;        linea(10) TYPE n,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       cf        LIKE rssource-line,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        cf(500),&lt;/P&gt;&lt;P&gt;        nivel(2)  TYPE n,&lt;/P&gt;&lt;P&gt;        break     LIKE icon-id,&lt;/P&gt;&lt;P&gt;        sel(1),&lt;/P&gt;&lt;P&gt;      END   OF ti_user_exit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_badi OCCURS 0,&lt;/P&gt;&lt;P&gt;        programa  LIKE sy-repid,&lt;/P&gt;&lt;P&gt;        tipo(4),&lt;/P&gt;&lt;P&gt;        linea(10) TYPE n,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       cf        LIKE rssource-line,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        cf(500),&lt;/P&gt;&lt;P&gt;        nivel(2)  TYPE n,&lt;/P&gt;&lt;P&gt;        break     LIKE icon-id,&lt;/P&gt;&lt;P&gt;        sel(1),&lt;/P&gt;&lt;P&gt;      END   OF ti_badi.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_bte OCCURS 0,&lt;/P&gt;&lt;P&gt;        programa  LIKE sy-repid,&lt;/P&gt;&lt;P&gt;        tipo(4),&lt;/P&gt;&lt;P&gt;        linea(10) TYPE n,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       cf        LIKE rssource-line,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        cf(500),&lt;/P&gt;&lt;P&gt;        nivel(2)  TYPE n,&lt;/P&gt;&lt;P&gt;        break     LIKE icon-id,&lt;/P&gt;&lt;P&gt;        sel(1),&lt;/P&gt;&lt;P&gt;      END   OF ti_bte.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_enh OCCURS 0,&lt;/P&gt;&lt;P&gt;        programa  LIKE sy-repid,&lt;/P&gt;&lt;P&gt;        tipo(4),&lt;/P&gt;&lt;P&gt;        linea(10) TYPE n,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       cf        LIKE rssource-line,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        cf(500),&lt;/P&gt;&lt;P&gt;        nivel(2)  TYPE n,&lt;/P&gt;&lt;P&gt;        break     LIKE icon-id,&lt;/P&gt;&lt;P&gt;        sel(1),&lt;/P&gt;&lt;P&gt;      END   OF ti_enh.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_enhobj OCCURS 0,&lt;/P&gt;&lt;P&gt;        enhname  LIKE enhobj-enhname,&lt;/P&gt;&lt;P&gt;        version  LIKE enhobj-version,&lt;/P&gt;&lt;P&gt;        obj_type LIKE enhobj-obj_type,&lt;/P&gt;&lt;P&gt;        obj_name LIKE enhobj-obj_name,&lt;/P&gt;&lt;P&gt;        sel(1),&lt;/P&gt;&lt;P&gt;      END   OF ti_enhobj.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_fdex OCCURS 0,&lt;/P&gt;&lt;P&gt;        tipo(4),&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       cf        LIKE rssource-line,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        cf(500),&lt;/P&gt;&lt;P&gt;        sel(1),&lt;/P&gt;&lt;P&gt;      END   OF ti_fdex.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;  ti_tadir TYPE STANDARD TABLE OF x_tadir WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;  ti_jtab  TYPE STANDARD TABLE OF x_slog  WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_final OCCURS 0,&lt;/P&gt;&lt;P&gt;          name     LIKE modsap-name,&lt;/P&gt;&lt;P&gt;          member   LIKE modsap-member,&lt;/P&gt;&lt;P&gt;          include  LIKE rs38l-include, "(15), "Include name&lt;/P&gt;&lt;P&gt;          stext    LIKE tftit-stext,&lt;/P&gt;&lt;P&gt;          programa LIKE rs38l-include,&lt;/P&gt;&lt;P&gt;          sel(1),&lt;/P&gt;&lt;P&gt;      END OF ti_final.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_sust OCCURS 0,&lt;/P&gt;&lt;P&gt;          substid   LIKE gb922-substid,&lt;/P&gt;&lt;P&gt;          subseqnr  LIKE gb922-subseqnr,&lt;/P&gt;&lt;P&gt;          conseqnr  LIKE gb922-conseqnr,&lt;/P&gt;&lt;P&gt;          substab   LIKE gb922-substab,&lt;/P&gt;&lt;P&gt;          subsfield LIKE gb922-subsfield,&lt;/P&gt;&lt;P&gt;          subsval   LIKE gb922-subsval,&lt;/P&gt;&lt;P&gt;          exitsubst LIKE gb922-exitsubst,&lt;/P&gt;&lt;P&gt;          sel(1),&lt;/P&gt;&lt;P&gt;      END OF ti_sust.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_val OCCURS 0,&lt;/P&gt;&lt;P&gt;          valid    LIKE gb931-valid,&lt;/P&gt;&lt;P&gt;          valseqnr LIKE gb931-valseqnr,&lt;/P&gt;&lt;P&gt;          condid   LIKE gb931-condid,&lt;/P&gt;&lt;P&gt;          checkid  LIKE gb931-checkid,&lt;/P&gt;&lt;P&gt;          sel(1),&lt;/P&gt;&lt;P&gt;      END OF ti_val.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF ti_bdcdata OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE bdcdata.&lt;/P&gt;&lt;P&gt;DATA : END OF ti_bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: ti_gb31t TYPE TABLE OF gb31t WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ti_cimp OCCURS 0,&lt;/P&gt;&lt;P&gt;        enhname    LIKE enhobj-enhname,&lt;/P&gt;&lt;P&gt;        obj_type   LIKE enhobj-obj_type,&lt;/P&gt;&lt;P&gt;        obj_name   LIKE enhobj-obj_name,&lt;/P&gt;&lt;P&gt;        elemusage  LIKE enhobj-elemusage,&lt;/P&gt;&lt;P&gt;        enhinclude(40),  "like ENHINCINX-ENHINCLUDE,&lt;/P&gt;&lt;P&gt;      END   OF ti_cimp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;VARIABLE GLOBALES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;  functxt         TYPE smp_dyntxt,&lt;/P&gt;&lt;P&gt;  w_tini          LIKE sy-timlo,&lt;/P&gt;&lt;P&gt;  vg_caracter     TYPE c,&lt;/P&gt;&lt;P&gt;  vg_palavra(50)  TYPE c,&lt;/P&gt;&lt;P&gt;  vg_inicial      LIKE sy-index,&lt;/P&gt;&lt;P&gt;  vg_conta_aspa   TYPE n,&lt;/P&gt;&lt;P&gt;  vg_pname LIKE   tfdir-pname,&lt;/P&gt;&lt;P&gt;  vg_texto(50)    TYPE c,&lt;/P&gt;&lt;P&gt;  vg_contador     LIKE sy-tfill,&lt;/P&gt;&lt;P&gt;  vg_nivel(2)     TYPE n,&lt;/P&gt;&lt;P&gt;  vg_ini_contagem TYPE c, " INDICA QUE DEBE SER INICIADO EL CONTADOR&lt;/P&gt;&lt;P&gt;  vg_conta_espaco TYPE n. " TOTAL DE ESPACIOS ( MÁXIMO 2 )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DEFINICION DE Estructuras y tablas para ALV (FM).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;  wa_cat     TYPE slis_fieldcat_alv,      " WA catálogo&lt;/P&gt;&lt;P&gt;  ti_cat     TYPE slis_t_fieldcat_alv,    " TI catálogo&lt;/P&gt;&lt;P&gt;  wa_layout  TYPE slis_layout_alv,        " WA opciones lista&lt;/P&gt;&lt;P&gt;  ti_header  TYPE slis_t_listheader,      " TI cabecera lista&lt;/P&gt;&lt;P&gt;  wa_header  TYPE slis_listheader,        " WA cabecera lista&lt;/P&gt;&lt;P&gt;  wa_events  TYPE slis_alv_event,         " WA eventos lista&lt;/P&gt;&lt;P&gt;  ti_events  TYPE slis_t_event,           " TI eventos lista&lt;/P&gt;&lt;P&gt;  wa_sort    TYPE slis_sortinfo_alv,      " WA sort&lt;/P&gt;&lt;P&gt;  ti_sort    TYPE slis_t_sortinfo_alv,    " TI sort&lt;/P&gt;&lt;P&gt;  wa_print   TYPE slis_print_alv.         " WA print&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;PARAMETROS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- DATOS OBLIGATORIOS.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK bl01 WITH FRAME TITLE tit1 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text2,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_tcode LIKE tstc-tcode.          "Transacción&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text1,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_prog  LIKE sy-repid.            "Programa&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END   OF BLOCK bl01.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK bl02 WITH FRAME TITLE tit2 .&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text7,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_ue AS CHECKBOX.             "User-exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Exit's en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 25(45) btn USER-COMMAND ext&lt;/P&gt;&lt;P&gt;                                        VISIBLE LENGTH 12.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Proyectos de Exit's en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 38(45) ext1 USER-COMMAND ext1&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 12.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de User-Exit's en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 51(45) ext2 USER-COMMAND ext2&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 12.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text8,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_badi AS CHECKBOX.           "Badi's&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Interface en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 25(60) badi USER-COMMAND badi&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 25.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  POSITION 25.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_handl AS CHECKBOX DEFAULT 'X'.&lt;/P&gt;&lt;P&gt;"CL_EXITHANDLER=&amp;gt;GET_INSTANCE&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: COMMENT 30(40) text12.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text9,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_bte AS CHECKBOX.            "Bte&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Tx. FIBF en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 25(60) bte1 USER-COMMAND bte1&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Tx. Evento en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 29(60) bte2 USER-COMMAND bte2&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 10.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Tx. Proceso en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 40(60) bte3 USER-COMMAND bte3&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 10.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(19) text14,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_enh AS CHECKBOX.            "Punto de ampliación&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Tx. SENH en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 25(60) senh USER-COMMAND senh&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Customer Implementation en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 29(60) cimp USER-COMMAND cimp&lt;/P&gt;&lt;P&gt;                                        VISIBLE LENGTH 24.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text10,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_sust AS CHECKBOX.            "Sustitución&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Sustitución en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 25(45) btn1 USER-COMMAND obb&lt;/P&gt;&lt;P&gt;                                        VISIBLE LENGTH 12.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de programa sustitución en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 38(45) sust USER-COMMAND sust&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 15.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text13,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_val AS CHECKBOX.            "Validación&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Validación en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 25(45) ob28 USER-COMMAND ob28&lt;/P&gt;&lt;P&gt;                                        VISIBLE LENGTH 12.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de programa sustitución en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 38(45) val USER-COMMAND val&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 15.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text11,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_fdex AS CHECKBOX.            "Field-exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de Field-exit en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 25(60) btn2 USER-COMMAND fdex&lt;/P&gt;&lt;P&gt;                                        VISIBLE LENGTH 28.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END   OF BLOCK bl02.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- DATOS OPCIONALES.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK bl03 WITH FRAME TITLE tit3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de ALL en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 18(60) all USER-COMMAND all&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Boton de DAL en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: PUSHBUTTON 21(60) dal USER-COMMAND dal&lt;/P&gt;&lt;P&gt;                                         VISIBLE LENGTH 1.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text3,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_incl AS CHECKBOX DEFAULT 'X'.   "Includes&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text4,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_func AS CHECKBOX DEFAULT 'X'.   "Funciones&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text5,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_submit AS CHECKBOX DEFAULT 'X'. "Submit&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;                  COMMENT 1(15) text6,&lt;/P&gt;&lt;P&gt;                  POSITION 20.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_nivel(2) TYPE n DEFAULT '04'.   "Nivel&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END   OF BLOCK bl03.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Botón de Marcar todo en el STATUS GUI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: FUNCTION KEY 1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Botón de Desmarcar todo en el STATUS GUI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: FUNCTION KEY 2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Botón de Breakpoint en el STATUS GUI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN: FUNCTION KEY 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DEFINICIÓN DE MACROS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;DEFINE icon_create.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo para el botón indicado, el icono y los textos correspondientes.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  call function 'ICON_CREATE'&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      name   = &amp;amp;2&lt;/P&gt;&lt;P&gt;      text   = &amp;amp;3&lt;/P&gt;&lt;P&gt;      info   = &amp;amp;4&lt;/P&gt;&lt;P&gt;    importing&lt;/P&gt;&lt;P&gt;      result = &amp;amp;1&lt;/P&gt;&lt;P&gt;    exceptions&lt;/P&gt;&lt;P&gt;      others = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-DEFINITION. "icon_create&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;INICIALIZACIÓN DE VARIABLES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM def_text_parameter.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM def_botones.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR   ti_gb31t.&lt;/P&gt;&lt;P&gt;  REFRESH ti_gb31t.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo Validación/Sustitución/Eventos/Texto.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    INTO TABLE ti_gb31t&lt;/P&gt;&lt;P&gt;    FROM gb31t&lt;/P&gt;&lt;P&gt;    WHERE spras EQ sy-langu.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;AT SELECTION-SCREEN&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE sscrfields-ucomm.&lt;/P&gt;&lt;P&gt;    WHEN 'FC01'.&lt;/P&gt;&lt;P&gt;      MOVE 'X' TO : p_ue, p_badi, p_bte, p_sust, p_val, p_fdex, p_enh.&lt;/P&gt;&lt;P&gt;    WHEN 'FC02'.&lt;/P&gt;&lt;P&gt;      CLEAR: p_ue, p_badi, p_bte, p_sust, p_val, p_fdex, p_enh.&lt;/P&gt;&lt;P&gt;    WHEN 'FC03'.&lt;/P&gt;&lt;P&gt;      PERFORM breakpoint.&lt;/P&gt;&lt;P&gt;    WHEN 'EXT'.&lt;/P&gt;&lt;P&gt;      PERFORM visualizar_ampliacion.&lt;/P&gt;&lt;P&gt;    WHEN 'EXT1'.&lt;/P&gt;&lt;P&gt;      PERFORM visualizar_proyecto.&lt;/P&gt;&lt;P&gt;    WHEN 'EXT2'.&lt;/P&gt;&lt;P&gt;      PERFORM visualizar_fm_exit.&lt;/P&gt;&lt;P&gt;    WHEN 'BADI'.&lt;/P&gt;&lt;P&gt;      PERFORM visualizar_interface.&lt;/P&gt;&lt;P&gt;    WHEN 'OBB'.&lt;/P&gt;&lt;P&gt;      CALL TRANSACTION 'OBBH'.&lt;/P&gt;&lt;P&gt;    WHEN 'OB28'.&lt;/P&gt;&lt;P&gt;      CALL TRANSACTION 'OB28'.&lt;/P&gt;&lt;P&gt;    WHEN 'SUST' OR 'VAL'.&lt;/P&gt;&lt;P&gt;      PERFORM visualizar_programa.&lt;/P&gt;&lt;P&gt;    WHEN 'FDEX'.&lt;/P&gt;&lt;P&gt;      SUBMIT rsmodprf AND RETURN.&lt;/P&gt;&lt;P&gt;    WHEN 'BTE1'.&lt;/P&gt;&lt;P&gt;      CALL TRANSACTION 'FIBF'.&lt;/P&gt;&lt;P&gt;    WHEN 'BTE2'.&lt;/P&gt;&lt;P&gt;      PERFORM cargar_bte USING 'E'.&lt;/P&gt;&lt;P&gt;    WHEN 'BTE3'.&lt;/P&gt;&lt;P&gt;      PERFORM cargar_bte USING 'P'.&lt;/P&gt;&lt;P&gt;    WHEN 'SENH'.&lt;/P&gt;&lt;P&gt;      SUBMIT sapmsenh VIA SELECTION-SCREEN&lt;/P&gt;&lt;P&gt;        AND RETURN.&lt;/P&gt;&lt;P&gt;    WHEN 'CIMP'.&lt;/P&gt;&lt;P&gt;      PERFORM visualizar_imp_enh.&lt;/P&gt;&lt;P&gt;    WHEN 'ALL'.&lt;/P&gt;&lt;P&gt;      MOVE 'X' TO : p_incl, p_func, p_submit.&lt;/P&gt;&lt;P&gt;    WHEN 'DAL'.&lt;/P&gt;&lt;P&gt;      CLEAR: p_incl, p_func, p_submit.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do Nothing !!.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_prog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM repid_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;INICIO&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  GET TIME FIELD w_tini.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- CONSISTENCIAS DE LOS PARAMETROS.&lt;/P&gt;&lt;P&gt;  PERFORM consisti_parametros.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- INICIALIZA TABLA.&lt;/P&gt;&lt;P&gt;  PERFORM inicializa_tabela.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN EL PROGRAMA EXISTE ALGUN INCLUDE, FUNCION O SUBMIT.&lt;/P&gt;&lt;P&gt;  PERFORM verifica_include_funcao_submit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- ANALISA LOS INCLUDES Y BUSCA POR USER-EXIT, BADI'S Y BTE.&lt;/P&gt;&lt;P&gt;  PERFORM busca_user_exit_badi_bte.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- ANALISA LOS INCLUDES Y BUSCA LOS FIELD-EXIT'S.&lt;/P&gt;&lt;P&gt;  PERFORM buscar_field_exit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- OBTENGO LOS EXIT's DE LA TRANSACCIÓN.&lt;/P&gt;&lt;P&gt;  PERFORM buscar_user_exit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- OBTENGO LAS PUNTOS DE AMPLIACIÓN.&lt;/P&gt;&lt;P&gt;  PERFORM buscar_enh.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- OBTENGO LAS SUSTITUCIONES.&lt;/P&gt;&lt;P&gt;  PERFORM buscar_sustituciones.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- OBTENGO LAS VALIDACIONES.&lt;/P&gt;&lt;P&gt;  PERFORM buscar_validaciones.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- CARGO LOS BREAKPOINTS.&lt;/P&gt;&lt;P&gt;  PERFORM cargar_break.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VISUALIZA LAS AMPLIACIONES ENCONTRADAS.&lt;/P&gt;&lt;P&gt;  PERFORM exibe_user_exit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;FIN&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  BUSCA_USER_EXIT_BADI_BTE&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Busca EXIT's, BADI's y BTE en el código fuente.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM busca_user_exit_badi_bte.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LOS INCLUDES SELECIONADOS EXISTEN EXITS.&lt;/P&gt;&lt;P&gt;  LOOP AT ti_includes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;    PERFORM evitar_time_out USING sy-tfill.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- BORRA LA TABLA INTERNA.&lt;/P&gt;&lt;P&gt;    REFRESH ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- REALIZA LECTURA DE INCLUDE ALMACENANDO EN TABLA INTERNA&lt;/P&gt;&lt;P&gt;    READ REPORT ti_includes-nome INTO ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF p_ue EQ 'X'.&lt;/P&gt;&lt;P&gt;        PERFORM buscar_exit.&lt;/P&gt;&lt;P&gt;        PERFORM busca_enhancements.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF p_badi EQ 'X'.&lt;/P&gt;&lt;P&gt;        PERFORM buscar_badi.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF p_bte EQ 'X'.&lt;/P&gt;&lt;P&gt;        PERFORM buscar_bte.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF p_enh EQ 'X'.&lt;/P&gt;&lt;P&gt;        PERFORM buscar_punto_ampliacion.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " BUSCA_USER_EXIT_BADI_BTE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  BUSCA_ENHANCEMENTS&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Busca las llamadas a los USER-EXIT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM busca_enhancements.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE EN ALGUN ENHANCEMENT.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_enhance.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO EL ENHANCEMENT Y LA LINEA NO ESTÁ COMENTADA.&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;    CLEAR ti_user_exit.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;    SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;    MOVE: ti_includes-nome  TO ti_user_exit-programa,&lt;/P&gt;&lt;P&gt;          c_ue              TO ti_user_exit-tipo,&lt;/P&gt;&lt;P&gt;          sy-tabix          TO ti_user_exit-linea,&lt;/P&gt;&lt;P&gt;          ti_programa-cf    TO ti_user_exit-cf,&lt;/P&gt;&lt;P&gt;          ti_includes-nivel TO ti_user_exit-nivel.&lt;/P&gt;&lt;P&gt;    APPEND ti_user_exit.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " BUSCA_ENHANCEMENTS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  EXIBE_USER_EXIT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Muestra los datos.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM exibe_user_exit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM armar_alv.&lt;/P&gt;&lt;P&gt;  PERFORM mostrar_listado.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " EXIBE_USER_EXIT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  PROCURA_INCLUDE&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM procura_include.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR vg_palavra.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUN INCLUDE.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_include.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO EN EL INCLUDE Y LA LINEA NO ESTÁ COMENTADA.&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUN STRUCTURE.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_struct.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA TODOS LOS 500 CARACTERES DE LA LINEA PARA MONTAR NOMBRE&lt;/P&gt;&lt;P&gt;*- DEL INCLUDE&lt;/P&gt;&lt;P&gt;    DO 500 TIMES.&lt;/P&gt;&lt;P&gt;      vg_inicial = sy-index - 1.&lt;/P&gt;&lt;P&gt;      MOVE ti_programa-cf+vg_inicial(1) TO vg_caracter.&lt;/P&gt;&lt;P&gt;      IF NOT vg_caracter IS INITIAL.&lt;/P&gt;&lt;P&gt;*- VERIFICA SI NO ES FIN DE COMANDO.&lt;/P&gt;&lt;P&gt;        IF vg_caracter EQ c_ponto.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;*- ARMA PALABRA.&lt;/P&gt;&lt;P&gt;        CONCATENATE vg_palavra vg_caracter INTO vg_palavra.&lt;/P&gt;&lt;P&gt;*- CONVIERTE A MAYUSCULA PARA FUTURA COMPARACION.&lt;/P&gt;&lt;P&gt;        TRANSLATE vg_palavra TO UPPER CASE.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO ALGUN INCLUDE&lt;/P&gt;&lt;P&gt;        IF vg_palavra EQ c_include.&lt;/P&gt;&lt;P&gt;          CLEAR vg_palavra.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;*- GRABA NOMBRE DEL INCLUDE PARA FUTURA BUSQUEDA POR USER EXIT.&lt;/P&gt;&lt;P&gt;    READ TABLE ti_includes WITH KEY nome = vg_palavra.&lt;/P&gt;&lt;P&gt;    IF NOT sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;      IF vg_nivel LE p_nivel.&lt;/P&gt;&lt;P&gt;        MOVE: vg_palavra TO ti_includes-nome,&lt;/P&gt;&lt;P&gt;              vg_nivel   TO ti_includes-nivel.&lt;/P&gt;&lt;P&gt;        APPEND ti_includes.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " PROCURA_INCLUDE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  PROCURA_FUNCAO&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM procura_funcao.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: vg_conta_aspa,&lt;/P&gt;&lt;P&gt;         vg_palavra.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUNA FUNCION.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_funcao_2.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UNA FUNCION Y LA LINEA NO ESTA COMENTADA..&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;*- VERIFICA TODOS LOS 500 CARACTERES DE LA LINEA PARA MONTAR NOMBRE&lt;/P&gt;&lt;P&gt;*- DE LA INCLUDE&lt;/P&gt;&lt;P&gt;    DO 500 TIMES.&lt;/P&gt;&lt;P&gt;      vg_inicial = sy-index - 1.&lt;/P&gt;&lt;P&gt;      MOVE ti_programa-cf+vg_inicial(1) TO vg_caracter.&lt;/P&gt;&lt;P&gt;      IF NOT vg_caracter IS INITIAL.&lt;/P&gt;&lt;P&gt;*- VERIFICA SI NO ES FIN DE COMANDO.&lt;/P&gt;&lt;P&gt;        IF vg_caracter EQ c_aspa.&lt;/P&gt;&lt;P&gt;          ADD 1 TO vg_conta_aspa.&lt;/P&gt;&lt;P&gt;          IF vg_conta_aspa EQ 2.&lt;/P&gt;&lt;P&gt;            EXIT.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;*- ARMA PALABRA.&lt;/P&gt;&lt;P&gt;        CONCATENATE vg_palavra vg_caracter INTO vg_palavra.&lt;/P&gt;&lt;P&gt;*- CONVIERTE A MAYUSCULA PARA FUTURA COMPARACION.&lt;/P&gt;&lt;P&gt;        TRANSLATE vg_palavra TO UPPER CASE.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO ALGUN INCLUDE&lt;/P&gt;&lt;P&gt;        IF vg_palavra EQ c_funcao_1.&lt;/P&gt;&lt;P&gt;          CLEAR vg_palavra.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;*- BUSCA NOMBRE DE LA FUNCION PARA FUTURA BUSQUEDA POR USER EXIT.&lt;/P&gt;&lt;P&gt;    CLEAR vg_pname.&lt;/P&gt;&lt;P&gt;    SELECT SINGLE pname&lt;/P&gt;&lt;P&gt;           INTO   vg_pname&lt;/P&gt;&lt;P&gt;           FROM   tfdir&lt;/P&gt;&lt;P&gt;           WHERE  funcname EQ vg_palavra.&lt;/P&gt;&lt;P&gt;    IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      READ TABLE ti_includes WITH KEY nome = vg_pname.&lt;/P&gt;&lt;P&gt;      IF NOT sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;        IF vg_nivel LE p_nivel.&lt;/P&gt;&lt;P&gt;          MOVE: vg_pname TO ti_includes-nome,&lt;/P&gt;&lt;P&gt;                vg_nivel TO ti_includes-nivel.&lt;/P&gt;&lt;P&gt;          APPEND ti_includes.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " PROCURA_FUNCAO&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  VERIFICA_INCLUDE_FUNCAO_SUBMIT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM verifica_include_funcao_submit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK p_ue  IS NOT INITIAL OR p_badi IS NOT INITIAL&lt;/P&gt;&lt;P&gt;     OR p_bte IS NOT INITIAL OR p_enh  IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT ti_includes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ADD 1 TO vg_contador.&lt;/P&gt;&lt;P&gt;    DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;    PERFORM evitar_time_out USING sy-tfill.&lt;/P&gt;&lt;P&gt;    MOVE ti_includes-nivel TO vg_nivel.&lt;/P&gt;&lt;P&gt;    ADD 1 TO vg_nivel.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- BORRA TABLA INTERNA.&lt;/P&gt;&lt;P&gt;    REFRESH ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- REALIZA LECTURA DE INCLUDE/FUNCION ALMACENANDO EN TABLA INTERNA&lt;/P&gt;&lt;P&gt;    READ REPORT ti_includes-nome INTO ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- PROCURA POR INCLUDES.&lt;/P&gt;&lt;P&gt;      IF p_incl EQ c_x.&lt;/P&gt;&lt;P&gt;        PERFORM procura_include.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;*- PROCURA POR FUNCION.&lt;/P&gt;&lt;P&gt;      IF p_func EQ c_x.&lt;/P&gt;&lt;P&gt;        PERFORM procura_funcao.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;*- PROCURA POR SUBMIT.&lt;/P&gt;&lt;P&gt;      IF p_submit EQ c_x.&lt;/P&gt;&lt;P&gt;        PERFORM procura_submit.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " VERIFICA_INCLUDE_FUNCAO_SUBMIT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  EVITAR_TIME_OUT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Evito el TIME OUT visualizando un mensaje&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM evitar_time_out USING p_tfill LIKE sy-tfill.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    vl_total(10) TYPE n,&lt;/P&gt;&lt;P&gt;    vl_atual(10) TYPE n,&lt;/P&gt;&lt;P&gt;    l_tout       LIKE sy-timlo,&lt;/P&gt;&lt;P&gt;    l_time(10)   TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  GET TIME FIELD l_tout.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_tout = l_tout - w_tini.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE:&lt;/P&gt;&lt;P&gt;    p_tfill     TO vl_total,&lt;/P&gt;&lt;P&gt;    vg_contador TO vl_atual.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SHIFT vl_total LEFT DELETING LEADING '0'.&lt;/P&gt;&lt;P&gt;  SHIFT vl_atual LEFT DELETING LEADING '0'.&lt;/P&gt;&lt;P&gt;  WRITE l_tout TO l_time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONCATENATE 'Tpo:' l_time 'Total:' vl_total 'Actual:' vl_atual&lt;/P&gt;&lt;P&gt;         INTO vg_texto&lt;/P&gt;&lt;P&gt;         SEPARATED BY space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      text = vg_texto.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " EVITAR_TIME_OUT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  PROCURA_SUBMIT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM procura_submit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: vg_conta_espaco, vg_palavra, vg_ini_contagem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI LA LINEA DEL PROGRAMA EXISTE ALGUN INCLUDE.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_submit.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO EN EL INCLUDE Y LA LINEA NO ESTÁ COMENTADA.&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;*- VERIFICA TODOS LOS 500 CARACTERES DE LA LINEA PARA MONTAR NOMBRE&lt;/P&gt;&lt;P&gt;*- DEL INCLUDE&lt;/P&gt;&lt;P&gt;    DO 500 TIMES.&lt;/P&gt;&lt;P&gt;      vg_inicial = sy-index - 1.&lt;/P&gt;&lt;P&gt;      MOVE ti_programa-cf+vg_inicial(1) TO vg_caracter.&lt;/P&gt;&lt;P&gt;      IF vg_ini_contagem EQ c_x AND vg_caracter IS INITIAL.&lt;/P&gt;&lt;P&gt;        ADD 1 TO vg_conta_espaco.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF NOT vg_caracter IS INITIAL.&lt;/P&gt;&lt;P&gt;        MOVE c_x TO vg_ini_contagem.&lt;/P&gt;&lt;P&gt;        IF vg_caracter EQ c_ponto.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;*- ARMA PALABRA.&lt;/P&gt;&lt;P&gt;        IF vg_conta_espaco LT 2.&lt;/P&gt;&lt;P&gt;          CONCATENATE vg_palavra vg_caracter INTO vg_palavra.&lt;/P&gt;&lt;P&gt;*- CONVIERTE A MAYUSCULA PARA FUTURA COMPARACION..&lt;/P&gt;&lt;P&gt;          TRANSLATE vg_palavra TO UPPER CASE.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO ALGUN INCLUDE&lt;/P&gt;&lt;P&gt;          IF vg_palavra EQ c_submit.&lt;/P&gt;&lt;P&gt;            CLEAR vg_palavra.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;*- BUSCA NOMBRE DE LA FUNCION PARA FUTURA BUSQUEDA POR USER EXIT.&lt;/P&gt;&lt;P&gt;    READ TABLE ti_includes WITH KEY nome = vg_palavra.&lt;/P&gt;&lt;P&gt;    IF NOT sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;      IF vg_nivel LE p_nivel.&lt;/P&gt;&lt;P&gt;        MOVE: vg_palavra TO ti_includes-nome,&lt;/P&gt;&lt;P&gt;              vg_nivel   TO ti_includes-nivel.&lt;/P&gt;&lt;P&gt;        APPEND ti_includes.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " PROCURA_SUBMIT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  CONSISTI_PARAMETROS&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM consisti_parametros.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_nivel IS INITIAL.&lt;/P&gt;&lt;P&gt;    MOVE 1 TO p_nivel.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_prog IS INITIAL AND p_tcode IS INITIAL.&lt;/P&gt;&lt;P&gt;*- EL NOMBRE DEL PROGRAMA Y EL NOMBRE DE LA TRANSACCION NO PUEDEN SER&lt;/P&gt;&lt;P&gt;*- NULOS. UNO DE ELLOS DEBE SER INFORMADO.&lt;/P&gt;&lt;P&gt;    MESSAGE ID '00' TYPE 'I' NUMBER '398' WITH c_text_e01.&lt;/P&gt;&lt;P&gt;    STOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT p_prog IS INITIAL AND NOT p_tcode IS INITIAL.&lt;/P&gt;&lt;P&gt;*- SE SOLICITA AL USUARIO QUE INFORME NOMBRE DE PROGRAMA O TRANSACCION.&lt;/P&gt;&lt;P&gt;    MESSAGE ID '00' TYPE 'I' NUMBER '398' WITH c_text_e02.&lt;/P&gt;&lt;P&gt;    STOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_ue IS INITIAL    AND p_badi IS INITIAL AND p_bte IS INITIAL&lt;/P&gt;&lt;P&gt;  AND p_sust IS INITIAL AND p_val IS INITIAL  AND p_fdex IS INITIAL&lt;/P&gt;&lt;P&gt;  AND p_enh  IS INITIAL.&lt;/P&gt;&lt;P&gt;*- SE SOLICITA AL USUARIO QUE INFORME UN TIPO DE MEJORA.&lt;/P&gt;&lt;P&gt;    MESSAGE ID '00' TYPE 'I' NUMBER '398' WITH c_text_e03.&lt;/P&gt;&lt;P&gt;    STOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " CONSISTI_PARAMETROS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  INICIALIZA_TABELA&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM inicializa_tabela.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    e_tstc  TYPE tstc,&lt;/P&gt;&lt;P&gt;    l_tcode TYPE sy-tcode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH ti_includes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT p_prog IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE: p_prog TO ti_includes-nome,&lt;/P&gt;&lt;P&gt;          '0'    TO ti_includes-nivel.&lt;/P&gt;&lt;P&gt;    APPEND ti_includes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- BUSCO EL PROGRAMA.&lt;/P&gt;&lt;P&gt;    READ REPORT ti_includes-nome INTO ti_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;      REFRESH ti_programa.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;*- EL PROGRAMA NO EXISTE.&lt;/P&gt;&lt;P&gt;      MESSAGE s893(pz) WITH 'El programa' p_prog 'no existe.'.&lt;/P&gt;&lt;P&gt;      STOP.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSEIF NOT p_tcode IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT SINGLE *&lt;/P&gt;&lt;P&gt;      FROM tstc&lt;/P&gt;&lt;P&gt;      WHERE tcode EQ p_tcode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF tstc-pgmna IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;        MOVE: tstc-pgmna TO ti_includes-nome,&lt;/P&gt;&lt;P&gt;               '0'       TO ti_includes-nivel.&lt;/P&gt;&lt;P&gt;        APPEND ti_includes.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Se trata de una transacción de parámetros. Obtengo la transacción&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;asociada.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CALL FUNCTION 'RS_TRANSACTION_SINGLE_GET'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            parameter_tcode = p_tcode&lt;/P&gt;&lt;P&gt;          IMPORTING&lt;/P&gt;&lt;P&gt;            tcode           = l_tcode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        SELECT SINGLE *&lt;/P&gt;&lt;P&gt;          INTO e_tstc&lt;/P&gt;&lt;P&gt;          FROM tstc&lt;/P&gt;&lt;P&gt;          WHERE tcode EQ l_tcode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;          MOVE: e_tstc-pgmna TO ti_includes-nome,&lt;/P&gt;&lt;P&gt;                 '0'       TO ti_includes-nivel.&lt;/P&gt;&lt;P&gt;          APPEND ti_includes.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;*- LA TRANSACCIÓN NO EXISTE.&lt;/P&gt;&lt;P&gt;          MESSAGE s893(pz) WITH 'La transacción' p_tcode 'no existe.'.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;*- LA TRANSACCIÓN NO EXISTE.&lt;/P&gt;&lt;P&gt;      MESSAGE s893(pz) WITH 'La transacción' p_tcode 'no existe.'.&lt;/P&gt;&lt;P&gt;      STOP.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " INICIALIZA_TABELA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  armar_alv&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Armo el ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM armar_alv .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid TYPE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE sy-repid TO l_repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_callback_program      = l_repid&lt;/P&gt;&lt;P&gt;      i_callback_user_command = 'USER_COMMAND'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_ue IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_exit.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_USER_EXIT'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_USER_EXIT'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_USER_EXIT'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'User-exit'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_user_exit&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_uexit.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_FINAL'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_UEXIT'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_FINAL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_FINAL'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'User-exit Tx.CMOD'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_final&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_badi IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_badi.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_BADI'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_BADI'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_BADI'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_BADI'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'Badis'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_badi&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_bte IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_bte.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_BTE'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_BTE'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_BTE'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_BTE'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'BTE'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_bte&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_enh IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_enh.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_ENH'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_ENH'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_ENH'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_ENH'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'ENH'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_enh&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_enhobj.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_ENHOBJ'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_ENHOBJ'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_ENHOBJ'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_ENHOBJ'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'ENHOBJ'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_enhobj&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_sust IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_sust.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_SUST'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_SUST'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_SUST'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_SUST'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'Sustituciones'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_sust&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_val IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_val.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_VAL'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_VAL'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_VAL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_VAL'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'Validaciones'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_val&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_fdex IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    PERFORM construir_catalogo_fdex.&lt;/P&gt;&lt;P&gt;    PERFORM definir_layout  USING    'TI_FDEX'&lt;/P&gt;&lt;P&gt;                            CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;    PERFORM construir_eventos USING 'TOP_OF_PAGE_FDEX'.&lt;/P&gt;&lt;P&gt;    PERFORM sort TABLES ti_sort&lt;/P&gt;&lt;P&gt;                 USING 'TI_FDEX'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout                  = wa_layout&lt;/P&gt;&lt;P&gt;        it_fieldcat                = ti_cat&lt;/P&gt;&lt;P&gt;        i_tabname                  = 'TI_FDEX'&lt;/P&gt;&lt;P&gt;        it_events                  = ti_events&lt;/P&gt;&lt;P&gt;        it_sort                    = ti_sort&lt;/P&gt;&lt;P&gt;        i_text                     = 'Field-exit'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab                   = ti_fdex&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error              = 1&lt;/P&gt;&lt;P&gt;        maximum_of_appends_reached = 2&lt;/P&gt;&lt;P&gt;        OTHERS                     = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " armar_alv&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_EXIT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_exit .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_USER_EXIT'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'PROGRAMA'  'X' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ' c_text_01,&lt;/P&gt;&lt;P&gt;  'TIPO'      'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_05,&lt;/P&gt;&lt;P&gt;  'NIVEL'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_02,&lt;/P&gt;&lt;P&gt;  'BREAK'     'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_07,&lt;/P&gt;&lt;P&gt;  'LINEA'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_03,&lt;/P&gt;&lt;P&gt;  'CF'        ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_04.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_EXIT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  asignar_campo_a_catalogo&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Asignar campo al catalogo ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM asignar_campo_a_catalogo TABLES pt_cat STRUCTURE wa_cat&lt;/P&gt;&lt;P&gt;                          USING  p_fieldname    LIKE wa_cat-fieldname&lt;/P&gt;&lt;P&gt;                                 p_key          LIKE wa_cat-key&lt;/P&gt;&lt;P&gt;                                 p_col_pos      TYPE c&lt;/P&gt;&lt;P&gt;                                 p_fix_column   LIKE wa_cat-fix_column&lt;/P&gt;&lt;P&gt;                                 p_hotspot      LIKE wa_cat-hotspot&lt;/P&gt;&lt;P&gt;                                 p_do_sum       LIKE wa_cat-do_sum&lt;/P&gt;&lt;P&gt;                                 p_input        LIKE wa_cat-input&lt;/P&gt;&lt;P&gt;                                 p_checkbox     LIKE wa_cat-checkbox&lt;/P&gt;&lt;P&gt;                                 p_no_out       LIKE wa_cat-no_out&lt;/P&gt;&lt;P&gt;                                 p_icon         LIKE wa_cat-icon&lt;/P&gt;&lt;P&gt;                                p_reptext_ddic LIKE wa_cat-reptext_ddic.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  STATICS l_col_pos LIKE sy-cucol.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de cabecera ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR wa_cat.&lt;/P&gt;&lt;P&gt;  READ TABLE pt_cat INTO wa_cat&lt;/P&gt;&lt;P&gt;             WITH KEY fieldname = p_fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT p_reptext_ddic IS INITIAL.&lt;/P&gt;&lt;P&gt;    wa_cat-seltext_l = wa_cat-seltext_m =&lt;/P&gt;&lt;P&gt;    wa_cat-seltext_s = wa_cat-reptext_ddic = p_reptext_ddic.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_col_pos EQ 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Inicializo el conteo para ordenar las columnas.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    l_col_pos = 1.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    ADD 1 TO l_col_pos.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  wa_cat-fieldname     = p_fieldname.&lt;/P&gt;&lt;P&gt;  wa_cat-key           = p_key.&lt;/P&gt;&lt;P&gt;  wa_cat-col_pos       = l_col_pos.&lt;/P&gt;&lt;P&gt;  wa_cat-fix_column    = p_fix_column.&lt;/P&gt;&lt;P&gt;  wa_cat-hotspot       = p_hotspot.&lt;/P&gt;&lt;P&gt;  wa_cat-do_sum        = p_do_sum.&lt;/P&gt;&lt;P&gt;  wa_cat-edit = wa_cat-input = p_input.&lt;/P&gt;&lt;P&gt;  wa_cat-checkbox      = p_checkbox.&lt;/P&gt;&lt;P&gt;  wa_cat-no_out        = p_no_out.&lt;/P&gt;&lt;P&gt;  wa_cat-icon          = p_icon.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MODIFY pt_cat FROM wa_cat INDEX sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " asignar_campo_a_catalogo&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  definir_layout&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Definir atributos del layout de reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM definir_layout USING    p_table  TYPE slis_layout_alv-box_tabname&lt;/P&gt;&lt;P&gt;                    CHANGING p_layout TYPE slis_layout_alv .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR p_layout.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_table NE 'TI_CIMP'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Marco el campo para la selección.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    p_layout-box_fieldname         = 'SEL'.&lt;/P&gt;&lt;P&gt;    p_layout-box_tabname           = p_table.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  p_layout-zebra                 = 'X'.&lt;/P&gt;&lt;P&gt;  p_layout-colwidth_optimize     = 'X'.&lt;/P&gt;&lt;P&gt;  p_layout-no_vline              = ' '.&lt;/P&gt;&lt;P&gt;  p_layout-no_colhead            = ' '.&lt;/P&gt;&lt;P&gt;  p_layout-lights_condense       = 'X'.&lt;/P&gt;&lt;P&gt;  p_layout-detail_popup          = 'X'.&lt;/P&gt;&lt;P&gt;  p_layout-detail_initial_lines  = 'X'.&lt;/P&gt;&lt;P&gt;  p_layout-flexible_key          = ' '.&lt;/P&gt;&lt;P&gt;  p_layout-key_hotspot           = ' '.&lt;/P&gt;&lt;P&gt;  p_layout-confirmation_prompt   = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " definir_layout&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_eventos&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Asignar eventos soportados&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_eventos USING p_form LIKE wa_events-form.&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_type(1) TYPE n.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_events.&lt;/P&gt;&lt;P&gt;  CLEAR:   wa_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ALV Simple Block append.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  l_type = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Buscar secciones para eventos&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_list_type = l_type&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      et_events   = ti_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Leer evento 'TOP_OF_PAGE'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  READ TABLE ti_events WITH KEY name = slis_ev_top_of_page&lt;/P&gt;&lt;P&gt;                           INTO wa_events.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar Rutina FORM 'TOP_OF_PAGE' a evento&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    MOVE p_form TO wa_events-form.&lt;/P&gt;&lt;P&gt;    MODIFY ti_events FROM wa_events INDEX sy-tabix.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_eventos&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  top_of_page&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_inc.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_inc NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_user_exit.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                              l_tfill_inc&lt;/P&gt;&lt;P&gt;                              'User-exit'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "top_of_page&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_UEXIT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_uexit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_final.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'USER-EXITs Tx.SMOD'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_UEXIT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_FDEX&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_fdex.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_fdex.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'FIELD-EXITs'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_FDEX&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_BADI&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_badi.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_inc.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_inc NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_badi.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'BADIs'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_BADI&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_BTE&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_bte.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_inc.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_inc NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_bte.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'BTEs'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_BTE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_ENH&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_enh.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_inc.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_inc NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_enh.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'Puntos de ampliación'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_ENH&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sort&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Creo el sort del ALV (FM).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;PT_sort     Tabla&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_tabname   Nombre de la tabla&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM sort  TABLES   pt_sort&lt;/P&gt;&lt;P&gt;           USING    p_tabname TYPE any.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;  REFRESH pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE p_tabname.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_SUST'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_sort-fieldname = 'SUBSTID'.&lt;/P&gt;&lt;P&gt;      wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;      wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;      wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_sort-fieldname = 'SUBSEQNR'.&lt;/P&gt;&lt;P&gt;      wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;      wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;      wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_sort-fieldname = 'CONSEQNR'.&lt;/P&gt;&lt;P&gt;      wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;      wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;      wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN 'TI_VAL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_sort-fieldname = 'VALID'.&lt;/P&gt;&lt;P&gt;      wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;      wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;      wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_sort-fieldname = 'VALSEQNR'.&lt;/P&gt;&lt;P&gt;      wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;      wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;      wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN 'TI_ENHOBJ'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_sort-fieldname = 'ENHNAME'.&lt;/P&gt;&lt;P&gt;      wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;      wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;      wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_sort-fieldname = 'VERSION'.&lt;/P&gt;&lt;P&gt;      wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;      wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;      wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF p_tabname NE 'TI_FINAL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        wa_sort-fieldname = 'TIPO'.&lt;/P&gt;&lt;P&gt;        wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;        wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;        wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;        APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF p_tabname NE 'TI_FDEX'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          wa_sort-fieldname = 'NIVEL'.&lt;/P&gt;&lt;P&gt;          wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;          wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;          wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;          APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          wa_sort-fieldname = 'PROGRAMA'.&lt;/P&gt;&lt;P&gt;          wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;          wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;          wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;          APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          wa_sort-fieldname = 'LINEA'.&lt;/P&gt;&lt;P&gt;          wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;          wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;          wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;          APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        wa_sort-fieldname = 'NAME'.&lt;/P&gt;&lt;P&gt;        wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;        wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;        wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;        APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CLEAR:  pt_sort, wa_sort.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        wa_sort-fieldname = 'MEMBER'.&lt;/P&gt;&lt;P&gt;        wa_sort-tabname   = p_tabname.&lt;/P&gt;&lt;P&gt;        wa_sort-up        = 'X'.&lt;/P&gt;&lt;P&gt;        wa_sort-comp      = 'X'.&lt;/P&gt;&lt;P&gt;        APPEND wa_sort TO pt_sort.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " sort&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  mostrar_listado&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar listado ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM mostrar_listado .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  wa_print-reserve_lines = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      is_print      = wa_print&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      program_error = 1&lt;/P&gt;&lt;P&gt;      OTHERS        = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " mostrar_listado&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  user_command&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Evaluar acciones del usuario&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM user_command USING ucomm   LIKE sy-ucomm&lt;/P&gt;&lt;P&gt;                        sfields TYPE slis_selfield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA l_break TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Rescatar el registro seleccionado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CASE sfields-tabname.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_USER_EXIT'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_user_exit INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_BADI'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_badi INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_BTE'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_bte INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_ENH'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_enh INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_ENHOBJ'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_enhobj INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_FDEX'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_fdex INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_FINAL'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_final INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_SUST'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_sust INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_VAL'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_val INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;    WHEN 'TI_CIMP'.&lt;/P&gt;&lt;P&gt;      READ TABLE ti_cimp INDEX sfields-tabindex.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Seleccion de opcion.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CASE ucomm.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOUBLE CLICK.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    WHEN '&amp;amp;IC1'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Evaluar valor de campo seleccionado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CHECK NOT sfields-value IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CASE sfields-tabname.&lt;/P&gt;&lt;P&gt;        WHEN 'TI_USER_EXIT'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USER-EXIT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_user_exit-tipo EQ sfields-value(4).&lt;/P&gt;&lt;P&gt;            SEARCH ti_user_exit-cf FOR c_enhance.&lt;/P&gt;&lt;P&gt;            CHECK sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_exit USING ti_user_exit-programa&lt;/P&gt;&lt;P&gt;                                          ti_user_exit-cf.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_user_exit-cf(60) EQ sfields-value.&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_linea USING ti_user_exit-programa&lt;/P&gt;&lt;P&gt;                                           ti_user_exit-linea.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_user_exit-break EQ sfields-value(4)&lt;/P&gt;&lt;P&gt;              OR ti_user_exit-break+1(2) EQ sfields-value(2).&lt;/P&gt;&lt;P&gt;            PERFORM asignar_break USING ti_user_exit-programa&lt;/P&gt;&lt;P&gt;                                        ti_user_exit-linea&lt;/P&gt;&lt;P&gt;                                        ti_user_exit-break.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_FINAL'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USER-EXIT Tx. CMOD.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_final-name EQ sfields-value.&lt;/P&gt;&lt;P&gt;            CALL FUNCTION 'MOD_SAP_HEAD'&lt;/P&gt;&lt;P&gt;              EXPORTING&lt;/P&gt;&lt;P&gt;                mode          = 'SHOM'&lt;/P&gt;&lt;P&gt;                modname       = ti_final-name&lt;/P&gt;&lt;P&gt;              EXCEPTIONS&lt;/P&gt;&lt;P&gt;                attr_enqueued = 1&lt;/P&gt;&lt;P&gt;                text_enqueued = 2&lt;/P&gt;&lt;P&gt;                OTHERS        = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          ELSEIF ti_final-include EQ sfields-value.&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_linea USING ti_final-programa&lt;/P&gt;&lt;P&gt;                                           '1'.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_BADI'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Badi.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_badi-tipo EQ sfields-value(4).&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_badi USING ti_badi-cf.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_badi-cf(60) EQ sfields-value.&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_linea USING ti_badi-programa&lt;/P&gt;&lt;P&gt;                                           ti_badi-linea.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_badi-break EQ sfields-value(4)&lt;/P&gt;&lt;P&gt;              OR ti_badi-break+1(2) EQ sfields-value(2).&lt;/P&gt;&lt;P&gt;            PERFORM asignar_break USING ti_badi-programa&lt;/P&gt;&lt;P&gt;                                        ti_badi-linea&lt;/P&gt;&lt;P&gt;                                        ti_badi-break.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_BTE'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      BTE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_bte-tipo EQ sfields-value(4).&lt;/P&gt;&lt;P&gt;            PERFORM fibf USING ti_bte-cf.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_bte-cf(60) EQ sfields-value.&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_linea USING ti_bte-programa&lt;/P&gt;&lt;P&gt;                                           ti_bte-linea.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_bte-break EQ sfields-value(4)&lt;/P&gt;&lt;P&gt;              OR ti_bte-break+1(2) EQ sfields-value(2).&lt;/P&gt;&lt;P&gt;            PERFORM asignar_break USING ti_bte-programa&lt;/P&gt;&lt;P&gt;                                        ti_bte-linea&lt;/P&gt;&lt;P&gt;                                        ti_bte-break.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_ENH'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Punto de ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_enh-cf(60) EQ sfields-value.&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_linea USING ti_enh-programa&lt;/P&gt;&lt;P&gt;                                           ti_enh-linea.&lt;/P&gt;&lt;P&gt;            MOVE 'X' TO l_break.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_enh-tipo EQ sfields-value(4).&lt;/P&gt;&lt;P&gt;            PERFORM bi_se18 USING ti_enh-cf.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_ENHOBJ'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Punto de ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_enhobj-enhname EQ sfields-value(30).&lt;/P&gt;&lt;P&gt;            PERFORM bi_se19 USING ti_enhobj-enhname.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_SUST'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Sustituciones.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_sust-substid  EQ sfields-value(7) OR&lt;/P&gt;&lt;P&gt;             ti_sust-subseqnr EQ sfields-value(3).&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_sust USING ti_sust-substid&lt;/P&gt;&lt;P&gt;                                          ti_sust-subseqnr.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_VAL'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Validaciones.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_val-valid    EQ sfields-value(7) OR&lt;/P&gt;&lt;P&gt;             ti_val-valseqnr EQ sfields-value(3).&lt;/P&gt;&lt;P&gt;            PERFORM visualizar_val USING ti_val-valid&lt;/P&gt;&lt;P&gt;                                         ti_val-valseqnr.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_FDEX'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Field-exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF ti_fdex-tipo EQ sfields-value.&lt;/P&gt;&lt;P&gt;            SUBMIT rsmodprf AND RETURN.&lt;/P&gt;&lt;P&gt;          ELSEIF ti_fdex-cf(60) EQ sfields-value.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo el field-exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            CALL FUNCTION 'RS_FUNCTION_SHOW'&lt;/P&gt;&lt;P&gt;              EXPORTING&lt;/P&gt;&lt;P&gt;                funcname = ti_fdex-cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            CALL FUNCTION 'RS_NAVIGATION_MONITOR'.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN 'TI_CIMP'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Customer implementation.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          CASE sfields-fieldname.&lt;/P&gt;&lt;P&gt;            WHEN 'ENHNAME'.&lt;/P&gt;&lt;P&gt;              PERFORM bi_se19 USING ti_cimp-enhname.&lt;/P&gt;&lt;P&gt;            WHEN 'ENHINCLUDE'.&lt;/P&gt;&lt;P&gt;              PERFORM visualizar_enh_cf USING ti_cimp-enhinclude.&lt;/P&gt;&lt;P&gt;            WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DO NOTHING !!!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DO NOTHING !!!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    DO NOTHING !!!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF l_break IS NOT INITIAL AND sfields-tabname NE 'TI_CIMP'.&lt;/P&gt;&lt;P&gt;    WAIT UP TO 1 SECONDS.&lt;/P&gt;&lt;P&gt;    PERFORM cargar_break.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  sfields-refresh = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "user_command&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_linea&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la linea de código del programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_linea USING p_programa TYPE sy-repid&lt;/P&gt;&lt;P&gt;                            p_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo la linea seleccionada en el programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_TOOL_ACCESS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      operation           = c_operation&lt;/P&gt;&lt;P&gt;      object_name         = p_programa&lt;/P&gt;&lt;P&gt;      object_type         = c_type&lt;/P&gt;&lt;P&gt;      position            = p_linea&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_executed        = 1&lt;/P&gt;&lt;P&gt;      invalid_object_type = 2&lt;/P&gt;&lt;P&gt;      OTHERS              = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_linea&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_exit&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Buscar USER-EXIT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_exit .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUN USER-EXIT.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_user_exit.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UN USER-EXIT Y SE VERIFICA SI LA LINEA NO ESTA COMENTADA&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS ENDFORM.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_endform.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS PERFORM.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_perform.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LAS ASIGNACIONES.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_igual.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR ti_user_exit.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INÍCIO DEL STRING.&lt;/P&gt;&lt;P&gt;    SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;    MOVE: ti_includes-nome  TO ti_user_exit-programa,&lt;/P&gt;&lt;P&gt;          c_ue              TO ti_user_exit-tipo,&lt;/P&gt;&lt;P&gt;          sy-tabix          TO ti_user_exit-linea,&lt;/P&gt;&lt;P&gt;          ti_programa-cf    TO ti_user_exit-cf,&lt;/P&gt;&lt;P&gt;          ti_includes-nivel TO ti_user_exit-nivel.&lt;/P&gt;&lt;P&gt;    APPEND ti_user_exit.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_badi&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Buscar BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_badi .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_subrc LIKE sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUNA BADI.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_badi.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UNA BADI Y SE VERIFICA SI LA LINEA NO ESTÁ COMENTADA.&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_include.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      CLEAR l_subrc.&lt;/P&gt;&lt;P&gt;      SEARCH ti_programa-cf FOR c_method.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        SEARCH ti_programa-cf FOR c_funcao_2.&lt;/P&gt;&lt;P&gt;        IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;          SEARCH ti_programa-cf FOR c_perform.&lt;/P&gt;&lt;P&gt;          IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;            SEARCH ti_programa-cf FOR c_type_ref.&lt;/P&gt;&lt;P&gt;            IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;              SEARCH ti_programa-cf FOR c_form.&lt;/P&gt;&lt;P&gt;              MOVE '4' TO l_subrc.&lt;/P&gt;&lt;P&gt;            ENDIF.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF l_subrc EQ 0.&lt;/P&gt;&lt;P&gt;        CLEAR ti_badi.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;        SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;        MOVE: ti_includes-nome  TO ti_badi-programa,&lt;/P&gt;&lt;P&gt;              c_b               TO ti_badi-tipo,&lt;/P&gt;&lt;P&gt;              sy-tabix          TO ti_badi-linea,&lt;/P&gt;&lt;P&gt;              ti_programa-cf    TO ti_badi-cf,&lt;/P&gt;&lt;P&gt;              ti_includes-nivel TO ti_badi-nivel.&lt;/P&gt;&lt;P&gt;        APPEND ti_badi.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    CHECK p_handl IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUNA INSTANCIA DE&lt;/P&gt;&lt;P&gt;*- UNA BADI.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_handler.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UNA INSTANCIA DE IMPLEMENACIÓN Y SE VERIFICA SI LA LINEA&lt;/P&gt;&lt;P&gt;*- NO ESTÁ COMENTADA.&lt;/P&gt;&lt;P&gt;    IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;    AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SEARCH ti_programa-cf FOR c_include.&lt;/P&gt;&lt;P&gt;      CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      CLEAR ti_badi.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;      SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;      MOVE: ti_includes-nome  TO ti_badi-programa,&lt;/P&gt;&lt;P&gt;            c_b               TO ti_badi-tipo,&lt;/P&gt;&lt;P&gt;            sy-tabix          TO ti_badi-linea,&lt;/P&gt;&lt;P&gt;            ti_programa-cf    TO ti_badi-cf,&lt;/P&gt;&lt;P&gt;            ti_includes-nivel TO ti_badi-nivel.&lt;/P&gt;&lt;P&gt;      APPEND ti_badi.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_badi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_bte&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Buscar BTE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_bte .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUNA BTE.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_bte.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UNA BTE Y SE VERIFICA SI LA LINEA NO ESTÁ COMENTADA.&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;'OPEN_FI_PERFORM'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE TRAIGA EL LLAMADO A LA FUNCIÓN DE LA BTE.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_funcao_2.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS INCLUDE DEL GRUPO DE FUNCIÓN.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_include.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS ENDFORM.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_endform.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR ti_bte.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;    SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;    MOVE: ti_includes-nome  TO ti_bte-programa,&lt;/P&gt;&lt;P&gt;          c_bt              TO ti_bte-tipo,&lt;/P&gt;&lt;P&gt;          sy-tabix          TO ti_bte-linea,&lt;/P&gt;&lt;P&gt;          ti_programa-cf    TO ti_bte-cf,&lt;/P&gt;&lt;P&gt;          ti_includes-nivel TO ti_bte-nivel.&lt;/P&gt;&lt;P&gt;    APPEND ti_bte.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUNA BTE.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_bte1.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UNA BTE Y SE VERIFICA SI LA LINEA NO ESTÁ COMENTADA.&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;'OUTBOUND_CALL'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE TRAIGA EL LLAMADO A LA FUNCIÓN DE LA BTE.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_funcao_2.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS INCLUDE DEL GRUPO DE FUNCIÓN.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_include.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS ENDFORM.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_endform.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR ti_bte.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;    SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;    MOVE: ti_includes-nome  TO ti_bte-programa,&lt;/P&gt;&lt;P&gt;          c_bt              TO ti_bte-tipo,&lt;/P&gt;&lt;P&gt;          sy-tabix          TO ti_bte-linea,&lt;/P&gt;&lt;P&gt;          ti_programa-cf    TO ti_bte-cf,&lt;/P&gt;&lt;P&gt;          ti_includes-nivel TO ti_bte-nivel.&lt;/P&gt;&lt;P&gt;    APPEND ti_bte.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_bte&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  repid_f4&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Ejecuto el F4 para buscar programas.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM repid_f4 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      object_type          = 'PROG'&lt;/P&gt;&lt;P&gt;      object_name          = p_prog&lt;/P&gt;&lt;P&gt;      suppress_selection   = 'X'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      object_name_selected = p_prog&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      cancel               = 1&lt;/P&gt;&lt;P&gt;      wrong_type           = 2&lt;/P&gt;&lt;P&gt;      OTHERS               = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                    " repid_f4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_badi&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo las definiciones de la BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------" /&gt;&lt;P&gt;ढ़----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_badi  USING p_cf LIKE ti_user_exit-cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_answer(1),&lt;/P&gt;&lt;P&gt;    l_inter_name LIKE sxs_inter-inter_name,&lt;/P&gt;&lt;P&gt;    l_cf TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF lt_cf OCCURS 0,&lt;/P&gt;&lt;P&gt;          linea(500),&lt;/P&gt;&lt;P&gt;        END OF lt_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SEARCH p_cf FOR c_type_ref.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH lt_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_cf = 500 - sy-fdpos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SPLIT p_cf+sy-fdpos(l_cf) AT space INTO TABLE lt_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE lt_cf INDEX 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRANSLATE lt_cf-linea TO UPPER CASE.&lt;/P&gt;&lt;P&gt;  TRANSLATE lt_cf-linea USING '. , '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE lt_cf-linea TO l_inter_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo a partir de la interface la definición de la BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM sxs_inter&lt;/P&gt;&lt;P&gt;    WHERE inter_name EQ l_inter_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Muestro POP-UP para selección de si se desea visualiar la definición&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;o la implementación de la BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'POPUP_WITH_2_BUTTONS_TO_CHOOSE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      defaultoption = '1'&lt;/P&gt;&lt;P&gt;      diagnosetext1 = 'Definición BADI:'&lt;/P&gt;&lt;P&gt;      diagnosetext2 = sxs_inter-exit_name&lt;/P&gt;&lt;P&gt;      diagnosetext3 = '.'&lt;/P&gt;&lt;P&gt;      textline1     = ' '&lt;/P&gt;&lt;P&gt;      textline2     = 'Defina la visualización:'&lt;/P&gt;&lt;P&gt;      textline3     = ' '&lt;/P&gt;&lt;P&gt;      text_option1  = 'Definición BADI'&lt;/P&gt;&lt;P&gt;      text_option2  = 'Implementación BADI'&lt;/P&gt;&lt;P&gt;      titel         = 'Seleccionar tipo:'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      answer        = l_answer.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE l_answer.&lt;/P&gt;&lt;P&gt;    WHEN '1'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo la definición de la BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'SXO_BADI_SHOW'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          exit_name         = sxs_inter-exit_name&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          action_canceled   = 1&lt;/P&gt;&lt;P&gt;          access_failure    = 2&lt;/P&gt;&lt;P&gt;          badi_not_exixting = 3&lt;/P&gt;&lt;P&gt;          OTHERS            = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN '2'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo la implementación de la BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'SXO_IMPL_FOR_BADI_OVER'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          exit_name         = sxs_inter-exit_name&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          no_imps_existing  = 1&lt;/P&gt;&lt;P&gt;          badi_not_existing = 2&lt;/P&gt;&lt;P&gt;          action_canceled   = 3&lt;/P&gt;&lt;P&gt;          OTHERS            = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 1.&lt;/P&gt;&lt;P&gt;        MESSAGE s380(enhancement) WITH sxs_inter-exit_name.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do Nothing !!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_badi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_exit&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo el USER-EXIT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_REPID Nombre del programa.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_CF    Linea de código del programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_exit USING p_repid LIKE sy-repid&lt;/P&gt;&lt;P&gt;                           p_cf    LIKE ti_user_exit-cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_exit        LIKE rs38l-name,&lt;/P&gt;&lt;P&gt;    l_modname     LIKE modact-name,&lt;/P&gt;&lt;P&gt;    l_standard(3) TYPE c,&lt;/P&gt;&lt;P&gt;    l_cf          TYPE i,&lt;/P&gt;&lt;P&gt;    l_linea(500)  TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF lt_cf OCCURS 0,&lt;/P&gt;&lt;P&gt;          linea(500),&lt;/P&gt;&lt;P&gt;        END OF lt_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: d010inc, modsap, modact.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo el programa de control.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM d010inc&lt;/P&gt;&lt;P&gt;    WHERE include EQ p_repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;No se trata de un INCLUDE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MOVE p_repid TO d010inc-master.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SEARCH p_cf FOR c_enhance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH lt_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_cf = 500 - sy-fdpos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE p_cf+sy-fdpos(l_cf) TO l_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SPLIT l_linea AT space INTO TABLE lt_cf.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo la posición del número del exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  READ TABLE lt_cf INDEX 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRANSLATE lt_cf USING ''' '.&lt;/P&gt;&lt;P&gt;  CONDENSE lt_cf NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Armo el nombre del exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CONCATENATE 'EXIT' d010inc-master lt_cf INTO l_exit&lt;/P&gt;&lt;P&gt;    SEPARATED BY '_'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo la ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM modsap&lt;/P&gt;&lt;P&gt;    WHERE member EQ l_exit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico las modificaciones.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM modact&lt;/P&gt;&lt;P&gt;    WHERE member EQ modsap-name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Se encontró el proyecto para la ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MOVE:&lt;/P&gt;&lt;P&gt;      modact-name   TO l_modname,&lt;/P&gt;&lt;P&gt;      c_std_implmnt TO l_standard.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'MOD_COMPONENTS'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        mode               = 'SHOM'&lt;/P&gt;&lt;P&gt;        modname            = l_modname&lt;/P&gt;&lt;P&gt;        p_standard         = l_standard&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        permission_failure = 1&lt;/P&gt;&lt;P&gt;        not_found          = 2&lt;/P&gt;&lt;P&gt;        OTHERS             = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;No hay proyecto para la ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MOVE:&lt;/P&gt;&lt;P&gt;      modsap-name      TO l_modname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'MOD_SAP_HEAD'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        mode          = 'SHOM'&lt;/P&gt;&lt;P&gt;        modname       = l_modname&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        attr_enqueued = 1&lt;/P&gt;&lt;P&gt;        text_enqueued = 2&lt;/P&gt;&lt;P&gt;        OTHERS        = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_field_exit&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Busco los field-exit's de los campos de las DYNPRO's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_field_exit .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF lt_campo OCCURS 0,&lt;/P&gt;&lt;P&gt;          repid     LIKE sy-repid,&lt;/P&gt;&lt;P&gt;          dnum      LIKE d020s-dnum,&lt;/P&gt;&lt;P&gt;          tabname   LIKE dd03l-tabname,&lt;/P&gt;&lt;P&gt;          fieldname LIKE dd03l-fieldname,&lt;/P&gt;&lt;P&gt;        END OF lt_campo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF lt_fe OCCURS 0,&lt;/P&gt;&lt;P&gt;          cf(500),&lt;/P&gt;&lt;P&gt;        END OF lt_fe.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_prog   LIKE sy-repid,&lt;/P&gt;&lt;P&gt;    lt_d020s LIKE d020s OCCURS 0 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;    lt_d021s LIKE d021s OCCURS 0 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;    lt_dd03l LIKE dd03l OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK p_fdex IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR ti_fdex.&lt;/P&gt;&lt;P&gt;  REFRESH: lt_d020s, lt_d021s, lt_dd03l, lt_fe.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE: c_fdex TO ti_fdex-tipo.&lt;/P&gt;&lt;P&gt;  APPEND ti_fdex.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_prog IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    MOVE p_prog   TO l_prog.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MOVE tstc-pgmna TO l_prog.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo las DYNPRO del programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    FROM d020s&lt;/P&gt;&lt;P&gt;    INTO CORRESPONDING FIELDS OF TABLE lt_d020s&lt;/P&gt;&lt;P&gt;    WHERE prog EQ l_prog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT lt_d020s.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;    PERFORM evitar_time_out USING sy-tfill.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    REFRESH lt_d021s.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo los campos de la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SCRP_GET_SCREEN_INFOS'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        dynnr                 = lt_d020s-dnum&lt;/P&gt;&lt;P&gt;        progname              = lt_d020s-prog&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        fieldlist             = lt_d021s&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        dynpro_does_not_exist = 1&lt;/P&gt;&lt;P&gt;        no_field_list         = 2&lt;/P&gt;&lt;P&gt;        cancelled             = 3&lt;/P&gt;&lt;P&gt;        OTHERS                = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Recorro solo los campos de entrada/salida.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    LOOP AT lt_d021s WHERE ityp = 'C'&lt;/P&gt;&lt;P&gt;                        OR ityp = 'N'&lt;/P&gt;&lt;P&gt;                        OR ityp = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SEARCH lt_d021s-fnam FOR '-'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        MOVE:&lt;/P&gt;&lt;P&gt;          lt_d020s-prog TO lt_campo-repid,&lt;/P&gt;&lt;P&gt;          lt_d020s-dnum TO lt_campo-dnum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Separo el campo de la tabla o estructura.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        SPLIT lt_d021s-fnam AT '-' INTO lt_campo-tabname&lt;/P&gt;&lt;P&gt;                                        lt_campo-fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND lt_campo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK lt_campo[] IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT lt_campo BY repid dnum tabname fieldname.&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM lt_campo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo los elementos de datos.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    FROM dd03l&lt;/P&gt;&lt;P&gt;    INTO CORRESPONDING FIELDS OF TABLE lt_dd03l&lt;/P&gt;&lt;P&gt;    FOR ALL ENTRIES IN lt_campo&lt;/P&gt;&lt;P&gt;    WHERE tabname   EQ lt_campo-tabname&lt;/P&gt;&lt;P&gt;      AND fieldname EQ lt_campo-fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT lt_dd03l BY rollname.&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM lt_dd03l.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT lt_dd03l.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR: tddir, tddirs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT SINGLE *&lt;/P&gt;&lt;P&gt;      FROM tddir&lt;/P&gt;&lt;P&gt;      WHERE de EQ lt_dd03l-rollname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DESCRIBE TABLE ti_includes.&lt;/P&gt;&lt;P&gt;    PERFORM evitar_time_out USING sy-tfill.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF tddir-activ EQ 'S'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Selectivo en dynpros.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      SELECT SINGLE *&lt;/P&gt;&lt;P&gt;        FROM tddirs&lt;/P&gt;&lt;P&gt;        WHERE de    EQ lt_dd03l-rollname&lt;/P&gt;&lt;P&gt;          AND prog  EQ lt_d020s-prog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico si se trata del programa en cuestión.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Armo la FM.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CONCATENATE 'FIELD_EXIT_' lt_dd03l-rollname INTO lt_fe-cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF tddirs-exitnr IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;      CONCATENATE ti_user_exit-cf tddirs-exitnr INTO lt_fe-cf&lt;/P&gt;&lt;P&gt;        SEPARATED BY '_'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    READ TABLE lt_fe WITH KEY cf = lt_fe-cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc IS NOT INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Aún no se encontró el field-exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    APPEND lt_fe.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT lt_fe.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Cargo los field-exit's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MOVE:&lt;/P&gt;&lt;P&gt;      c_fdex   TO ti_fdex-tipo,&lt;/P&gt;&lt;P&gt;      lt_fe-cf TO ti_fdex-cf.&lt;/P&gt;&lt;P&gt;    APPEND ti_fdex.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_field_exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  fibf&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la BTE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_CF  Código fuente&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM fibf  USING p_cf LIKE ti_bte-cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_fdpos       TYPE sy-fdpos,&lt;/P&gt;&lt;P&gt;    l_cf          TYPE i,&lt;/P&gt;&lt;P&gt;    l_tipo        TYPE c,&lt;/P&gt;&lt;P&gt;    l_linea(500)  TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SEARCH p_cf FOR c_bte.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;'OPEN_FI_PERFORM'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    l_fdpos = sy-fdpos + 16.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_cf = 500 - l_fdpos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE p_cf+l_fdpos(l_cf) TO l_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE l_linea+9(1) TO l_tipo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SEARCH p_cf FOR c_bte1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;'OUTBOUND_CALL'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    l_fdpos = sy-fdpos + 14.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_cf = 500 - l_fdpos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE p_cf+l_fdpos(l_cf) TO l_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE l_linea+9(1) TO l_tipo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF l_tipo IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM visualizar_bte USING l_tipo&lt;/P&gt;&lt;P&gt;                                 l_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    CALL TRANSACTION 'FIBF'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " fibf&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  breakpoint&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Seteo los breakpoint para las intancias de las BADI's&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      y para los eventos de las BTE's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM breakpoint .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TYPES: BEGIN OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;  INCLUDE TYPE breakpoint.&lt;/P&gt;&lt;P&gt;  TYPES:   mainprog TYPE trdir-name,&lt;/P&gt;&lt;P&gt;          text(72),&lt;/P&gt;&lt;P&gt;          mark(1).&lt;/P&gt;&lt;P&gt;  TYPES: END OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;  DATA: showbreakpointtab TYPE TABLE OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_badi IS NOT INITIAL AND p_handl IS NOT INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Break en el método GET_INSTANCE de la clase CL_EXITHANDLER para&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;obtener la definiciones de las BADI's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = '25'&lt;/P&gt;&lt;P&gt;        program      = 'CL_EXITHANDLER================CM001'&lt;/P&gt;&lt;P&gt;        mainprogram  = 'CL_EXITHANDLER================CP'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_bte IS NOT INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Break en el módulo de funciones BF_FUNCTIONS_FIND para obtener los&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;eventos de las BTE's de proceso.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = '15'&lt;/P&gt;&lt;P&gt;        program      = 'LITSRU02'&lt;/P&gt;&lt;P&gt;        mainprogram  = 'SAPLITSR'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Break en el módulo de funciones PC_FUNCTION_FIND para obtener los&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;eventos de las P&amp;amp;S (publicación y suscripción) BTE's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = '18'&lt;/P&gt;&lt;P&gt;        program      = 'LITSRU07'&lt;/P&gt;&lt;P&gt;        mainprogram  = 'SAPLITSR'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_sust IS NOT INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Break en el módulo de funciones G_VSR_SUBSTITUTION_CALL del cual se&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;desprende el llamado a las sustituciones.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = '42'&lt;/P&gt;&lt;P&gt;        program      = 'LGBL5U04'&lt;/P&gt;&lt;P&gt;        mainprogram  = 'SAPLGBL5'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Break en el módulo de funciones G_VSR_MULTI_SUBSTITUTION_CALL del cual&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;se desprende el llamado a las sustituciones.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = '21'&lt;/P&gt;&lt;P&gt;        program      = 'LGBL5U09'&lt;/P&gt;&lt;P&gt;        mainprogram  = 'SAPLGBL5'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_val IS NOT INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Break en el módulo de funciones G_VSR_VALIDATION_CALL del cual se&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;desprende el llamado a las validaciones.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = '30'&lt;/P&gt;&lt;P&gt;        program      = 'LGBL5U01'&lt;/P&gt;&lt;P&gt;        mainprogram  = 'SAPLGBL5'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Break en el módulo de funciones G_VSR_MULTI_VALIDATION_CALL del cual&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;se desprende el llamado a las validaciones.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = '15'&lt;/P&gt;&lt;P&gt;        program      = 'LGBL5U08'&lt;/P&gt;&lt;P&gt;        mainprogram  = 'SAPLGBL5'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo todos los breakpoint.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_SHOW_BREAKPOINTS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      objektinfp  = '*'&lt;/P&gt;&lt;P&gt;      objekttypp  = 'PG'&lt;/P&gt;&lt;P&gt;      text1p      = ' '&lt;/P&gt;&lt;P&gt;      text2p      = ' '&lt;/P&gt;&lt;P&gt;      text3p      = ' '&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      breakpoints = showbreakpointtab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " breakpoint&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_badi&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_badi .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_BADI'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'PROGRAMA'  'X' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ' c_text_01,&lt;/P&gt;&lt;P&gt;  'TIPO'      'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_05,&lt;/P&gt;&lt;P&gt;  'NIVEL'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_02,&lt;/P&gt;&lt;P&gt;  'BREAK'     'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_07,&lt;/P&gt;&lt;P&gt;  'LINEA'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_03,&lt;/P&gt;&lt;P&gt;  'CF'        ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_04.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_badi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_bte&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_bte .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_BTE'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'PROGRAMA'  'X' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ' c_text_01,&lt;/P&gt;&lt;P&gt;  'TIPO'      'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_05,&lt;/P&gt;&lt;P&gt;  'NIVEL'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_02,&lt;/P&gt;&lt;P&gt;  'BREAK'     'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' 'X' c_text_07,&lt;/P&gt;&lt;P&gt;  'LINEA'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_03,&lt;/P&gt;&lt;P&gt;  'CF'        ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_04.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_bte&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_FDEX&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_fdex .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_FDEX'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'TIPO'      'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_05,&lt;/P&gt;&lt;P&gt;  'CF'        ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_04.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_FDEX&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  cargar_break&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Cargo los break-points en las tablas correspondientes.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM cargar_break .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TYPES: BEGIN OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;  INCLUDE TYPE breakpoint.&lt;/P&gt;&lt;P&gt;  TYPES:   mainprog TYPE trdir-name,&lt;/P&gt;&lt;P&gt;          text(72),&lt;/P&gt;&lt;P&gt;          mark(1).&lt;/P&gt;&lt;P&gt;  TYPES: END OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tabix   TYPE sy-tabix,&lt;/P&gt;&lt;P&gt;    l_line    TYPE breakpoint-line,&lt;/P&gt;&lt;P&gt;    l_program TYPE breakpoint-program,&lt;/P&gt;&lt;P&gt;    wa_break  TYPE showbreakpointstruc,&lt;/P&gt;&lt;P&gt;    lt_break  TYPE TABLE OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo todos los breakpoints marcados.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_GET_ALL_BREAKPOINTS'&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      breakpointtab = lt_break.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK lt_break[] IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_ue IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    LOOP AT ti_user_exit.&lt;/P&gt;&lt;P&gt;      l_tabix = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        ti_user_exit-linea    TO l_line,&lt;/P&gt;&lt;P&gt;        ti_user_exit-programa TO l_program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      READ TABLE lt_break INTO wa_break&lt;/P&gt;&lt;P&gt;                          WITH KEY program = l_program&lt;/P&gt;&lt;P&gt;                                   line    = l_line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;        MOVE icon_breakpoint TO ti_user_exit-break.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        MOVE icon_space TO ti_user_exit-break.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      MODIFY ti_user_exit INDEX l_tabix.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_badi IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    LOOP AT ti_badi.&lt;/P&gt;&lt;P&gt;      l_tabix = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        ti_badi-linea    TO l_line,&lt;/P&gt;&lt;P&gt;        ti_badi-programa TO l_program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      READ TABLE lt_break INTO wa_break&lt;/P&gt;&lt;P&gt;                          WITH KEY program = l_program&lt;/P&gt;&lt;P&gt;                                   line    = l_line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;        MOVE icon_breakpoint TO ti_badi-break.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        MOVE icon_space TO ti_badi-break.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      MODIFY ti_badi INDEX l_tabix.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_bte IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    LOOP AT ti_bte.&lt;/P&gt;&lt;P&gt;      l_tabix = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        ti_bte-linea    TO l_line,&lt;/P&gt;&lt;P&gt;        ti_bte-programa TO l_program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      READ TABLE lt_break INTO wa_break&lt;/P&gt;&lt;P&gt;                          WITH KEY program = l_program&lt;/P&gt;&lt;P&gt;                                   line    = l_line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;        MOVE icon_breakpoint TO ti_bte-break.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        MOVE icon_space TO ti_bte-break.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      MODIFY ti_bte INDEX l_tabix.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " cargar_break&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  asignar_break&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Asigno el break a la linea.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_PROGRAMA  text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_LINEA  text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_BREAK  text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM asignar_break  USING p_programa TYPE sy-repid&lt;/P&gt;&lt;P&gt;                          p_linea    LIKE ti_bte-linea&lt;/P&gt;&lt;P&gt;                          p_break    TYPE icon-id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TYPES: BEGIN OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;  INCLUDE TYPE breakpoint.&lt;/P&gt;&lt;P&gt;  TYPES:   mainprog TYPE trdir-name,&lt;/P&gt;&lt;P&gt;          text(72),&lt;/P&gt;&lt;P&gt;          mark(1).&lt;/P&gt;&lt;P&gt;  TYPES: END OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;  DATA: showbreakpointtab TYPE TABLE OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tabix   TYPE sy-tabix,&lt;/P&gt;&lt;P&gt;    l_line    TYPE breakpoint-line,&lt;/P&gt;&lt;P&gt;    l_program TYPE breakpoint-program,&lt;/P&gt;&lt;P&gt;    wa_break  TYPE showbreakpointstruc,&lt;/P&gt;&lt;P&gt;    lt_break  TYPE TABLE OF showbreakpointstruc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo todos los breakpoints marcados.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_GET_ALL_BREAKPOINTS'&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      breakpointtab = lt_break.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM d010inc&lt;/P&gt;&lt;P&gt;    WHERE include = p_programa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;    MOVE p_programa TO d010inc-master.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE:&lt;/P&gt;&lt;P&gt;    p_linea    TO l_line,&lt;/P&gt;&lt;P&gt;    p_programa TO l_program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE lt_break INTO wa_break&lt;/P&gt;&lt;P&gt;                      WITH KEY program = l_program&lt;/P&gt;&lt;P&gt;                               line    = l_line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Borro el break.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_DELETE_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index    = p_linea&lt;/P&gt;&lt;P&gt;        mainprog = d010inc-master&lt;/P&gt;&lt;P&gt;        program  = p_programa.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Seteo el breakpoint.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_SET_BREAKPOINT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        index        = p_linea&lt;/P&gt;&lt;P&gt;        program      = p_programa&lt;/P&gt;&lt;P&gt;        mainprogram  = d010inc-master&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        not_executed = 1&lt;/P&gt;&lt;P&gt;        OTHERS       = 2.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo todos los breakpoint.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_SHOW_BREAKPOINTS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      objektinfp  = '*'&lt;/P&gt;&lt;P&gt;      objekttypp  = 'PG'&lt;/P&gt;&lt;P&gt;      text1p      = ' '&lt;/P&gt;&lt;P&gt;      text2p      = ' '&lt;/P&gt;&lt;P&gt;      text3p      = ' '&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      breakpoints = showbreakpointtab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " asignar_break&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_user_exit&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Obtengo los user-exits.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_user_exit .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_prog IS INITIAL.&lt;/P&gt;&lt;P&gt;    MOVE tstc-pgmna TO p_prog.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM get_objects.     "Get Objects&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_user_exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp; Form get_objects&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get Objects&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM get_objects.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_fname LIKE rs38l-name,&lt;/P&gt;&lt;P&gt;    l_group LIKE rs38l-area,&lt;/P&gt;&lt;P&gt;    l_include LIKE rs38l-include,&lt;/P&gt;&lt;P&gt;    l_namespace LIKE rs38l-namespace,&lt;/P&gt;&lt;P&gt;    l_str_area LIKE rs38l-str_area.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: v_include LIKE rodiobj-iobjnm.&lt;/P&gt;&lt;P&gt;  DATA: e_t_include TYPE STANDARD TABLE OF abapsource WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_line TYPE string,&lt;/P&gt;&lt;P&gt;    l_tabix LIKE sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT obj_name devclass&lt;/P&gt;&lt;P&gt;    INTO TABLE ti_tadir&lt;/P&gt;&lt;P&gt;    FROM tadir&lt;/P&gt;&lt;P&gt;    WHERE pgmid    = 'R3TR' AND&lt;/P&gt;&lt;P&gt;          object   = 'PROG' AND&lt;/P&gt;&lt;P&gt;          obj_name = p_prog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SORT ti_tadir BY obj_name devclass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT obj_name&lt;/P&gt;&lt;P&gt;      INTO TABLE ti_jtab&lt;/P&gt;&lt;P&gt;      FROM tadir&lt;/P&gt;&lt;P&gt;      FOR ALL ENTRIES IN ti_tadir&lt;/P&gt;&lt;P&gt;      WHERE pgmid    = 'R3TR' AND&lt;/P&gt;&lt;P&gt;            object   = 'SMOD' AND&lt;/P&gt;&lt;P&gt;            devclass = ti_tadir-devclass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      SORT ti_jtab BY obj_name.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- Get UserExit names&lt;/P&gt;&lt;P&gt;  LOOP AT ti_jtab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT name member&lt;/P&gt;&lt;P&gt;      INTO (ti_final-name, ti_final-member)&lt;/P&gt;&lt;P&gt;      FROM modsap&lt;/P&gt;&lt;P&gt;      WHERE name = ti_jtab-obj_name AND&lt;/P&gt;&lt;P&gt;            typ  = 'E'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      APPEND ti_final.&lt;/P&gt;&lt;P&gt;      CLEAR ti_final.&lt;/P&gt;&lt;P&gt;    ENDSELECT.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;*- Process it_final contents.&lt;/P&gt;&lt;P&gt;  LOOP AT ti_final.&lt;/P&gt;&lt;P&gt;    l_tabix = sy-tabix.&lt;/P&gt;&lt;P&gt;    CLEAR:&lt;/P&gt;&lt;P&gt;      l_fname, l_group, l_include, l_namespace, l_str_area.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_fname = ti_final-member.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'FUNCTION_EXISTS'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        funcname           = l_fname&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        group              = l_group&lt;/P&gt;&lt;P&gt;        include            = l_include&lt;/P&gt;&lt;P&gt;        namespace          = l_namespace&lt;/P&gt;&lt;P&gt;        str_area           = l_str_area&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        function_not_exist = 1&lt;/P&gt;&lt;P&gt;        OTHERS             = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      IF NOT l_include IS INITIAL.&lt;/P&gt;&lt;P&gt;*- Get Source code of include.&lt;/P&gt;&lt;P&gt;        CLEAR: v_include, e_t_include, e_t_include[].&lt;/P&gt;&lt;P&gt;        v_include = l_include.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'MU_INCLUDE_GET'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            i_include   = v_include&lt;/P&gt;&lt;P&gt;          TABLES&lt;/P&gt;&lt;P&gt;            e_t_include = e_t_include.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        LOOP AT e_t_include.&lt;/P&gt;&lt;P&gt;          IF e_t_include-line CS 'INCLUDE'.&lt;/P&gt;&lt;P&gt;            CLEAR l_line.&lt;/P&gt;&lt;P&gt;            l_line = e_t_include-line.&lt;/P&gt;&lt;P&gt;            CONDENSE l_line NO-GAPS.&lt;/P&gt;&lt;P&gt;            TRANSLATE l_line USING '. '.&lt;/P&gt;&lt;P&gt;            l_line = l_line+7.&lt;/P&gt;&lt;P&gt;            ti_final-include  = l_line.&lt;/P&gt;&lt;P&gt;            ti_final-programa = l_include.&lt;/P&gt;&lt;P&gt;            MODIFY ti_final INDEX l_tabix&lt;/P&gt;&lt;P&gt;              TRANSPORTING include programa.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CLEAR tftit.&lt;/P&gt;&lt;P&gt;        SELECT SINGLE stext&lt;/P&gt;&lt;P&gt;          INTO ti_final-stext&lt;/P&gt;&lt;P&gt;          FROM tftit&lt;/P&gt;&lt;P&gt;          WHERE spras = sy-langu AND&lt;/P&gt;&lt;P&gt;                funcname = ti_final-member.&lt;/P&gt;&lt;P&gt;        MODIFY ti_final INDEX l_tabix TRANSPORTING stext.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                         " get_objects&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_uexit&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_uexit .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_FINAL'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'NAME'      'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'MEMBER'    'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'STEXT'     ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'INCLUDE'   ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'PROGRAMA'  ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'X' ' ' ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_uexit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_ampliacion&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la ampliación de un exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_ampliacion .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_ret     TYPE c,&lt;/P&gt;&lt;P&gt;    l_member  TYPE modsap-member,&lt;/P&gt;&lt;P&gt;    lt_fields TYPE sval OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE:&lt;/P&gt;&lt;P&gt;    'MODSAP'    TO lt_fields-tabname,&lt;/P&gt;&lt;P&gt;    'MEMBER'    TO lt_fields-fieldname,&lt;/P&gt;&lt;P&gt;    'User-Exit' TO lt_fields-fieldtext.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND lt_fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'POPUP_GET_VALUES'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      popup_title     = 'Ingrese user-exit:'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      returncode      = l_ret&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      fields          = lt_fields&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      error_in_fields = 1&lt;/P&gt;&lt;P&gt;      OTHERS          = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico que no haya cancelado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CHECK l_ret NE 'A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE lt_fields INDEX 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF lt_fields-value IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  El exit de función &amp;amp; no existe&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MESSAGE e015(enhancement) WITH lt_fields-value.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MOVE lt_fields-value TO l_member.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM modsap&lt;/P&gt;&lt;P&gt;    WHERE member EQ l_member.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo la ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'MOD_SAP_HEAD'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        mode          = 'SHOM'&lt;/P&gt;&lt;P&gt;        modname       = modsap-name&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        attr_enqueued = 1&lt;/P&gt;&lt;P&gt;        text_enqueued = 2&lt;/P&gt;&lt;P&gt;        OTHERS        = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  El exit de función &amp;amp; no existe&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MESSAGE e015(enhancement) WITH l_member.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_ampliacion&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_bte&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la BTE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_TIPO   Tipo de BTE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_LINEA  Evento o proceso.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_bte  USING p_tipo  TYPE c&lt;/P&gt;&lt;P&gt;                           p_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  RANGES:&lt;/P&gt;&lt;P&gt;    r_event FOR tbe01-event,&lt;/P&gt;&lt;P&gt;    r_procs FOR tps01-procs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: r_event, r_procs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE p_tipo.&lt;/P&gt;&lt;P&gt;    WHEN 'E'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Interface de publicación y suscripción.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        'I'          TO r_event-sign,&lt;/P&gt;&lt;P&gt;        'EQ'         TO r_event-option,&lt;/P&gt;&lt;P&gt;        p_linea(8)   TO r_event-low.&lt;/P&gt;&lt;P&gt;      APPEND r_event.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SUBMIT rfopfi00&lt;/P&gt;&lt;P&gt;             WITH event IN r_event&lt;/P&gt;&lt;P&gt;             WITH xonlk = ' '&lt;/P&gt;&lt;P&gt;             AND RETURN.&lt;/P&gt;&lt;P&gt;    WHEN 'P'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Interface de proceso.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        'I'          TO r_procs-sign,&lt;/P&gt;&lt;P&gt;        'EQ'         TO r_procs-option,&lt;/P&gt;&lt;P&gt;        p_linea(8)   TO r_procs-low.&lt;/P&gt;&lt;P&gt;      APPEND r_procs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SUBMIT rfopfi01&lt;/P&gt;&lt;P&gt;             WITH procs IN r_procs&lt;/P&gt;&lt;P&gt;             WITH xonlk = ' '&lt;/P&gt;&lt;P&gt;             AND RETURN.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do nothing !!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_bte&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  cargar_bte&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Ingreso la BTE que quiero visualizar.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_TIPO   Tipo de BTE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM cargar_bte  USING p_tipo TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_linea(500)  TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_ret     TYPE c,&lt;/P&gt;&lt;P&gt;    lt_fields TYPE sval OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE p_tipo.&lt;/P&gt;&lt;P&gt;    WHEN 'E'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Interface de publicación y suscripción.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        'TBE01' TO lt_fields-tabname,&lt;/P&gt;&lt;P&gt;        'EVENT' TO lt_fields-fieldname.&lt;/P&gt;&lt;P&gt;    WHEN 'P'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Interface de proceso.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        'TPS01' TO lt_fields-tabname,&lt;/P&gt;&lt;P&gt;        'PROCS' TO lt_fields-fieldname.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do nothing !!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;  APPEND lt_fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'POPUP_GET_VALUES'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      popup_title     = 'Ingrese BTE:'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      returncode      = l_ret&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      fields          = lt_fields&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      error_in_fields = 1&lt;/P&gt;&lt;P&gt;      OTHERS          = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico que no haya cancelado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CHECK l_ret NE 'A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE lt_fields INDEX 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE lt_fields-value TO l_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM visualizar_bte USING p_tipo&lt;/P&gt;&lt;P&gt;                               l_linea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " cargar_bte&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_interface&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la definición de la BADI que corresponde a la&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      interface.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_interface .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_linea(500)  TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_ret        TYPE c,&lt;/P&gt;&lt;P&gt;    l_inter_name TYPE sxs_inter-inter_name,&lt;/P&gt;&lt;P&gt;    lt_fields    TYPE sval OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Interface.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  MOVE:&lt;/P&gt;&lt;P&gt;    'SXS_INTER'  TO lt_fields-tabname,&lt;/P&gt;&lt;P&gt;    'INTER_NAME' TO lt_fields-fieldname.&lt;/P&gt;&lt;P&gt;  APPEND lt_fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'POPUP_GET_VALUES'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      popup_title     = 'Ingrese interface:'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      returncode      = l_ret&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      fields          = lt_fields&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      error_in_fields = 1&lt;/P&gt;&lt;P&gt;      OTHERS          = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico que no haya cancelado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CHECK l_ret NE 'A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE lt_fields INDEX 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRANSLATE lt_fields-value TO UPPER CASE.&lt;/P&gt;&lt;P&gt;  MOVE lt_fields-value TO l_inter_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo a partir de la interface la definición de la BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM sxs_inter&lt;/P&gt;&lt;P&gt;    WHERE inter_name EQ l_inter_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo la definición de la BADI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'SXO_BADI_SHOW'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        exit_name         = sxs_inter-exit_name&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        action_canceled   = 1&lt;/P&gt;&lt;P&gt;        access_failure    = 2&lt;/P&gt;&lt;P&gt;        badi_not_exixting = 3&lt;/P&gt;&lt;P&gt;        OTHERS            = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  El interface &amp;amp; es erróneo.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MESSAGE e226(enhancement) WITH l_inter_name.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "visualizar_interface&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_sustituciones&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Obtengo las sustituciones creadas.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_sustituciones .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK p_sust IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    INTO CORRESPONDING FIELDS OF TABLE ti_sust&lt;/P&gt;&lt;P&gt;    FROM gb922.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_sustituciones&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_sust&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_sust .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_SUST'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'SUBSTID'   'X' ' ' 'X' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'SUBSEQNR'  'X' ' ' 'X' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'CONSEQNR'  'X' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'SUBSTAB'   ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'SUBSFIELD' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'SUBSVAL'   ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'EXITSUBST' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_sust&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_SUST&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_sust.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_sust.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'Sustituciones'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_SUST&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_sust&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la sustitución.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_SUBSTID  Nombre de la sustitución&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_SUBSEQNR Número de paso de la sustitución&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_sust  USING p_substid  TYPE gb922-substid&lt;/P&gt;&lt;P&gt;                            p_subseqnr TYPE gb922-subseqnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_valuser LIKE gb31-valuser,&lt;/P&gt;&lt;P&gt;    l_valeven LIKE gb31-valevent.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'G_BOOL_EXIST_SUBSTITUTION'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      substitution = p_substid&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      valevent_fnd = l_valeven&lt;/P&gt;&lt;P&gt;      valuser_fnd  = l_valuser&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_found    = 1&lt;/P&gt;&lt;P&gt;      OTHERS       = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'G_SUBSTITUTION_ENVIRONMENT'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      bsubevent         = 'X'&lt;/P&gt;&lt;P&gt;      bsubuser          = 'X'&lt;/P&gt;&lt;P&gt;      subevent          = l_valeven&lt;/P&gt;&lt;P&gt;      substid           = p_substid&lt;/P&gt;&lt;P&gt;      subuser           = l_valuser&lt;/P&gt;&lt;P&gt;      view_only         = 'X'&lt;/P&gt;&lt;P&gt;      action_mode       = 'V'&lt;/P&gt;&lt;P&gt;      skip_first_screen = 'X'&lt;/P&gt;&lt;P&gt;      step              = p_subseqnr&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_found         = 1&lt;/P&gt;&lt;P&gt;      OTHERS            = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_sust&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_validaciones&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Obtengo las validaciones creadas.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_validaciones .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK p_val IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    INTO CORRESPONDING FIELDS OF TABLE ti_val&lt;/P&gt;&lt;P&gt;    FROM gb931.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_validaciones&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_val&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_val .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_VAL'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'VALID'     'X' ' ' 'X' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'VALSEQNR'  'X' ' ' 'X' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'CONDID'    ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'CHECKID'   ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_val&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_VAL&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_val.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_val.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'Validaciones'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_VAL&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_val&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la validación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_VALID    Validación&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_VALSEQNR Número secuencial de una etapa de validación&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_val  USING p_valid    TYPE gb931-valid&lt;/P&gt;&lt;P&gt;                           p_valseqnr TYPE gb931-valseqnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_valuser LIKE gb31-valuser,&lt;/P&gt;&lt;P&gt;    l_valeven LIKE gb31-valevent.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'G_BOOL_EXIST_VALIDATION'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      validation   = p_valid&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      valuser_fnd  = l_valuser&lt;/P&gt;&lt;P&gt;      valevent_fnd = l_valeven&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_found    = 1&lt;/P&gt;&lt;P&gt;      null_id      = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'G_VALIDATION_ENVIRONMENT'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      action_mode       = 'V'&lt;/P&gt;&lt;P&gt;      skip_first_screen = 'X'&lt;/P&gt;&lt;P&gt;      bvalevent         = 'X'&lt;/P&gt;&lt;P&gt;      bvaluser          = 'X'&lt;/P&gt;&lt;P&gt;      valid             = p_valid&lt;/P&gt;&lt;P&gt;      valuser           = l_valuser&lt;/P&gt;&lt;P&gt;      valevent          = l_valeven&lt;/P&gt;&lt;P&gt;      view_only         = 'X'&lt;/P&gt;&lt;P&gt;      step              = p_valseqnr&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_found         = 1&lt;/P&gt;&lt;P&gt;      OTHERS            = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_val&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_proyecto&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo el proyecto asosiado a una ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_proyecto .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_ret     TYPE c,&lt;/P&gt;&lt;P&gt;    l_name    TYPE modsap-name,&lt;/P&gt;&lt;P&gt;    l_member  TYPE modact-member,&lt;/P&gt;&lt;P&gt;    l_modname TYPE modact-name,&lt;/P&gt;&lt;P&gt;    l_standard(3) TYPE c,&lt;/P&gt;&lt;P&gt;    lt_fields TYPE sval OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE:&lt;/P&gt;&lt;P&gt;    'MODSAP' TO lt_fields-tabname,&lt;/P&gt;&lt;P&gt;    'NAME'   TO lt_fields-fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND lt_fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'POPUP_GET_VALUES'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      popup_title     = 'Ingrese ampliación:'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      returncode      = l_ret&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      fields          = lt_fields&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      error_in_fields = 1&lt;/P&gt;&lt;P&gt;      OTHERS          = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico que no haya cancelado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CHECK l_ret NE 'A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE lt_fields INDEX 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF lt_fields-value IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  La ampliación &amp;amp; no existe&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MESSAGE e012(enhancement) WITH lt_fields-value.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MOVE lt_fields-value TO l_name.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE *&lt;/P&gt;&lt;P&gt;    FROM modsap&lt;/P&gt;&lt;P&gt;    WHERE name EQ l_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE l_name TO l_member.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT SINGLE *&lt;/P&gt;&lt;P&gt;      FROM modact&lt;/P&gt;&lt;P&gt;      WHERE member EQ l_member.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Se encontró el proyecto para la ampliación.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MOVE:&lt;/P&gt;&lt;P&gt;        modact-name   TO l_modname,&lt;/P&gt;&lt;P&gt;        c_std_implmnt TO l_standard.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'MOD_COMPONENTS'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          mode               = 'SHOM'&lt;/P&gt;&lt;P&gt;          modname            = l_modname&lt;/P&gt;&lt;P&gt;          p_standard         = l_standard&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          permission_failure = 1&lt;/P&gt;&lt;P&gt;          not_found          = 2&lt;/P&gt;&lt;P&gt;          OTHERS             = 3.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Indicar un proyecto de ampliación&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MESSAGE e398(00)&lt;/P&gt;&lt;P&gt;        WITH 'La ampliación ' l_name ' no tiene proyecto.'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  La ampliación &amp;amp; no existe&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MESSAGE e012(enhancement) WITH lt_fields-value.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_proyecto&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_punto_ampliación&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Obtengo los puntos de ampliación ya implementados.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_punto_ampliacion .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUN PUNTO DE&lt;/P&gt;&lt;P&gt;*- AMPLIACIÓN.&lt;/P&gt;&lt;P&gt;  SEARCH ti_programa-cf FOR c_enh1.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UN PUNTO DE AMPLIACIÓN Y SE VERIFICA SI LA LINEA NO ESTÁ&lt;/P&gt;&lt;P&gt;*- COMENTADA.&lt;/P&gt;&lt;P&gt;  IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;  AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS INCLUDE DEL GRUPO DE FUNCIÓN.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_include.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS ENDENHANCEMENT.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_endenh.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS END-ENHANCEMENT-SECTION.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_endenh1.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR ti_enh.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;    SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;    MOVE: ti_includes-nome  TO ti_enh-programa,&lt;/P&gt;&lt;P&gt;          c_enht            TO ti_enh-tipo,&lt;/P&gt;&lt;P&gt;          sy-tabix          TO ti_enh-linea,&lt;/P&gt;&lt;P&gt;          ti_programa-cf    TO ti_enh-cf,&lt;/P&gt;&lt;P&gt;          ti_includes-nivel TO ti_enh-nivel.&lt;/P&gt;&lt;P&gt;    APPEND ti_enh.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUN PUNTO DE&lt;/P&gt;&lt;P&gt;*- AMPLIACIÓN.&lt;/P&gt;&lt;P&gt;    SEARCH ti_programa-cf FOR c_enh2.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UN PUNTO DE AMPLIACIÓN Y SE VERIFICA SI LA LINEA NO ESTÁ&lt;/P&gt;&lt;P&gt;*- COMENTADA.&lt;/P&gt;&lt;P&gt;    IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;    AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS ENDENHANCEMENT.&lt;/P&gt;&lt;P&gt;      SEARCH ti_programa-cf FOR c_endenh.&lt;/P&gt;&lt;P&gt;      CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE NO TRAIGA LOS END-ENHANCEMENT-SECTION.&lt;/P&gt;&lt;P&gt;      SEARCH ti_programa-cf FOR c_endenh1.&lt;/P&gt;&lt;P&gt;      CHECK sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR ti_enh.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;      SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;      MOVE: ti_includes-nome  TO ti_enh-programa,&lt;/P&gt;&lt;P&gt;            c_enht            TO ti_enh-tipo,&lt;/P&gt;&lt;P&gt;            sy-tabix          TO ti_enh-linea,&lt;/P&gt;&lt;P&gt;            ti_programa-cf    TO ti_enh-cf,&lt;/P&gt;&lt;P&gt;            ti_includes-nivel TO ti_enh-nivel.&lt;/P&gt;&lt;P&gt;      APPEND ti_enh.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICA SI EN LA LINEA DEL PROGRAMA EXISTE ALGUN PUNTO DE&lt;/P&gt;&lt;P&gt;*- AMPLIACIÓN.&lt;/P&gt;&lt;P&gt;      SEARCH ti_programa-cf FOR c_enh.&lt;/P&gt;&lt;P&gt;*- SE ENCONTRO UN PUNTO DE AMPLIACIÓN Y SE VERIFICA SI LA LINEA NO ESTÁ&lt;/P&gt;&lt;P&gt;*- COMENTADA.&lt;/P&gt;&lt;P&gt;      IF  sy-subrc EQ 0&lt;/P&gt;&lt;P&gt;      AND ti_programa-cf+0(1) NE c_comentario.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*- VERIFICO QUE TRAIGA LOS ENHANCEMENT.&lt;/P&gt;&lt;P&gt;        CHECK ti_programa-cf(11) EQ c_enh.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CLEAR ti_enh.&lt;/P&gt;&lt;P&gt;*- REMUEVE ESPACIOS EN EL INICIO DEL STRING.&lt;/P&gt;&lt;P&gt;        SHIFT ti_programa-cf LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;        MOVE: ti_includes-nome  TO ti_enh-programa,&lt;/P&gt;&lt;P&gt;              c_enht            TO ti_enh-tipo,&lt;/P&gt;&lt;P&gt;              sy-tabix          TO ti_enh-linea,&lt;/P&gt;&lt;P&gt;              ti_programa-cf    TO ti_enh-cf,&lt;/P&gt;&lt;P&gt;              ti_includes-nivel TO ti_enh-nivel.&lt;/P&gt;&lt;P&gt;        APPEND ti_enh.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_punto_ampliación&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_enh&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_enh .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_ENH'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'PROGRAMA'  'X' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ' c_text_01,&lt;/P&gt;&lt;P&gt;  'TIPO'      'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_05,&lt;/P&gt;&lt;P&gt;  'NIVEL'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_02,&lt;/P&gt;&lt;P&gt;  'BREAK'     'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' 'X' c_text_07,&lt;/P&gt;&lt;P&gt;  'LINEA'     'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c_text_03,&lt;/P&gt;&lt;P&gt;  'CF'        ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' c_text_04.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_enh&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  buscar_enh&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Busco los puntos de ampliación del programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM buscar_enh .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; DATA:&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   l_obj_name TYPE enhobj-obj_name.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF lt_obj_name OCCURS 0,&lt;/P&gt;&lt;P&gt;          obj_name TYPE enhobj-obj_name,&lt;/P&gt;&lt;P&gt;        END OF lt_obj_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK p_enh IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF p_prog IS NOT INITIAL.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   MOVE p_prog TO l_obj_name.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ELSE.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   MOVE tstc-pgmna TO l_obj_name.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH lt_obj_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT ti_includes.&lt;/P&gt;&lt;P&gt;    APPEND ti_includes-nome TO lt_obj_name.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT enhname version obj_type obj_name&lt;/P&gt;&lt;P&gt;    INTO CORRESPONDING FIELDS OF TABLE ti_enhobj&lt;/P&gt;&lt;P&gt;    FROM enhobj&lt;/P&gt;&lt;P&gt;    FOR ALL ENTRIES IN lt_obj_name&lt;/P&gt;&lt;P&gt;    WHERE obj_type EQ 'PROG'&lt;/P&gt;&lt;P&gt;      AND obj_name EQ lt_obj_name-obj_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " buscar_enh&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_enhobj&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_enhobj .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_ENHOBJ'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'SEL'       'X' 'X' 'X' ' ' ' ' 'X' 'X' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'ENHNAME'   'X' ' ' 'X' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'VERSION'   'X' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'OBJ_TYPE'  ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'X' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'OBJ_NAME'  ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_enhobj&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TOP_OF_PAGE_ENHOBJ&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Mostrar cabecera de página&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;FORM top_of_page_enhobj.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tfill_inc(20)  TYPE c,&lt;/P&gt;&lt;P&gt;    l_tfill_cant(20) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ti_enhobj.&lt;/P&gt;&lt;P&gt;  WRITE sy-tfill TO l_tfill_cant.&lt;/P&gt;&lt;P&gt;  CONDENSE l_tfill_cant NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Construir encabezado del reporte&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM set_header USING l_tfill_cant&lt;/P&gt;&lt;P&gt;                           l_tfill_inc&lt;/P&gt;&lt;P&gt;                           'Puntos de ampliación'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TOP_OF_PAGE_ENHOBJ&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  bi_se19&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo el punto de ampliación implementado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_ENHNAME  Punto de ampliación implementado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM bi_se19  USING p_enhname TYPE enhobj-enhname .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo la linea seleccionada en el programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_TOOL_ACCESS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      operation           = c_operation&lt;/P&gt;&lt;P&gt;      object_name         = p_enhname&lt;/P&gt;&lt;P&gt;      object_type         = 'ENHO'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_executed        = 1&lt;/P&gt;&lt;P&gt;      invalid_object_type = 2&lt;/P&gt;&lt;P&gt;      OTHERS              = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                    " bi_se19&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  BDC_DYNPRO&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM bdc_dynpro USING program dynpro.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR ti_bdcdata.&lt;/P&gt;&lt;P&gt;  ti_bdcdata-program  = program.&lt;/P&gt;&lt;P&gt;  ti_bdcdata-dynpro   = dynpro.&lt;/P&gt;&lt;P&gt;  ti_bdcdata-dynbegin = 'X'.&lt;/P&gt;&lt;P&gt;  APPEND ti_bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " BDC_DYNPRO&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  BDC_FIELD&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM bdc_field USING fnam fval.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR ti_bdcdata.&lt;/P&gt;&lt;P&gt;  ti_bdcdata-fnam = fnam.&lt;/P&gt;&lt;P&gt;  ti_bdcdata-fval = fval.&lt;/P&gt;&lt;P&gt;  APPEND ti_bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "BDC_FIELD&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_programa&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo el programa que se genera dinámicamente para las&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      sustituciones y validaciones de FI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_programa .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_selfield     TYPE slis_selfield,&lt;/P&gt;&lt;P&gt;    l_exit         TYPE c,&lt;/P&gt;&lt;P&gt;    l_repid        TYPE sy-repid,&lt;/P&gt;&lt;P&gt;    l_boolpool(8).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK ti_gb31t[] IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo los distintos eventos para que puedan realizar la selección.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_title          = 'Validación/Sustitución Evento'&lt;/P&gt;&lt;P&gt;        i_zebra          = 'X'&lt;/P&gt;&lt;P&gt;        i_tabname        = 'TI_GB31T'&lt;/P&gt;&lt;P&gt;        i_structure_name = 'GB31T'&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        es_selfield      = l_selfield&lt;/P&gt;&lt;P&gt;        e_exit           = l_exit&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        t_outtab         = ti_gb31t&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        program_error    = 1&lt;/P&gt;&lt;P&gt;        OTHERS           = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF l_exit EQ 'X'.&lt;/P&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CHECK l_exit IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo el nombre del programa de sustitución y validación asociado&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;a la selección del usuario.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    PERFORM create_bool_filename(saplgbl5)&lt;/P&gt;&lt;P&gt;              USING    ti_gb31t-valuser&lt;/P&gt;&lt;P&gt;                       ti_gb31t-valevent&lt;/P&gt;&lt;P&gt;              CHANGING l_boolpool&lt;/P&gt;&lt;P&gt;              IF FOUND.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CHECK l_boolpool IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE l_boolpool TO l_repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo el programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    PERFORM visualizar_linea USING l_repid&lt;/P&gt;&lt;P&gt;                                   '01'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_programa&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  texto_tope&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Encabezado que explica la funcionalidad de algunas columnas&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      del reporte.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM texto_tope .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  STATICS l_flag TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA l_tit(65) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK l_flag IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_flag = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE 'FUNCIOANALIDAD DE LAS COLUMNAS:' TO l_tit CENTERED.&lt;/P&gt;&lt;P&gt;  FORMAT COLOR = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE:&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Título.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  /(70)   sy-uline,&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      l_tit,&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;P&gt;  /(70)   sy-uline,&lt;/P&gt;&lt;P&gt;*1er linea.&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      'TIPO: Se visualiza las definiciones de los objetos de',&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;P&gt;*2da linea.&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      '      ampliación.',&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;P&gt;*3ra linea.&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      'STOP: Agrega un BREAK en la línea de código seleccionada.',&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;P&gt;*4ta linea.&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      'CÓDIGO FUENTE: Se visualiza la línea de código en el ',&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;P&gt;*5ta linea.&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      '               programa correspondiente.',&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Cierro el cuadro.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   /(70)  sy-uline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SKIP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " texto_tope&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  bi_se18&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo la definición del enhancement point.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM bi_se18  USING  p_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_enhspotname TYPE enhspotname,&lt;/P&gt;&lt;P&gt;    l_off TYPE i,&lt;/P&gt;&lt;P&gt;    l_cf  TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF lt_cf OCCURS 0,&lt;/P&gt;&lt;P&gt;          linea(500),&lt;/P&gt;&lt;P&gt;        END OF lt_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FIND FIRST OCCURRENCE OF ' SPOT ' IN p_cf MATCH OFFSET l_off.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK l_off IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ADD 7 TO l_off.&lt;/P&gt;&lt;P&gt;  l_cf = 500 - l_off.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SPLIT p_cf+l_off(l_cf) AT space INTO TABLE lt_cf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo el nombre de la definición del enhancement.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  READ TABLE lt_cf INDEX 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRANSLATE lt_cf-linea TO UPPER CASE.&lt;/P&gt;&lt;P&gt;  TRANSLATE lt_cf-linea USING '. , '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE lt_cf-linea TO l_enhspotname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo la linea seleccionada en el programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_TOOL_ACCESS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      operation           = c_operation&lt;/P&gt;&lt;P&gt;      object_name         = l_enhspotname&lt;/P&gt;&lt;P&gt;      object_type         = 'ENHS'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_executed        = 1&lt;/P&gt;&lt;P&gt;      invalid_object_type = 2&lt;/P&gt;&lt;P&gt;      OTHERS              = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                    " bi_se18&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_fm_exit&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Se visualiza el módulo de funciones del user-exit's que&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      contiene al include Z indicado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_fm_exit .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_ret     TYPE c,&lt;/P&gt;&lt;P&gt;    l_flag    TYPE c,&lt;/P&gt;&lt;P&gt;    l_name    TYPE trdir-name,&lt;/P&gt;&lt;P&gt;    lt_fields TYPE sval OCCURS 0 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;    lt_tfdir  TYPE tfdir OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    v_include LIKE rodiobj-iobjnm,&lt;/P&gt;&lt;P&gt;    l_fname LIKE rs38l-name,&lt;/P&gt;&lt;P&gt;    l_group LIKE rs38l-area,&lt;/P&gt;&lt;P&gt;    l_include LIKE rs38l-include,&lt;/P&gt;&lt;P&gt;    l_namespace LIKE rs38l-namespace,&lt;/P&gt;&lt;P&gt;    l_str_area LIKE rs38l-str_area,&lt;/P&gt;&lt;P&gt;    lt_incl TYPE STANDARD TABLE OF abapsource WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE:&lt;/P&gt;&lt;P&gt;    'RS38L'   TO lt_fields-tabname,&lt;/P&gt;&lt;P&gt;    'INCLUDE' TO lt_fields-fieldname,&lt;/P&gt;&lt;P&gt;    'Include' TO lt_fields-fieldtext.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND lt_fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'POPUP_GET_VALUES'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      popup_title     = 'Ingrese ampliación:'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      returncode      = l_ret&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      fields          = lt_fields&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      error_in_fields = 1&lt;/P&gt;&lt;P&gt;      OTHERS          = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico que no haya cancelado.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CHECK l_ret NE 'A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE lt_fields INDEX 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF lt_fields-value IS INITIAL OR lt_fields-value(1) NE 'Z'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  La ampliación &amp;amp; no existe&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    MESSAGE e012(enhancement) WITH lt_fields-value.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MOVE lt_fields-value TO l_name.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo los FM de los exit's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    INTO TABLE lt_tfdir&lt;/P&gt;&lt;P&gt;    FROM tfdir&lt;/P&gt;&lt;P&gt;    WHERE funcname LIKE 'EXIT_%'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT lt_tfdir.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR:&lt;/P&gt;&lt;P&gt;      l_group, l_include, l_namespace, l_str_area.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_fname = lt_tfdir-funcname.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo el include del user-exti's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'FUNCTION_EXISTS'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        funcname           = l_fname&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        group              = l_group&lt;/P&gt;&lt;P&gt;        include            = l_include&lt;/P&gt;&lt;P&gt;        namespace          = l_namespace&lt;/P&gt;&lt;P&gt;        str_area           = l_str_area&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        function_not_exist = 1&lt;/P&gt;&lt;P&gt;        OTHERS             = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      IF NOT l_include IS INITIAL.&lt;/P&gt;&lt;P&gt;*- Obtengo el código fuente del user-exit's.&lt;/P&gt;&lt;P&gt;        CLEAR: v_include, lt_incl, lt_incl[].&lt;/P&gt;&lt;P&gt;        v_include = l_include.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'MU_INCLUDE_GET'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            i_include   = v_include&lt;/P&gt;&lt;P&gt;          TABLES&lt;/P&gt;&lt;P&gt;            e_t_include = lt_incl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF lt_incl[] IS NOT INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Verifico si alguna de las líneas contiene el include.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          FIND FIRST OCCURRENCE OF l_name&lt;/P&gt;&lt;P&gt;            IN TABLE lt_incl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Visualizo el FM del user-exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          PERFORM visualizar_linea USING l_include&lt;/P&gt;&lt;P&gt;                                         '01'.&lt;/P&gt;&lt;P&gt;          l_flag = 'X'.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK l_flag IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  La ampliación &amp;amp; no existe&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  MESSAGE e012(enhancement) WITH lt_fields-value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_fm_exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  def_text_parameter&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Defino los textos de los parámetros de selección.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM def_text_parameter .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  tit1   = 'Parámetros:'.&lt;/P&gt;&lt;P&gt;  tit2   = 'Tipo de ampliación:'.&lt;/P&gt;&lt;P&gt;  tit3   = 'Tipo de ejecución:'.&lt;/P&gt;&lt;P&gt;  text1  = 'Programa'.&lt;/P&gt;&lt;P&gt;  text2  = 'Transacción'.&lt;/P&gt;&lt;P&gt;  text3  = 'Includes'.&lt;/P&gt;&lt;P&gt;  text4  = 'Funciones'.&lt;/P&gt;&lt;P&gt;  text5  = 'Submit'.&lt;/P&gt;&lt;P&gt;  text6  = 'Nivel'.&lt;/P&gt;&lt;P&gt;  text7  = 'User-exit'.&lt;/P&gt;&lt;P&gt;  text8  = 'Badi'.&lt;/P&gt;&lt;P&gt;  text9  = 'BTE'.&lt;/P&gt;&lt;P&gt;  text10 = 'Sustitución'.&lt;/P&gt;&lt;P&gt;  text11 = 'Field-exit'.&lt;/P&gt;&lt;P&gt;  text12 = c_handler.&lt;/P&gt;&lt;P&gt;  text13 = 'Validación'.&lt;/P&gt;&lt;P&gt;  text14 = 'Punto de ampliación'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " def_text_parameter&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  def_botones&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Defino los textos de las botoneras de la pantalla de selección.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM def_botones .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Agrego el boton de marcar todo en STATUS GUI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  functxt-icon_id   = icon_select_all.&lt;/P&gt;&lt;P&gt;  functxt-quickinfo = c_text_08.&lt;/P&gt;&lt;P&gt;  sscrfields-functxt_01 = functxt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Agrego el boton de desmarcar todo en STATUS GUI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  functxt-icon_id   = icon_deselect_all.&lt;/P&gt;&lt;P&gt;  functxt-quickinfo = c_text_09.&lt;/P&gt;&lt;P&gt;  sscrfields-functxt_02 = functxt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Agrego el boton de Breakpoint en STATUS GUI.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  functxt-icon_id   = icon_message_critical.&lt;/P&gt;&lt;P&gt;  functxt-quickinfo = c_text_06.&lt;/P&gt;&lt;P&gt;  functxt-icon_text = c_text_06.&lt;/P&gt;&lt;P&gt;  sscrfields-functxt_03 = functxt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;icon_create:   RESULT  name  text info.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  icon_create:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de exit's en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  btn icon_display_note 'Ampliación' 'Visualizar ampliación',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de proyectos exit's en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ext1 icon_display_note 'Proyecto' 'Visualizar Proyecto',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de proyectos exit's en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ext2 icon_display_note 'User-exit' 'Visualizar User-exit',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de Interface en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  badi icon_availability_display 'Interface' 'Visualizar Def.Interface',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de sustitución en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  btn1 icon_display_text 'Tx. OBBH' 'Visualizar sustituciones',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de sustitución en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  sust icon_report 'Prog.Generado' 'Vis.programa generado',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de sustitución en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ob28 icon_display_text 'Tx. OB28' 'Visualizar validaciones',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de sustitución en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  btn2 icon_display 'Field-exits' 'Visualizar Field-exits',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de FIBF en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  bte1 icon_toggle_display '' 'Visualizar FIBF',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de Evento en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  bte2 icon_show_events  'Evento' 'Visualizar Evento',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de Proceso en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  bte3 icon_bw_apd 'Proceso' 'Visualizar Proceso',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo Marcar todo en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  all  icon_select_all '' c_text_08,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo Desmarcar todo en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  dal  icon_deselect_all '' c_text_09,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de SENH en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  senh icon_detail '' 'Visualizar SENH',&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creo la visualización del botón de Customer Implement. en la DYNPRO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  cimp icon_table_settings 'Cust.Impl.' 'Customer Implementation'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE sust TO val.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " def_botones&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  set_header&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Creo el encabezado del ALV correspondiente.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM set_header  USING p_cant&lt;/P&gt;&lt;P&gt;                       p_inc&lt;/P&gt;&lt;P&gt;                       p_text.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_tit(65) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  STATICS l_col TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM texto_tope.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF l_col IS INITIAL OR l_col EQ 7.&lt;/P&gt;&lt;P&gt;    l_col = 3.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    ADD 1 TO l_col.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FORMAT COLOR = l_col.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE p_text TO l_tit CENTERED.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRANSLATE l_tit USING ' *'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE:&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Título.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  /(70)   sy-uline,&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      l_tit,&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;P&gt;  /(70)   sy-uline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FORMAT COLOR = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_tcode IS INITIAL.&lt;/P&gt;&lt;P&gt;    CONCATENATE 'Ampliaciones encontradas en el programa' p_prog&lt;/P&gt;&lt;P&gt;           INTO l_tit SEPARATED BY space.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    CONCATENATE 'Ampliaciones encontradas en la transacción' p_tcode&lt;/P&gt;&lt;P&gt;           INTO l_tit SEPARATED BY space.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE:&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Título.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      l_tit,&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_tcode IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo la descripción del programa.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SELECT SINGLE *&lt;/P&gt;&lt;P&gt;      FROM trdirt&lt;/P&gt;&lt;P&gt;      WHERE name  EQ p_prog&lt;/P&gt;&lt;P&gt;        AND sprsl EQ sy-langu.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE 'Descripción:' trdirt-text&lt;/P&gt;&lt;P&gt;      INTO l_tit SEPARATED BY space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Obtengo la descripción de la transacción.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SELECT SINGLE *&lt;/P&gt;&lt;P&gt;      FROM tstct&lt;/P&gt;&lt;P&gt;      WHERE sprsl EQ sy-langu&lt;/P&gt;&lt;P&gt;        AND tcode EQ p_tcode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE 'Descripción:' tstct-ttext&lt;/P&gt;&lt;P&gt;      INTO l_tit SEPARATED BY space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE:&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      l_tit,&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;P&gt;  /(70)   sy-uline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_inc IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE 'PGMs analizados:' p_inc&lt;/P&gt;&lt;P&gt;      INTO l_tit SEPARATED BY space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WRITE:&lt;/P&gt;&lt;P&gt;    /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;     3      l_tit,&lt;/P&gt;&lt;P&gt;     70(1)  sy-vline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE 'Nivel:' p_nivel&lt;/P&gt;&lt;P&gt;      INTO l_tit SEPARATED BY space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WRITE:&lt;/P&gt;&lt;P&gt;    /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;     3      l_tit,&lt;/P&gt;&lt;P&gt;     70(1)  sy-vline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONCATENATE 'Cant.Ampliaciones:' p_cant&lt;/P&gt;&lt;P&gt;    INTO l_tit SEPARATED BY space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE:&lt;/P&gt;&lt;P&gt;  /1(1)   sy-vline,&lt;/P&gt;&lt;P&gt;   3      l_tit,&lt;/P&gt;&lt;P&gt;   70(1)  sy-vline,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Cierro el cuadro.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; /(70)  sy-uline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SKIP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " set_header&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_imp_enh&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo las implementaciones del cliente de los enhancement&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      de cualquier tipo.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_imp_enh .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM get_imp_enh.&lt;/P&gt;&lt;P&gt;  PERFORM construir_catalogo_cimp.&lt;/P&gt;&lt;P&gt;  PERFORM definir_layout  USING    'TI_CIMP'&lt;/P&gt;&lt;P&gt;                          CHANGING wa_layout.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_callback_program      = l_repid&lt;/P&gt;&lt;P&gt;      i_callback_user_command = 'USER_COMMAND'&lt;/P&gt;&lt;P&gt;      is_layout               = wa_layout&lt;/P&gt;&lt;P&gt;      it_fieldcat             = ti_cat&lt;/P&gt;&lt;P&gt;      i_default               = 'X'&lt;/P&gt;&lt;P&gt;      i_save                  = 'A'&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      t_outtab                = ti_cimp&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      program_error           = 1&lt;/P&gt;&lt;P&gt;      OTHERS                  = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_imp_enh&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  construir_catalogo_cimp&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Construir catalogo de campos para ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM construir_catalogo_cimp .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    l_repid  LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: ti_cat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_program_name         = l_repid&lt;/P&gt;&lt;P&gt;      i_internal_tabname     = 'TI_CIMP'&lt;/P&gt;&lt;P&gt;      i_inclname             = l_repid&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat            = ti_cat&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;      program_error          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Asignar atributos de campo en el catalogo de reporte ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM asignar_campo_a_catalogo TABLES ti_cat&lt;/P&gt;&lt;P&gt;                                   USING:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  'ENHNAME'    'X' 'X' 'X' 'X' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'OBJ_TYPE'   ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'OBJ_NAME'   ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'ELEMUSAGE'  ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',&lt;/P&gt;&lt;P&gt;  'ENHINCLUDE' ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " construir_catalogo_cimp&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  get_imp_enh&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Obtengo las implementaciones creadas.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM get_imp_enh .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT enhobj&lt;SUB&gt;enhname enhobj&lt;/SUB&gt;obj_type enhobj&lt;SUB&gt;obj_name enhobj&lt;/SUB&gt;elemusage&lt;/P&gt;&lt;P&gt;         enhincinx~enhinclude&lt;/P&gt;&lt;P&gt;    FROM enhobj LEFT OUTER JOIN enhincinx ON&lt;/P&gt;&lt;P&gt;      enhobj&lt;SUB&gt;enhname = enhincinx&lt;/SUB&gt;enhname&lt;/P&gt;&lt;P&gt;    INTO TABLE ti_cimp&lt;/P&gt;&lt;P&gt;    WHERE enhobj~enhname LIKE 'Z%' OR&lt;/P&gt;&lt;P&gt;          enhobj~enhname LIKE 'Y%' AND&lt;/P&gt;&lt;P&gt;          enhobj~version EQ 'A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT ti_cimp BY enhname obj_type.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " get_imp_enh&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  visualizar_enh_cf&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Visualizo el código fuente del enhancement.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM visualizar_enh_cf  USING p_enhinclude TYPE any.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;  l_changed LIKE s38e-buf_varied,&lt;/P&gt;&lt;P&gt;  l_subrc   LIKE sy-subrc,&lt;/P&gt;&lt;P&gt;  lt_source TYPE TABLE OF string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK p_enhinclude IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ REPORT p_enhinclude INTO lt_source.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EDITOR_TABLE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      display = 'X'&lt;/P&gt;&lt;P&gt;      name    = p_enhinclude&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      changed = l_changed&lt;/P&gt;&lt;P&gt;      subrc   = l_subrc&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      content = lt_source.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " visualizar_enh_cf&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;___________________&lt;/P&gt;&lt;P&gt;Regards.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Guillermo Stortoni.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 21 Jul 2008 14:05:55 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/badi-s/m-p/4183480#M1000049</guid>
      <dc:creator>former_member322289</dc:creator>
      <dc:date>2008-07-21T14:05:55Z</dc:date>
    </item>
  </channel>
</rss>

