Monday, March 26, 2018

Modification Operations

Sometimes,when you enter a program in SAP, system does not allow you to modify the code, even after going to the edit mode.

Instead, you will get a greyed out screen.
This happens when the original system where the object is developed is different from where it is being edited.
This can be checked in GoTo --> Object Direct Entry.
Here you can see that Original system name will be different than the system you are editing in.

The objects which have a name other than the name of system in which it is being accessed,  modification assistant will appear.
If you can change this to your system name then you can edit the objects without modification assistant.

Else,

EDIT  --> Modification Operations --> Switch Off Assistant
[ There will be a pop up with warning message and this can be ignored if what you are trying to do is a z program or if you know what you are doing ;) ]





Friday, March 23, 2018

SNOTE

SAP Help on SNOTE : LINK

Reading SNOTE
First check the Support Packages and Patches

Software Components
It is the latest pack/patch where the note has been applied. 
Any system which is equal to or above the mentioned support packages will already have the note applied , generally. No need to apply the note

Correction changes can be applied by directly downloading the Note in the system, or in some cases, some coding changes need to be done or parameters needs to be maintained manually.

Checking Support packages in SAP
In any SAP window Goto 'System' --> Status --> Component Version.
Here you can find
Software Component | Release | Level | Highest Support Package | Short Description. in ECC

Component | Release | SP-Level | Support Package | Short Description of Component in BW


Below is how you can see NOTES in SNOTE.
The ones in greyed out diamond are with status 'cannot be implemented'.
When you get message status "Cannot be implemented" means the code related to note is already exists in your SAP version. Just go to change instruction and see the changes come with the note and change the same object in your SAP system. The changes mentioned in the Note will exist in your system. Hence, you cannot implement the note or note is not valid for your SAP version.




Implementing SNote


Check if you can see the note in New. If it is not available, GoTo-->Download Note.

Now you can see the note in 'New'.

The ones in BLUE can be implemented. 

Select the Note and Goto SNOTE in Menu ->Implement SNOTE

System will give pop ups asking us to confirm is the user is ready to implement the note. If yes, SAP installs it 
and these changes can be collected in a transport request to move to other systems.

After successful implementation, you can see the note in 'In Processing' status.

Business Objects

Events

Events are used in BOBJ the same they are used in other systems. An event is created and added it is added to a report.
When the event is triggered, it in turn triggers the report.

Creating an Event
Log in to CMC Console -- Look under 'Define' and you should find events.
Look for Custom events - here, you can right click and create an event or use the second icon above custom events to create one.
Enter Event Name and Description and If Alerts are needed.

Adding events to the reports
Go to the report properties for the report, -- In Scheduling - Events - Add the Event in the corresponding box.

Process Chains

TCode : RSPC

Process Chain Monitoring
Std. Program
/SSA/BWT

Debugging Process Chain
Open the PC in Edit Mode.
Go to the step you want to debug.
Right click and Select 'Debug Loop'.
Set some time here - like 5-10 seconds.
Save and Activate the Chain.
In the Menu -> Execution -> Execute Synchronous to Debugging.
This stops the chain at the break-point in the standard code. Place customs breakpoints in your code and go to navigate to those points using F6.

Process Chain Jobs
Process Chains run under the job name 'BI_PROCESS_TRIGGER' in SM37
If you want to know the name of the PC which is running in the job,
Select job BI_PROCESS_TRIGGER in SM37
Click STEP button  
Select the program RSPROCESS
From GOTO menu -> SelectVariant
Against field chain you will find the process chain name

Alerts in Process Chain
Double click on PC --> Process Chain --> Attributes --> Alerting
RSPCCHAINATTR - ALERTS field gives if a process chain alert is present or not.




Manually changing status of Process chain
Click HERE

Process Chain Log Deletion
Storing older logs of process chain eat up space and is necessary to delete them periodically.
RSPC_LOG_DELETE can be used to delete them.
Click HERE to get more information.

BICCMS_100 Jobs
BICCMS_100_<timestamp> are system generated jobs which monitor the process chains.


Extra Notes
Process Chain APIs - Click HERE

Previous Run Active
This is used to check if the previous run of the chain is still active before running the next run.

If the chain is always going to the step where the chain is still active , look in table RSPCPROCESSLOG where actual state is 'BLANK'.


Related Tables
RSPCPROCESSLOG ; RSPCCHAIN_SKIP ;


BW Administration

Below are some topics related to BW Administration

RSADMIN

Table : RSADMIN
This table contains all the admin control parameters .
Program SAP_RSADMIN_MAINTAIN can be used to maintain the values.

SAP Notes
912367 : Gives the corresponding Notes for each parameter which can be maintain in the table.
594263 : RSADMIN parameter documentation.


Useful links
Important RSADMIN Parameters : Click HERE.

BW Performance Tuning

DSO Activation Statistics Generation
ODS Activation step periodically recalculates the statistics. This can be a overhead if the activation step is critical. In order to suppress the statistics step the document can be referred. The Document also mentions the need for statistics.


Delete entries using Program RSODSO_CLEANUP_RSODSACTUPDTYPE
Refer Note 2526515 to see if the table RSODSACTUPDTYPE is accumulating entries

