From time to time we can't use standard reporting tools, but ABAP. And if you don't know peculiarities of TRM tables it will be quite complicated task.
But functional module LDB_PROCESS (help.sap.com) can handle this situation. The module works in close connection with Logical databases which contain selection options and settings for data selection.
Important feature of the LDB_PROCESS is that it allows you to analyze your result data as a whole instead of on a line-by-line basis. It is usefull, in order to agregate the result data or calculate an averge values. SAP Query can't handle such situations.
TIPS:
Example: ABAP code will be similar to selection screen of LDB FTI_TR_POSITIONS
REPORT zlbd_process_example.
TYPE-POOLS rsfs.
DATA:
gt_positions
TYPE STANDARD TABLE OF fti_ldb_tr_positions,
gt_errors TYPE bapierr_t.
DATA:
ls_callback TYPE ldbcb,
lt_callback TYPE STANDARD TABLE OF ldbcb,
ls_selections TYPE rsparams,
lt_selections TYPE STANDARD TABLE OF rsparams,
ls_field_selection TYPE rsfs_tab_fields,
lt_field_selection TYPE rsfs_fields.
*Information on callback
ls_callback-ldbnode = 'POSITIONS'.
ls_callback-get = 'X'.
ls_callback-cb_prog = 'ZLBD_PROCESS_EXAMPLE'.
ls_callback-cb_form = 'CALLBACK_POSITIONS'.
APPEND ls_callback TO lt_callback.
CLEAR ls_selections.
ls_selections-kind = 'P'.
ls_selections-selname = 'P_JOTC'.
ls_selections-low = 'X'.
APPEND ls_selections TO lt_selections.
CLEAR ls_selections.
ls_selections-kind = 'S'.
ls_selections-selname = 'S_BUKRS'.
ls_selections-sign = 'I'.
ls_selections-option = 'EQ'.
ls_selections-low = 'NTS0'.
APPEND ls_selections TO lt_selections.
CLEAR ls_selections.
ls_selections-kind = 'S'.
ls_selections-selname = 'S_DATS'.
ls_selections-sign = 'I'.
ls_selections-option = 'EQ'.
ls_selections-low = '20140501'.
APPEND ls_selections TO lt_selections.
CLEAR ls_selections.
ls_selections-kind = 'P'.
ls_selections-selname = 'P_RST_PB;'.
ls_selections-low = '1'.
APPEND ls_selections TO lt_selections.
CLEAR ls_selections.
ls_selections-kind = 'P'.
ls_selections-selname = 'P_BILSTB'.
ls_selections-low = '1'.
APPEND ls_selections TO lt_selections.
CLEAR ls_selections.
ls_selections-kind = 'P'.
ls_selections-selname = 'P_AUSWT'.
ls_selections-sign = 'I'.
ls_selections-option = 'EQ'.
ls_selections-low = '0001'.
APPEND ls_selections TO lt_selections.
CLEAR ls_selections.
ls_selections-kind = 'P'.
ls_selections-selname = 'P_KURSA'.
ls_selections-sign = 'I'.
ls_selections-option = 'EQ'.
ls_selections-low = '01'.
APPEND ls_selections TO lt_selections.
CLEAR ls_selections.
ls_selections-kind = 'P'.
ls_selections-selname = 'P_RANLWI'.
ls_selections-sign = 'I'.
ls_selections-option = 'EQ'.
ls_selections-low = '01'.
APPEND ls_selections TO lt_selections.
CLEAR ls_selections.
ls_selections-kind = 'P'.
ls_selections-selname = 'P_ANZGW'.
ls_selections-sign = 'I'.
ls_selections-option = 'EQ'.
ls_selections-low = 'USD'.
APPEND ls_selections TO lt_selections.
CLEAR ls_selections.
ls_selections-kind = 'P'.
ls_selections-selname = 'P_NUMBR'.
ls_selections-sign = 'I'.
ls_selections-option = 'EQ'.
ls_selections-low = '001'.
APPEND ls_selections TO lt_selections.
CLEAR ls_selections.
ls_selections-kind = 'P'.
ls_selections-selname = 'P_CALCCY'.
ls_selections-sign = 'I'.
ls_selections-option = 'EQ'.
ls_selections-low = 'USD'.
APPEND ls_selections TO lt_selections.
CLEAR ls_selections.
ls_selections-kind = 'P'.
ls_selections-selname = 'P_ERRLOG'.
ls_selections-low = 'X'.
APPEND ls_selections TO lt_selections.
CLEAR ls_selections.
ls_selections-kind = 'P'.
ls_selections-selname = 'P_MEM_ID'.
ls_selections-low = 'LDB_MESSAGES'.
APPEND ls_selections TO lt_selections.
ls_field_selection-tablename = 'POSITIONS'.
APPEND 'BUKRS' TO ls_field_selection-fields.
APPEND 'VALUATION_AREA' TO ls_field_selection-fields.
APPEND 'BOOK_VAL_PC' TO ls_field_selection-fields.
APPEND 'SBWHR' TO ls_field_selection-fields.
APPEND 'BOOK_VAL_LC' TO ls_field_selection-fields.
APPEND 'SHWHR' TO ls_field_selection-fields.
APPEND ls_field_selection TO lt_field_selection.
CALL FUNCTION 'LDB_PROCESS'
EXPORTING
ldbname = 'FTI_TR_POSITIONS'
field_selection = lt_field_selection
TABLES
callback = lt_callback
selections = lt_selections
EXCEPTIONS
ldb_not_reentrant = 1
ldb_incorrect = 2
lbd_already_running = 3
ldb_error = 4
ldb_selections_error = 5
ldb_selections_not_accepted = 6
variant_not_existent = 7
variant_obsolete = 8
variant_error = 9
free_selections-error = 10
callback_no_event = 11
callback_node_duplicate = 12
callback_no_progeam = 13
callback_no_cbform = 14
dyn_node_no_type = 15
dyn_node_invalid_type = 16
OTHERS = 17.
IF sy-subrc NE 0.
WRITE: / 'Exceprion:', sy-subrc.
ENDIF.
IMPORT p1 = gt_errors FROM MEMORY ID 'LDB_MESSAGES'.
FORM callback_positions
USING
name TYPE ldbn-ldbnode
workarea TYPE fti_ldb_tr_positions
mode TYPE c
selected TYPE c.
DATA:
ls_positions TYPE fti_ldb_tr_positions.
MOVE-CORRESPONDING workarea TO ls_positions.
APPEND ls_positions TO gt_positions.
ENDFORM. "callback_positioins
Result is stored in global table GT_POSITIONS:
This report is limited to the logic just to show you how selection is made and you have to adopt it to your requirement.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
3 | |
3 | |
2 | |
2 | |
2 | |
2 | |
2 | |
2 | |
1 | |
1 |