Logical Databases with ABAP OO

As we move to ABAP OO paradigm, should we abandon the use of  logical databases?
Edited by: Kimberly Carmack on Mar 10, 2009 12:47 AM

Thank you for your input.
I am aware of the capability to call FM LDB_PROCESS from a method. 
But should I? Should I avoid using LDBs altogether? In what scenario should I use an LDB in OOA/OOD?
I am very interested in hearing more about why "implicit triggering of events, implicit calls, and data sharing between programs....is contradictory ..to OO". Will you please elaborate?
Let me give some insight as to the source of this question...
Our company has made an acquistion. We are converting some of their customization into our system.
I am currently re-engineering one of their reports.  It uses data from the tables: VBAK, VBAP, VBEP, VBUK, VBUP, VBEP, VBPA and VBFA.
Although the old program does not use logical database, I see the VAV logical database lines up with this data request quite nicely.
And since I know that there are  several of their reports and transactions that access the same data, the reusability of the LDB is quite attractive.
However, our company has an initiative to conduct all new development using OO standards.
So, should I used the VAV LDB from a local method?  Or would it be better practice to look at creating a global class that has methods that repeat the functionality of the VAV LDB? 
And if global classes and new methods is the way to go, what would that global class look like? 
This is what I am wondering about.
Any feedback is appreciated.
Edited by: Kimberly Carmack on Mar 10, 2009 2:19 PM

