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! ByeI 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 dont 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
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,
nikhilHi,
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
whereisjeffWhat 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 -
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.Nagarajuhi
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 lotHi,
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 appreciatedokay, 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 KellyDear 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
DetlefI'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
-
Is there a way to have verification go through several people in a specific order.
We are in a school setting and want our absence request to follow a specific path. Is there a way to set that up?
-
Ipod video wont go into my ipod...help please
Im using Videora iPod Converter and it works just fine. I convertered the movie(about 1:35 mins long) to quicktime format and i exported the movie to ipod format using quicktime. Then i opened it using itunes it plays the movie in itunes just fine bu
-
Hello. We've set up numerous InfoPath Forms as tests for our agents to take to test their industry/company knowledge of our business. I use drop-down list box fields for each question but use option buttons in the form itself. We set 3 of the "Val
-
Unable to connect with server, all other apps OK, have disabled firewall.
have recycled modem,removed firefox and reloaded,have disabled McAfee. no fix. Windows OK
-
can i debug smart form in the production?can i keep a break-point in smartform & transport the request to production.