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 ;) ]
Learn and Let Learn - Trying to document things I have learned /gathered ( mostly SAP ) in one place , yeah, some other stuff too
Monday, March 26, 2018
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
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.
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
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 ;
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
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.
RSADMIN
Table : RSADMINThis 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
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.
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_USERS | Assignment of roles to users | RSTS | Table for transfer structures |
BTCUEV | User event IDs for background processing | RSLDPIO | Links datasource to infopackages |
DD03M | Table fields with data elements, text, and domains | RSLDPIOT | InfoPackage Text Description |
E070 | Change & Transport System: Header of Requests/Tasks | RSLDPRULE | ABAP source code for InfoPackages |
E07T | Change & Transport System: Short Texts for Requests/Tasks | RSLDPSEL | Hardcoded selections in InfoPackages |
ROOSFIELD | DataSource Fields | RSMONICDP | Contains the request-id number by data target |
RSAABAP | ABAP routine - source code; - CODEID = Enter in Start Routine/End/Expert/Global Rouintes in table RSTRAN | RSPAKPOS | List of InfoPackage Groups / InfoPackages |
RSADMINC | Customizing Table General BW | RSSELDONE | InfoPackage selection and job program |
RSANT_PROCESSI | Analysis Process TLOGO Index ( APD DSO relation ) | RSZELTTXT | Bex Description Table |
RSBKDTP | BW: Data Transfer Process Header Data | RSRREPDIR | Directory of all BEX reports |
RSBKREQUEST | DTP Request | RSLDPIO | Infopackage / Datasource link |
RSDCHABAS | InfoObject details : Basic characteristics (for chars, time-chars and units) | RSBODSLOGSTATE | Changelog Status for ODS Object |
RSDODSO | All details of the DSO | RSBODSLOG | Requests in ODS Changelog |
RSECVAL | Authorization Value Status | RSBASIDOC | List of Source systems |
RSHIEDIRT | Hierarchy Catalog | RSDIOBCIOBJ | InfoObject Catalog |
RSHIEDIRT | Hierarchy directory texts | RSZELTXREF | Directory of query element references. If you give the query element ID, it gives the source / Infoprovider information |
RSICCONT | Monitor: 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_ASGN | Assignment of Default LP Name to Proxy Class for WS Client |
RSISOSMAP | Mapping Between InfoSources and OLTP Sources | RSQISET | Infosets |
RSLDPIO | Log.data packet: No. | TVARVC | Maintain 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 |
RSLDPSEL | Selection table for fields scheduler | RSSTATMANPSA | Store for G_T_PART of Request Display in DTA Administration( DMFLAG gives if a specific request is loaded to PSA ) |
RSOLTPSOURCE | Transfer structure table | DEVACCESS | Table for development user - Has Access codes / Access Key |
RSOSSEGMAP | Mappings between infosouece and systems | RSADMINA | Control Table That Customer Can Change - Contains information of system user ( BWREMOTE ) - Maintenance View : RSADMIN |
RSPCCHAIN | Process chain | THOL | Public Holidays / THOLT - Texts / |
RSPCVARIANT | Generic Variant-Storage of Process Chains | THOLU | Dates of movable public holidays |
RSREQDONE | Monitor: Saving of the QM entries (infopak details) PSA Request Status | ROOSGEN | Generated Objects for OLTP Source | Contains datasources in that specific Source system |
RSRPARAMETRIZA | Parametrization for a query, workbook, webapplication, pla | RSREQICODS | Monitor: Saving of the updated IC and ODS per request - DSO requests table |
RSTSODSREQUEST | Request directory ODS; which request is in which ODS | RSDDAGGRMODSTATE | Status 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 |
RSTRAN | Information on Transformations | RSLOGSYSMAP | Mapping of logical systems fir transport of InfoSources |
RSUPDROUT | Update rules - ABAP routine - check table | rsdsseg | DataSource - Segments - Has PSA table name of the datasource |
RSZELTDIR | Directory 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 ) | SEOCOMPO | BADI Class/Interface component |
TADIR | Directory of Repository Objects | TTZD / TTZDV | Summer time rules (variable dates) - Day light savings tables - Available in BW and Source systems |
RSDIOBJ | Directory of all InfoObjects | RSSDLINIT | Last Valid Initializations to an OLTP Source - Delta |
RSODSSETTINGS | Settings for an ODS - DSO | RSMDATASTATE_EXT | Additional Summation Status of Data in Data Targets | Total Count of Requests |
SXC_CLASS | Exit, implementation side: Class assignment (multiple) - BADI Implementation Name Interface Classes | RSPCCHAIN_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. |
RSPCPROCESSLOG | Logs for the Chain Runs | BALDAT | Application 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_READ | Displays the change document information |
RSSCD100 | |
RSDG_TRFN_ACTIVATE | Activates transformation and DTP |
RSBTCDEL2 | Cleaning background jobs in the system |
RSDS_DATASOURCE_ACTIVATE_ALL | Activate datasource |
RSDG_ODSO_ACTIVATE | Activate 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 |
RSBKDTPDELETE | Delete DTPs |
RS_DELETE_TLOGO | Delete Objects from BW |
RSSM_OLTP_INIT_DELTA_UPDATE | update 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_DELETE | Delete 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_ALL | Consistency check of Master data infoobjects |
RS_ABAP_SOURCE_SCAN | Checks ABAP Code for infoobjects tables and DSO RSAABAP |
RSDG_MPRO_ACTIVATE | Activate Multiprovider |
RSAR_PSA_CLEANUP_DIRECTORY | Clean PSA : Adjusts the PSA Tables |
RSAN_PROCESS_EXECUTE | APD standard Program : Variant would be APD name |
RSWATCH0 | Access AL11 tcode |
RSFUNCTIONBUILDER | Access SE37 |
RSIMPCURR | Update Currency from ECC |
RSIMPCUST | Update Currency Units |
RSDDTREX_INDEX_DELETE | Delete BIA indexes |
RSDDTREX_BIA_ACTIVATE_FILL | Create 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_OLTP | Delete initialization for all datasources |
RS_B4HANA_CHECK_ENABLE | Standard Program to check If wish to BW/4HANA can be enabled |
RS_TRANSTRU_ACTIVATE_ALL | Activate InfoStructures |
RBDLSMAP | Running BDLS - Logical System Name Conversion . More Notes : LINK |
BS_ANLY_DS_RELEASE_ODP | Releases datasources to ODP : SAP Notes 2232584 |
RODPS_OS_EXPOSE | Release Z Datasources to ODP |
RSARFCER | Delete TRfC IDocs |
RSARFCEX | Execute IDocs TRfc |
Process Chain Monitoring | /SSA/BWT |
BTC_EVENT_RAISE | Trigger / Raise event |
ADBC_TEST_CONNECTION | Testing DBConnect |
RMCEXCHK | Check report for locating open data extraction tasks - MCEX queues |
CRM_ORDER_READ | For any information in CRM |
GNBILLDL | Bill 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_OBJECTS | List of objects which have classification defined | http://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_CREATE | Create InfoObjects | strucuture BAPI6108 has all the input parameters needed for creating Infoobjects. For ignoring Master Data - Use NOVALFL = 'X' |
BAPI_IOBJ_ACTIVATE_MULTIPLE | Activate Multiple InfoObjects | |
BAPI_IOBJ_CHANGE | Change details of InfoObject | |
BAPI_IOBJ_GETDETAIL | Get 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_TEXT | Base Table STXH / Text Objects SE75 ( Double click on the Object and it will give list of all Text IDs assosiated / TextID text table TTXTIT | This 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_GET | This is used to change the delta pointer value in table ROOSGENDLM for zdatasources | Enter 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_GET | Get InfoObject Details | |
RSD_IOBJ_USAGE | Get InfoObject Usage | |
RSDDS_AGGR_MOD_CLOSE | Removing Master Data Locks | Attribute 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_4 | XXL Attribute Fm | |
RST_TOBJ_SHIFT | Add/Subtract years from Fiscal Period | |
RSPC_API_CHAIN_START | Run the process chain when Metachain or API | Start using Meta Chain or API |
RSW_CURRENCY_TRANSLATION | Currency translation from One Currency to anothere | |
RSZ_I_BASIC_CHA_WHERE_USED | Get Characteristic InfoObject usage | |
RSZ_I_BASIC_KEYFIG_WHERE_USED | Get 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_IMPORT | Transport Import | System 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_CHECK | Used 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_REMOTE | Remote activation of a process chain | On 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_DELETE | Delete individual logs for process chain | This one need only the LOGID. I_force = 'X' ( Ignore errors, always delete ) |
CRM_ORDER_READ | Read any data in CRM | The 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=>execute | cl_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 | AL11 | Files on server path |
FIBF | Business Event Transactions | SU01 | User Role Assignment and Information |
LBWG | Deletion of setup tables | SU53 | Authorization Object Errors |
NPRT | Log for setup of statistical data | SP01 | Spool Requests |
RSANWB | APD Tcode | SM62 | Creating Events |
RSA1 | Dataware house | SQVI | Creating Joins / Dynamic Reports / SQL Query |
RSA2 | Display datasources | RS_LOGSYS_CHECK | Check Source Systems |
RSA3 | Extract Checker | RSODSO_SETTINGS | DSO Settings |
RSA5 | Installing Data Source | ST02 / 06 | Tune Summary ( CPU Utilization ) |
RSA6 | Activated Datasources | RSECADMIN | Management of Analysis Authorizations - Roles |
RSA7 | BW Delta Queue LINK | /ASU/START | Upgrade Tool |
RSBBS | Jump Queries | BD22 | Delete Change Pointers |
RSBO | InfoSpoke | CHANGERUNMONI | Monitor for Attribute Change Runs |
RSDS | Datasource Repository (replicate ds) | BPH | CRM Display BP Group Hierarchy |
RSECAUTH | Maintain Authorizations | RSTMSAMO | TMS Alert Viewer ( can be used for authorization checks ) |
RSKC | Maintainance of Permitted characters | STMS | Transport Management System |
RSPC | Process Chain | WE20 | EDI Partner Profiles ( Base table : EDPP1) |
RSPC1 | Single Process Chain | SO23 | Creating email distribution Lists |
RSRT | Running the query | SMQS | qRfc Monitor / QOUT Scheduler / List of all systems connected |
RSRV | Analysis and Repair of BI Objects | SM59 | Configuration 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 ) | SCMA | Schedule Manager: Scheduler - Charm - Process failed transports manually |
SE01 | Transportation Organizer (Display Logs) | SCOT | Email Communications |
SE03 | Transport Organization Tools | SMICM | Internet Communication Monitor - web services related |
SE09 | List of User Transports | STRUST | Trust Manager - Webservices related |
SE11 | Tables (Create, Display,Change) | CRM_UI | Open UI for CRM ( Might ask for login ) |
SE12 | Tables (Display) | CRMD_ORDER | CRM 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-Code | Functionality | Associated Tables |
ME23N | Purchase Order Display | EKKO,EKPO,EKET Etc |
MB55 | List of GR / IR Balanaces | Gives the POs which are still open - Goods Received Not Equal to Invoiced, EKKN, 2LIS_06_INV |
ME2L | Purchasing Document Number Per Vendor | EKKO, EKPO etc. 2LIS_02 Datasources |
MB03 | Material Document Display | MSEG |
VA01-02-03 | Sales Document | VBAP,VBPA Etc |
MSKU | Special Stocks with Customer | |
IW12 | Display Document Flow - flow of Service, Orders,Confirmations, Sales Doc, Billing Doc etc. | |
SCDO | Change Documents | CDHDR,CDPOS,TCDOB |
VK13 | Display Condition Records - Material Pricing Conditions | KONH, KONP, A Tables |
MB51 | Material Document List | MSEG |
UKM_BP_DISPLAY
| Credit Exposure | Datasource : 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 )
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
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
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
SubscriberThis 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 |
ODQDATA | Data Store for Delta | Contains all compressed Delta request Data |
ODQDATA_F | Data Storage for One-Off Extraction | Contains compressed Full request Data |
ODQDATA_C | Data Storage for Delta Init. | Contains compressed Init request Data |
ODQREQ | Operational DeltaQueue: General Request | |
ODP TCodes & Std.Programs
Name | Description | Extra Notes |
ODQMON | ODP Delta monitor | Monitor for all delta queues : Notes |
ODP_CLEANUP | Clean up program | Notes |
RODPS_REPL_TEST | Check data in the delta - Like RSA3 | Notes |
BS_ANLY_DS_RELEASE_ODP | Releases datasources to ODP | SAP Notes 2232584 |
RODPS_OS_EXPOSE | Release Z Datasources to ODP | |
Errors and Solutions
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
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
Syntax
Tables |
Description |
Link/Notes |
Remove Leading Zeroes | ltrim(matnr,'0') as Matnr_Test | link |
Substring | substring(date,1,4) as begin_year, | |
Concatenation | concat('A','B') Nested concat concat(substring(date,1,4),concat(concat('-',substring(date,5,2)),concat('-',substring(date,7,2)))) as Start_date1, | concat only takes 2 parameters at a time. if you need more than one concatenation, you need to nested concat statements link |
Useful Notes
Subscribe to:
Posts (Atom)