What is Structured Transformation in BW ?

Hi Experts,
Can any one explain about Structured Transformation in BW ?  If you have any documents regarding this question plz send it to [email protected]
Thanks in Advance
Ramu

Ramu,
Could you give us the context for the same - quite possible that we might be using this or knowing about the same but would not know it by its actual term.
Arun

Similar Messages

  • 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.

  • What data structure is better?

    hello all!
    i would like to ask you a suggestion.. i am implementing a project in JSP+java in mvc and i have still not understood what data structure would be better to do the following:
    i have "Catalogs" of entities (e.g. payments) where each one is composed by several double data. the structure of the site is that the jsp talks to its Bean which in turn talks to the controller (normal java class- no servlet) which finally ask the data to the entitiy class. How could i pass these vectors of datas to the jsp page without let it talk directly to the entity? I think that bean+jsp are MVC's boundary classes and i don't want them to talk with entities (and then they cannot directly use entity methods as bill.getAmount())..
    How could i do?
    Thanks a lot! Bye

    I use PNG as it is smaller than TIF and holds transparencym unlike JPG.

  • What is structure of BDC session?

    Hi Experts,
    What is structure of BDC session?
    Thanks
    ~Sid
    "Max points are assured"

    Hi,
    If you want to write your own program, proceed as follows:
    Generate the batch input session using function module BDC_OPEN_GROUP
    The proceed as follows for each transaction that session contains:
    In the BDCDATA structure, enter the value for all screens and fields that must be processed in the transaction.
    Use BDC_INSERT to transfer the transaction and BDCDATA structure to the session.
    Close the batch input session with BDC_CLOSE_GROUP
    Start to process the generated session.
    BDC_OPEN_GROUP
    Use the BDC_OPEN_GROUP function module to create a new session. Once you have created a session, then you can insert batch input data into it with BDC_INSERT.
    You cannot reopen a session that already exits and has been closed. If you call BDC_OPEN_GROUP with the name of an existing session, then an additional session with the same name is created.
    A batch input program may have only one session open at a time. Before opening a session, make sure that any sessions that program closes any sessions that it previously had opened.
    BDC_OPEN_GROUP takes the following EXPORTING parameters:
    CLIENT
    Client in which the session is to be processed. Default: If you don’t provide a value for this parameter, the default is the client under which the bathc input program runs when the session is created.
    GROUP
    Name of the session that is to be created. May up to 12 characters long. Default: None. You must specify a session name.
    HOLDDATE
    Lock date. The session is locked and may not be processed until after the date that you specified. Only a system administrator with the LOCK authorization for the authorization object Batch Input Authorizations can unlock and run a session before this date.
    KEEP
    Retain session after successful processing. Set this option to the value X to have a session kept after it has been successfully processed. A session that is kept remains in the input/output queue until an administrator deleletes it. Sessions that contain errors in transactions are kept even if KEEP is not set. Default: If not set, then sessions that are successfully processed are deleted. Only the batch input log is kept.
    USER
    Authorizations user for background processing. This is the user name that is used for checking authorizations if a session is started in background processing. The user must be authorized for all of transactions and functions that are to be executed in a session. Otherwise, transactions will be terminated with “no authorization” errors. The user can be of type dialog or background. Dialog users are normal interactive users in the R/3 System. Background users are user master records that are specially defined for providing authorizations for background processing jobs.
    BDC_INSERT
    Use the BDC_INSERT function module to add a transaction to a batch input session. You specify the transaction that is to be started in the call to BDC_INSERT. You must provide a BDCDATA structure that contains all of the data required to process the transaction completely.
    BDC_INSERT takes the following parameters:
    TCODE
    The code of the transaction that is to be run.
    POST_LOCAL
    Parameter to update data locally. If POST_LOCAL = “X”, data will be updated locally.
    DYNPROTAB
    The BDCDATA structure that contains the data that is to be processed by the transaction. DYNPROTAB is a table parameter in the function module.
    BDC_CLOSE_GROUP
    Use the BDC_CLOSE_GROUP function module to close a session after you have inserted all of your batch input data into it. Once a session is closed, it can be processed.
    BDC_CLOSE_GROUP needs no parameters. It automatically closes the session that is currently open in your program. You must close a session before you can open another session from the same program.
    BDCDATA Structure
    IF you want to write data to a batch input session or to process the data using CALL TRANSACTION USING or CALL DIALOG, you must prepare an internal table <bdc_tab>. This internal table must be structured according to ABAP Dictionary structure BDCDATA. The internal table <bdc_tab> stores the data that is to be entered into R/3 System and the actions that are necessary to process data. You can think of the table as storing the script that the R/3 System is to follow in processing batch input data.
    BDC table structure
    FIELD                     TYPE                            DESCRIPTION
    Program                CHAR (8)                      Program name of transaction.
    DynPro                   CHAR (4)                      Screen number of transaction.
    DynBegin               CHAR (1)                      Indicator for new screen.
    Fnam                     CHAR (35)                     Name of database field from screen.
    Fval                                   CHAR (80)                     Value to submit to field.
    Regards,
    Omkar.
    Message was edited by:
            Omkaram Yanamala

  • What is Structure and Exception Cell?

    What is Structure and Exception Cell?

    Structure:
    lets assume u have a query with 'Plant' in rows and 'revenue' in columns.
    This report shows all plants values and corresponding revenue values..
    if create a sturucture in rows>from context menu>new selection-->drag and drop plant and provide description as 'plant'.
    now you have two structures one is kf structure and one characteristic structure(Plant).
    this report shows aggragated 'revenue' for all plants.i.e. you will not see individual plants in rows.Just one row 'plant' and aggregated value of revenue of all plants.
    Exception:
    In exception reporting you select and highlight objects that are in some way different or critical. Results that fall outside a set of predetermined threshold values (exceptions) are highlighted in color. This enables you to identify immediately any results that deviate from the expected results.

  • What is structure of ALV

    what is structure of ALV

    1. First we prepare a outputlist which we want to display .
    2.WE made a fieldcatalog table which will say the display of the columns.
    Ex: position of columns, heading, length etc.
    3. Then we prepare a layout structure which contain the layout informations.
    4. we call a FM ( ex: RUSE_ALV_GRID_DISPLY or REUSE_ALV_LIST_DISPLAY)
    ex:
    *& Report  ZDEMO_ALVGRID                                               *
    *& Example of a simple ALV Grid Report                                 *
    *& The basic requirement for this demo is to display a number of       *
    *& fields from the EKKO table.                                         *
    REPORT  zdemo_alvgrid                 .
    TABLES:     ekko.
    type-pools: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
          gd_tab_group type slis_t_sp_group_alv,
          gd_layout    type slis_layout_alv,
          gd_repid     like sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
    *       Build Fieldcatalog for ALV Report
    form build_fieldcatalog.
    * There are a number of ways to create a fieldcat.
    * For the purpose of this example i will build the fieldcatalog manualy
    * by populating the internal table fields individually and then
    * appending the rows. This method can be the most time consuming but can
    * also allow you  more control of the final product.
    * Beware though, you need to ensure that all fields required are
    * populated. When using some of functionality available via ALV, such as
    * total. You may need to provide more information than if you were
    * simply displaying the result
    *               I.e. Field type may be required in-order for
    *                    the 'TOTAL' function to work.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
    *  fieldcatalog-do_sum      = 'X'.
    *  fieldcatalog-no_zero     = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
      fieldcatalog-col_pos     = 1.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      fieldcatalog-col_pos     = 4.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      fieldcatalog-col_pos     = 5.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      fieldcatalog-col_pos     = 6.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-col_pos     = 7.
      fieldcatalog-outputlen   = 15. 
      fieldcatalog-do_sum      = 'X'        "Display column total
      fieldcatalog-datatype     = 'CURR'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      fieldcatalog-col_pos     = 8.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    endform.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
    *       Build layout for ALV grid report
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    *  gd_layout-totals_only        = 'X'.
    *  gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
    *                                         "click(press f2)
    *  gd_layout-zebra             = 'X'.
    *  gd_layout-group_change_edit = 'X'.
    *  gd_layout-header_text       = 'helllllo'.
    endform.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
    *       Display report using ALV grid
    form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
    *            i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM
    *            i_callback_user_command = 'USER_COMMAND'
    *            i_grid_title           = outtext
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
    *            it_special_groups       = gd_tabgroup
    *            IT_EVENTS                = GT_XEVENTS
                i_save                  = 'X'
    *            is_variant              = z_template
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
      if sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
    endform.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
    *       Retrieve data form EKPO table and populate itab it_ekko
    form data_retrieval.
    select ebeln ebelp statu aedat matnr menge meins netpr peinh
    up to 10 rows
      from ekpo
      into table it_ekko.
    endform.                  
    You can also prepare alv display by using class.
    ex:
    STEPS:
    1.     Call a screen.
    2.     Go to the screen layout  and add a custom control .
    3.     Go to attribute and give a name to the custom control (Ex: 'CUSTOM_CONTROL').
    4.     Give a name to the ok_code ( Ex: ok_code) in the attribute of the screen.
    5.     Data Declaration section:
    I.     Data declaration for ALV
    a.     Declare a object type cl_gui_alv_grid for ALV Grid instance referance
    b.     Declare a object type cl_gui_custom_container for Custom container instance referance
    c.     Declare Name of the custom control added to the screen
    d.     Declare field catalog table of type lvc_t_fcat.
    e.     Declare layout of type lvc_s_layo.
    II.     Data declaration for fetching data as input
    III.     Declare variables for ok_code.
    6.     Set pf-status and titlebar for the screen.
    7.     Write PBO. IN PBO do the following:
    i.     Check whether gr_alvgrid is initial.
    a.     If yes do the following.
    •     Create instance for  custom container (gr_container) by passing the container name.
    •     Create instance for ALV grid by passing the custom control instance reference.
    •     select the material data from database
    •     Build field ctalog
    •     Build layout
    •     Call method ‘set_table_for_first_display’ for the object gr_alvgrid(alv grid instance reference) with passing layout, input table and field catalog.
    b.     If NO do the following.
    •     Call method ‘refresh_table_display for the object gr_alvgrid(alv grid instance reference).
    ii.     
    8.     Write PAI. IN PAI do the following:
             Check the ok_code, if ‘Exit’ then leave from program.
             All the user commands where user do any actions in the screen will be code here . For this purpose check the value of ok_code and according that ok_code, code the functionality for the particular user actions.
    REPORT  zdemoab.
    *DATA DECLARATION
    *---Global data deckaration for alv
    *--ALV Grid instance referance
    DATA: gr_alvgrid TYPE REF TO cl_gui_alv_grid,
    *--Name of the custom control added to the screen
          gc_custom_control_name TYPE scrfname VALUE 'CUSTOM_CONTROL',
    *--Custom container instance referance
          gr_container TYPE REF TO cl_gui_custom_container,
    *--Field catalog table
          gt_fieldcat TYPE lvc_t_fcat,
    *--Layout structure
          gs_layout TYPE lvc_s_layo.
    DATA: ok_code LIKE sy-ucomm,
          save_ok LIKE sy-ucomm.
    *---Input table
    TYPES: BEGIN OF t_mara,
            matnr TYPE mara-matnr,
            mtart TYPE mara-mtart,
            matkl TYPE mara-matkl,
            meins TYPE mara-meins,
          END OF t_mara.
    TYPES: t_mara_table TYPE STANDARD TABLE OF t_mara.
    DATA: gt_mara TYPE STANDARD TABLE OF t_mara.
    *MAIN
    CALL SCREEN 101.
    *&      Module  STATUS_0101  OUTPUT
    MODULE status_0101 OUTPUT.
      SET PF-STATUS 'STATUS-0101'.
      SET TITLEBAR 'TITLE'.
    ENDMODULE.                 " STATUS_0101  OUTPUT
    *&      Module  display_alv  OUTPUT
    MODULE display_alv OUTPUT.
      IF gr_alvgrid IS INITIAL.
    *----Create custom container instance
        CREATE OBJECT gr_container
          EXPORTING
            container_name              = gc_custom_control_name
          EXCEPTIONS
            cntl_error                  = 1
            cntl_system_error           = 2
            create_error                = 3
            lifetime_error              = 4
            lifetime_dynpro_dynpro_link = 5
            OTHERS                      = 6 .
        IF sy-subrc <> 0.
    *      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
    *----Create ALV grid instance
        CREATE OBJECT gr_alvgrid
          EXPORTING
            i_parent          = gr_container
          EXCEPTIONS
            error_cntl_create = 1
            error_cntl_init   = 2
            error_cntl_link   = 3
            error_dp_create   = 4
            OTHERS            = 5 .
        IF sy-subrc <> 0.
    *      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
    * select the material data from database
        PERFORM get_input CHANGING gt_mara..
    * prepare field catalog
        PERFORM prepare_fieldcatalog CHANGING gt_fieldcat.
    * prepare layout
        PERFORM prepare_layout CHANGING gs_layout.
        CALL METHOD gr_alvgrid->set_table_for_first_display
          EXPORTING
            is_layout                     = gs_layout
          CHANGING
            it_outtab                     = gt_mara[]
            it_fieldcatalog               = gt_fieldcat
          EXCEPTIONS
            invalid_parameter_combination = 1
            program_error                 = 2
            too_many_lines                = 3
            OTHERS                        = 4.
        IF sy-subrc <> 0.
    *     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ELSE.
        CALL METHOD gr_alvgrid->refresh_table_display
          EXCEPTIONS
            finished = 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.
      ENDIF.
    ENDMODULE.                 " display_alv  OUTPUT
    *&      Form  get_input
    FORM get_input CHANGING gt_mara_table TYPE t_mara_table.
      SELECT matnr mtart matkl meins INTO TABLE gt_mara_table
                                     FROM mara UP TO 10 ROWS.
    ENDFORM.                    " get_input
    *&      Form  prepare_fieldcatalog
    FORM prepare_fieldcatalog  CHANGING gt_fieldcat_table TYPE lvc_t_fcat.
      DATA: ls_fcat TYPE lvc_s_fcat,
            l_col_no TYPE i.
      CLEAR: ls_fcat,
             l_col_no .
      l_col_no = l_col_no + 1.
      ls_fcat-fieldname = 'MATNR'.
      ls_fcat-ref_table = 'MARA'.
      ls_fcat-col_pos   = l_col_no.
      ls_fcat-outputlen = 18.
      ls_fcat-coltext   = 'Material No'.
      ls_fcat-seltext   = 'Material No'.
      APPEND ls_fcat TO gt_fieldcat_table.
      l_col_no = l_col_no + 1.
      ls_fcat-fieldname = 'MTART'.
      ls_fcat-ref_table = 'MARA'.
      ls_fcat-col_pos   = l_col_no.
      ls_fcat-outputlen = 4.
      ls_fcat-coltext   = 'Material type'.
      ls_fcat-seltext   = 'Material type'.
      APPEND ls_fcat TO gt_fieldcat_table.
      l_col_no = l_col_no + 1.
      ls_fcat-fieldname = 'MATKL'.
      ls_fcat-ref_table = 'MARA'.
      ls_fcat-col_pos   = l_col_no.
      ls_fcat-outputlen = 9.
      ls_fcat-coltext   = 'Material group'.
      ls_fcat-seltext   = 'Material group'.
      APPEND ls_fcat TO gt_fieldcat_table.
      l_col_no = l_col_no + 1.
      ls_fcat-fieldname = 'MEINS'.
      ls_fcat-ref_table = 'MARA'.
      ls_fcat-col_pos   = l_col_no.
      ls_fcat-outputlen = 3.
      ls_fcat-coltext   = 'Unit'.
      ls_fcat-seltext   = 'Unit'.
      APPEND ls_fcat TO gt_fieldcat_table.
      CLEAR: ls_fcat,
             l_col_no .
    ENDFORM.                    " prepare_fieldcatalog
    *&      Form  prepare_layout
    FORM prepare_layout  CHANGING p_gs_layout TYPE lvc_s_layo.
      p_gs_layout-zebra = 'X'.
      p_gs_layout-grid_title = 'Material'.
      p_gs_layout-smalltitle = 'X'.
    ENDFORM.                    " prepare_layout
    *&      Module  USER_COMMAND_0101  INPUT
    MODULE user_command_0101 INPUT.
      save_ok = ok_code.
      CLEAR ok_code.
      CASE save_ok.
        WHEN 'EXIT'.
          PERFORM exit_program.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0101  INPUT
    *&      Form  exit_program
    FORM exit_program .
      LEAVE PROGRAM.
    ENDFORM.                    " exit_program

  • XML to ABAP Structure transformation

    Hi SAP,
       Can anyone tell how to transform from XML to ABAP structure. The ABAP structure i'm getting in runtime.
    Please do the needful.
    Thanks in advance
    Vinod.

    using XSLT or ST you can do that check this thread
    https://forums.sdn.sap.com/click.jspa?searchID=5585367&messageID=1661688
    and also search ABAP forum for more code samples

  • What is IM @ transformation step

    hi folks,
    What is the interface mapping in the transformation step? is that same what is used for normal IM or we have to define separately.
    The Data type used has 1...unbounded occurrence. In the transformation step it is N:1 mapping. and have to transform multiline interface to actual.
    good links containing correlation or transformations will be appreciated.
    thanks in advance,
    nikhil

    Hi,
    Refer this blogs & help for better understanding
    /people/sravya.talanki2/blog/2005/08/24/do-you-like-to-understand-147correlation148-in-xi
    /people/pooja.pandey/blog/2005/07/27/idocs-multiple-types-collection-in-bpm
    http://help.sap.com/saphelp_nw70/helpdata/en/a5/64373f7853494fe10000000a114084/frameset.htm
    http://help.sap.com/saphelp_nw70/helpdata/en/a6/dd11425d3c5033e10000000a155106/frameset.htm
    Might helps you..
    Regards,
    vasanth.

  • What format structure do I reformat the hard drive with?

    I'm reformatting my hard drive with linux and need to know which structure i use to format it with. the choices are:
    FAT
    ext2
    ext3
    ext4 reiserfs
    minix
    ntfs
    nilfs2
    Swap Space
    Empty
    Don't want to guess at his point and get it wrong. Thanks for you help
    whereisjeff    

    What are you formatting the disk to do?
    If it is to work with a Mac, you want HFS+ (Journaled) with GUID partition mapping.
    Allan

  • What the structure of packet?

    Hello everyone
       I am developing pci-7344`s driver under RTX.It says in the DDK that
    command and data passed to or from the controller is handled in a
    packet format. A packet consists of resourceID,commandID,data etc.Now I
    know the information of resourceID,commandID,data etc.DDK or the
    hardware user manual does not mention how to send them in a packet.
      Moreover The command buffer register is 16-bit.
      I try to send them one by one but it indicates "modal error" in the
    csr.Since I have not programmed "error-handling" part of the driver ,so
    I do not know what the error codes are.
    Hope some advice on how to send the command packet? It is best if there
    is an example !!
    Thank you!!!

    Hi,
    I am not sending idoc to XI. I am sending a collective idoc (packet size 2) from an R/3 system to another R/3 system. I am getting only one idoc number in the target structure for 2 idocs and the segments are repeatedly appearing for each idoc. Is this the way it should be or different?
    Thanks

  • What is structure Gap?

    Hi,
    Can any body explain what is the structure Gap? which gets created while dismantling in IE4N transaction.
    As i understand when we dismantel one of the eqipment from Fun.Loc system automatically system creates a structure gap. But i could not able to see in structure display.Can any body please suggest how can we see this? Another thing is while assigning the same equipment in other location we need to use Forced installation. Is it standard practice? Please suggest.
    Regards,
    N.Nagaraju

    hi
    Structure Gap is used for the functions of configuration control,i think ,it is the GAP between the complex product sturcture which will be checked during installation and dismantling ,kindly refer the following [link |http://help.sap.com/saphelp_erp60_sp/helpdata/en/b0/df293581dc1f79e10000009b38f889/frameset.htm] and [here |http://help.sap.com/saphelp_erp60_sp/helpdata/en/c0/65003f662e781fe10000000a114084/content.htm] also for details
    regards
    thyagarajan

  • What Program Structure to use?

    Dear All Expert,
                 I am looking for a suggestion on which program structure or combination of strutures that I can use for my programming of the following:
    1) My program had a few events triggering object. Start button click, Stop button click, Grid 1 to 4 button click, Serial received buffer true.
    2) With all these event cases, I had a sequence that can be programmed using State Machine. However, some of the state to state transistion had to be triggered by the event cases.
    3) When stop button is pressed, everything must stop and program to exit
                I had little experience with LabView. If possible, can link to some tutorial that is applicable or some example for me to continue with. Thanks a lot 

    Hi,
    JKI developped a tool for installing addons for Labview, and one of them is the JKI state Machine (free).
    You need to install VI package manager (http://jki.net/vipm), and then instal the JKI state machine (http://jki.net/state-machine)
    You will have then in your palette a new feature : JKI state machine.
    Best Regards, 
    V-F

  • Unsure what data structure will work best??

    okay heres the scenario
    i have 4 strings per element and i need to store these within a data structure, the number of elements is not to be fixed
    is it possible to store an array within an arraylist or vector?
    when i tried to implement the vector it seemed to work fine until i tried to display the element, heres my code
    Vector vectorDetails = new Vector();
    String[4] arrayDetails = new String(4);
    details[0] = nameText.getText();
    details[1] = nameText.getText();
    details[2] = nameText.getText();
    details[3] = nameText.getText();
    String[] s1 = (String)details.lastElement();
    String[] s2 = (String)details.firstElement();
    whenever i print s1 or s2 i get the same information, regardless of the amount of elements i have
    sorry i couldn't post more of the code, but its on the large size, but if anyone can help i would be much appreciated

    okay, now i am really confused, how did i get from a vector to a hashtable??
    to be honest i dont think that structure will work with my GUI
    the way it stands i have five buttons across the top, standard buttons, i.e. new, add, search, edit, delete
    at the bottom i have four buttons, firstElement, previousElement, nextElement, and lastElement
    in the center of the screen i have my textfields were i enter the details and also view each individual persons details, as such i will need access to each individual string
    at present i have two classes, EmailContactDatabase.java & Person.java so i will need to pass the persons details back and forth
    any further help would be much appreciated
    note this is a university assessment, so i am not looking for specific code, just some pointers to get me in the right direction
    note note the structure as i pointed out in an earlier post does NOT have to be dynamic, i can set the maximum number of elements.

  • What is the best data structure for loading an enterprise Power BI site?

    Hi folks, I'd sure appreciate some help here!
    I'm a kinda old-fashioned gal and a bit of a traditionalist, building enterprise data warehouses out of Analysis Service hypercubes with a whole raft of MDX for analytics.  Those puppies would sit up and beg when you asked them to deliver up goodies
    to SSRS or PowerView.
    But Power BI is a whole new game for me.  
    Should I be exposing each dimension and fact table in the relational data warehouse as a single Odata feed?  
    Should I be running Data Management Gateway and exposing each table in my RDW individually?
    Should I be flattening my stars and snowflakes and creating a very wide First Normal Form dataset with everything relating to each fact? 
    I guess my real question, folks, is what's the optimum way of exposing data to the Power BI cloud?  
    And my subsidiary question is this:  am I right in saying that all the data management, validation, cleansing, and regular ETTL processes are still required
    before the data is suitable to expose to Power BI?  
    Or, to put it another way, is it not the case that you need to have a clean and properly structured data warehouse
    before the data is ready to be massaged and presented by Power BI? 
    I'd sure value your thoughts and opinions,
    Cheers, Donna
    Donna Kelly

    Dear All,
    My original question was: 
    what's the optimum way of exposing data to the Power BI cloud?
    Having spent the last month faffing about with Power BI – and reading about many people’s experiences using it – I think I can offer a few preliminary conclusions.
    Before I do that, though, let me summarise a few points:
    Melissa said “My initial thoughts:  I would expose each dim & fact as a separate OData feed” and went on to say “one of the hardest things . . . is
    the data modeling piece . . . I think we should try to expose the data in a way that'll help usability . . . which wouldn't be a wide, flat table ”.
    Greg said “data modeling is not a good thing to expose end users to . . . we've had better luck with is building out the data model, and teaching the users
    how to combine pre-built elements”
    I had commented “. . . end users and data modelling don't mix . . . self-service so
    far has been mostly a bust”.
    Here at Redwing, we give out a short White Paper on Business Intelligence Reporting.  It goes to clients and anyone else who wants one.  The heart
    of the Paper is the Reporting Pyramid, which states:  Business intelligence is all about the creation and delivery of actionable intelligence to the right audience at the right time
    For most of the audience, that means Corporate BI: pre-built reports delivered on a schedule.
    For most of the remaining audience, that means parameterised, drillable, and sliceable reporting available via the web, running the gamut from the dashboard to the details, available on
    demand.
    For the relatively few business analysts, that means the ability for business users to create their own semi-customised visual reports when required, to serve
    their audiences.
    For the very few high-power users, that means the ability to interrogate the data warehouse directly, extract the required data, and construct data mining models, spreadsheets and other
    intricate analyses as needed.
    On the subject of self-service, the Redwing view says:  Although many vendors want tot sell self-service reporting tools to the enterprise, the facts of the matter are these:
    v
    80%+ of all enterprise reporting requirement is satisfied by corporate BI . . . if it’s done right.
    v Very few staff members have the time, skills, or inclination to learn and employ self-service business intelligence in the course of their activities.
    I cannot just expose raw data and tell everyone to get on with it.  That way lies madness!
    I think that clean and well-structured data is a prerequisite for delivering business intelligence. 
    Assuming that data is properly integrated, historically accurate and non-volatile as well, then I've just described
    a data warehouse, which is the physical expression of the dimensional model.
    Therefore, exposing the presentation layer of the data warehouse is – in my opinion – the appropriate interface for self-service business intelligence.
    Of course, we can choose to expose perspectives as well, which is functionally identical to building and exposing subject data marts.
    That way, all calculations, KPIs, definitions, and even field names, and all consistent because they all come from the single source of the truth, and not from spreadmart hell.
    So my conclusion is that exposing the presentation layer of the properly modelled data warehouse is – in general - the way to expose data for self-service.
    That’s fine for the general case, but what about Power BI?  Well, it’s important to distinguish between new capabilities in Excel, and the ones in Office 365.
    I think that to all intents and purposes, we’re talking about exposing data through the Data Management Gateway and reading it via Power Query.
    The question boils down to what data structures should go down that pipe. 
    According to
    Create a Data Source and Enable OData Feed in Power BI Admin Center, the possibilities are tables and views.  I guess I could have repeating data in there, so it could be a flattened structure of the kind Melissa doesn’t like (and neither do I). 
    I could expose all the dims and all the facts . . . but that would mean essentially re-building the DW in the PowerPivot DM, and that would be just plain stoopid.  I mean, not a toy system, but a real one with scores of facts and maybe hundreds of dimensions?
    Fact is, I cannot for the life of me see what advantages DMG/PQ
    has over just telling corporate users to go directly to the Cube Perspective they want, that has already all the right calcs, KPIs, security, analytics, field names . . . and most importantly, is already modelled correctly!
    If I’m a real Power User, then I can use PQ on my desktop to pull mashup data from the world, along with all my on-prem data through my exposed Cube presentation layer, and PowerPivot the
    heck out of that to produce all the reporting I’d ever want.  It'd be a zillion times faster reading the data directly from the Cube instead of via the DMG, as well (I think Power BI performance sucks, actually).
    Of course, your enterprise might not
    have a DW, just a heterogeneous mass of dirty unstructured data.  If that’s the case,
    choosing Power BI data structures is the least of your problems!  :-)
    Cheers, Donna
    Donna Kelly

  • Transforming XML into complex type in ADF/Java

    Hi all,
    Maybe a simple question for you all - maybe too simple for some of you - but not for me as a Java newbie. So I'd appreciate any help.
    I have used a WebService Proxy and created a new Pojo in order to create a Data Control. The WS proxy works quite good and I can get this XML response as expected.
    <ns0:kunden xmlns:ns0="http://www.oracle.com/hbv">
    <ns0:kunde>
    <ns0:Kundennummer>0000000047</ns0:Kundennummer>
    <ns0:Name>Laue</ns0:Name>
    <ns0:Vorname>Ingo</ns0:Vorname>
    <ns0:Straße>Kühnehöfe</ns0:Straße>
    <ns0:Hausnr/>
    <ns0:PLZ>22761</ns0:PLZ>
    <ns0:Ort>Hamburg</ns0:Ort>
    <ns0:Telefon>040/89091-456</ns0:Telefon>
    </ns0:kunde>
    <ns0:kunde>
    <ns0:Kundennummer>0000000048</ns0:Kundennummer>
    <ns0:Name>Brüning</ns0:Name>
    <ns0:Vorname>Arne</ns0:Vorname>
    <ns0:Straße>Kühnehöfe</ns0:Straße>
    <ns0:Hausnr/>
    <ns0:PLZ>22761</ns0:PLZ>
    <ns0:Ort>Hamburg</ns0:Ort>
    <ns0:Telefon>040/89091-220</ns0:Telefon>
    </ns0:kunde>
    </ns0:kunden>
    Now I want to transfer the XML into a complex type in Java, for instance
    ArrayList<MyKunde> retKundenliste = new ArrayList<MyKunde>();
    The type MyKunde is defined with all needed attributes and the corresponding getter/setter methods. My object getting the XML response from the WS is kundenliste of type javax.xml.soap.SOAPElement (defined by the WS proxy) . What method do I have to use to get all elements from the XML structure transformed into an array of MyKunde?
    I can imagine that this task is a standard but as I said I'm new in Java programming.
    Many thanks for your help
    Detlef

    I'm not sure but the Wizard should have created accessors for the char_list Adobe in the generated AbcXyzObj.java class. Check this class for the attributes and their getters and setters.
    Timo

Maybe you are looking for