Archiving Request Information in BW
Request-archiving is used to to archive reduce the size of administration and log tables e.g. RSMONMESS, RSSELDONE which can grow extensively LINK

Reducing Requests
TCode RSREQREDUCE helps to monitor the size of the requests for individual infoproviders.
Click HERE for more information.

Performance Improvement related Notes
SAP Note 2037093 : Performance problems during delta/init in the status management with DTP-s between infoproviders

Data Archival

3.X Data Flow

Some times when a new datasource is installed and replicated to BW , it comes as a 3.x datasoure.
Eg: 0VEN_COMPC_ATTR .
The datasource can be activated only if the 3.X objects are included.
In this case, you can migrate the datasource.
Right click on the datasource and check "Migrate" . This will give a pop up saying that it would delete all 3/5 dataflow ( which should be fine ) and you can select how you want to migrate.
With Export Option : will allow you to revert the changes
With out Export : you will have 7.x datasource.

BW Tables

BW Tables

Tables

Description

Tables

Description

AGR_USERSAssignment of roles to usersRSTSTable for transfer structures
BTCUEVUser event IDs for background processingRSLDPIOLinks datasource to infopackages
DD03MTable fields with data elements, text, and domainsRSLDPIOTInfoPackage Text Description
E070Change & Transport System: Header of Requests/TasksRSLDPRULEABAP source code for InfoPackages
E07TChange & Transport System: Short Texts for Requests/TasksRSLDPSELHardcoded selections in InfoPackages
ROOSFIELDDataSource FieldsRSMONICDP Contains the request-id number by data target
RSAABAPABAP routine - source code; - CODEID = Enter in Start Routine/End/Expert/Global Rouintes in table RSTRANRSPAKPOSList of InfoPackage Groups / InfoPackages
RSADMINCCustomizing Table General BWRSSELDONEInfoPackage selection and job program
RSANT_PROCESSIAnalysis Process TLOGO Index ( APD DSO relation )RSZELTTXTBex Description Table
RSBKDTPBW: Data Transfer Process Header DataRSRREPDIR Directory of all BEX reports
RSBKREQUESTDTP RequestRSLDPIOInfopackage / Datasource link
RSDCHABASInfoObject details : Basic characteristics (for chars, time-chars and units)RSBODSLOGSTATEChangelog Status for ODS Object
RSDODSOAll details of the DSORSBODSLOGRequests in ODS Changelog
RSECVALAuthorization Value StatusRSBASIDOCList of Source systems
RSHIEDIRTHierarchy CatalogRSDIOBCIOBJ InfoObject Catalog
RSHIEDIRTHierarchy directory textsRSZELTXREFDirectory of query element references. If you give the query element ID, it gives the source / Infoprovider information
RSICCONTMonitor: Saving of the updated IC and ODS per request (Search the request in RSICCONT table and delete the entry from the table. Automatically your request will be deleted from DSO)SRT_CFG_DEF_ASGNAssignment of Default LP Name to Proxy Class for WS Client
RSISOSMAPMapping Between InfoSources and OLTP SourcesRSQISETInfosets
RSLDPIOLog.data packet: No.TVARVCMaintain variable values - Use Tcodes STVARV / STVARVC for maintaining values
When adding entries, click on "Include changed entries in a transport" check box on the top to collect it in a transport
RSLDPSELSelection table for fields schedulerRSSTATMANPSAStore for G_T_PART of Request Display in DTA Administration( DMFLAG gives if a specific request is loaded to PSA )
RSOLTPSOURCETransfer structure tableDEVACCESSTable for development user - Has Access codes / Access Key
RSOSSEGMAPMappings between infosouece and systemsRSADMINAControl Table That Customer Can Change - Contains information of system user ( BWREMOTE ) - Maintenance View : RSADMIN
RSPCCHAINProcess chainTHOLPublic Holidays / THOLT - Texts / 
RSPCVARIANTGeneric Variant-Storage of Process ChainsTHOLUDates of movable public holidays
RSREQDONEMonitor: Saving of the QM entries (infopak details) PSA Request StatusROOSGENGenerated Objects for OLTP Source | Contains datasources in that specific Source system
RSRPARAMETRIZAParametrization for a query, workbook, webapplication, plaRSREQICODSMonitor: Saving of the updated IC and ODS per request - DSO requests table
RSTSODSREQUESTRequest directory ODS; which request is in which ODSRSDDAGGRMODSTATEStatus of change run for aggregates - Give the Run number ( can be found in process chain log of ACT ) in CNSID and CLOSEDFL will give status
RSTRANInformation on TransformationsRSLOGSYSMAPMapping of logical systems fir transport of InfoSources
RSUPDROUTUpdate rules - ABAP routine - check tablersdssegDataSource - Segments - Has PSA table name of the datasource
RSZELTDIRDirectory of the reporting component elements ( Gives the relation between transport element and the query. Useful when a TR fails with multiple queries. Can look for the object failed over here to get the corresponding Query )SEOCOMPOBADI Class/Interface component
TADIRDirectory of Repository ObjectsTTZD / TTZDVSummer time rules (variable dates) - Day light savings tables - Available in BW and Source systems
RSDIOBJDirectory of all InfoObjectsRSSDLINITLast Valid Initializations to an OLTP Source - Delta
RSODSSETTINGSSettings for an ODS - DSORSMDATASTATE_EXTAdditional Summation Status of Data in Data Targets | Total Count of Requests 
SXC_CLASSExit, implementation side: Class assignment (multiple) - BADI Implementation Name Interface ClassesRSPCCHAIN_SKIP Skipped processes | This chain will have all the entries where 'skip process' option is used in the PC. 'TO BE SKIPPED' field will be 'X' for active ones.
RSPCPROCESSLOGLogs for the Chain RunsBALDATApplication Log: Log data

