Sie sind auf Seite 1von 4

SAP ABAP Useful Developments: Demo Report on Generate Subroutine Pool, Execute Airthmetic For...

http://www.sapabapcodes.com/2011/12/demo-report-on-generate-subroutine-pool.html

Place for Innovative ABAP Source Codes...

Home

Contact us

Demo Report on Generate Subroutine Pool, Execute Airthmetic Formula Dynamically


Dynamic Reports is 1 of my Favorite Area to work cause of its Limitless Power to Implement any Logic. In SAP ABAP to achieve Dynamic Reporting we have to use Report within Report using Command GENERATE SUBROUTINE POOL. So, To Show the Power for Dynamic Programming I have Created Small Report which Execute any Formula with all Possible Arithmetic Operations along with 2 Screen Inputs Name as V1 , V2. Please Look in to Code and Execution Screen Shots.

1.Selection Screen

2.Output

Without Screen Inputs:

1 of 4

11/02/2013 19:13

SAP ABAP Useful Developments: Demo Report on Generate Subroutine Pool, Execute Airthmetic For...

http://www.sapabapcodes.com/2011/12/demo-report-on-generate-subroutine-pool.html

Source Code: **"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"* * Report : ZST_DYN_FORMULA * Request No : Local * Developed by : Stallone Christian * Requested on : * Description : **"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"* *Extra Info: ************************************************************************ *Simple Example of Dynamic Report Which Performs Arithmetic Operations *Use Screen Vairables V1 OR V2 if require so ************************************************************************ REPORT ZST_DYN_FORMULA. " Declaration for Dynamic Subroutine DATA: DYN_PROGRAM TYPE STRING, DYN_TABLE TYPE STANDARD TABLE OF STRING, DYN_WA TYPE STRING, DYN_MESS TYPE STRING, DUMP_ID TYPE STRING, TMP_CHAR TYPE STRING, "For Formula IT_FORMULA TYPE STANDARD TABLE OF STRING, WA_FORMULA TYPE STRING, "For Data ANS TYPE P LENGTH 15 DECIMALS 2. DEFINE REPLACE_STR. CLEAR TMP_CHAR. CONCATENATE SPACE &1 SPACE INTO TMP_CHAR SEPARATED BY SPACE. REPLACE ALL OCCURRENCES OF &2 IN FORMULA WITH TMP_CHAR IGNORING CASE. END-OF-DEFINITION. DEFINE SPCL_REPLACE_STR. CLEAR TMP_CHAR. TMP_CHAR = &2. REPLACE ALL OCCURRENCES OF &1 IN FORMULA WITH TMP_CHAR IGNORING CASE. END-OF-DEFINITION. DEFINE REPLACE_OPERATOR. CLEAR TMP_CHAR. CONCATENATE SPACE &1 SPACE INTO TMP_CHAR SEPARATED BY SPACE. REPLACE ALL OCCURRENCES OF &1 IN FORMULA WITH TMP_CHAR IGNORING CASE. END-OF-DEFINITION.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT001. SELECTION-SCREEN SKIP 1. """""""""Value 1 SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (25) TEXT002 FOR FIELD P_V1. PARAMETERS P_V1 TYPE P LENGTH 15 DECIMALS 2. SELECTION-SCREEN END OF LINE. """""""""Value 2 SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (25) TEXT003 FOR FIELD P_V2. PARAMETERS P_V2 TYPE P LENGTH 15 DECIMALS 2. SELECTION-SCREEN END OF LINE. """""""""Formula SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (25) TEXT004 FOR FIELD FORMULA. PARAMETERS FORMULA TYPE CHAR100 DEFAULT '(((V2*10)-V1)+2)/30'. SELECTION-SCREEN END OF LINE. "Text SELECTION-SCREEN SKIP 1. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (70) TEXT005. SELECTION-SCREEN END OF LINE.

2 of 4

11/02/2013 19:13

SAP ABAP Useful Developments: Demo Report on Generate Subroutine Pool, Execute Airthmetic For...

http://www.sapabapcodes.com/2011/12/demo-report-on-generate-subroutine-pool.html

SELECTION-SCREEN END OF BLOCK B1. LOAD-OF-PROGRAM. TEXT001 = 'Enter Values with Formula to be Executed'. TEXT002 = '1st Value (V1) :'. TEXT003 = '2nd Value (V2) :'. TEXT004 = 'Formula'. TEXT005 = '* To use Screen Inputs Maintain Formula with V1 & V2 Parameters'. START-OF-SELECTION. "Filter Formula to SAP Format PERFORM FILTER_FORMULA. DYN_WA = 'PROGRAM dynamic_report.'. APPEND DYN_WA TO DYN_TABLE. DYN_WA = 'form dyn_form using V1 V2 changing ans.'. APPEND DYN_WA TO DYN_TABLE. CONCATENATE 'ans' '=' FORMULA '.' INTO DYN_WA SEPARATED BY SPACE. APPEND DYN_WA TO DYN_TABLE. DYN_WA = 'endform.'. APPEND DYN_WA TO DYN_TABLE. CLEAR DYN_WA. "*Genrate Dynamic Program GENERATE SUBROUTINE POOL DYN_TABLE NAME DYN_PROGRAM MESSAGE DYN_MESS SHORTDUMP-ID DUMP_ID. IF SY-SUBRC = 0. CLEAR DYN_MESS. PERFORM ('DYN_FORM') IN PROGRAM (DYN_PROGRAM) USING P_V1 P_V2 CHANGING ANS. CLEAR TMP_CHAR. TMP_CHAR = ANS. CONCATENATE 'Your Ans is :' TMP_CHAR INTO TMP_CHAR SEPARATED BY SPACE. MESSAGE TMP_CHAR TYPE 'I'. ELSE. MESSAGE DYN_MESS TYPE 'I'. ENDIF. *&---------------------------------------------------------------------* *& Form FILTER_FORMULA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM FILTER_FORMULA . "For Braces, All Signs " * " * " * " * " * " * " * " * " * " * " * " * " * " * Start SPCL_REPLACE_STR: 'SQRT(' 'SQRT', 'SQRT (' 'SQRT', '**' 'POWER'. REPLACE_OPERATOR: '(', ')', '*', '/' , '+', '-'. SPCL_REPLACE_STR: 'sqrt' 'POWER' 'sqrt(', '**'.

REPLACE_OPERATOR: '**', '*-', '/-'. " * " * End " * " * " * " * " * " * " * " * " * " * " * " * " * "Change Variables "From Actual Report to Dynamic Sub Routine Formal Parameters "1st Formal "2nd Actual from Forumula REPLACE_STR : 'V1' 'V1', 'V2' 'V2'. REPLACE ALL OCCURRENCES OF REGEX '=' IN FORMULA WITH SPACE. "Last Conversion CLEAR: IT_FORMULA, WA_FORMULA.

3 of 4

11/02/2013 19:13

SAP ABAP Useful Developments: Demo Report on Generate Subroutine Pool, Execute Airthmetic For...

http://www.sapabapcodes.com/2011/12/demo-report-on-generate-subroutine-pool.html

4 of 4

11/02/2013 19:13

Das könnte Ihnen auch gefallen