ABAP code for the program that will create dynamic prompt file on the application server
*&---------------------------------------------------------------------*
*& Report ZBPC_DAILY_BACKUP_PROMPT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZBPC_DAILY_BACKUP_PROMPT.
*&---------------------------------------------------------------------*
*& Report ZBPC_PROMPT1
*&---------------------------------------------------------------------*
*& Program to create a dynamic prompt file for BPC backup routines which will be executed
*& by program UJD_TEST_PACKAGE
*& Written by Peter Warren peter.warren@biconsultancysolutions.com 9 Aug 2018
*&---------------------------------------------------------------------*
*set up variables
data: endmessage(100),TEXT2(20) type c.
data: lv_string(250) type c.
data: fname(60).
data: TEXT1 type string.
DATA: ld_day TYPE c.
* Call function to get the day number using the system date sy-datum
CALL FUNCTION 'DATE_COMPUTE_DAY'
EXPORTING
date = sy-datum
IMPORTING
day = ld_day.
* Depending on the value returned to ld_day which will be a value from 1 to 7 - create a name for the output file which is different each day.
CASE ld_day.
WHEN '1'.
TEXT2 = 'MONDAY.CSV'.
WHEN '2'.
TEXT2 = 'TUESDAY.CSV'.
WHEN '3'.
TEXT2 = 'WEDNESDAY.CSV'.
WHEN '4'.
TEXT2 = 'THURSDAY.CSV'.
WHEN '5'.
TEXT2 = 'FRIDAY.CSV'.
WHEN '6'.
TEXT2 = 'SATURDAY.CSV'.
WHEN '7'.
TEXT2 = 'SUNDAY.CSV'.
WHEN OTHERS.
MESSAGE '...' TYPE 'E'.
TEXT2 = 'NAMING OF FILE FAILED'.
ENDCASE.
* Now create the variable part of the %SELECTION% parameter which will pick differing values of the category dimension depending on what month number is in the system date sy-datum 2 characters starting from position 4
*Note the values created by BPC for the %SELECTION% prompt are preceded by
*/%APPSET%/%APP%/PRIVATEPUBLICATIONS/%USER%/TempFiles/FROM.TMP but you can drop this and just use the bit from @@@SAVE onwards
CASE sy-datum+4(2).
WHEN '01'.
TEXT1 = '@@@SAVE@@@@@@EXPAND@@@|DIMENSION:CATEGORY|FCST_12,FCST_01|'.
WHEN '02'.
TEXT1 = '@@@SAVE@@@@@@EXPAND@@@|DIMENSION:CATEGORY|FCST_01,FCST_02|'.
WHEN '03'.
TEXT1 = '@@@SAVE@@@@@@EXPAND@@@|DIMENSION:CATEGORY|FCST_02,FCST_03|'.
WHEN '04'.
TEXT1 = '@@@SAVE@@@@@@EXPAND@@@|DIMENSION:CATEGORY|FCST_03,FCST_04|'.
WHEN '05'.
TEXT1 = '@@@SAVE@@@@@@EXPAND@@@|DIMENSION:CATEGORY|FCST_04,FCST_05|'.
WHEN '06'.
TEXT1 = '@@@SAVE@@@@@@EXPAND@@@|DIMENSION:CATEGORY|FCST_05,FCST_06|'.
WHEN '07'.
TEXT1 = '@@@SAVE@@@@@@EXPAND@@@|DIMENSION:CATEGORY|FCST_06,FCST_07|'.
WHEN '08'.
TEXT1 = '@@@SAVE@@@@@@EXPAND@@@|DIMENSION:CATEGORY|FCST_07,FCST_08|'.
WHEN '09'.
TEXT1 = '@@@SAVE@@@@@@EXPAND@@@|DIMENSION:CATEGORY|FCST_08,FCST_09|'.
WHEN '10'.
TEXT1 = '@@@SAVE@@@@@@EXPAND@@@|DIMENSION:CATEGORY|FCST_09,FCST_10|'.
WHEN '11'.
TEXT1 = '@@@SAVE@@@@@@EXPAND@@@|DIMENSION:CATEGORY|FCST_10,FCST_11|'.
WHEN '12'.
TEXT1 = '@@@SAVE@@@@@@EXPAND@@@|DIMENSION:CATEGORY|FCST_11,FCST_12|'.
WHEN OTHERS.
MESSAGE '...' TYPE 'E'.
ENDCASE.
*Now join the parts together and make sure that you insert a horizontal_tab between the parameter name and its value and also put a CR_LF at the end of each line.
Concatenate:'%SELECTION%' cl_abap_char_utilities=>horizontal_tab TEXT1 CL_ABAP_CHAR_UTILITIES=>CR_LF '%OUTPUTFILE%' cl_abap_char_utilities=>horizontal_tab TEXT2 CL_ABAP_CHAR_UTILITIES=>CR_LF INTO lv_string.
fname = '/usr/sap/trans/BPC_PROMPT.txt'.
OPEN DATASET fname FOR OUTPUT IN TEXT MODE encoding default.
transfer lv_string to fname.
close dataset fname.
Concatenate:fname ' created sucessfully backup file will be called - ' TEXT2 into endmessage.
write endmessage.