Jobs running for very long - One reason might be lock on this table

Editing Table values in debugging mode

Go to Function Group - SETB 
Sub Routine - ALV_PF_STATUS
and place a break point at Line 446 
Below is the screen shot for placing the break/session point.

Go to the table in SE16 and execute.
It goes and stops at the specified point.

Double click on 'excl_tab'.
Delete entries 'ANL2' 'AEN2' - they are at the end of the table.



and execute. It displays the screen with EDIT option. After changing the entry save it.



RSA7


380078 - FAQ: BW delta queue (RSA7): Questions and answers
378903 - Queue status in SMQ1, SMQ2 and table ARFCRSTATE


Below are few other points to consider
Even though most of the init-datasources show in RSA7. We cannot see delta entries for all of them here.

The "Total" on the RSA7 does not help much. It is the count of LUWs for the datasource. The count is the new delta LUWs and LUWs of the delta repeat.
When delta is triggered, it becomes zero and can show value 1 as it might still have delta repeat LUWs.

If you click on Details --> Delta Repeat : This will give you all the records which are previously transferred to BW. When the next delta goes through successfully, that delta will become the data in Delta Repeat

Details --> Delta Update : This option is supposed to give you all delta entries written to the queue [ Original queues can be seen in SMQ1 ]. But not all datasources show data here.
for eg : 0FI_GL_14 does not show its delta entries here [ Not Sure Why ]
However, delta entries from 2LIS datasources can be seen here once they are moved from LBWQ to here.

Transactions ---> qRFC ---> RSA7
Transactions ---> LBWQ ---> qRFC ---> RSA7 ( LIS Extractors )

Standard Functions / Programs

Standard Programs

PSA Check and Repair Reports : Link

Program

Description

CHANGEDOCU_READDisplays the change document information
RSSCD100
RSDG_TRFN_ACTIVATEActivates transformation and DTP
RSBTCDEL2Cleaning background jobs in the system
RSDS_DATASOURCE_ACTIVATE_ALLActivate datasource
RSDG_ODSO_ACTIVATEActivate DSO
Class:CL_RSTRAN_STAT Method:DELETE_VERSION_FROM_DB() Delete transformation from system ( including production ) - Run the method and give i_transid = transformation id ; i_objvers = 'M' and leave others blank and execute
RSBKDTPDELETEDelete DTPs
RS_DELETE_TLOGODelete Objects from BW
RSSM_OLTP_INIT_DELTA_UPDATEupdate the init conditions back in the source system - If inits are failing/ dumping - run the program and it will create an entry in RSA7. Then try running init and it will fail. Delete the init and run it again and it should be fine. This is when there is problem with initializations or want to delete entries in RSSDLINIT
RSDG_IOBJ_DELETEDelete InfoObjects - It gives error message if the infoobject is being used anywhere else, it would delete them. No transport request asked
COMPONENT_REORG / Tcode : RSZDELETE Delete various BEx query related objects. The deletions can be collected in a transport request
RSDMD_CHECKPRG_ALLConsistency check of Master data infoobjects
RS_ABAP_SOURCE_SCANChecks ABAP Code for infoobjects tables and DSO RSAABAP
RSDG_MPRO_ACTIVATEActivate Multiprovider
RSAR_PSA_CLEANUP_DIRECTORYClean PSA : Adjusts the PSA Tables
RSAN_PROCESS_EXECUTEAPD standard Program : Variant would be APD name
RSWATCH0Access AL11 tcode
RSFUNCTIONBUILDERAccess SE37
RSIMPCURRUpdate Currency from ECC
RSIMPCUSTUpdate Currency Units
RSDDTREX_INDEX_DELETEDelete BIA indexes
RSDDTREX_BIA_ACTIVATE_FILLCreate BIA indexes
RSDMD_MD_ACTIVATE Activate Master Data
RSC1_QUEUE_DELETE_ALL Delete RSA7 delta queue pointers
RSDG_IOBJ_ACTIVATE Activate Infoobjects
RSODSACT1 DSO Activation of Data
RSPC_LOG_DELETE Delete process chain logs
RSVARDOC_610 Correction of program variants - Variant of program Z is not the current version - Run this program with the errored program and variant names and SYSVAR = 'X'. the variant will be corrected
RSSM_DELETE_INITSEL_OLTPDelete initialization for all datasources
RS_B4HANA_CHECK_ENABLEStandard Program to check If wish to BW/4HANA can be enabled
RS_TRANSTRU_ACTIVATE_ALLActivate InfoStructures
RBDLSMAPRunning BDLS - Logical System Name Conversion . More Notes : LINK
BS_ANLY_DS_RELEASE_ODPReleases datasources to ODP : SAP Notes 2232584 
RODPS_OS_EXPOSERelease Z Datasources to ODP
RSARFCERDelete TRfC IDocs
RSARFCEXExecute IDocs TRfc 
Process Chain Monitoring/SSA/BWT
BTC_EVENT_RAISETrigger / Raise event
ADBC_TEST_CONNECTIONTesting DBConnect
RMCEXCHKCheck report for locating open data extraction tasks - MCEX queues
CRM_ORDER_READFor any information in CRM
GNBILLDLBill Plans / Maintaining Billing Due List

