Calling Method

hi abaper expert,
can a method be called from a method or a program ?
if it can be called from a method or a program, how can we do it ?
please give an example
many thanks in advance
regards
eddhie

Hi
Yes it is, but only if you need to use an INSTANCE method.
DATA: <OBJECT> TYPE REF TO <CLASS>.
CREATE OBJECT <OBJECT>.
CALL METHOD <OBJECT>-><METHOD>
If you need a static method:
CALL METHOD <CLASS>=><METHOD>.
For example the method to dowload a file (defined in the class CL_GUI_FRONTEND_SERVICES) is static so
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
                    EXPORTING
                    IMPORTING
Max
Max

Similar Messages

  • Error calling methods CL_GUI_FRONTEND_SERVICES

    Hi all,
    I have a requirement in BAPI (integrating solman to portal) to download file from app. server to local directory. I used the below FM to get temp directory of presntation server.
    CALL METHOD CL_GUI_FRONTEND_SERVICES=>GET_TEMP_DIRECTORY
       CHANGING
         TEMP_DIR             =  LV_TEMP_DIR
       EXCEPTIONS
         CNTL_ERROR           = 1
         ERROR_NO_GUI         = 2
         NOT_SUPPORTED_BY_GUI = 3
         others               = 4.
       CALL METHOD cl_gui_cfw=>flush.
    It works fine in R3, but when i called it from portal it shows Access not possible using 'NULL' object reference with a short dump .
    st22 shows
    Error in ABAP application program.
    The current ABAP program "CL_GUI_FRONTEND_SERVICES======CP" had to be
    terminated because one of the
    statements could not be executed.
    This is probably due to an error in the ABAP program.
    An exception occurred. This exception is dealt with in more detail belo
    . The exception, which is assigned to the class 'CX_SY_REF_IS_INITIAL',
    neither
    caught nor passed along using a RAISING clause, in the procedure
    "GET_TEMP_DIRECTORY" "(METHOD)"
    Since the caller of the procedure could not have expected this exceptio
    to occur, the running program was terminated.
    The reason for the exception is:
    Attempt to access a component using 'NULL' object reference (points
    to nothing).
    An object reference must point to an object (an instance of a class)
    before you can use it to access components (variable:
    "CL_GUI_FRONTEND_SERVICES=>HANDLE").
    Either the reference has not yet been set, or it has been reset to
    'NULL' by a CLEAR statement.
    When i put external break point and the dump comes during execution of CALL METHOD cl_gui_cfw=>flush.
    Is it not possible to use CL_GUI_FRONTEND_SERVICES in RFC ??.
    thanks and regards
    Jijo

    Hi,
    the dump is because you cannot use that function from a BSP application, which runs in internet or intranet. The procedure in this case is different:
    DATA: flights  TYPE flighttab,
            flight   LIKE LINE OF flights,
            appl     TYPE string,
            filetype TYPE string,
            output   TYPE string,
            output2  TYPE xstring,
            response     TYPE REF TO if_http_response,
            l_len        TYPE i,
            seatsmax     TYPE string,
            seatsocc     TYPE string.
      appl = 'application/msexcel'.
      filetype = 'attachment;filename=mi archivo.xls'.
      SELECT * FROM sflight
         INTO TABLE flights
         UP TO 20 ROWS.
      LOOP AT flights INTO flight.
        seatsmax = flight-seatsmax. CONDENSE seatsmax.
        seatsocc = flight-seatsocc. CONDENSE seatsocc.
        CONCATENATE output
        flight-carrid cl_abap_char_utilities=>horizontal_tab
        flight-connid cl_abap_char_utilities=>horizontal_tab
        flight-fldate cl_abap_char_utilities=>horizontal_tab
        flight-planetype cl_abap_char_utilities=>horizontal_tab
        seatsmax cl_abap_char_utilities=>horizontal_tab
        seatsocc cl_abap_char_utilities=>horizontal_tab
        cl_abap_char_utilities=>cr_lf
        INTO output.
      ENDLOOP.
      response = runtime->server->response.
      response->delete_header_field( name = if_http_header_fields=>cache_control ).
      response->delete_header_field( name = if_http_header_fields=>expires ).
      response->delete_header_field( name = if_http_header_fields=>pragma ).
      response->set_header_field( name = if_http_header_fields=>content_type
                                  value = appl ).
      response->set_header_field( name = 'content-disposition'
                                  value = filetype ).
      CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
        EXPORTING
          text     = output
          mimetype = 'text/unicode; charset=utf-16le'
        IMPORTING
          buffer   = output2.
      CONCATENATE cl_abap_char_utilities=>byte_order_mark_little
                  output2 INTO output2 IN BYTE MODE.
      l_len = XSTRLEN( output2 ).
      response->set_data( data = output2
                          length = l_len ).
      navigation->response_complete( ).
    This is the code for downloading an Excel file.

  • CALL METHOD cl_gui_frontend_services= file_save_dialog

    Hi,
    I want to use 'CALL METHOD cl_gui_frontend_services=>file_save_dialog', to choose a path for saving my txt files.  I only want the user to be able to choose the path and not have to supply a filename aswell.  My filenames are standard in the program and I don't want them to be changed by the user.
    Is there another method which is designed for this or is there a simple parameter I have missed?
    Thanks and regards,
    Simon.

    AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_f.
       PERFORM f_search_help_pa_f1.
    FORM f_search_help_pa_f1 .
       CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
         EXPORTING
           program_name  = sy-repid
           dynpro_number = sy-dynnr
         CHANGING
           file_name     = pa_f
         EXCEPTIONS
           mask_too_long = 1
           OTHERS        = 2.
       IF sy-subrc <> 0.
         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
       ENDIF.
    ENDFORM.                    " f_search_help_pa_f1
    Try this
    Regards

  • *ERROR IN OLE CALL - METHOD CALL ERROR...*

    HI ..
    When trying to Upload a file using BDC with Vista OS, we are getting the following error..
    ERROR IN OLE CALL - METHOD CALL ERROR...
    There is no problem with BDC as its working fine with XP & other OS.
    Pls help!!

    Seems that you are working with microsoft files.
    Maybe you are using deprecated functions like WS_EXCEL

  • How to call methods from within run()

    Seems like this must be a common question, but I cannot for the life of me, find the appropriate topic. So apologies ahead of time if this is a repeat.
    I have code like the following:
    public class MainClass implements Runnable {
    public static void main(String args[]) {
    Thread t = new Thread(new MainClass());
    t.start();
    public void run() {
    if (condition)
    doSomethingIntensive();
    else
    doSomethingElseIntensive();
    System.out.println("I want this to print ONLY AFTER the method call finishes, but I'm printed before either 'Intensive' method call completes.");
    private void doSomethingIntensive() {
    System.out.println("I'm never printed because run() ends before execution gets here.");
    return;
    private void doSomethingElseIntensive() {
    System.out.println("I'm never printed because run() ends before execution gets here.");
    return;
    }Question: how do you call methods from within run() and still have it be sequential execution? It seems that a method call within run() creates a new thread just for the method. BUT, this isn't true, because the Thread.currentThread().getName() names are the same instead run() and the "intensive" methods. So, it's not like I can pause one until the method completes because they're the same thread! (I've tried this.)
    So, moral of the story, is there no breaking down a thread's execution into methods? Does all your thread code have to be within the run() method, even if it's 1000 lines? Seems like this wouldn't be the case, but can't get it to work otherwise.
    Thanks all!!!

    I (think I) understand the basics.. what I'm confused
    about is whether the methods are synced on the class
    type or a class instance?The short answer is; the instance for non-static methods, and the class for static methods, although it would be more accurate to say against the instance of the Class for static methods.
    The locking associated with the "sychronized" keyword is all based around an entity called a "monitor". Whenever a thread wants to enter a synchronized method or block, if it doesn't already "own" the monitor, it will try to take it. If the monitor is owned by another thread, then the current thread will block until the other thread releases the monitor. Once the synchronized block is complete, the monitor is released by the thread that owns it.
    So your question boils down to; where does this monitor come from? Every instance of every Object has a monitor associated with it, and any synchronized method or synchonized block is going to take the monitor associated with the instance. The following:
      synchronized void myMethod() {...is equivalent to:
      void myMethod() {
        synchronized(this) {
      ...Keep in mind, though, that every Class has an instance too. You can call "this.getClass()" to get that instance, or you can get the instance for a specific class, say String, with "String.class". Whenever you declare a static method as synchronized, or put a synchronized block inside a static method, the monitor taken will be the one associated with the instance of the class in which the method was declared. In other words this:
      public class Foo {
        synchronized static void myMethod() {...is equivalent to:
      public class Foo{
        static void myMethod() {
          synchronized(Foo.class) {...The problem here is that the instance of the Foo class is being locked. If we declare a subclass of Foo, and then declare a synchronized static method in the subclass, it will lock on the subclass and not on Foo. This is OK, but you have to be aware of it. If you try to declare a static resource of some sort inside Foo, it's best to make it private instead of protected, because subclasses can't really lock on the parent class (well, at least, not without doing something ugly like "synchronized(Foo.class)", which isn't terribly maintainable).
    Doing something like "synchronized(this.getClass())" is a really bad idea. Each subclass is going to take a different monitor, so you can have as many threads in your synchronized block as you have subclasses, and I can't think of a time I'd want that.
    There's also another, equivalent aproach you can take, if this makes more sense to you:
      static final Object lock = new Object();
      void myMethod() {
        synchronized(lock) {
          // Stuff in here is synchronized against the lock's monitor
      }This will take the monitor of the instance referenced by "lock". Since lock is a static variable, only one thread at a time will be able to get into myMethod(), even if the threads are calling into different instances.

  • Call method http_client- response- get_header_fields for PDF and for TIFF

    Hi,
    I am using a Function Module..
    APAR_EBPP_GET_INVOICE_DETAIL to display the TIFF images on the Biller Direct side.
    The above function module is used to retrieve the PDF documents from the document repository.
    In Similar way I am trying to do the TIFF Images too.
    But in this method
    call method http_client->response->get_header_fields
        changing fields.
    For PDF the table fields is as follows
                NAME                                       VALUE                                  
        1     ~response_line----
    |HTTP/1.1 200 (OK)                         |
        2     ~server_protocol----
    |HTTP/1.1                                  |
        3     ~status_code----
    |200                                       |
        4     ~status_reason----
    |(OK)                                      |
        5     content-length----
    |7136                                      |
        6     content-type----
    |application/pdf                           |
        7     server                                |Microsoft-IIS/6.0                         |
        8     x-powered-by                    |ASP.NET                                   |
        9     date                                 |Tue, 24 Feb 2009 18:09:35 GMT             |
       10     connection                       |close                                     |
    For TIFF the table fields are as follows:
        1     ~response_line----
                   |HTTP/1.1 500 (internal server error)        |
        2     ~server_protocol----
                 |HTTP/1.1                                    |
        3     ~status_code----
                     |500                                         |
        4     ~status_reason----
                   |(internal server error)                     |
        5     content-length----
                   |105                                         |
        6     content-type----
                     |text/plain                                  |
        7     server----
                              |Microsoft-IIS/6.0                           |
        8     x-powered-by                 |ASP.NET                                     |
        9     date                         |Tue, 24 Feb 2009 18:26:39 GMT               |
       10     connection                   |close                                       |
    The error message is Internal Server error..
    This is in HTTP2_Get Function Module.
    What would be the reason for HTTP/1.1 500 Internal Server error.
    Any suggestions are welcome..
    Thanks,
    Chaitanya

    Hi Niranjan,
    can you please check if you have imported the whole chain of certificates. Certificates usually diplayed in 3 levels in the Explorer. like
    Verisign - L1
    >>> Versign--  L2
    >>>>>>>>>>>>XYZ.com -- L3
    Extract all the 3 certificates and Put in Strust and do exit soft and hard in SMICM and restart the service.
    Its better to create a RFC destination of Type H and Do the Connection test for HTTPS configuration. If the connection test comes OK then u can be sure of the configuration.

  • How to Call Methods in Ecatt?

    Hello Gurus,
    I dont find CALLMETHOD or CALLSTATIC commands in Ecatt. I am using R/3 4.7 version of SAP.
    My question also is how to call methods. I have a scenario where my test script execution depends on the return type of method. Say if the return type of method is A only then I should run the script else the script should not be executed.
    Your help in this regard is highly appreciated.
    Regards,
    GS.

    >
    Get Started wrote:
    > Hello Gurus,
    >
    > I dont find CALLMETHOD or CALLSTATIC commands in Ecatt. I am using R/3 4.7 version of SAP.
    >
    > My question also is how to call methods. I have a scenario where my test script execution depends on the return type of method. Say if the return type of method is A only then I should run the script else the script should not be executed.
    >
    > Your help in this regard is highly appreciated.
    >
    > Regards,
    > GS.
    Hi GS,
    Please use the command "CallMethod" and it is available with latest SAP version.
    You have to provide the Object Instance Parameter and Instance Method.
    Regards,
    SSN.

  • Syntax for how to call method of one comp in other comp     wd java.

    Let us assume,
    there is method1 in view1 comp1.
    tell me syntax for calling method 1 in view2 comp2
    thanks in advance.
    Edited by: madhu1011 on Nov 9, 2011 11:31 AM

    Hi Madhu,
    This is the situation:
    comp1-> method 1 , view1
    comp2-> view2
    You need to access method1  in view2 of comp2.
    For that, do the following steps:
    1.) First create a method (for eg: method1) in comp1 (under implementation of view1).
            eg: public void method1(){
                    <......some logic...>
    2.)Save the meta data.
    3.) In comp2, you will find an option called used components. In that right click and add the component comp2. (Carefully select comp1 itslef).
    4.)Save the meta data.
    5.) Then go to view2 of comp2 and take implementaion part and right the following logic in wddoinit() (or any other standard or custom method).
    wdThis.wdGetComp2Interface().getMethod("method1"); 
    By this way, we can access the method1 of comp1 in comp2.
    Regards,
    Jithin

  • To call method in program

    Hi experts,
                 Method is already created, Now i have to call that method in one Dummy program. Please send me that program with logic. I am sending you class name and already created method.
    Class name:ZCl_configurable_item
    Method name:Is_sequence_Not_To_Print
    Please call this method in Dummy program, I needed this with the program logic.
    method IS_SEQUENCE_NOT_TO_PRINT .
    DATA : l_kunnr TYPE kunnr,
           l_kna1katr6 TYPE kna1-katr6,
           l_katr6 TYPE kna1-katr6,
           l_katr6_1 TYPE zkatr6_line.
    *DATA : l_katr6_1 TYPE STANDARD TABLE OF zkatr6_line. " OCCURS 0 WITH HEADER LINE.
    DATA : l_zliteral_tab TYPE ZLITERAL_TAB_TYPE,
           l_zliteral type zliteral.
    DATA : condtype_range_out TYPE Z_KATR6_TT.
    SELECT SINGLE kunnr FROM vbpa
                        INTO l_kunnr
                        WHERE vbeln = vbdkr_vbeln AND
                              ( parvw = 'RE' OR
                                parvw = 'BP' ).
    SELECT SINGLE katr6 FROM kna1
                        INTO l_kna1katr6
                        WHERE kunnr = l_kunnr.
      l_katr6 = l_kna1katr6+0(1).
    SELECT * FROM zliteral
             INTO table l_zliteral_tab
             WHERE zkey1 = c_zlit_genosys_key AND
                   zkey2 = c_katr6_1.
        loop at l_zliteral_tab into l_zliteral.
          clear l_katr6_1.
          l_katr6_1-sign = l_zliteral-zvalue1.
          l_katr6_1-option = l_zliteral-zvalue2.
          l_katr6_1-low = l_zliteral-zvalue3.
          append l_katr6_1 to condtype_range_out.
          Condense l_katr6_1-low.
          IF l_katr6 EQ l_katr6_1-low.
            IS_SEQUENCE_NOT_TO_PRINT = c_checked.
            EXIT.
          ELSE.
            IS_SEQUENCE_NOT_TO_PRINT = SPACE.
          ENDIF.
        endloop.
    Thanks & Regards

    Hi
    In the report program first u have to create an object with ref to class then call that method like
    report ztest.
    create object zt1 type ref to ZCl_configurable_item.
    CALL method zt1->Is_sequence_Not_To_Print importing....
        exporting....
    like this.
    See the help for create object in ABAPDOCU.
    mark points if helpful.
    Regs
    Manas Ranjan Panda

  • Java code to call methods in .ocx file

    dear friends,
    i have an .ocx file with me which is used to communicate with a specific device.it is an already existing one. i wish to know whether i can call method sin that .ocx file using java .using vb6 we can do this.
    if it is possible with java i wish to know how i can do this.please consider this query and please send me your responses. i know that using jni we can communicate with .dll files.but i am not sure about .ocx file. please help me.
    thank you
    arun

    i wish to know whether i can call method sin that .ocx file using java
    Probably
    db

  • CALL METHOD ABAP run SQL wrong

    Dear All
             I have a problem in ABAP connect SQL,Below is my code snippet sentence.
    CONCATENATE 'Insert Into [timportcortrol]'
                    '(zucode,zstate,zdate,zkind) Values('''
                      VG_PCID ''','''
                      '1'','''
                      SY-DATUM ''','''
                      '1' ''')'
                     INTO SQL.
        CALL METHOD OF REC 'Execute'
         EXPORTING #1 = SQL
         #2 = CON
         #3 = '1'.
    IF NOT SY-SUBRC = 0.
        MESSAGE I000 WITH 'Download  to [timportcortrol] failure,Please Check the SQL Connect!!! '.
        EXIT.
      ENDIF.
    Con:is the connect SQL String ,the connect SQL is Okay.
    I debug this code,when I used u2018Select u2026sentenceu2019,the program can work.if I  use u2018insert intou2019 then canu2019t work,but I copied the SQL of the u2018inset Into sentenceu2026u2019run it into SQL server then it can work also.
    And I found the SY-SUBRC eq u20182u2019.whatu2019s mean about of the sy-subrc eq u20182u2019.
    I think the insert into sentence in abap I have write the wrong ,but I canu2019t assurance.
    The Insert Into Sentence is:u2019 Insert Into [timportcortrol](zucode,zstate,zdate,zkind) Values('20080807094713','1','20080807','1')u2019
    Could you give me some advice for this issue?
    Thanks of all
    Sun.

    Have you checked whether it's a problem with mixed case?  Some SQL dialects are case sensitive.
    The not very helpful meanings of the sy-subrc value can be found in ABAP help.
    0 Successful processing of the method meth.
    1 Communication Error to SAP GUI.
    2 Error when calling method meth.
    3 Error when setting a property.
    4 Error when reading a property
    matt

  • ABAP OO Doubt - validate call method.

    Hi experts
    I'm beginer in ABAP OO and i created this code :
    output-cep = ch_adrc_struc-post_code1.
                 TRY.
                     CREATE OBJECT lr_cep.
                   CATCH cx_ai_system_fault .
                 ENDTRY.
                 TRY.
                     CALL METHOD lr_cep->si_servico_cep_out
                       EXPORTING
                         output = output
                       IMPORTING
                         input  = input.
                   CATCH cx_ai_system_fault .
                 ENDTRY.
    My doubt is : How to know the call method worked?
    In call function i use = if sy-subrc = 0 for check the return but can i use it after call method ?
    thanks a lot.

    there is an importing which is used to get back data.
    once you process input then you can decide whether method worked or not.

  • Call method http_client - request - set_header_field

    Hi all,
    i am passing NAME & VALUE as two export parameter for the below method.
    here , what i should pass to VALUE parameter. is it a URL?
    what is the meaning of  '_/airport.asmx'_ in VALUE parameter.
    call method http_client ->request ->set_header_field
                    exporting
                         name = '~request_uri'
                         value  = '/airport.asmx'.
    Regards
    pabi

    POST
    Pages generated by an HTTP POST operation are always cached. The Web browser uses POST operations whenever an HTML FORM statement specifies METHOD="POST" .
    GET
    Pages generated by GET operations are never cached because the Internet Transaction Server (ITS) explicitly sets a no-cache option in the HTTP header when the page is sent to the Web browser. It does not matter what caching options are set in the Web browser. The Web browser uses GET operations for hypertext links and FRAMESET documents.
    check these links
    http://help.sap.com/saphelp_47x200/helpdata/en/ee/23df3a750f6a02e10000000a11405a/frameset.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/78/985281c06b11d4ad310000e83539c3/frameset.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/99/0455ada80a11d1801000c04fadbf76/frameset.htm

  • CALL METHOD ob_grid1- set_table_for_first_display does not change display

    Dear experts,
    I'm using CALL METHOD ob_grid1->set_table_for_first_display, during the first run the display is ok.
    When I back to screen 0 and enter different values and re-run, the values of internal table has been changed.
    But the second run still display the values I have during the first run. What could be the reason for this and how to solve this? Thanks.
        IF ob_custom1 IS INITIAL.
           CREATE OBJECT ob_custom1
              EXPORTING
              container_name = 'ALV_CONTAINER'.
        ENDIF.
        IF ob_split1 IS INITIAL.
          CREATE OBJECT ob_split1
            EXPORTING
              parent      = ob_custom1
              orientation = cl_gui_easy_splitter_container=>orientation_vertical.
        ENDIF.
        IF ob_grid1 IS INITIAL.
           CREATE OBJECT ob_grid1
              EXPORTING
              i_parent = ob_split1->top_left_container.
           PERFORM build_fieldcatalog.
           gs_layout1-info_fname = 'ROWCOLOR'.
           gs_layout1-smalltitle = 'X'.
           CALL METHOD ob_grid1->set_table_for_first_display
              EXPORTING
                 i_structure_name = 'T_REPORT'
                 is_layout        = gs_layout1
              CHANGING
                 it_outtab        = T_REPORT
                 it_fieldcatalog  = alv_fcat_dock1.
         ENDIF.
    Kath

    Hi,
    Please add the code after else statement.
    IF ob_grid1 IS INITIAL.
          CREATE OBJECT ob_grid1
             EXPORTING
                 i_parent = ob_split1->top_left_container.
            PERFORM build_fieldcatalog.
    gs_layout1-info_fname = 'ROWCOLOR'.
    gs_layout1-smalltitle = 'X'.
    CALL METHOD ob_grid1->set_table_for_first_display
           EXPORTING
             i_structure_name = 'T_REPORT'
             is_layout = gs_layout1
          CHANGING
             it_outtab = T_REPORT
             it_fieldcatalog = alv_fcat_dock1.
    ELSE.                                                               " Add
         Call method refersh table for display.        " Add
    ENDIF.

  • CALL METHOD GRID4- SET_TABLE_FOR_FIRST_DISPLAY

    Hi All,
    I would like to know how to display 5 internal table same time in a single output screen. I have attached the program for your reference.
    Presently I am able to get i_final1 and i_final2 output on the screen. I need to display on the same screen grid 3 and grid 4. Is it possible to display.
    *& REPORT  Z_READ_PROFILE
    REPORT  Z_READ_PROFILE.
    TABLES: TCATS, TCATST, TCATX_GRID.
    DATA: ST_CT1_FIELDCAT1 TYPE LVC_T_FCAT WITH HEADER LINE.
    DATA: IT_CT1_FIELDCAT1 TYPE LVC_T_FCAT.
    DATA: ST_CT1_FIELDCAT2 TYPE LVC_T_FCAT WITH HEADER LINE.
    DATA: IT_CT1_FIELDCAT2 TYPE LVC_T_FCAT.
    DATA: ST_CT1_FIELDCAT3 TYPE LVC_T_FCAT WITH HEADER LINE.
    DATA: IT_CT1_FIELDCAT3 TYPE LVC_T_FCAT.
    DATA: ST_CT1_FIELDCAT4 TYPE LVC_T_FCAT WITH HEADER LINE.
    DATA: IT_CT1_FIELDCAT4 TYPE LVC_T_FCAT.
    DATA: DOCK TYPE REF TO CL_GUI_DOCKING_CONTAINER,
          SPLIT TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
          GRID1 TYPE REF TO CL_GUI_ALV_GRID,
          GRID2 TYPE REF TO CL_GUI_ALV_GRID,
          GRID3 TYPE REF TO CL_GUI_ALV_GRID,
          GRID4 TYPE REF TO CL_GUI_ALV_GRID,
          DOC1 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
          DOC3 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
          DOC4 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
          CON22 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
          LI_FIELDCAT1 TYPE LVC_T_FCAT.
    SELECTION-SCREEN: BEGIN OF BLOCK B1.
    PARAMETERS: P_PROF1 LIKE TCATS-VARIANT,
                 P_PROF2 LIKE TCATS-VARIANT.
    SELECTION-SCREEN: END OF BLOCK B1.
    DATA: BEGIN OF I_DD03P OCCURS 0.
           INCLUDE STRUCTURE DD03P.
    DATA: END OF I_DD03P.
    DATA: BEGIN OF I_FIELDS1 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FIELDS1.
    DATA: BEGIN OF I_FIELDS2 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FIELDS2.
    DATA: BEGIN OF I_FINAL1 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           TEXT     LIKE TCATST-TEXT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FINAL1.
    DATA: BEGIN OF I_FINAL2 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           TEXT     LIKE TCATST-TEXT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FINAL2.
    DATA: BEGIN OF ENTRYLIST OCCURS 0,
           MFELD      TYPE FAWFLDNAM,
           VISIBLE    TYPE FAWCUST,
           REQUIRED   TYPE FAWCUST,
           READONLY   TYPE FAWCUST,
           HIDE       TYPE FAWCUST,
           PROF1      LIKE TCATS-VARIANT,
          END OF ENTRYLIST.
    DATA: BEGIN OF WORKLIST OCCURS 0.
           INCLUDE STRUCTURE FIELD_SELECTION.
    DATA: END OF WORKLIST.
    DATA: BEGIN OF I_TCATX_GRID1 OCCURS 0,
            PROFIL        LIKE TCATX_GRID-PROFIL,
            TASKCOMPONENT LIKE TCATX_GRID-TASKCOMPONENT,
            COL           LIKE TCATX_GRID-COL,
            OBLIGAT       LIKE TCATX_GRID-OBLIGAT,
          END OF I_TCATX_GRID1.
    DATA: BEGIN OF I_TCATX_GRID2 OCCURS 0,
            PROFIL        LIKE TCATX_GRID-PROFIL,
            TASKCOMPONENT LIKE TCATX_GRID-TASKCOMPONENT,
            COL           LIKE TCATX_GRID-COL,
            OBLIGAT       LIKE TCATX_GRID-OBLIGAT,
          END OF I_TCATX_GRID2.
    PERFORM STATEMENT TO GET THE DATA BASED ON PORIFLE
    IF NOT P_PROF1 IS INITIAL .
    PERFORM GET_FIELDS1.
    PERFORM GET_COMPONENTS1.
    ENDIF.
    IF NOT P_PROF1 IS INITIAL .
    PERFORM GET_FIELDS2.
    PERFORM GET_COMPONENTS2.
    ENDIF.
    PERFORM COMPARE_TABLES.
    CALL SCREEN 100.
    *&      FORM  GET_FIELDS
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM GET_FIELDS1.
    CLEAR  : ENTRYLIST, WORKLIST.
    REFRESH: ENTRYLIST, WORKLIST.
    CALL FUNCTION 'CATS_GET_INFLUENCES'
      EXPORTING
        VARIANT                   = P_PROF1
      TABLES
        ENTRYLIST_SELECTION       = ENTRYLIST
        WORKLIST_SELECTION        = WORKLIST
    IF SY-SUBRC EQ 0.
    LOOP AT ENTRYLIST WHERE VISIBLE  EQ SPACE
                      AND   REQUIRED EQ SPACE
                      AND   READONLY EQ SPACE.
    MOVE 'X' TO ENTRYLIST-HIDE.
    MODIFY ENTRYLIST TRANSPORTING HIDE.
    ENDLOOP.
    LOOP AT ENTRYLIST.
      MOVE P_PROF1              TO I_FIELDS1-PROFILE.
      MOVE ENTRYLIST-MFELD      TO I_FIELDS1-MFIELD.
      IF ENTRYLIST-READONLY NE 'X' AND ENTRYLIST-REQUIRED NE 'X' .
        MOVE ENTRYLIST-VISIBLE  TO I_FIELDS1-INPUT.
      ENDIF.
      MOVE ENTRYLIST-REQUIRED   TO I_FIELDS1-OBLIGAT.
      MOVE ENTRYLIST-READONLY   TO I_FIELDS1-DISPLAY.
      MOVE ENTRYLIST-HIDE       TO I_FIELDS1-NOTACT.
    APPEND I_FIELDS1.
    ENDLOOP.
    ENDIF.
    ENDFORM.                    " GET_FIELDS
    *&      FORM  GET_FIELDS2
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM GET_FIELDS2 .
    CLEAR  : ENTRYLIST, WORKLIST.
    REFRESH: ENTRYLIST, WORKLIST.
    CALL FUNCTION 'CATS_GET_INFLUENCES'
      EXPORTING
        VARIANT                   = P_PROF2
      TABLES
        ENTRYLIST_SELECTION       = ENTRYLIST
        WORKLIST_SELECTION        = WORKLIST
    IF SY-SUBRC EQ 0.
    LOOP AT ENTRYLIST WHERE  VISIBLE  EQ SPACE
                       AND   REQUIRED EQ SPACE
                       AND   READONLY EQ SPACE.
    MOVE 'X' TO ENTRYLIST-HIDE.
    MODIFY ENTRYLIST TRANSPORTING HIDE.
    ENDLOOP.
    LOOP AT ENTRYLIST.
      MOVE P_PROF2                TO I_FIELDS2-PROFILE.
      MOVE ENTRYLIST-MFELD        TO I_FIELDS2-MFIELD.
      IF ENTRYLIST-READONLY NE 'X' AND ENTRYLIST-REQUIRED NE 'X' .
        MOVE ENTRYLIST-VISIBLE    TO I_FIELDS2-INPUT.
      ENDIF.
      MOVE ENTRYLIST-REQUIRED     TO I_FIELDS2-OBLIGAT.
      MOVE ENTRYLIST-READONLY     TO I_FIELDS2-DISPLAY.
      MOVE ENTRYLIST-HIDE         TO I_FIELDS2-NOTACT.
    APPEND I_FIELDS2.
    ENDLOOP.
    ENDIF.
    ENDFORM.                    " GET_FIELDS2
    *&      FORM  COMPARE_TABLES
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM COMPARE_TABLES .
    CLEAR: I_FIELDS1, I_FIELDS2.
    SORT : I_FIELDS1, I_FIELDS2.
    DATA: L_TABLE LIKE DD03L-TABNAME,
          L_FIELD LIKE DD03L-FIELDNAME.
    LOOP AT I_FIELDS1.
       READ TABLE I_FIELDS2 WITH KEY  MFIELD   = I_FIELDS1-MFIELD
                                      INPUT    = I_FIELDS1-INPUT
                                      OBLIGAT  = I_FIELDS1-OBLIGAT
                                      DISPLAY  = I_FIELDS1-DISPLAY
                                      NOTACT   = I_FIELDS1-NOTACT.
    IF SY-SUBRC NE 0.
      MOVE I_FIELDS1-PROFILE  TO I_FINAL1-PROFILE.
    SPLIT I_FIELDS1-MFIELD AT '-' INTO L_TABLE L_FIELD.
    CALL FUNCTION 'BUS_DDFIELD_GET'
      EXPORTING
        I_TABNM               = L_TABLE
        I_FLDNM               = L_FIELD
       I_LANGU               =  SY-LANGU
      IMPORTING
        E_DD03P               = I_DD03P
    EXCEPTIONS
       FIELD_NOT_FOUND       = 1
       OTHERS                = 2
    IF SY-SUBRC EQ 0.
        MOVE I_DD03P-DDTEXT        TO I_FINAL1-TEXT.
    ENDIF.
      MOVE I_FIELDS1-MFIELD   TO I_FINAL1-MFIELD.
      MOVE I_FIELDS1-INPUT    TO I_FINAL1-INPUT.
      MOVE I_FIELDS1-OBLIGAT  TO I_FINAL1-OBLIGAT.
      MOVE I_FIELDS1-DISPLAY  TO I_FINAL1-DISPLAY.
      MOVE I_FIELDS1-NOTACT   TO I_FINAL1-NOTACT.
      APPEND I_FINAL1.
    ENDIF.
    ENDLOOP.
    SORT : I_FIELDS1, I_FIELDS2.
    LOOP AT I_FIELDS2.
       READ TABLE I_FIELDS1 WITH KEY  MFIELD   = I_FIELDS2-MFIELD
                                      INPUT    = I_FIELDS2-INPUT
                                      OBLIGAT  = I_FIELDS2-OBLIGAT
                                      DISPLAY  = I_FIELDS2-DISPLAY
                                      NOTACT   = I_FIELDS2-NOTACT.
    IF SY-SUBRC NE 0.
      MOVE I_FIELDS2-PROFILE  TO I_FINAL2-PROFILE.
    SPLIT I_FIELDS2-MFIELD AT '-' INTO L_TABLE L_FIELD.
    CALL FUNCTION 'BUS_DDFIELD_GET'
      EXPORTING
        I_TABNM               = L_TABLE
        I_FLDNM               = L_FIELD
       I_LANGU               =  SY-LANGU
      IMPORTING
        E_DD03P               = I_DD03P
    EXCEPTIONS
       FIELD_NOT_FOUND       = 1
       OTHERS                = 2
    IF SY-SUBRC EQ 0.
        MOVE I_DD03P-DDTEXT        TO I_FINAL2-TEXT.
    ENDIF.
      MOVE I_FIELDS2-MFIELD   TO I_FINAL2-MFIELD.
      MOVE I_FIELDS2-INPUT    TO I_FINAL2-INPUT.
      MOVE I_FIELDS2-OBLIGAT  TO I_FINAL2-OBLIGAT.
      MOVE I_FIELDS2-DISPLAY  TO I_FINAL2-DISPLAY.
      MOVE I_FIELDS2-NOTACT   TO I_FINAL2-NOTACT.
      APPEND I_FINAL2.
    ENDIF.
    ENDLOOP.
    ENDFORM.                    " COMPARE_TABLES
    *&      MODULE  STATUS_0100  OUTPUT
          TEXT
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS SPACE.
      SET TITLEBAR 'T001'.
    PERFORM FIELDCAT_FINAL1.
    PERFORM FIELDCAT_FINAL2.
    CREATE OBJECT DOCK
        EXPORTING
          REPID                       = SY-REPID
          DYNNR                       = '100'
          EXTENSION                   = '600'
          SIDE                        = '1'
        EXCEPTIONS
          CNTL_ERROR                  = 1
          CNTL_SYSTEM_ERROR           = 2
          CREATE_ERROR                = 3
          LIFETIME_ERROR              = 4
          LIFETIME_DYNPRO_DYNPRO_LINK = 5
          OTHERS                      = 6
      IF SY-SUBRC  NE 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT DOC1
        EXPORTING
          REPID                       = SY-REPID
          DYNNR                       = '100'
          EXTENSION                   = '1000'
          SIDE                        = '4'
        EXCEPTIONS
          CNTL_ERROR                  = 1
          CNTL_SYSTEM_ERROR           = 2
          CREATE_ERROR                = 3
          LIFETIME_ERROR              = 4
          LIFETIME_DYNPRO_DYNPRO_LINK = 5
          OTHERS                      = 6
      IF SY-SUBRC NE  0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT GRID1 EXPORTING I_PARENT = DOCK.
      CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          I_STRUCTURE_NAME              = 'I_FINAL1'
        CHANGING
          IT_OUTTAB                     = I_FINAL1[]
          IT_FIELDCATALOG               = IT_CT1_FIELDCAT1[]
        EXCEPTIONS
          INVALID_PARAMETER_COMBINATION = 1
          PROGRAM_ERROR                 = 2
          TOO_MANY_LINES                = 3
          OTHERS                        = 4.
      IF SY-SUBRC NE  0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT GRID2 EXPORTING I_PARENT = DOC1.
      CALL METHOD GRID2->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          I_STRUCTURE_NAME              = 'I_FINAL2'
        CHANGING
          IT_OUTTAB                     = I_FINAL2[]
          IT_FIELDCATALOG               = IT_CT1_FIELDCAT2[]
        EXCEPTIONS
          INVALID_PARAMETER_COMBINATION = 1
          PROGRAM_ERROR                 = 2
          TOO_MANY_LINES                = 3
          OTHERS                        = 4.
      IF SY-SUBRC NE  0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    CREATE OBJECT DOC3
        EXPORTING
          REPID                       = SY-REPID
          DYNNR                       = '100'
          EXTENSION                   = '600'
          SIDE                        = '1'
        EXCEPTIONS
          CNTL_ERROR                  = 1
          CNTL_SYSTEM_ERROR           = 2
          CREATE_ERROR                = 3
          LIFETIME_ERROR              = 4
          LIFETIME_DYNPRO_DYNPRO_LINK = 5
          OTHERS                      = 6
      IF SY-SUBRC  NE 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT DOC4
        EXPORTING
          REPID                       = SY-REPID
          DYNNR                       = '100'
          EXTENSION                   = '1000'
          SIDE                        = '4'
        EXCEPTIONS
          CNTL_ERROR                  = 1
          CNTL_SYSTEM_ERROR           = 2
          CREATE_ERROR                = 3
          LIFETIME_ERROR              = 4
          LIFETIME_DYNPRO_DYNPRO_LINK = 5
          OTHERS                      = 6
      IF SY-SUBRC NE  0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT GRID3 EXPORTING I_PARENT = DOC3.
      CALL METHOD GRID3->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          I_STRUCTURE_NAME              = 'TCATX_GRID'
        CHANGING
          IT_OUTTAB                     = I_TCATX_GRID1[]
         IT_FIELDCATALOG               = IT_CT1_FIELDCAT1[]
        EXCEPTIONS
          INVALID_PARAMETER_COMBINATION = 1
          PROGRAM_ERROR                 = 2
          TOO_MANY_LINES                = 3
          OTHERS                        = 4.
      IF SY-SUBRC NE  0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT GRID4 EXPORTING I_PARENT = DOC4.
      CALL METHOD GRID4->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          I_STRUCTURE_NAME              = 'TCATX_GRID'
        CHANGING
          IT_OUTTAB                     = I_TCATX_GRID2[]
         IT_FIELDCATALOG               = IT_CT1_FIELDCAT2[]
        EXCEPTIONS
          INVALID_PARAMETER_COMBINATION = 1
          PROGRAM_ERROR                 = 2
          TOO_MANY_LINES                = 3
          OTHERS                        = 4.
      IF SY-SUBRC NE  0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      MODULE  USER_COMMAND_0100  INPUT
          TEXT
    MODULE USER_COMMAND_0100 INPUT.
    CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      FORM  FIELDCAT_FINAL1
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM FIELDCAT_FINAL1 .
    IF IT_CT1_FIELDCAT1[] IS INITIAL.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'PROFILE'.
    ST_CT1_FIELDCAT1-COL_POS = 0.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 8.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'PROFILE'.
    ST_CT1_FIELDCAT1-KEY = 'X'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'MFIELD'.
    ST_CT1_FIELDCAT1-COL_POS = 1.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 15.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'FIELD'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'TEXT'.
    ST_CT1_FIELDCAT1-COL_POS = 1.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 30.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'TEXT'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'INPUT'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'INPUT'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'OBLIGAT'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'REQUIRED'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'DISPLAY'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'DISPLAY'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'NOTACT'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'HIDE'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ENDIF.
    ENDFORM.                    " FIELDCAT_FINAL1
    *&      FORM  FIELDCAT_FINAL2
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM FIELDCAT_FINAL2 .
    IF IT_CT1_FIELDCAT2[] IS INITIAL.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'PROFILE'.
    ST_CT1_FIELDCAT2-COL_POS = 0.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 8.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'PROFILE'.
    ST_CT1_FIELDCAT2-KEY = 'X'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'MFIELD'.
    ST_CT1_FIELDCAT2-COL_POS = 1.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'FIELD'.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 15.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'TEXT'.
    ST_CT1_FIELDCAT2-COL_POS = 1.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 30.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'TEXT'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'INPUT'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'INPUT'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'OBLIGAT'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'REQUIRED'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'DISPLAY'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'DISPLAY'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'NOTACT'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'HIDE'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ENDIF.
    ENDFORM.                    " FIELDCAT_FINAL2
    *&      Form  GET_COMPONENTS1
          text
    -->  p1        text
    <--  p2        text
    FORM GET_COMPONENTS1 .
    CLEAR  : I_TCATX_GRID1.
    REFRESH: I_TCATX_GRID1.
    SELECT * FROM TCATX_GRID
             INTO CORRESPONDING FIELDS OF TABLE I_TCATX_GRID1
                                      WHERE PROFIL EQ P_PROF1.
    ENDFORM.                    " GET_COMPONENTS1
    *&      Form  GET_COMPONENTS2
          text
    -->  p1        text
    <--  p2        text
    FORM GET_COMPONENTS2 .
    CLEAR  : I_TCATX_GRID2.
    REFRESH: I_TCATX_GRID2.
    SELECT * FROM TCATX_GRID
             INTO CORRESPONDING FIELDS OF TABLE I_TCATX_GRID2
                                      WHERE PROFIL EQ P_PROF2.
    ENDFORM.                    " GET_COMPONENTS2
    Thanks & Regards,
    Nagaraj Kalbavi

    Hi Uwe,
    As per your suggestion I have updated my program with splitter. Now I am able to get 3 internal Table but 4th one is not displaying. What could be the reason. I have attached my program for your reference.
    & REPORT  ZTEST_NAG&
    REPORT  ZTEST_NAG.
    TABLES: TCATS, TCATST, TCATX_GRID.
    DATA: ST_CT1_FIELDCAT1 TYPE LVC_T_FCAT WITH HEADER LINE.
    DATA: IT_CT1_FIELDCAT1 TYPE LVC_T_FCAT.
    DATA: ST_CT1_FIELDCAT2 TYPE LVC_T_FCAT WITH HEADER LINE.
    DATA: IT_CT1_FIELDCAT2 TYPE LVC_T_FCAT.
    data: go_docking       TYPE REF TO cl_gui_docking_container,
          go_splitter      TYPE REF TO cl_gui_splitter_container,
          go_splitter_2    TYPE REF TO cl_gui_splitter_container,
          go_cell_top      TYPE REF TO cl_gui_container,
          go_cell_bottom   TYPE REF TO cl_gui_container,
          go_cell_left     TYPE REF TO cl_gui_container,
          go_cell_right    TYPE REF TO cl_gui_container,
          go_grid1         TYPE REF TO cl_gui_alv_grid,
          go_grid2         TYPE REF TO cl_gui_alv_grid,
          go_grid3         TYPE REF TO cl_gui_alv_grid,
          go_grid4         TYPE REF TO cl_gui_alv_grid.
    SELECTION-SCREEN: BEGIN OF BLOCK B1.
    PARAMETERS: P_PROF1 LIKE TCATS-VARIANT,
                 P_PROF2 LIKE TCATS-VARIANT.
    SELECTION-SCREEN: END OF BLOCK B1.
    DATA: BEGIN OF I_DD03P OCCURS 0.
           INCLUDE STRUCTURE DD03P.
    DATA: END OF I_DD03P.
    DATA: BEGIN OF I_FIELDS1 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FIELDS1.
    DATA: BEGIN OF I_FIELDS2 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FIELDS2.
    DATA: BEGIN OF I_FINAL1 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           TEXT     LIKE TCATST-TEXT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FINAL1.
    DATA: BEGIN OF I_FINAL2 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           TEXT     LIKE TCATST-TEXT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FINAL2.
    DATA: BEGIN OF ENTRYLIST OCCURS 0,
           MFELD      TYPE FAWFLDNAM,
           VISIBLE    TYPE FAWCUST,
           REQUIRED   TYPE FAWCUST,
           READONLY   TYPE FAWCUST,
           HIDE       TYPE FAWCUST,
           PROF1      LIKE TCATS-VARIANT,
          END OF ENTRYLIST.
    DATA: BEGIN OF WORKLIST OCCURS 0.
           INCLUDE STRUCTURE FIELD_SELECTION.
    DATA: END OF WORKLIST.
    DATA: BEGIN OF I_TCATX_GRID1 OCCURS 0,
            PROFIL        LIKE TCATX_GRID-PROFIL,
            TASKCOMPONENT LIKE TCATX_GRID-TASKCOMPONENT,
            COL           LIKE TCATX_GRID-COL,
            OBLIGAT       LIKE TCATX_GRID-OBLIGAT,
          END OF I_TCATX_GRID1.
    DATA: BEGIN OF I_TCATX_GRID2 OCCURS 0,
            PROFIL        LIKE TCATX_GRID-PROFIL,
            TASKCOMPONENT LIKE TCATX_GRID-TASKCOMPONENT,
            COL           LIKE TCATX_GRID-COL,
            OBLIGAT       LIKE TCATX_GRID-OBLIGAT,
          END OF I_TCATX_GRID2.
    PERFORM STATEMENT TO GET THE DATA BASED ON PORIFLE
    IF NOT P_PROF1 IS INITIAL .
    PERFORM GET_FIELDS1.
    PERFORM GET_COMPONENTS1.
    ENDIF.
    IF NOT P_PROF1 IS INITIAL .
    PERFORM GET_FIELDS2.
    PERFORM GET_COMPONENTS2.
    ENDIF.
    PERFORM COMPARE_TABLES.
    CALL SCREEN 100.
    *&      FORM  GET_FIELDS
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM GET_FIELDS1.
    CLEAR  : ENTRYLIST, WORKLIST.
    REFRESH: ENTRYLIST, WORKLIST.
    CALL FUNCTION 'CATS_GET_INFLUENCES'
      EXPORTING
        VARIANT                   = P_PROF1
      TABLES
        ENTRYLIST_SELECTION       = ENTRYLIST
        WORKLIST_SELECTION        = WORKLIST
    IF SY-SUBRC EQ 0.
    LOOP AT ENTRYLIST WHERE VISIBLE  EQ SPACE
                      AND   REQUIRED EQ SPACE
                      AND   READONLY EQ SPACE.
    MOVE 'X' TO ENTRYLIST-HIDE.
    MODIFY ENTRYLIST TRANSPORTING HIDE.
    ENDLOOP.
    LOOP AT ENTRYLIST.
      MOVE P_PROF1              TO I_FIELDS1-PROFILE.
      MOVE ENTRYLIST-MFELD      TO I_FIELDS1-MFIELD.
      IF ENTRYLIST-READONLY NE 'X' AND ENTRYLIST-REQUIRED NE 'X' .
        MOVE ENTRYLIST-VISIBLE  TO I_FIELDS1-INPUT.
      ENDIF.
      MOVE ENTRYLIST-REQUIRED   TO I_FIELDS1-OBLIGAT.
      MOVE ENTRYLIST-READONLY   TO I_FIELDS1-DISPLAY.
      MOVE ENTRYLIST-HIDE       TO I_FIELDS1-NOTACT.
    APPEND I_FIELDS1.
    ENDLOOP.
    ENDIF.
    ENDFORM.                    " GET_FIELDS
    *&      FORM  GET_FIELDS2
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM GET_FIELDS2 .
    CLEAR  : ENTRYLIST, WORKLIST.
    REFRESH: ENTRYLIST, WORKLIST.
    CALL FUNCTION 'CATS_GET_INFLUENCES'
      EXPORTING
        VARIANT                   = P_PROF2
      TABLES
        ENTRYLIST_SELECTION       = ENTRYLIST
        WORKLIST_SELECTION        = WORKLIST
    IF SY-SUBRC EQ 0.
    LOOP AT ENTRYLIST WHERE  VISIBLE  EQ SPACE
                       AND   REQUIRED EQ SPACE
                       AND   READONLY EQ SPACE.
    MOVE 'X' TO ENTRYLIST-HIDE.
    MODIFY ENTRYLIST TRANSPORTING HIDE.
    ENDLOOP.
    LOOP AT ENTRYLIST.
      MOVE P_PROF2                TO I_FIELDS2-PROFILE.
      MOVE ENTRYLIST-MFELD        TO I_FIELDS2-MFIELD.
      IF ENTRYLIST-READONLY NE 'X' AND ENTRYLIST-REQUIRED NE 'X' .
        MOVE ENTRYLIST-VISIBLE    TO I_FIELDS2-INPUT.
      ENDIF.
      MOVE ENTRYLIST-REQUIRED     TO I_FIELDS2-OBLIGAT.
      MOVE ENTRYLIST-READONLY     TO I_FIELDS2-DISPLAY.
      MOVE ENTRYLIST-HIDE         TO I_FIELDS2-NOTACT.
    APPEND I_FIELDS2.
    ENDLOOP.
    ENDIF.
    ENDFORM.                    " GET_FIELDS2
    *&      FORM  COMPARE_TABLES
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM COMPARE_TABLES .
    CLEAR: I_FIELDS1, I_FIELDS2.
    SORT : I_FIELDS1, I_FIELDS2.
    DATA: L_TABLE LIKE DD03L-TABNAME,
          L_FIELD LIKE DD03L-FIELDNAME.
    LOOP AT I_FIELDS1.
       READ TABLE I_FIELDS2 WITH KEY  MFIELD   = I_FIELDS1-MFIELD
                                      INPUT    = I_FIELDS1-INPUT
                                      OBLIGAT  = I_FIELDS1-OBLIGAT
                                      DISPLAY  = I_FIELDS1-DISPLAY
                                      NOTACT   = I_FIELDS1-NOTACT.
    IF SY-SUBRC NE 0.
      MOVE I_FIELDS1-PROFILE  TO I_FINAL1-PROFILE.
    SPLIT I_FIELDS1-MFIELD AT '-' INTO L_TABLE L_FIELD.
    CALL FUNCTION 'BUS_DDFIELD_GET'
      EXPORTING
        I_TABNM               = L_TABLE
        I_FLDNM               = L_FIELD
       I_LANGU               =  SY-LANGU
      IMPORTING
        E_DD03P               = I_DD03P
    EXCEPTIONS
       FIELD_NOT_FOUND       = 1
       OTHERS                = 2
    IF SY-SUBRC EQ 0.
        MOVE I_DD03P-DDTEXT        TO I_FINAL1-TEXT.
    ENDIF.
      MOVE I_FIELDS1-MFIELD   TO I_FINAL1-MFIELD.
      MOVE I_FIELDS1-INPUT    TO I_FINAL1-INPUT.
      MOVE I_FIELDS1-OBLIGAT  TO I_FINAL1-OBLIGAT.
      MOVE I_FIELDS1-DISPLAY  TO I_FINAL1-DISPLAY.
      MOVE I_FIELDS1-NOTACT   TO I_FINAL1-NOTACT.
      APPEND I_FINAL1.
    ENDIF.
    ENDLOOP.
    SORT : I_FIELDS1, I_FIELDS2.
    LOOP AT I_FIELDS2.
       READ TABLE I_FIELDS1 WITH KEY  MFIELD   = I_FIELDS2-MFIELD
                                      INPUT    = I_FIELDS2-INPUT
                                      OBLIGAT  = I_FIELDS2-OBLIGAT
                                      DISPLAY  = I_FIELDS2-DISPLAY
                                      NOTACT   = I_FIELDS2-NOTACT.
    IF SY-SUBRC NE 0.
      MOVE I_FIELDS2-PROFILE  TO I_FINAL2-PROFILE.
    SPLIT I_FIELDS2-MFIELD AT '-' INTO L_TABLE L_FIELD.
    CALL FUNCTION 'BUS_DDFIELD_GET'
      EXPORTING
        I_TABNM               = L_TABLE
        I_FLDNM               = L_FIELD
       I_LANGU               =  SY-LANGU
      IMPORTING
        E_DD03P               = I_DD03P
    EXCEPTIONS
       FIELD_NOT_FOUND       = 1
       OTHERS                = 2
    IF SY-SUBRC EQ 0.
        MOVE I_DD03P-DDTEXT        TO I_FINAL2-TEXT.
    ENDIF.
      MOVE I_FIELDS2-MFIELD   TO I_FINAL2-MFIELD.
      MOVE I_FIELDS2-INPUT    TO I_FINAL2-INPUT.
      MOVE I_FIELDS2-OBLIGAT  TO I_FINAL2-OBLIGAT.
      MOVE I_FIELDS2-DISPLAY  TO I_FINAL2-DISPLAY.
      MOVE I_FIELDS2-NOTACT   TO I_FINAL2-NOTACT.
      APPEND I_FINAL2.
    ENDIF.
    ENDLOOP.
    ENDFORM.                    " COMPARE_TABLES
    *&      MODULE  STATUS_0100  OUTPUT
          TEXT
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS SPACE.
      SET TITLEBAR 'T001'.
    PERFORM FIELDCAT_FINAL1.
    PERFORM FIELDCAT_FINAL2.
    CREATE OBJECT go_docking
        EXPORTING
          parent                      = cl_gui_container=>screen0
          ratio                       = 90
        EXCEPTIONS
          OTHERS                      = 6.
      IF sy-subrc ne 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Create splitter container
      CREATE OBJECT go_splitter
        EXPORTING
          parent            = go_docking
          rows              = 1
          columns           = 2
         NO_AUTODEF_PROGID_DYNNR =
         NAME              =
        EXCEPTIONS
          cntl_error        = 1
          cntl_system_error = 2
          OTHERS            = 3.
      IF sy-subrc ne  0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Get cell container
      CALL METHOD go_splitter->get_container
        EXPORTING
          row       = 1
          column    = 1
        RECEIVING
          container = go_cell_left.
      CALL METHOD go_splitter->get_container
        EXPORTING
          row       = 1
          column    = 2
        RECEIVING
          container = go_cell_right.
    Create 2nd splitter container
      CREATE OBJECT go_splitter_2
        EXPORTING
          parent            = go_cell_left
          rows              = 2
          columns           = 1
         NO_AUTODEF_PROGID_DYNNR =
         NAME              =
        EXCEPTIONS
          cntl_error        = 1
          cntl_system_error = 2
          OTHERS            = 3.
      IF sy-subrc   ne 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Get cell container
      CALL METHOD go_splitter_2->get_container
        EXPORTING
          row       = 1
          column    = 1
        RECEIVING
          container = go_cell_top.
      CALL METHOD go_splitter_2->get_container
        EXPORTING
          row       = 2
          column    = 1
        RECEIVING
          container = go_cell_bottom.
    Create ALV grids
      CREATE OBJECT go_grid1
        EXPORTING
          i_parent          = go_cell_top
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc ne 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT go_grid2
        EXPORTING
          i_parent          = go_cell_right
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc ne  0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT go_grid3
        EXPORTING
          i_parent          = go_cell_bottom
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc ne  0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    CREATE OBJECT go_grid4
        EXPORTING
          i_parent          = go_cell_left
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc ne  0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    CALL METHOD go_grid1->set_table_for_first_display
        EXPORTING
          i_structure_name = 'I_FINAL1'
        CHANGING
          it_outtab        = I_FINAL1[]
          IT_FIELDCATALOG  = IT_CT1_FIELDCAT1[]
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc ne 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CALL METHOD go_grid2->set_table_for_first_display
        EXPORTING
          i_structure_name = 'I_FINAL2'
        CHANGING
          it_outtab        = I_FINAL2[]
          IT_FIELDCATALOG  = IT_CT1_FIELDCAT2[]
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc ne 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CALL METHOD go_grid3->set_table_for_first_display
        EXPORTING
          i_structure_name = 'TCATX_GRID'
        CHANGING
          it_outtab        = I_TCATX_GRID1[]    " empty !!!
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc ne 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CALL METHOD go_grid4->set_table_for_first_display
        EXPORTING
          i_structure_name = 'TCATX_GRID'
        CHANGING
          it_outtab        = I_TCATX_GRID2[]    " empty !!!
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc ne 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Link the docking container to the target dynpro
      CALL METHOD go_docking->link
        EXPORTING
          repid                       = syst-repid
          dynnr                       = '0100'
         CONTAINER                   =
        EXCEPTIONS
          OTHERS                      = 4.
      IF sy-subrc ne  0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      MODULE  USER_COMMAND_0100  INPUT
          TEXT
    MODULE USER_COMMAND_0100 INPUT.
    CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      FORM  FIELDCAT_FINAL1
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM FIELDCAT_FINAL1 .
    IF IT_CT1_FIELDCAT1[] IS INITIAL.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'PROFILE'.
    ST_CT1_FIELDCAT1-COL_POS = 0.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 8.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'PROFILE'.
    ST_CT1_FIELDCAT1-KEY = 'X'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'MFIELD'.
    ST_CT1_FIELDCAT1-COL_POS = 1.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 15.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'FIELD'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'TEXT'.
    ST_CT1_FIELDCAT1-COL_POS = 1.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 30.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'TEXT'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'INPUT'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'INPUT'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'OBLIGAT'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'REQUIRED'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'DISPLAY'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'DISPLAY'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'NOTACT'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'HIDE'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ENDIF.
    ENDFORM.                    " FIELDCAT_FINAL1
    *&      FORM  FIELDCAT_FINAL2
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM FIELDCAT_FINAL2 .
    IF IT_CT1_FIELDCAT2[] IS INITIAL.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'PROFILE'.
    ST_CT1_FIELDCAT2-COL_POS = 0.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 8.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'PROFILE'.
    ST_CT1_FIELDCAT2-KEY = 'X'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'MFIELD'.
    ST_CT1_FIELDCAT2-COL_POS = 1.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'FIELD'.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 15.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'TEXT'.
    ST_CT1_FIELDCAT2-COL_POS = 1.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 30.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'TEXT'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'INPUT'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'INPUT'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'OBLIGAT'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'REQUIRED'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'DISPLAY'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'DISPLAY'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'NOTACT'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'HIDE'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ENDIF.
    ENDFORM.                    " FIELDCAT_FINAL2
    *&      Form  GET_COMPONENTS1
          text
    -->  p1        text
    <--  p2        text
    FORM GET_COMPONENTS1 .
    CLEAR  : I_TCATX_GRID1.
    REFRESH: I_TCATX_GRID1.
    SELECT * FROM TCATX_GRID
             INTO CORRESPONDING FIELDS OF TABLE I_TCATX_GRID1
                                      WHERE PROFIL EQ P_PROF1.
    ENDFORM.                    " GET_COMPONENTS1
    *&      Form  GET_COMPONENTS2
          text
    -->  p1        text
    <--  p2        text
    FORM GET_COMPONENTS2 .
    CLEAR  : I_TCATX_GRID2.
    REFRESH: I_TCATX_GRID2.
    SELECT * FROM TCATX_GRID
             INTO CORRESPONDING FIELDS OF TABLE I_TCATX_GRID2
                                      WHERE PROFIL EQ P_PROF2.
    ENDFORM.                    " GET_COMPONENTS2
    Thanks & Regards,
    Nagaraj Kalbavi

  • Issue with Capturing Long text using CALL METHOD EDITOR- GET_TEXT_AS_STREAM

    HI Experts,
    Standard Long text is capturing using CALL METHOD EDITOR->GET_TEXT_AS_STREAM
         but not working for Custom Long text – Only changes
    Here is the Issue:
    1)      Created Custom Long text in TAB. --> Good
    2)      Entered few lines in custom Long text  --> Good
             Click on Standard Tab , Leaving Custom tab and Custom Long text-->Good
    4)      In PAI of Custom Tab – Changes captured using CALL METHOD 1 ( See below Code 1)--> Good
    5)      Entered few lines in Standard Long text in Standard Tab -->Good
    6)      Click another Standard Tab
    7)      In PAI of Standard Tab – Changes captured using CALL MEHTOD 2 ( See Below Code 2)-->Good
    8)      Come back to Standard Tab / Standard Long Text , Enter few more lines.
    9)      Change the Tab , IN PAI of Standard Tab/Standard Text , Changes Captured using CALL METHOD2 ( See Below CODE 3) --> Good
    10)   Go to Custom Tab , Custom Long text , Entered few more lines--> Good
    11)   Click on any other tab, Triggered again PAI of Custom tab / Custom Long text using Call Method1 ( See Below Code 4) -->Good triggered PAI same CALL METHOD TEXT_EDITOR1->GET_TEXT_AS_STREAM.
    12)   But additional lines are not captured , saying ZERO LINES in Internal Table and IF_MODIFIED = NO  -->Issues lies here.
    CODE1 ( Custom Long text entry capturing – First Few Lines )
    Custom Long text Entries are stored in LS_OUTTAB-TEXT first time when entered few lines and LV_MOD is 1.
    PAI of Custom tab
    CALL METHOD TEXT_EDITOR1->GET_TEXT_AS_STREAM
            EXPORTING
              ONLY_WHEN_MODIFIED     = CL_GUI_TEXTEDIT=>TRUE
            IMPORTING
              TEXT                                       = LS_OUTTAB-TEXT ( FIlled with Lines entered in custom long text )
              IS_MODIFIED            = LV_MOD ( Value 1 , Modified )
            EXCEPTIONS
              ERROR_DP               = 1
              ERROR_CNTL_CALL_METHOD = 2
              OTHERS                 = 3
    CODE2 ( Standard Long Text Entry Capturing – First Few Lines )
    Standard Long text Entries are stored in SELECTED_TEXT first time when entered few lines and FLAG_MODIFIED is 1.
    PAI of Standard tab
       CALL METHOD EDITOR->GET_TEXT_AS_STREAM
          EXPORTING
            ONLY_WHEN_MODIFIED = YTRUE ( Value 1 , Modified )
          IMPORTING
            TEXT                               = SELECTED_TEXT ( FIlled with Lines entered in standard long text )
            IS_MODIFIED        = FLAG_MODIFIED.
    CODE 3 ( Standard Long Text Entry Capturing – Second time Few Lines )
    Standard Long text Entries are stored in SELECTED_TEXT  second  time when entered few lines and FLAG_MODIFIED is 1.
    PAI of Standard tab
       CALL METHOD EDITOR->GET_TEXT_AS_STREAM
          EXPORTING
            ONLY_WHEN_MODIFIED = YTRUE
          IMPORTING
            TEXT                               = SELECTED_TEXT ( FIlled with Lines entered in standard long text )
            IS_MODIFIED        = FLAG_MODIFIED. ( Value 1 , Modified )
    CODE4 ( Custom Long text entry capturing – Second Time Few Lines )
    Custom Long text Entries are not stored in LS_OUTTAB-TEXT Second Time when entered few lines and LV_MOD is 0.
    PAI of Custom tab
    CALL METHOD TEXT_EDITOR1->GET_TEXT_AS_STREAM
            EXPORTING
              ONLY_WHEN_MODIFIED     = CL_GUI_TEXTEDIT=>TRUE
            IMPORTING
              TEXT                                       = LS_OUTTAB-TEXT  ( ZERO ENTRIES )
              IS_MODIFIED            = LV_MOD   ( NOT MODIFIED Flag )
            EXCEPTIONS
              ERROR_DP               = 1
              ERROR_CNTL_CALL_METHOD = 2
              OTHERS                 = 3
    Can anyone help me out of this.
    With Regards,
    Bala M

    Excellent Eitan,
    Here is what I am trying to Achieve.
    In Create Notification IW21 , They need 5 Long Text in Custom Tab ( Say Tab Name is MBR ).
    TAB1 NOTIFICATION Standard Information , TAB2 REFERENCE OBJ , TAB 3 MalFunction , Breakdown Standard one...... TAB 7 ( Custom Tab ).
    In Custom Tab , I added 5 LONG TEXT ( its 5 WHY Concept ).
    When the User enters data in 5 Long text , it should store long text along with Notification number when save.
    But Notification number will be generated @ the time of SAVE , but before that its just shows as
    %0000000001 ( and Number will be generated 1000065479) at Save.
    How to achive this .
    I did this:
    Added 5 Custom Container. and In PBO / PAI
      PROCESS BEFORE OUTPUT.
    MODULE STATUS_0100.
    PROCESS AFTER INPUT.
    MODULE USER_COMMAND_0100.
    IN PBO
       CREATE OBJECT TEXT_EDITOR1 ,    CREATE OBJECT TEXT_EDITOR2,    CREATE OBJECT TEXT_EDITOR3 like wise 5
       CALL METHOD TEXT_EDITOR1->SET_TEXT_AS_R3TABLE ,    CALL METHOD TEXT_EDITOR2->SET_TEXT_AS_R3TABLE .. Like wise 5 , So when the user Click on Custom Tab ( MBR ).
    It give 5 Long text.
    When he click tab1 or tab2 or tab3 .. and again tab MBR , still data is available.
    How to store this data for future retrival ( IW22 or IW23 ) ?
    Its working fine when I enter first time and goes here and there and finall save .
    IN SAVE BADI , I imported the Long text and created Standard Text SO10 with Notification Number with LONG1 , LONG2 .. means 1000065479LONG1 as standard text.
    But not working when I entered first time and go to tab1 and tab2 and then to MBR tab and added few more lines , its not exporting full lines and in IMPORT ( SAVE BADI ) giving ZERO Lines.
    Please help and thanks for your quick response.

Maybe you are looking for

  • HP LaserJet 1200 Doesn't Like My New Airport Extreme

    worked fine with the older airport extreme, never an issue. with the new AE the printer's green light flashes and nothing will print, very strange, or it will print one page of the document and then stop cold. the printer status window showing 'no jo

  • Error In ESH_COCKPIT while deleting Search Connectors ?

    Hi , When I am starting the transaction ESH_COCKPIT and then trying to delete the search connectors created for HRTMC* it is giving an error "Software component EA-HRGXX has been locked by user <username>" Although I have deleted all the enteries in

  • Depreciation not showing

    Hi, I executed AW01N, there dep amt is displaying , but while running Dep. Posting Run no data is showing on it what may be the reason

  • Laptop not turning on at all. PLEASE HELP

    Hello, last night i was on my laptop and it was working fine. I turned it off then in the morning i noticed the the hp logo on the back was on but the computer was off so I disconnected the battery then reconnected it and pressed the power button the

  • Sick dual 1.0Ghz MDD

    I inherited a snazzy dual 1.0ghz G4 MDD and am having trouble diagnosing it's ailment. It chimes when powered on, I can hear the HD spin up, but after about 8-10 seconds the fans spin up to full speed, nothing comes on the screen at all and the fans