Similar Messages

  • Logical Database in Abap Objects

    Hi to All
    I want do it a program report using a Logical Database.
    Is this possible ??? But when I make a GET <node>, occurs the following error:
             "" Statement "ENDMETHOD" missing.  ""
    I'm doing the following:
    CLASS MONFIN IMPLEMENTATION.
           METHOD TRAER_DATOS.
                   GET VBRK.
           ENDMETHOD.
    ENDCLASS.
    Please, somebody tell me how I use the logical database in Abap Objects.
    Thank you very much
    Regards
    Dario R.

    Hi there
    Logical databases whilst of "some use" are not really part of OO.
    If you want to use a logical database in an abap OO program I would create a special class which just does the get data from your DB and pass this either at record or table level.
    Techniques such as GET XXXX LATE aren't really part of any OO type of application since at Object Instantiation time you should be able to access ALL the attributes of that object.
    As far as OO is concerned Logical databases are a throwback to "Dinosaur Technology".
    Since however modules such as SD and FI are still heavily reliant on relational structures (i.e linked tables etc)  then there is still some limited life in this stuff but for OO try and solve it by another method.
    If you really must use this stuff in OO then do it via a FMOD call and save the data in a table which your method will pass back to your application program.
    You can't issue a GET command directly in a method.
    Cheers
    Jimbo

  • Access data on multi-logical database with ad hoc query

    Dear all,
    I would like to know if it is possible to access data in multi-logical database with ad hoc query.
    I recall that I read some document stated that you can access data in multi-logical database with PNP as base.
    But I find no document about how to set it up, any comment?
    Regards
    Bill

    Hi Bill...
    PNP can be accessible..............
    PNP  0000-0999, 2000 to 2999 HR Master Data & Time 
    PCH.... I don't think so....
    Experts please do reply on this please...................
    Vijay
    Edited by: Vijay Shankar on Sep 13, 2011 11:32 AM

  • Logical database of ABAP query

    Hi,
    Can anybody please let me know what is the Logical database for ETXDCI, ETXDCH & ETXDCJ (Tax tables) with any sales document tables? I need to develop one ABAP query for the users.
    I am a Functional person so I would like to know Can anybody please let me know how I can find out the Logical database?
    Your time and help will be really appreciate.
    Thanks & Regards,
    Niki Shah.

    Try the BRF logical database.
    I found it by searching in which programs the tables were used.
    It show program SAPDBBRF which is the program for logical database BRF.
    Kind regards,
    Arthur Parisius

  • Use of Logical database in ABAP Queries

    hi,
    Can anybody tell me when/why do we use logical database in Infosets for ABAP Query?
    Regards,
    Divya

    hi,
    pros: -you need not to define so many own tables, fields and additional codings in your info set
    cons: - performance in huge DB's
    A.
    Message was edited by: Andreas Mann

  • How to define our own selection screen for logical database  in abap-hr?

    Hi Friends,
    Can u please help me
    How to define your own selection screens for  logical database.
    we use to do like(goto->attributes-HRReportcatagerious ).but How to desin using  customer table like t599c, t599f and how to add to my logical database?
    Thanks in advance
    charan

    check out this online help
    http://help.sap.com/saphelp_erp2004/helpdata/en/9f/dba65c35c111d1829f0000e829fbfe/frameset.htm
    Regards
    Raja

  • Restrict selection screen when using logical Database(HR ABAP)

    Hi,
          I'm using <b>PNP</b> logical Database in my  
          report program. I want to restrict the deafult
          selection screen.
          Pls suggest me if knows.
    Kind regards,
    - Selva

    if you don't use the NODE or TABLE statement pnp selection screen will not come.
    other wise use screen number 900 which have fever fields and you can make the invisible using
    loop at screen.
    endloop.
    Regards,
    Wasim Ahmed

  • How to  Find Logical Database with table name

    Shankar

    Version 4.6x
    If you need to find the logical database for a table name, you can used <b>SE36</b> - Logical Database Bulider.
    Steps :-
    Go to transaction <b>SE36</b>
    Click <b>Extras -> Table usage</b>
    Supply the Table name and hit enter.
    A Display Logical Database will be shown on a pop-up windows.
    Reward  points  if it is  usefull ....
    Girish

  • Logical database with objects

    hi guys ,
    It is not possible to use the stamente GET  BSID for example , in methods ?
    thanks.

    You cannot use [GET node|http://help.sap.com/abapdocu_70/en/ABAPGET-.htm] outside of [logical database|http://help.sap.com/abapdocu_70/en/ABENLOGICAL_DATA_BASE_GLOSRY.htm], so only in [executable programs|http://help.sap.com/abapdocu_70/en/ABENEXECUTABLE_PROGRAM_GLOSRY.htm],
    but you can call a LDB from a method via FM [LDB_PROCESS.|http://www.sdn.sap.com/irj/scn/advancedsearch?query=ldb_process.]
    Regards,
    Raymond

  • Logical Database

    Hi,
    I have the following issue:
    we need to make use of BADI 'MD_PURREQ_CHANGE' here I need to use Logical Database 'DBM' in my implimentation method. Shall we make use of Logical Databse in ABAP Objects? If yes, could you give any ideas please?
    Thanks & regards
    Sreenivas

    Hi,
    I tried several times, it seems that is not possible to make use of Logical Database from ABAP Objects.
    IS there any ideas?
    I am providing some more details:
    While I was testing the MRP BADI the MDTB table is not being updated with any data . OSS note 440016 says that there is a customizing setting by which you can still update the MDTB table but this would lead to performance issues (easier to query though).
    In standard SAP, MRP data is stored as an aggregated list (table is stored as a data cluster and I need an ABAP extract to get something meaningful from it) in table MDTC for improved performance.
    Does any body having an ideas on this?
    Thanks & regards
    Sreenivas

  • Use SAP defined methods instead of Logical Database(LDB)

    Hi All,
    I gonethrough some documents related to new HR ABAP programing without using logical database.  we can replace the logical databased with SAP defined methods for all the infotypes.  Appreciate if anyone let me know how do this.
    Thanks in advance.
    Thanks,
    -suresh

    Yes.. we can use the Infotype reader class.. you can use the following sample code & go from there.. fyi I wrote this on a 47 system..
    *& Report  ZP_INF_CL                                                   *
    *&  read an infotype using ABAP Objects                                *
    report  zp_inf_cl line-size 1000.
    infotypes: 0001,0008.
    parameters: p_infty type infty,
                p_pernr type pernr_d.
    constants: c_a type tclas value 'A',
               c_true value 'X'.
    data: w_infotype_reader type ref to if_hrpa_read_infotype,
          t_inftab type hrpad_prelp_tab,
          w_missing_auth type boole_d,
          w_data_exists  type boole_d,
          rec_infty like line of t_inftab.
    * init infotype reader
    call method cl_hrpa_read_infotype=>get_instance
      importing
        infotype_reader = w_infotype_reader.
    call method w_infotype_reader->read
      exporting
        tclas         = c_a
        pernr         = p_pernr
        infty         = p_infty
        begda         = sy-datum
        endda         = sy-datum
        no_auth_check = c_true
      importing
        infotype_tab  = t_inftab
        data_exists   = w_data_exists
        missing_auth  = w_missing_auth.
    loop at t_inftab into rec_infty.
      call method cl_hr_pnnnn_type_cast=>prelp_to_pnnnn
        exporting
          prelp = rec_infty
        importing
          pnnnn = p0001.
      append p0001.
    endloop.
    loop at p0001.
      write:/ p0001-orgeh.
    endloop.
    ~Suresh

  • What are structures of logical database.

    hi
    what are structures of logical database.

    Dear Chaitanya,
    The structure of LDB can be divided into three sections:
    >Structure
    >Selection
    >Database Program
    STRUCTURE:
    The structure defines the data view of the logical database. It adopts the hierarchy of the database tables defined by their foreign key relationships. This also controls the sequence in which the tables are accessed. It determines the structure of the other components and the behavior of the logical database at runtime.
    The structure of a logical database is usually based on the foreign key relationships between hierarchical tables in the SAP System. Logical databases have a tree-like structure, which can be defined as follows:
    · There is a single node at the highest level. This is known as the root node.
    · Each node can have one or several branches.
    · Each node is derived from one other node.
    The nodes must be structures defined in the ABAP Dictionary or data types from a type group. Normally, these are the structures of database tables which the logical database reads and passes to the user for further evaluation. However, it is also possible, and sometimes useful, to use ABAP Dictionary structures without an underlying database. For technical reasons, the maximum number of nodes allowed in the structure of a logical database is 300.
    Any executable ABAP program that has a logical database linked to it can contain a GET statement for each node of the structure. When you run the program, the corresponding event blocks are processed in the sequence prescribed by the hierarchical structure of the logical database. If a program does not contain a GET statement for every node of a logical database, the processing passes through all the nodes that lie in the path from the root to the nodes specified by GET statements.
    If you call a logical database using the function module LDB_PROCESS, the depth to which the system reads is controlled by an interface parameter.
    SELECTIONS:
    The selections define a selection screen, which forms the user interface of the executable programs that use the logical database. Its layout is usually determined by the structure. You can adapt the selections to your own requirements and also add new ones. When you link a logical database to an executable program, the selections of the logical database become part of the standard selection screen of the program (screen number 1000). If you call a logical database using the function module LDB_PROCESS, the selections are filled using interface parameters.
    The selections in a logical database are defined using the normal statements for defining selection screens, that is, PARAMETERS, SELECT-OPTIONS and SELECTION-SCREEN. In a logical database, you can also use the additions VALUE-REQUEST and HELP-REQUEST to define specific input and value help. You define the selection screen in a special include program known as the selection include.
    When you write programs using a logical database, you can also add your own program specific selections. The standard selection screen then contains the database-specific selections, followed by the program-specific selections that you have defined.
    When the system generates the selection screen for an executable program, database-specific selection criteria and parameters are only displayed if you have declared an interface work area for them in your program using the NODES or TABLES statement.
    Suppose you have a selection include containing the following lines:
    SELECT-OPTIONS slifnr FOR lfa1-lifnr.
    PARAMETERS pbukrs LIKE lfb1-bukrs FOR TABLE lfb1.
    The selection criterion SLIFNR is linked to table LFA1, the parameter PBUKRS to table LFB1. If the TABLES statement in an executable program (report) declares LFA1 but not LFB1, SLIFNR is displayed on the selection screen, but PBUKRS does not appear.
    The selection screen of a logical database can contain dynamic selections as well as static ones. Dynamic selections are extra, user-defined selections that the user can make as well as using the static selections defined in the selection include. To improve performance, you should always use this option instead of reading more data than you need and then sorting it out in the application program.
    To make dynamic selections available for the node nodeof a logical database, the selection include must contain the following statement:
    SELECTION-SCREEN DYNAMIC SELECTIONS FOR NODE|TABLE node.
    If the node node is requested by the user of the logical databases, the dynamic selections are included in the selection screen. A user can then choose Dynamic selections to enter extra selections for the corresponding fields. If you call the logical database using the function module LDB_PROCESS, you can pass a corresponding parameter. You can use these selections in dynamic statements in the logical database program to read data. The values of the program-specific selection criteria that you defined for a node for which dynamic selections were available are also passed to the logical database. The user can also define the fields for dynamic selections as a selection view for the logical database.
    The selection screen of a logical database is part of the standard selection screen (number 1000) of the executable program to which the logical database is attached. It has a standardized layout - the selection criteria and parameters appear on separate lines in the order in which they were declared. You can change the layout using the SELECTION-SCREENstatement.
    The runtime environment generates the selection screen with number 1000 for every program in which the attributes do not contain a different selection screen version. You can prevent certain input fields from the selection screen of a logical database from appearing on the selection screen by defining selection screen versions with a screen number lower than 1000 in the selection include, and entering this version number in the program attributes. By pressing F4 there, you can get an overview of the selection screen versions defined in the logical database concerned. To define a selection screen version, use the statements SELECTION-SCREEN BEGIN|END OF VERSION. Within these statements you can use SELECTION-SCREEN EXCLUDEto specify fields that you do not want to appear on the selection screen.
    If the attributes of an executable program contain the number of a selection screen version, the version is used in the standard selection screen. Although the input fields that you excluded from the selection screen are not displayed, the corresponding selections still exist, and you can still edit them in the program or by calling the function module LDB_PROCESS.
    DATABASE PROGRAM:
    The database program contains the ABAP statements used to read the data and pass it to the user of the logical database. There is a container for special subroutines into which, amongst other things, the data from the database tables is read. These subroutines are called by the reporting processor in the runtime environment in a sequence that has been predefined by the structure. The database program is determined by the structure and selections and can be adapted or expanded to meet your requirements.
    The name of the database program of a logical database ldbconforms to the naming convention SAPDBldb. It serves as a container for subroutines, which the ABAP runtime environment calls when a logical database is processed. The sequence of the calls and their interaction with the events in executable programs or the function module LDB_PROCESS depends on the structure of the logical database.
    A logical database program usually contains the following subroutines:
    · FORM LDB_PROCESS_INIT
    Called once only before the logical database is processed. It prepares it to be called more than once by the function module LDB_PROCESS.
    · FORM INIT
    Called once only before the selection screen is processed.
    · FORM PBO
    Called before the selection screen is displayed, each time it is displayed. Consequently, it is only called when you use the logical database with an executable program, not with the function module LDB_PROCESS.
    · FORM PAI
    Called when the user interacts with the selection screen. Consequently, it is only called when you use the logical database with an executable program, not with the function module LDB_PROCESS. The interface parameters FNAME and MARK are passed to the subroutine.
    FNAME contains the name of a selection criterion or parameter on the selection screen.
    MARK describes the selection made by the user: MARK = space means that the user has entered a simple single value or range selection. MARK = '*' means that the user has also made entries on the Multiple Selection screen.
    · FORM LDB_PROCESS_CHECK_SELECTIONS
    Called instead of the subroutine PAI if the logical database is called using the function module LDB_PROCESS without a selection screen. This subroutine can check the selections passed in the function module interface.
    · FORM PUT_node
    Called in the sequence defined in the structure. Reads the data from the node nodeand uses the
    PUT node.
    statement to trigger a corresponding GETevent in the ABAP runtime environment. The PUT statement is the central statement in this subroutine: It can only be used within a subroutine of a logical database. The logical database must contain the node node, and the subroutine name must begin with PUT_node. The PUT statement directs the program flow according to the structure of the logical database. The depth to which the logical database is read is determined by the GET statements in the application program or the interface parameter CALLBACK of the function module LDB_PROCESS.
    First, the subroutine PUT_root is executed for the root node. The PUT statement then directs the program flow as follows:
    i. If the database program contains the subroutine AUTHORITY_CHECK_node, the first thing the PUT_node statement does is to call it.
    ii. Next, the PUT statement triggers a GET event in the runtime environment. If there is a corresponding GET nodestatement in the executable program to which the logical database is linked, the associated event block is processed. If the CALLBACK parameter of the function module LDB_PROCESS is filled accordingly, the corresponding callback routine is called.
    iii. The PUT statement directs the program flow
    (a) To the next subroutine of a node that follows directly, if a lower-level node (not necessarily the very next) in the same subtree is requested by GET in the executable program or in the function module.
    (b) To the subroutine of a node at the same level, if the preceding node branches to such a node and if a GET statement exists for such a node in the executable program or the function module.
    The PUT statement in that subroutine starts again at step (i). In the subroutine of the lowest node in a subtree to be processed using GET, the program control does not branch further. Instead, the current subroutine is processed further. When a subroutine PUT_node has been executed in its entirety, the program flow returns to the PUTstatement from which it branched to the subroutine PUT_node.
    iv. When control has returned from a lower-level subroutine PUT_node, the PUTstatement triggers the event GET node LATEin the runtime environment.
    · FORM AUTHORITY_CHECK_node
    Called automatically by the PUT node statement. In this subroutine, you can specify authorization checks for the appropriate node node from the structure of the logical database.
    · FORM PUT_ldb_SP
    Called when the user makes a selection using a search help to process the key chosen in the search help. ldb is the name of the logical database. From this subroutine, you can use the entries in the search help tables to read the relevant entries from the root node root. The processing in the program can then be triggered using PUT root. The subroutine PUT_root is then not called automatically.
    · FORM BEFORE_EVENT
    Called before an event, the name of which is passed in the parameter EVENT. Currently, the EVENT field can only contain the value START-OF-SELECTION, to call a subroutine before this event.
    · FORM AFTER_EVENT
    Called after an event, the name of which is passed in the parameter EVENT. Currently, the EVENT field can only contain the value END-OF-SELECTION, to call a subroutine after this event.
    · FORM par_VAL, selop_VAL, selop-LOW_VAL, selop-HIGH_VAL
    Called when the user calls possible values help for the parameter par or the selection criterion selop. These must belong to the selections in the logical database.
    · FORM par_HLP, selop_HLP, selop-LOW_HLP, selop-HIGH_HLP
    Called when the user calls possible values help for the parameter par or the selection criterion selop. These must belong to the selections in the logical database.
    Example
    Suppose that in the logical database structure, LFB1 is a branch of LFA1.
    and that the following selection criteria are defined in the selection include:
    SELECT-OPTIONS: slifnr FOR lfa1-lifnr,
    sbukrs FOR lfb1-bukrs.
    A section of the database program would then read:
    FORM put_lfa1.
    SELECT * FROM lfa1
    WHERE lifnr IN slifnr.
    PUT lfa1.
    ENDSELECT.
    ENDFORM.
    FORM put_lfb1.
    SELECT * FROM lfb1
    WHERE lifnr = lfa1-lifnr.
    AND bukrs IN sbukrs.
    PUT lfb1.
    ENDSELECT.
    ENDFORM.
    An executable program (report) linked to the logical database could contain the lines:
    GET lfa1.
    WRITE lfa1-lifnr.
    GET lfb1.
    WRITE lfb1-bukrs.
    In this example, the runtime environment calls the routine put_lfa1 after the event START-OF-SELECTION. The event GET lfa1 is triggered by the statement PUT lfa1.
    Once the corresponding event block in the program is complete, PUT lfa1 branches to the subroutine put_lfb1.
    From this subroutine, the event GET lfb1 is triggered in the application program. If LFB1 is the last node to be read, processing resumes with the SELECTloop in put_lfb1. Otherwise, the program flow moves to the subroutine put_node of the next node. At the end of the SELECT loop of the last node, processing resumes in the SELECTloop of the node at the next level up. The example of programming using nested SELECT loops is only used to make the program flow clearer. In a real logical database, you would avoid doing this in order to minimize the number of database accesses.
    Regards,
    Rajesh K Soman
    Please reward points if helpful.

  • Logical Database for a Resource

    Hello,
    I'm looking to write a query in Quickview (SQVI) and I need the logical database for a Resource.  Can anyone help?
    Thanks,
    B

    There are two ways for this -
    1. To create the functional area with a logical database
    Tools => ABAP/4 Workbench => Utilities => ABAP/4 query => Functional Areas.
    Give the functional area name and click on Create button
    In the next screen give a brief description of the functional area
    Specify the name of the logical database, for e.g. Database FI, Application S. This will be the definition for the flight database
    Click on the button Functional Group present on the application toolbar, in order to create the functional group for the required fields from the logical database tables
    In the functional group box mention the number of the functional group and the description for the functional group
    The tables from the logical database are shown in Tables Of Logical Database/Joins while the fields are displayed in the Fields Box
    Double click on the table name in order to change the list
    Every field that has to be selected in the query should be assigned a functional group number against it
    Sometimes the list of fields in the Fields box will not be completely visible. To have a wider display of the list place the cursor in the fields box area and click on Settings => Full Screen from the SAP menu bar
    To see the fields from different tables select the table and double click on it.
    Once the required fields are selected, save the functional Area by clicking on the SAVE icon on the toolbar, and then Generate the Functional Area by clicking the Generate icon on the toolbar
    To add user defined fields to the abap query use the menu bar option GOTO => Additional Field
    Give the field name and the table name from the logical database to which the field needs to be included. Click the ENTER button.
    On the next screen give the Sequence, description, title and the technical attributes for the field (field type, length). Here you can also specify the formula for the field. Click on the SAVE button to register the data to the database.
    Remember that the sequence of the field matters – if the second field uses the first field in its code then the second field should have a higher sequence than the first. Tables can also be included – to do this use the menu option Goto => Additional Tables
    You can include your own selection criteria and parameters to control the data to be selected from the database. For these additions to get activated, code needs to be written for taking care of the additional fields.
    To display something before the execution of the actual query, go to the start of selection event via the menu path Goto => Code => Start-of-selection.
    To display something just before or after the output of the query, go to the end of selection event via the menu path Goto => Code => End-of-selection.
    To display something at the beginning of the page, go to the top of page event via the menu path Goto => Code => Top-of-page.
    After finishing everything save and generate the functional area and click on the BACK icon to come out.
    2. To create a functional area without a logical database
    One of the following can be selected
    Based on a single table
    Using an ABAP/4 program
    Using Table Joins
    Using Sequential Dataset
    The steps to be followed for creating the functional area are as follows
    Tools => ABAP/4 Workbench => Utilities => ABAP/4 query => Functional Areas.
    Give the functional area name and click on Create button
    In the next screen give a brief description of the functional area
    In the Without a logical database area give the base table on which to form the ABAP query
    To form the query with two or three tables, we need to create a join. For this check the Table Join Check Box and click on the Table Join button.
    NOTE: The tables to be used in the join should have at least one field in common i.e. it should have the same name, domain or data element.
    Mention the tables that you want to include in the join condition in the Joined Tables area and press ENTER.
    A checkbox will appear against the table names on the left side, and three radio buttons will appear against the tables on the right side specifying the join type.
    Base table name remains grayed out. Select the two tables to be involved in the join by clicking the check boxes against them. Use menu path Edit => Join => Define condition to create the join. A mapping between the tables will be displayed on the right hand side. Click on the button provided (with + and down arrow symbol) to specify the join.
    Click YES on the Proposal Requested message that gets displayed.
    If the join tables have a foreign key relationship then the common fields in the tables will be marked with 00 to indicate that the join has been created. User can create the join by specifying 00, 01 etc. against the fields that qualify for the join.
    Complete the join condition by adding more tables if necessary.
    Remaining concepts for creating the functional area without a logical database are same as the concepts for creating the functional area with a logical database.
    After finishing everything save and generate the functional area and click on the BACK icon to come out.
    Thanx!

  • How to use a Logical Database in Function Module.

    Hi Experts,
    I want to use a logical database in a Function Module to fetch data from a standard SAP table into a Internal table for certain filter conditions.
    How can I get get this done????
    I called LDB_PROCESS FM in my FM, but I could not figure out how to store the extract in my IT table since we cant use GET in FM.
    Please provide me a sample code if possible.
    Thanks in Advance,
    Alex.

    Hi,
    i had an example program like this ,in this i want to get the data using pnp logical database with 5 fields in an interface program.
    data: begin of it_final occurs 0,
            pernr like pa0002-pernr,
            vorna like pa0002-vorna,
            nachn like pa0002-nachn,
           usrid like pa0105-usrid,
           usrid_long like pa0105-usrid_long,
           end of it_final.
    get pernr.
      clear : p0000,p0002,p0105.
      rp-provide-from-last p0000 space p_date p_date.
      if p0000-stat2 = '3'.
        v_pernr = pnppernr-low.
      else.
        reject.
      endif.
    *---Get employee pernr, First name ,Last name into final table
      rp-provide-from-last p0002 space p_date p_date.
      if pnp-sw-found = '1'.
       it_final-pernr = p0002-pernr.
       it_final-vorna = p0002-vorna.
       it_final-nachn = p0002-nachn.
      else.
    *---Error message if not infotype 0002 maintained
      T_ERROR-PERNR   = pnppernr-low.
      CONCATENATE TEXT-EMI '0002'
      INTO T_ERROR-MESSAGE SEPARATED BY SPACE.
      APPEND T_ERROR.
      CLEAR T_ERROR.
      endif.
    **--Get SYSTEM USERNAME to final table
      rp-provide-from-last p0105 0001 p_date p_date.
      if pnp-sw-found = '1'.
        it_final-usrid = p0105-usrid.
      else.
    *---Error message if not SYSTEM USERNAME maintained
        T_ERROR-PERNR   = pnppernr-low.
        CONCATENATE TEXT-003 '0105'
        INTO T_ERROR-MESSAGE SEPARATED BY SPACE.
        APPEND T_ERROR.
        CLEAR T_ERROR.
      endif.
    **--Get Email ID to final table
      rp-provide-from-last p0105 0010 p_date p_date.
      if pnp-sw-found = '1'.
        it_final-usrid_long = p0105-usrid_long.
      else.
    *---Error message if not Email ID maintained
        T_ERROR-PERNR   = pnppernr-low.
        CONCATENATE TEXT-004 '0105'
        INTO T_ERROR-MESSAGE SEPARATED BY SPACE.
        APPEND T_ERROR.
        CLEAR T_ERROR.
      endif.
       append it_final.
        clear it_final.
    reward points if useful,
    venkat.

  • Problem about logical database programming

    Dear all,
    I have a logical database PRPS_R which contail PRPS and some additional fields.
    In my abap report, I call this logical database by "GET PRPS_R". Can I ask how to perform sorting to the  logical database in ABAP report?
    Thanks
    Sunny

    PRPS_R is a structure of logical database PSJ
    there is a user-exit available EXIT_FDBPS000_001

Maybe you are looking for