Function Modules


Function Modules/BAPIs

Descriptions

Reference

/SAPDMC/LSM_F4_SERVER_FILE Getting HELP for list of folders ZTRANSIT_HIER_IP..etc
ADDR_CONVERT_TIMESTAMP_TO_DATE Getting Date from Timestamp
ALINK_CALL_TRANSACTION USed to run to Tcodes when no access
ARCHIVFILE_SERVER_TO_SERVER Copy files from one Directory to another
BAPI_CLASS_SELECT_OBJECTSList of objects which have classification definedhttp://learningsapbw1.blogspot.com/2015/08/classification-datasources.html
BAPI_CURRENCY_CONV_TO_EXTERNAL Converting Currency to External format Once the FM in row 3 is used, this is used for getting the original values
BAPI_IOBJ_CREATECreate InfoObjectsstrucuture BAPI6108 has all the input parameters needed for creating Infoobjects. For ignoring Master Data - Use NOVALFL = 'X'
BAPI_IOBJ_ACTIVATE_MULTIPLEActivate Multiple InfoObjects
BAPI_IOBJ_CHANGEChange details of InfoObject
BAPI_IOBJ_GETDETAILGet details of InfoObject
BAPI_IPAK_CHANGE Infopackage change details
BAPI_IPAK_GETDETAIL Infopackage get details
BAPI_IPAK_START Trigger Infopackage
CCU_TIMESTAMP_DIFFERENCE Difference of two timestamps
CONVERSION_EXIT_ALPHA_INPUT Adding Leading zeroes depending on Dataelement F4 help ZDATA_ACTIVETAB_UPLOAD
DATE_CHECK_PLAUSIBILITY Validatting Date
DATE_TO_PERIOD_CONVERT Calender Day to Fiscal Period Pass date to i_date and fiscal variant (V3/K4.. depends on the company) to i_periv which gives fiscal period e_buper and fiscal year e_gjahr
DD_NAMETAB_TO_DDFIELDS List of fields in a database table
F4IF_INT_TABLE_VALUE_REQUEST Help for Selection Screen
FTI_FISCAL_YEAR_MONTH_GET Get the fiscal year, month based on company code
GUI_UPLOAD Upload file from desktop/server to program Use the declaration as follows for output table.
DATA : lw_data      TYPE string,
l_t_data       TYPE rstt_t_string, (table)

Other eg : ZDATA_ACTIVETAB_UPLOAD
KD_GET_FILENAME_ON_F4 Getting the file name in F4 help ZDATA_ACTIVETAB_UPLOAD
JOB_OPEN Opening a job ZEDW_BATCH_FF_EXTRACT_START
READ_TEXTBase Table STXH / Text Objects SE75 ( Double click on the Object and it will give list of all Text IDs assosiated / TextID text table TTXTITThis FM is used to read texts which are not saved directly in the tables. Using STXH table to get the Text Object ID , Text Id helps to run the FM.
For more information , Click HERE
RSA1_SINGLE_OLTPSOURCE_GET Datasource Information
RSA8_GENDELTA_ZDD_REPLAY_GETThis is used to change the delta pointer value in table ROOSGENDLM for zdatasourcesEnter OLTPSOURCE, LOGSYS and Delta ID as the timestamp from which you want delta to flow in,
After successful delta, when the delta is called again, This Delta ID becomes Repeat ID and the new delta timestamp is the DeltaID.
RSAOS_OLTPSOURCE_GET OLTP source details
RSAR_ODS_GET Get PSA details Need to pass datasource name in  I_ISOURCE and  I_OLTPSOURCE ;  I_LOGSYS is the logical system name
RSAR_CURRENCY_CONVERT Getting currency converted to Input format Transformations : for example : JPY currency
RSAR_TRANSTRUCTURE_GET Getting the Structure of Transfer strucutres
RSATREE_PSA_DELETE_BATCH Delete PSA
RSC1_TRFC_QUEUE_WRITE Write to the BW Delta Q
RSD_IOBJ_GETGet InfoObject Details
RSD_IOBJ_USAGEGet InfoObject Usage
RSDDS_AGGR_MOD_CLOSERemoving Master Data LocksAttribute Change Run .When process chains fail in Prod due to locks /
In Tcode : CHANGERUNMONI, you can see the status of the change run . Get the ID from there and run this FM to close/cancel the run
RSDU_TABLE_TRUNCATE Delete data from Fact Table of Cube
RSKC_CHAVL_CHECK Valid Characters check / Maintain
RSNDI_MD_XXL_ATTR_UPDATE_4XXL Attribute Fm
RST_TOBJ_SHIFT Add/Subtract years from Fiscal Period
RSPC_API_CHAIN_STARTRun the process chain when Metachain or APIStart using Meta Chain or API
RSW_CURRENCY_TRANSLATION Currency translation from One Currency to anothere
RSZ_I_BASIC_CHA_WHERE_USEDGet Characteristic InfoObject usage
RSZ_I_BASIC_KEYFIG_WHERE_USEDGet Keyfigure InfoObject usage
SO_DOCUMENT_SEND_API1 Seding email with Documents
SCMS_DOWNLOAD Uploading the file to server ZTRANSIT_FILE_UPLOAD
SCMS_UPLOAD Download files (Used in conjunction with Call method 1) ZTRANSIT_FILE_UPLOAD
SLS_MISC_GET_LAST_DAY_OF_MONTH Last day of the month ZFX_FILE_CHANGE
SXPG_CALL_SYSTEM ZEDW_BATCH_FF_TRANSMIT
TIME_CHECK_PLAUSIBILITY Validating Time
TMP_GUI_DIRECTORY_LIST_FILES Count of files in a folder on Presentation Server
UJD_ADD_MONTH_TO_DATE Add/Subtract Months from date Dates
RKE_TIMESTAMP_CONVERT_OUTPUT Timestamps conversion This can be used to convert timestamps FI tables like BWOM2_TIMEST
RSSM_GET_TIME Get Date Timestamp UTC Local This is used to get Local and UTC date and time and timestamps
RSODSO_CLEANUP_RSODSACTUPDTYPE Clean up unwanted entries in table RSODSACTUPDTYPE
TMS_TP_IMPORTTransport ImportSystem name and Request number are mandatory. This job is generally scheduled in the systems to run at regular intervals ( 15 minutes ) to import transports. TMS_00000000XXTMS_TP_IMPORT.
Extra Notes : Link
RSAR_NEWDS_PSA_USEROBJ_CHECKUsed to cross check the field USEROBJ in RSTSODS with the fields - PSA Correction
OWN_LOGICAL_SYSTEM_GET Get Logical system LOGSYS name
RSPC_CHAIN_ACTIVATE_REMOTERemote activation of a process chainOn the top,
RFC target sys: give the system name where you want to activate the chain;
I_CHAIN = Chain name
 I_NO_AUTHORITY = 'X'
This should activate the chain in a different system, given there is a connection.
RSPC_LOG_DELETEDelete individual logs for process chainThis one need only the LOGID. I_force = 'X' ( Ignore errors, always delete )
CRM_ORDER_READRead any data in CRMThe FM does not run. Use standard program with the same name - CRM_ORDER_READ
RVSCD100        Displaying Document Changes    Sales Document Changes and Deletions
 

Class / Methods


Methods

Descriptions

Reference

call method cl_gui_frontend_services=>directory_list_files Getting list of files from Desktop ZTRANSIT_FILE_UPLOAD
CALL METHOD cl_gui_frontend_services=>gui_download Downloading files to Desktop ZTRANSIT_FILE_DOWNLOAD
cl_gui_frontend_services=>executecl_gui_frontend_services=>execute(EXPORTING application = lv_path parameter = lv_url). lv_app - Google Chrome/Internet Browser path in the system, lv_url - URL of the website
 

BADIs


BADI

Descriptions

Reference

RSAR_CONNECTOR Badi for Custom formula
RSR_OLAP_BADI Virtual Characteristics and Key Figures in Rep
RSU5_SAPI_BADI Custom enhancements for data and hierarchy data
CRM_BWA_MFLOW CRM BADI for standard datasources. Custom datasources can use RSU5_SAPI_BADI
RSROA_VARIABLES_EXIT_BADI New BADI for Query variables
 

User Exits


User Exits

Descriptions

Reference

EXIT_SAPMRSRU_001 Virtual characteristic and key figure
EXIT_SAPLRRS0_001 Global variables in reporting
EXIT_SAPLRSAP_001 Transactional Data enhancements
EXIT_SAPLRSAP_002 Master Data ATTR enhancements
EXIT_SAPLRSAP_003 Master Data TEXT enhancements
EXIT_SAPLRSAP_004 Hierarchies enhancements

SAP TCodes

T-Codes Description T-Codes Description
FILE Logical File Path Definition AL11Files on server path
FIBF Business Event Transactions SU01User Role Assignment and Information
LBWG Deletion of setup tables SU53Authorization Object Errors
NPRT Log for setup of statistical data SP01Spool Requests
RSANWB APD Tcode SM62Creating Events
RSA1 Dataware house SQVICreating Joins / Dynamic Reports / SQL Query
RSA2 Display datasources RS_LOGSYS_CHECKCheck Source Systems
RSA3 Extract Checker RSODSO_SETTINGSDSO Settings
RSA5 Installing Data Source ST02 / 06Tune Summary ( CPU Utilization )
RSA6 Activated Datasources RSECADMINManagement of Analysis Authorizations - Roles
RSA7 BW Delta Queue LINK /ASU/STARTUpgrade Tool
RSBBS Jump Queries BD22Delete Change Pointers
RSBO InfoSpoke CHANGERUNMONIMonitor for Attribute Change Runs
RSDS Datasource Repository (replicate ds) BPHCRM Display BP Group Hierarchy
RSECAUTH Maintain Authorizations RSTMSAMOTMS Alert Viewer ( can be used for authorization checks )
RSKC Maintainance of Permitted characters STMSTransport Management System
RSPC Process Chain WE20EDI Partner Profiles ( Base table : EDPP1)
RSPC1 Single Process Chain SO23Creating email distribution Lists
RSRT Running the query SMQSqRfc Monitor / QOUT Scheduler / List of all systems connected 
RSRV Analysis and Repair of BI Objects SM59Configuration of RfC Connections
SCC1 Client transfer of changed : transfer individual transport requests directly out for the source client into the the current client ( * Check the checkbox for Tasks ) SCMASchedule Manager: Scheduler - Charm - Process failed transports manually
SE01 Transportation Organizer (Display Logs) SCOTEmail Communications
SE03 Transport Organization Tools SMICMInternet Communication Monitor - web services related
SE09 List of User Transports STRUSTTrust Manager - Webservices related
SE11 Tables (Create, Display,Change) CRM_UIOpen UI for CRM ( Might ask for login )
SE12 Tables (Display) CRMD_ORDERCRM Transactions 
SE13 Dictionary : Technical Settings DBACOCKPIT DBA Cockpit System Storage Space
SE14 ABAP Dictionary : Database utility
SE16 Tables Maintainance
SE18 BADI Builders (C,D,C)
SE19 BADI Implementations
SE24 Class Builders
SE37 Function Modules
SE38 Report Programs
SE80 Module pool Program
SE91 Message Classes
SE93 T-Codes Creation
SM12 Lock Objects
SM13 Queue
SM37 Backgound Jobs
SM50 Back Ground Processess
SM51 SAP Server information
SM69 External Commands Maintainance
SO01 Inbox
SU53 User Authorizations
TBE01 Library of the Publish&Subscribe Business Transaction Event
TBE24 Customer Products
TRFCQOUT tRFC Queue Description (Outbound Queue)

Functional TCodes


T-CodeFunctionalityAssociated Tables
ME23NPurchase Order DisplayEKKO,EKPO,EKET Etc
MB55List of GR / IR BalanacesGives the POs which are still open - Goods Received Not Equal to Invoiced, EKKN, 2LIS_06_INV
ME2LPurchasing Document Number Per Vendor EKKO, EKPO etc. 2LIS_02 Datasources
MB03Material Document DisplayMSEG
VA01-02-03Sales DocumentVBAP,VBPA Etc
MSKUSpecial Stocks with Customer
IW12Display Document Flow - flow of Service, Orders,Confirmations, Sales Doc, Billing Doc etc.
SCDOChange Documents CDHDR,CDPOS,TCDOB
VK13Display Condition Records - Material Pricing ConditionsKONH, KONP, A Tables
MB51Material Document ListMSEG
UKM_BP_DISPLAY
Credit ExposureDatasource : 0FSCM_CM_4
VF04 / VF08    Bill Plans    SE38 Program : GNBILLDL

Running LIS Setup for single values in documents

Trick for running setup tables for individual documents

2LIS setup table program does not have ability to give individual or range of order numbers. So we either have to run open or create multiple jobs with multiple ranges.
BUT,
There is a way to run setup tables for individual values or ranges - but the thing is we can run it only in foreground - but again, if runs pretty fast and can be used for smaller loads.

Go to the setup program - and in the SD document range, give a greater value in the From and smaller value in To as shown below and Execute in Foreground.


System will give a pop up saying " Start of order processing " and take you to the next page as below.


Here, go to select options  and give the values in single values or ranges and execute it.
The setup will run for the values.
You can enter around 500-1000 individual entries here ( that is the number i tried. may be you can enter more values )

RODPS_REPL_TEST

This should be used instead of RSA3 for ODP datasources.

Note:
In my experience, it did not act like RSA3.
So, when we want to check if there are delta entries for a datasource, we can run the datasource in RSA3 in  'D' mode and we can see data for the next delta.
For say, 0FI_AR_4 has 120 entries in RSA3 for 'D'. When we pull delta from BW, we do get those 120 entries.

Same is not the case when using this program.
There should already be a subsctiption with delta init for us to check the delta entries.
Like, For checking delta entries for datasource 0FI_AR_4, directly running the program with "Replication Mode :  Extraction of Last Delta" created a new subscription in ODQMON and did a Init with Data -> A full load.
After that, re-running the program again, created a new queue time stamps from last load to the new time and pulled delta entries.
But, I am not sure if there is another way to check delta entries with out doing the Init with Data load.


Online Resources
Replication Test with RODPS_REPL_TEST : Click HERE

ODQ_CLEANUP

As the name suggests , this is used to perform the clean up activities for ODP related processes.

Program Name : ODQ_CLEANUP
This job will be automatically triggered when the datasources are initialized the first time.

Default Job :  ODQ_CLEANUP_CLIENT_100

Reorganizing Delta Queues
ODQMON --> Goto --> Reorganize Delta Queues


The default values can be changed.
This is how I did - Cancel the scheduled job in SM37.
Change the selection screen parameters - Save it as variant and then schedule a new job with the new variant in it.

Check below links for more information

ODQMON


Below is the view of ODQMON.

Queues


Queue is created when a ODP datasource is created in any source systems. 
Queue status gives us if the queue is active / inactive in the system. Queue can be become inactive when [any | one (?)] subscription is deleted.
Subscription gives the count of subscriptions and requests gives total number of subscriptions.
You can click on "Calculate Data Volume ( Extended View ) to see more metrics. The reason it is not checked is that it takes more time to show the view due to all calculations.  

Subscriptions

Subscriber
This is the source from which we are requesting data. BW system is a subscriber.
Subscription
This is the name of the DTP ( for BW ) when technical name of switched on Or it will the timestamp on which the subscription is created.
Clicking on subcription takes you to the list of all subcriptions for that datasource.
You can see on the top that 'subscriptions' is greyed out which tells you which screen of ODQMON you are in.
Subscriber
Name of the subscriber. There can be multiple subscribers to a single ODP source. Below screen show has subcription from BW system.
Subscription : Name of the subscription. In case of BW, it would be name of the DTP created for the source.
Requests
No. of subscriptions for the datasource
Last TSN confirmed
TSN : Transaction Sequence Number.
This is the timestamp when the request was completed(?)
Last TSN Requested
This is when the request came from the source
Other fields give info.

Requests


Use Technical Names when reading data.
Composite Request
This is the DTP Request ID which initiated in BW by DTP. This can be found in DTP header details. If you switch off the technical names, you can see the timestamp in form
{2017-01-01 14:43:15 000009 EST} , else, you can see the DTRP_* ID .
Subscription
Name of the DTP / Timestamp when it was created, when technical names off
Extraction Requests
This has the timestamp when the request originated from the source.
Lower Limit for TSN
This is the timestamp of the last successful delta.
Upper Limit for TSN
This is when the new delta is triggered.
Point-To-Remember
ODP does not capture timestamps of delta when 0 records are extracted.
eg : A DTP is run at 10 PM on 4th January,2017 and then at 9:AM , 12:PM, 4 PM and 8 PM on 5th January,2017.
Delta 2017-01-04 22:00:00 had 10 records as delta.
Delta 2017-01-05 09:00:00 had 15 delta records
Lower TSN : 2017-01-04 20:00:00 Upper TSN : 2018-01-05 09:00:00
Delta 2017-01-05 12:00:00 had 0 records
Lower TSN : 2018-01-05 09:00:00 Upper TSN : 2018-01-05 09:00:00 - Because that was when delta records flowed.
Delta 2017-01-05 16:00:00 had 0 records
Lower TSN : 2018-01-05 09:00:00 Upper TSN : 2018-01-05 09:00:00 - Because that was when delta records flowed. The limits are same as earlier one.
Delta 2017-01-05 20:00:00 had 20 records
Lower TSN : 2018-01-05 09:00:00 Upper TSN : 2018-01-05 20:00:00 - The lower limit remains when the last delta with records to upper limit which is present timestamp.
Extraction Mode
Type of Extraction
Background Job
This is the job which extracts data . ODQ_<Date>_<TimeUTC>_<sequence>_C.
Selection
If any selections are present in the DTP

Units

This is where you can see the the actual request data. This only has requests which had delta records.
Unique Time Stamp ID - TSN
The sequential transaction number (TSN) sorts transactions that write data to the delta queue into a defined sequence, with regard to delta replications. The sequential transaction number is set at the end of a transaction, shortly before the database commit, and then assigned to the transaction ID of this transaction.
Transaction ID : 
The transaction ID identifies a transaction from the perspective of the delta queue. The ID is assigned to the queue at the start of a transaction, in other words, before data from this transaction is written to the queue. Therefore the ID does not necessarily reflect the commit sequence when two transactions are compared. The commit sequence is only defined when a TSN is assigned at the end of a transaction, shortly before the database commit
It also gives Rows, Size etc.
Double click on the TSN, and it gives you data this specific request has extracted.

Data is present in the queue depending on the "Reorganize Delta Queues" setting in the system.
Data can be retrieved as long as the request is seen but once reorg. delta queues are done, that delta will be missed.


Checking New Delta Records in ODP

For (some) of the regular datasources, when new deltas are generated, we can see them in RSA3. That is not the same for ODP datasources.
We need to see that data here in ODPMON.

Go to ODQMON -> Subscription. Here check  'Calculate Data Volume'.
If there are values showing up in the Units and Rows, that means that this datasource has new delta entries which can be extracted to BW or other source systems.
If it is 0, there are no delta entries generated after previous extraction.


If you want to see the records, double click in on the subscription and go to the requests and unit.
There is no pointer here to tell which transaction IDs are extracted in Target systems.
But, depending on the timestamps of the last extraction , we can see which of the TIDs are yet to be extracted.
TIDs are generated when there is a change in the system.So we do not have all the changes written to the same TID.
In the screen shot, there are 4 units and 20 Rows.
That does not mean, all the 20 rows are part of one TID. 8 rows can be written at one and 2 at one time and 10 at the other time.
When it is extracted to BW, everything from the last run is extracted.
This is kind of similar to seeing data in RSA3, expect we cannot see all the data at one, instead check individual TIDs depending on timestamp.

Do remember that if 'Calcualte Data Volume' is not clicked, we do not see entries in the subscription screen.

ODP

Introduction

Operational Data Provisioning provides a technical infrastructure that you can use to support two different application scenarios. 
- Operational analytics for decision making in operative business processes. 
- Data extraction and replication.

Here mostly we will talk only about Data Extraction and Replication ( and mostly to BW ).


The R.H.S shows Providers which supply data to ODQ which is read by Consumers ( Subscribers ).
Eg : Here, Datasource ( Extractors ) basically refers to BW Extractors ( eg: 0FI_AP_4 or 2LIS_02_ACC etc.).
Once the datasources are ODP enabled ( SAP Note 0002232584 ) , They act as ODP Providers.
When BW System is reading data from ODQ, it becomes the subscriber.

One Source can provide data to multiple subscribers.
0FI_AP_4 Data can be read by SAP BW, SAP Data Services etc.

Context
A context represents a source of ODPs.
( Providers - Like sources which can be used - like SAP Extractors, HANA Views ? ).
Context identifiers exist for all technologies whose analytical views can be exposed as ODPs.
Determination of available contexts in system is done
via CL_RODPS_DEFAULT_CONTEXT->GET_CONTEXT_LIST


The main advantage of ODP in BW is we need not use PSA anymore ( that also means, we cannot correct invalid records in PSA - May be we can use Error DTPs ? )

ODP FAQs       - Click HERE
ODP Overview - Click HERE

Creating a ODP Datasource
Creating and ODP datasource is same as regular datasources.
If you know the datasource already exists in your source system, you can either replicate the datasource or create a datasource by right clicking.
Make sure that the datasource is ODP enabled before creating.Running BS_ANLY_DS_RELEASE_ODP make a datasource available as an ODP.

You can use the same name as the regular datasource and rename it.
once the datasource / transformation / DTP is created, run the DTP and it will create an entry in ODQMON.

Points to Remember
  • Check if a datasource is ODP enabled. If the right hand side icon is Green, it is released and can be used. If red, we need to implement below mentioned note and other steps to make them available.
  • Implement SAP Note 0002232584 to release datasources to ODP. 
    • This will install program BS_ANLY_DS_RELEASE_ODP when executed, This program add entry in table ROOSATTR and makes field EXPOSE_EXTERNAL = ‘X’.
    • Run program RODPS_OS_EXPOSE to expose zdatasources to ODP.
  • Not all datasources in the excel sheet are relaeased
    • Not all datasources are released for ODP. Go to RSA5/6 and check the datasource. If the datasource is in red  , it means it is not released for ODP.
    •   Eg: 0EQUIPMENT_ATTR
    •   Check Note 2173041
  • Initialization
    • There is no separate initialization. DTP when run for the first time, does initialization along with data load. There is an option to do init with out data transfer ( Delta init with out data).
    • When the DTP is run again, it will act as Delta DTP.
  • Delta Functionality
    • Everything remains same the jobs in the background. It's just that the collective job would now write to ODQMON. If the same data source is used for traditional approach as well then the delta would be written to both ODQMON and RSA7.


Change Mode Field : ODQ_CHANGEMODE
'C' The data record was created as new record in the source.
'U' The data record was changed in the source. Depending on the delta procedure, the delta can contain up to two data records for one changed record in the source.
'D' The data record was deleted from the source.

ODP Tables

Tables

Description

Extra Notes

ODQDATAData Store for DeltaContains all compressed Delta request Data
ODQDATA_FData Storage for One-Off ExtractionContains compressed Full request Data
ODQDATA_CData Storage for Delta Init.Contains compressed Init request Data
ODQREQOperational DeltaQueue: General Request

ODP TCodes & Std.Programs

Name

Description

Extra Notes

ODQMONODP Delta monitorMonitor for all delta queues : Notes
ODP_CLEANUPClean up programNotes
RODPS_REPL_TESTCheck data in the delta - Like RSA3Notes
BS_ANLY_DS_RELEASE_ODPReleases datasources to ODPSAP Notes 2232584 
RODPS_OS_EXPOSERelease Z Datasources to ODP

Errors and Solutions

Click HERE

DTP Failures
Subscription for DTP_ deleted in source system ODP...... See long text.

Online content
Data Acquisition with ODP and SLT (SAP) - Video
Reporting on Operational Data Providers     - Link
Data Loading to BW From ECC using ODP – SAP HANA Information Views - Link
Logistics(LO) Extraction with ODP Framework - Link

Core Data Services

Introduction
ABAP Core Data Services - Introduction ( ABAP CDS View ) - Click HERE 
Points to Remember
  • CDS started with BW 7.4 but is more effective from BW 7.5
  • CDS Views need to be transported from system to system
  • Created using eclipse interface
  • Used to create complex joins
  • Can be read from IDT

 Useful Links

ABAP Messages

If there is an output message coming in the below format
 message id sy-msgid type 'S' number sy-msgno
          with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

You can actually pas the whole message into a text variable using INTO
 message id sy-msgid type 'S' number sy-msgno  INTO DATA(lv_error_text)
          with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.