FILE_OPEN_DIALOG problem ?

hi
please help
i have problem with FILE_OPEN_DIALOG
can anybody create a sample fmb for me ?
Thanks a lot;
Email : [email protected]
FILE_OPEN_DIALOG (DIRECTORY_NAME IN VARCHAR2, FILE_NAME IN VARCHAR2, FILE_FILTER IN VARCHAR2, TITLE IN VARCHAR2)
RETURN VARCHAR2;
Message was edited by:
mm2236

You can see the code in the webutil.pll library.
FUNCTION CLIENT_GET_FILE_NAME (directory_name Varchar2 := NULL,
                               file_name      Varchar2 := NULL,
                               file_filter    Varchar2 := NULL,
                               message        Varchar2 := NULL,
                               dialog_type    Number   := OPEN_FILE,
                               select_file    Boolean  := TRUE) return Varchar2 is                             
* CLIENT_GET_FILE_NAME
*   Client (Browser) side implementation of the standard GET_FILE_NAME Built-in
*   Used to display File Open, Save  and directory listing dialogs
*   Implemented using calls to WEBUTIL_FILE
* Version 1.0.0
* Change History
*   1.0.0 DRMILLS 23/DEC/2002 - Creation
\*********************************************************************************/ Here is one example:
the_file := client_get_file_name('c:/', null, 'All Files (*.*)|*.*|',null,open_file,true);Francois

Similar Messages

  • Serious Performance Problems in ABAP Reports

    Hi All,
    We are developing ABAP reports for SAP IS-U/CCS Modules and facing Performance issues.Whole scenario is given below.Please suggest some solution.
    1. Total No. Of Business Partners = 1500000
    2. Reports Selection Criteria are of two types:
         a) GSBER(Business Area) - Selection for atleast 200000 Business Partners
         b) Cokey(Division)     - Selection for around 1000 to 50000 Business Partners
    3. For implementing our reports logic we have to access several tables all of which are very large.They are :
         Table Name     No. of records (Appx)          
         DBERCHV               20000000
         DBERCHZ1              20000000
         DBERDLB               20000000
         DFKKKO                20000000
         DFKKOP                20000000
         EANLH                  4000000
         ERCH                  10000000
         ERCHC                 10000000
         ETTIFN                30000000
         EVER                   1500000
         FKKVKP                 1500000
         TECOKT                     500     
         TGSBT                       12
    4. Due to large no. of records we are facing problems at two levels:
         a) OpenSQL Statement is taking too much time for data selection
         b) Since large no. of records are selected Corresponding loops and data processing also takes much time
    5. We have tried almost all ABAP Performance optimization techniques such as using Index, SQL optimization techniques,Read Table Optimization, Loop Statement Optimization etc. but there is not much improvement.
    6. For example one of our Reports "R15" takes around 1500 seconds for 1000 Business Partners.
    Its Code is attached below:
    <b>a) ZISU_SCHL_LTR15_BAPI - Program which schedules actual R15 report in background</b>
    *& Report  ZISU_SCHL_LTR15_BAPI                                        *
    *& Developed By : Piyusha Kirwai                                       *
    *& Date         : 02/12/2005                                           *
    *& Purpose      : To Schedule the LT R 15 prog in background and store
    *& the File for Manual R-15 into server.
    REPORT  ZISU_SCHL_LTR15_BAPI  NO STANDARD PAGE HEADING.
    TABLES ZEVERFKKVKP.
    DATA:  DYFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.
    DATA: IT_TAB TYPE FILETABLE,
          GD_SUBRC TYPE I.
    DATA: LV_GSBER TYPE TGSBT-GSBER.
    RANGES R_COKEY FOR ZEVERFKKVKP-COKEY.
    DATA: BEGIN OF GT_TECOKT OCCURS 100,
            COKEY TYPE TECOKT-COKEY,
            LTEXT TYPE TECOKT-LTEXT,
          END   OF GT_TECOKT,
          BEGIN OF GT_TE422 OCCURS 100,
            TERMSCHL TYPE TE422-TERMSCHL,
            TERMTEXT TYPE TE422-TERMTEXT,
          END   OF GT_TE422.
    DATA: BEGIN OF GWA_MANUAL_DATA,
            COL_1(5)        TYPE C,
            COL_2(10)       TYPE C,
            COL_3(40)       TYPE C,
            COL_4(40)       TYPE C,
            COL_5(10)       TYPE C,
            COL_6(19)       TYPE C,
            COL_7(19)       TYPE C,
            COL_8(19)       TYPE C,
            COL_9(19)       TYPE C,
            COL_10(19)      TYPE C,
            COL_11(19)      TYPE C,
            COL_12(10)      TYPE C,
            COL_13(19)      TYPE C,
            COL_14(19)      TYPE C,
            COL_15(19)      TYPE C,
            COL_16(19)      TYPE C,
            COL_17(19)      TYPE C,
            COL_18(19)      TYPE C,
          END   OF GWA_MANUAL_DATA,
          GT_MANUAL_DATA LIKE GWA_MANUAL_DATA OCCURS 0,
          GT_INTERN_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    *&-----FOR UPLOADING FILE TO SERVER------------------------------------*
    DATA: LV_SERVER_FILE_PREFIX(60) TYPE C.
    DATA: LV_SERVER_DATAFILE_NAME(60) TYPE C.
    DATA: LV_SERVER_ERRFILE_NAME(60) TYPE C.
    DATA: ENDT LIKE SY-UZEIT,
          ENDD LIKE SY-DATUM,
          JOBCOUNT TYPE TBTCJOB-JOBCOUNT.
    SELECTION-SCREEN BEGIN OF BLOCK 001 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: SO_GSBER FOR ZEVERFKKVKP-GSBER OBLIGATORY,
                    SO_COKEY FOR ZEVERFKKVKP-COKEY OBLIGATORY,
                    SO_MRU   FOR ZEVERFKKVKP-ABLEINH.
    PARAMETERS:     P_BMNTH(7) TYPE C OBLIGATORY.
    SELECT-OPTIONS: SO_GPART FOR ZEVERFKKVKP-GPART.
    SELECTION-SCREEN END  OF BLOCK 001.
    SELECTION-SCREEN BEGIN OF BLOCK 002 WITH FRAME TITLE TEXT-003.
    PARAMETERS:  P_COMPUT RADIOBUTTON GROUP R15,
                 P_INCLUD RADIOBUTTON GROUP R15,
                 P_FILE  TYPE  RLGRAP-FILENAME MODIF ID ACT.
    SELECTION-SCREEN END   OF BLOCK 002.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(83) TEXT-004.
    SELECTION-SCREEN END   OF LINE.
    *SELECTION-SCREEN BEGIN OF LINE.
    *  SELECTION-SCREEN COMMENT 8(40) TEXT-005.
    *SELECTION-SCREEN END   OF LINE.
    SELECTION-SCREEN BEGIN OF BLOCK 003 WITH FRAME TITLE TEXT-002.
    PARAMETERS   P_SCHL TYPE C AS CHECKBOX.
    PARAMETERS : P_IMMED RADIOBUTTON GROUP SCH ,
                 P_DT_TM  RADIOBUTTON GROUP SCH,
                 P_DATE TYPE SY-DATUM MODIF ID SHL,
                 P_TIME TYPE SY-UZEIT MODIF ID SHL.
    SELECTION-SCREEN END   OF BLOCK 003.
    AT SELECTION-SCREEN.
    AT SELECTION-SCREEN ON SO_GSBER.
      IF NOT SO_GSBER-LOW IS INITIAL.
        SELECT SINGLE GSBER FROM TGSBT INTO LV_GSBER
          WHERE GSBER = SO_GSBER-LOW.
        IF SY-SUBRC <> 0.
          MESSAGE E007(ZISU).
        ENDIF.
      ENDIF.
      IF NOT SO_GSBER-HIGH IS INITIAL .
        SELECT SINGLE GSBER FROM TGSBT INTO LV_GSBER
          WHERE GSBER = SO_GSBER-HIGH.
        IF SY-SUBRC <> 0.
          MESSAGE E007(ZISU).
        ENDIF.
      ENDIF.
    AT SELECTION-SCREEN ON P_BMNTH.
    **check the validity of Billing month format and for valid billing month
      IF P_BMNTH CO '0123456789/'.
        IF P_BMNTH CP '++++/++'.
          IF P_BMNTH+5(2) > 12.
            MESSAGE E002(ZISU) WITH 'from'.
          ENDIF.
    ** current year is less than year entered
          IF SY-DATUM(4) < P_BMNTH(4).
            MESSAGE E003(ZISU) WITH 'from'.
          ELSEIF SY-DATUM(4) = P_BMNTH(4).
    ** month in future
            IF SY-DATUM+4(2) < P_BMNTH+5(2).
              MESSAGE E004(ZISU) WITH 'from'.
            ENDIF.
          ENDIF.
        ELSE.
          MESSAGE E001(ZISU) WITH 'from'.
        ENDIF.
      ELSE.
    **  entry have some invalid char
        MESSAGE E010(ZISU).
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_COKEY-LOW.
    **for geting the CO account assigment key of the entered Business area
      CLEAR: DYFIELDS[], DYFIELDS.
      PERFORM DIVISON_DATA_GET CHANGING SO_COKEY-LOW.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_COKEY-HIGH.
    **for geting the CO account assigment key of the entered Business area
      CLEAR: DYFIELDS[], DYFIELDS.
      PERFORM DIVISON_DATA_GET CHANGING SO_COKEY-HIGH.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_MRU-LOW.
      CLEAR: DYFIELDS[], DYFIELDS.
      PERFORM MRU_DATA_GET CHANGING SO_MRU-LOW.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_MRU-HIGH.
      CLEAR: DYFIELDS[], DYFIELDS.
      PERFORM MRU_DATA_GET CHANGING SO_MRU-HIGH.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
      REFRESH: IT_TAB.
    **Opens File Open Dialog Box for selecting input file.
      CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
        EXPORTING
          WINDOW_TITLE     = 'Select File'
          DEFAULT_FILENAME = '*.xls'
          MULTISELECTION   = ' '
        CHANGING
          FILE_TABLE       = IT_TAB
          RC               = GD_SUBRC.
      LOOP AT IT_TAB INTO P_FILE.
    *    so_fpath-sign = 'I'.
    *    so_fpath-option = 'EQ'.
    *    append so_fpath.
      ENDLOOP.
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        IF SCREEN-GROUP1 = 'ACT'.
          IF P_INCLUD = ' '.
            SCREEN-INPUT = '0'.
          ELSE.
            SCREEN-INPUT = '1'.
          ENDIF.
        ENDIF.
        IF SCREEN-GROUP1 = 'SHL'.
          IF P_DT_TM = 'X'.
            SCREEN-INPUT = '1'.
          ELSE.
            SCREEN-INPUT = '0'.
          ENDIF.
        ENDIF.
        MODIFY SCREEN.
      ENDLOOP.
    INITIALIZATION.
      P_DATE = SY-DATUM.
      P_TIME = SY-UZEIT + 180.
    START-OF-SELECTION.
      IF P_INCLUD = 'X' AND P_FILE IS INITIAL.
        MESSAGE 'Enter the Manual R-15 File' TYPE 'E'.
      ENDIF.
    *  IF P_INCLUD = 'X'.
    *    PERFORM UPLOAD_EXCEL_FILE.
    *    CONCATENATE 'R15' SY-DATUM '-' SY-UZEIT INTO LV_SERVER_FILE_PREFIX.
    *    CONCATENATE LV_SERVER_FILE_PREFIX '-' 'LT.TMP' INTO
    *    LV_SERVER_DATAFILE_NAME.
    *    OPEN DATASET LV_SERVER_DATAFILE_NAME
    *      FOR OUTPUT
    *      IN TEXT MODE
    *      ENCODING DEFAULT.
    *    LOOP AT GT_MANUAL_DATA INTO GWA_MANUAL_DATA.
    *      IF ( GWA_MANUAL_DATA-COL_6 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_7 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_8 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_9 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_10 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_11 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_13 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_14 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_15 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_16 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_17 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_18 CN '0123456789 ' ).
    *        MESSAGE 'Character Data in Numerical Field' TYPE 'E'.
    *      ENDIF.
    *      TRANSFER GWA_MANUAL_DATA TO LV_SERVER_DATAFILE_NAME.
    *    ENDLOOP.
    *    CLOSE DATASET LV_SERVER_DATAFILE_NAME.
    *  ENDIF.  "  P_INCLUD = 'X'.
      IF P_SCHL = 'X'.
        IF P_IMMED = 'X'.
          CALL FUNCTION 'C14B_ADD_TIME'
            EXPORTING
              I_STARTTIME = SY-UZEIT
              I_STARTDATE = SY-DATUM
              I_ADDTIME   = '000010'
            IMPORTING
              E_ENDTIME   = ENDT
              E_ENDDATE   = ENDD.
        ELSEIF P_DT_TM = 'X'.
          ENDD = P_DATE.
          ENDT = P_TIME.
        ENDIF.
        CALL FUNCTION 'JOB_OPEN'
          EXPORTING
    *     DELANFREP              = ' '
    *     JOBGROUP               = ' '
            JOBNAME                = 'R15JOB'
    *      SDLSTRTDT              = ENDD
    *      SDLSTRTTM              = ENDT
    *     JOBCLASS               =
         IMPORTING
           JOBCOUNT               = JOBCOUNT
    *   CHANGING
    *     RET                    =
    *   EXCEPTIONS
    *     CANT_CREATE_JOB        = 1
    *     INVALID_JOB_DATA       = 2
    *     JOBNAME_MISSING        = 3
    *     OTHERS                 = 4
        IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
        IF P_INCLUD = 'X'.
          PERFORM UPLOAD_EXCEL_FILE.
         CONCATENATE 'R15' SY-DATUM '-' SY-UZEIT INTO LV_SERVER_FILE_PREFIX.
          CONCATENATE LV_SERVER_FILE_PREFIX '-' JOBCOUNT 'LT.TMP' INTO
          LV_SERVER_DATAFILE_NAME.
          CONDENSE LV_SERVER_DATAFILE_NAME.
          OPEN DATASET LV_SERVER_DATAFILE_NAME
            FOR OUTPUT
            IN TEXT MODE
            ENCODING DEFAULT.
          IF SY-SUBRC NE 0.
            MESSAGE 'Error in Creating File on Server' TYPE 'E'.
          ENDIF.
          LOOP AT GT_MANUAL_DATA INTO GWA_MANUAL_DATA.
            IF ( GWA_MANUAL_DATA-COL_6 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_7 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_8 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_9 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_10 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_11 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_13 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_14 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_15 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_16 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_17 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_18 CN '0123456789 ' ).
              MESSAGE 'Character Data in Numerical Field' TYPE 'E'.
            ENDIF.
            TRANSFER GWA_MANUAL_DATA TO LV_SERVER_DATAFILE_NAME.
          ENDLOOP.
          CLOSE DATASET LV_SERVER_DATAFILE_NAME.
          IF SY-SUBRC NE 0.
            MESSAGE 'Error in Creating File on Server' TYPE 'E'.
          ENDIF.
        ENDIF.  "  P_INCLUD = 'X'.
        SUBMIT ZISU_LTR15_TUNE
          WITH SO_GSBER IN SO_GSBER
          WITH SO_COKEY IN SO_COKEY
          WITH SO_MRU   IN SO_MRU
          WITH SO_GPART IN SO_GPART
          WITH P_BMNTH  =  P_BMNTH
          WITH P_COMPUT = P_COMPUT
          WITH P_INCLUD = P_INCLUD
          WITH P_FILE   = LV_SERVER_DATAFILE_NAME
          USER SY-UNAME VIA JOB 'R15JOB' NUMBER JOBCOUNT AND RETURN.
        CALL FUNCTION 'JOB_CLOSE'
          EXPORTING
    *   AT_OPMODE                         = ' '
    *   AT_OPMODE_PERIODIC                = ' '
    *   CALENDAR_ID                       = ' '
    *   EVENT_ID                          = ' '
    *   EVENT_PARAM                       = ' '
    *   EVENT_PERIODIC                    = ' '
            JOBCOUNT                          = JOBCOUNT
            JOBNAME                           = 'R15JOB'
    *   LASTSTRTDT                        = NO_DATE
    *   LASTSTRTTM                        = NO_TIME
    *   PRDDAYS                           = 0
    *   PRDHOURS                          = 0
    *   PRDMINS                           = 0
    *   PRDMONTHS                         = 0
    *   PRDWEEKS                          = 0
    *   PREDJOB_CHECKSTAT                 = ' '
    *   PRED_JOBCOUNT                     = ' '
    *   PRED_JOBNAME                      = ' '
            SDLSTRTDT                         = ENDD
            SDLSTRTTM                         = ENDT
    *   STARTDATE_RESTRICTION             = BTC_PROCESS_ALWAYS
            STRTIMMED                         = P_IMMED
    *   TARGETSYSTEM                      = ' '
    *   START_ON_WORKDAY_NOT_BEFORE       = SY-DATUM
    *   START_ON_WORKDAY_NR               = 0
    *   WORKDAY_COUNT_DIRECTION           = 0
    *   RECIPIENT_OBJ                     =
    *   TARGETSERVER                      = ' '
    *   DONT_RELEASE                      = ' '
    *   TARGETGROUP                       = ' '
    *   DIRECT_START                      =
    * IMPORTING
    *   JOB_WAS_RELEASED                  =
    * CHANGING
    *   RET                               =
    * EXCEPTIONS
    *   CANT_START_IMMEDIATE              = 1
    *   INVALID_STARTDATE                 = 2
    *   JOBNAME_MISSING                   = 3
    *   JOB_CLOSE_FAILED                  = 4
    *   JOB_NOSTEPS                       = 5
    *   JOB_NOTEX                         = 6
    *   LOCK_FAILED                       = 7
    *   INVALID_TARGET                    = 8
    *   OTHERS                            = 9
        IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ELSE.  " IF NOT TO RUN IN BACKGROUND
        IF P_INCLUD = 'X'.
          PERFORM UPLOAD_EXCEL_FILE.
         CONCATENATE 'R15' SY-DATUM '-' SY-UZEIT INTO LV_SERVER_FILE_PREFIX.
          CONCATENATE LV_SERVER_FILE_PREFIX '-' 'LT.TMP' INTO
          LV_SERVER_DATAFILE_NAME.
          CONDENSE LV_SERVER_DATAFILE_NAME.
          OPEN DATASET LV_SERVER_DATAFILE_NAME
            FOR OUTPUT
            IN TEXT MODE
            ENCODING DEFAULT.
          IF SY-SUBRC NE 0.
            MESSAGE 'Error in Creating File on Server' TYPE 'E'.
          ENDIF.
          LOOP AT GT_MANUAL_DATA INTO GWA_MANUAL_DATA.
            IF ( GWA_MANUAL_DATA-COL_6 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_7 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_8 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_9 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_10 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_11 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_13 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_14 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_15 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_16 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_17 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_18 CN '0123456789 ' ).
              MESSAGE 'Character Data in Numerical Field' TYPE 'E'.
            ENDIF.
            TRANSFER GWA_MANUAL_DATA TO LV_SERVER_DATAFILE_NAME.
          ENDLOOP.
          CLOSE DATASET LV_SERVER_DATAFILE_NAME.
          IF SY-SUBRC NE 0.
            MESSAGE 'Error in Creating File on Server' TYPE 'E'.
          ENDIF.
        ENDIF.  "  P_INCLUD = 'X'.
        IF NOT SY-BATCH IS INITIAL.
          SUBMIT ZISU_LTR15_TUNE
            WITH SO_GSBER IN SO_GSBER
            WITH SO_COKEY IN SO_COKEY
            WITH SO_MRU   IN SO_MRU
            WITH SO_GPART IN SO_GPART
            WITH P_BMNTH  =  P_BMNTH
            WITH P_COMPUT = P_COMPUT
            WITH P_INCLUD = P_INCLUD
            WITH P_FILE   = LV_SERVER_DATAFILE_NAME
            TO SAP-SPOOL WITHOUT SPOOL DYNPRO.
        ELSE.
          SUBMIT ZISU_LTR15_TUNE
            WITH SO_GSBER IN SO_GSBER
            WITH SO_COKEY IN SO_COKEY
            WITH SO_MRU   IN SO_MRU
            WITH SO_GPART IN SO_GPART
            WITH P_BMNTH  =  P_BMNTH
            WITH P_COMPUT = P_COMPUT
            WITH P_INCLUD = P_INCLUD
            WITH P_FILE   = LV_SERVER_DATAFILE_NAME.
        ENDIF.
      ENDIF.
    *&      Form  divison_data_get
    *       text
    *      <--P_SO_COKEY_LOW  text
    FORM DIVISON_DATA_GET  CHANGING P_SO_COKEY_LOW.
    **to get the search help for division
      DATA : LV_LINES TYPE SY-TFILL,
            LT_RETURN_TAB LIKE DDSHRETVAL OCCURS 0, " with header line.
            LWA_RETURN_TAB LIKE DDSHRETVAL.
      DATA: LV_COKEY TYPE ZEVERFKKVKP-COKEY.
    **according to the Business area entered]
    *  break csebdev1.
      REFRESH R_COKEY[].
      DESCRIBE TABLE SO_GSBER LINES LV_LINES.
    **  when user has neither pressed the enter key nor selected the values
    **using search help
      IF LV_LINES = 0.
    *  loop at so_gsber.
        CLEAR R_COKEY.
    *    if so_gsber-high is initial.
    *    break csebdev1.
        DYFIELDS-FIELDNAME = 'SO_GSBER-LOW'.
        APPEND DYFIELDS.
        CALL FUNCTION 'DYNP_VALUES_READ'
          EXPORTING
            DYNAME     = SY-CPROG
            DYNUMB     = SY-DYNNR
          TABLES
            DYNPFIELDS = DYFIELDS.
    *      r_cokey-sign = 'I'.
    *      r_cokey-option = 'CP'.
    *r_cokey-low = so_gsber-low+0(2).
        CONCATENATE DYFIELDS-FIELDVALUE+0(2) '*' INTO R_COKEY-LOW.
    *    elseif not so_gsber-high is initial.
        DYFIELDS-FIELDNAME = 'SO_GSBER-HIGH'.
        APPEND DYFIELDS.
        CALL FUNCTION 'DYNP_VALUES_READ'
          EXPORTING
            DYNAME     = SY-CPROG
            DYNUMB     = SY-DYNNR
          TABLES
            DYNPFIELDS = DYFIELDS.
        IF NOT DYFIELDS-FIELDVALUE IS INITIAL.
          CONCATENATE DYFIELDS-FIELDVALUE+0(2) '99999999' INTO R_COKEY-HIGH.
        ENDIF.
    *    endif.
        IF NOT R_COKEY-HIGH IS INITIAL.
          R_COKEY-SIGN = 'I'.
          R_COKEY-OPTION = 'BT'.
        ELSEIF R_COKEY-HIGH IS INITIAL.
          R_COKEY-SIGN = 'I'.
          R_COKEY-OPTION = 'CP'.
        ENDIF.
        APPEND R_COKEY.
      ENDIF.
    *  endloop.
    *  APPEND DYFIELDS.
      IF LV_LINES > 0.
    *    break-point.
        IF NOT SO_GSBER[] IS INITIAL.
          LOOP AT SO_GSBER.
    *        r_cokey-sign = 'I'.
    *        r_cokey-option = 'CP'.
    *r_cokey-low = so_gsber-low+0(2).
            CONCATENATE SO_GSBER-LOW+0(2) '*' INTO R_COKEY-LOW.
            IF NOT SO_GSBER-HIGH IS INITIAL.
              CONCATENATE SO_GSBER-HIGH+0(2) '99999999' INTO R_COKEY-HIGH.
            ENDIF.
            IF NOT R_COKEY-HIGH IS INITIAL.
              R_COKEY-SIGN = 'I'.
              R_COKEY-OPTION = 'BT'.
            ELSEIF R_COKEY-HIGH IS INITIAL.
              R_COKEY-SIGN = 'I'.
              R_COKEY-OPTION = 'CP'.
            ENDIF.
            APPEND R_COKEY TO R_COKEY.
          ENDLOOP.
        ENDIF.
      ENDIF.
      IF NOT R_COKEY[] IS INITIAL.
    * break csebdev1.
        REFRESH GT_TECOKT[].
        SELECT COKEY LTEXT
        FROM TECOKT
        INTO TABLE GT_TECOKT
        WHERE COKEY IN R_COKEY AND SPRAS = 'EN'.
    *    %_HINTS ORACLE '("TECOKT","TECOKT~1")'.
      ENDIF.
    **now call the search help
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
    *   DDIC_STRUCTURE         = ' '
          RETFIELD               = 'COKEY'
    *   PVALKEY                = ' '
    *   DYNPPROG               = ' '
    *   DYNPNR                 = ' '
    *   DYNPROFIELD            = ' '
    *   STEPL                  = 0
         WINDOW_TITLE           = 'Division'
         VALUE                  = DYFIELDS-FIELDVALUE
         VALUE_ORG              = 'S'
    *   MULTIPLE_CHOICE        = ' '
    *   DISPLAY                = ' '
    *   CALLBACK_PROGRAM       = ' '
    *   CALLBACK_FORM          = ' '
    *   MARK_TAB               =
    * IMPORTING
    *   USER_RESET             =
        TABLES
          VALUE_TAB              = GT_TECOKT
    *   FIELD_TAB              =
         RETURN_TAB             = LT_RETURN_TAB
    *   DYNPFLD_MAPPING        =
    * EXCEPTIONS
    *   PARAMETER_ERROR        = 1
    *   NO_VALUES_FOUND        = 2
    *   OTHERS                 = 3
      IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      READ TABLE LT_RETURN_TAB INTO LWA_RETURN_TAB INDEX 1.
      LV_COKEY = LWA_RETURN_TAB-FIELDVAL.
    *break csebdev1.
    ENDFORM.                    " divison_data_get
    *&      Form  upload_excel_file
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM UPLOAD_EXCEL_FILE .
      DATA: LV_INDEX TYPE I.
      FIELD-SYMBOLS <VAL> TYPE ANY.
      CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
        EXPORTING
          FILENAME                = P_FILE
          I_BEGIN_COL             = 1
          I_BEGIN_ROW             = 8
          I_END_COL               = 18
          I_END_ROW               = 94
        TABLES
          INTERN                  = GT_INTERN_DATA
        EXCEPTIONS
          INCONSISTENT_PARAMETERS = 1
          UPLOAD_OLE              = 2
          OTHERS                  = 3.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      IF NOT GT_INTERN_DATA[] IS INITIAL.
        SORT GT_INTERN_DATA BY ROW COL.
        LOOP AT GT_INTERN_DATA.
          MOVE GT_INTERN_DATA-COL TO LV_INDEX.
          ASSIGN COMPONENT LV_INDEX OF STRUCTURE GWA_MANUAL_DATA TO <VAL>.
          MOVE GT_INTERN_DATA-VALUE TO <VAL>.
          AT END OF ROW.
            APPEND GWA_MANUAL_DATA TO GT_MANUAL_DATA.
            CLEAR GWA_MANUAL_DATA.
          ENDAT.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    " upload_excel_file
    *&      Form  MRU_DATA_GET
    *       text
    *      <--P_SO_MRU_LOW  text
    FORM MRU_DATA_GET  CHANGING LV_MRU.
    **to get the search help for Group
      DATA : LV_LINES TYPE SY-TFILL,
            LT_RETURN_TAB LIKE DDSHRETVAL OCCURS 0,
            LWA_RETURN_TAB LIKE DDSHRETVAL.
    *        lv_mru_p(3) type c.
      RANGES  R_MRU FOR EANLH-ABLEINH.
    **according to the Business area entered
    **  break csebdev1.
      REFRESH R_MRU[].
      DESCRIBE TABLE SO_GSBER LINES LV_LINES.
    **  when user has neither pressed the enter key nor selected the values
    **using search help
      IF LV_LINES = 0.
        CLEAR R_MRU[].
        DYFIELDS-FIELDNAME = 'SO_GSBER-LOW'.
        APPEND DYFIELDS.
        CALL FUNCTION 'DYNP_VALUES_READ'
          EXPORTING
            DYNAME     = SY-CPROG
            DYNUMB     = SY-DYNNR
          TABLES
            DYNPFIELDS = DYFIELDS.
        CONCATENATE DYFIELDS-FIELDVALUE+0(2) '*' INTO R_MRU-LOW.
        DYFIELDS-FIELDNAME = 'SO_GSBER-HIGH'.
        APPEND DYFIELDS.
        CALL FUNCTION 'DYNP_VALUES_READ'
          EXPORTING
            DYNAME     = SY-CPROG
            DYNUMB     = SY-DYNNR
          TABLES
            DYNPFIELDS = DYFIELDS.
        IF NOT DYFIELDS-FIELDVALUE IS INITIAL.
          CONCATENATE DYFIELDS-FIELDVALUE+0(2) '99999999' INTO R_MRU-HIGH.
        ENDIF.
        IF NOT R_MRU-HIGH IS INITIAL.
          R_MRU-SIGN   = 'I'.
          R_MRU-OPTION = 'BT'.
        ELSEIF R_MRU-HIGH IS INITIAL.
          R_MRU-SIGN   = 'I'.
          R_MRU-OPTION = 'CP'.
        ENDIF.
        APPEND R_MRU.
      ENDIF. " end lv_lines =0
      IF LV_LINES > 0.
        IF NOT SO_GSBER[] IS INITIAL.
          LOOP AT SO_GSBER.
            CONCATENATE SO_GSBER-LOW+0(2) '*' INTO R_MRU-LOW.
            IF NOT SO_GSBER-HIGH IS INITIAL.
              CONCATENATE SO_GSBER-HIGH+0(2) '99999999' INTO R_MRU-HIGH.
            ENDIF.
            IF R_MRU-HIGH IS INITIAL.
              R_MRU-SIGN   = 'I'.
              R_MRU-OPTION = 'CP'.
            ELSEIF NOT R_MRU-HIGH IS INITIAL.
              R_MRU-SIGN   = 'I'.
              R_MRU-OPTION = 'BT'.
            ENDIF.
            APPEND R_MRU.
          ENDLOOP.
        ENDIF. " end so_GSBER[]
      ENDIF. " end lv_lines > 0
      IF NOT R_MRU[] IS INITIAL.
    * break csebdev1.
        REFRESH GT_TE422[].
        SELECT TERMSCHL TERMTEXT FROM TE422 INTO CORRESPONDING FIELDS OF
    TABLE GT_TE422 WHERE TERMSCHL IN R_MRU .
      ENDIF.
    **now call the search help
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
    *   DDIC_STRUCTURE         = ' '
          RETFIELD               = 'TERMSCHL'
    *   PVALKEY                = ' '
    *   DYNPPROG               = ' '
    *   DYNPNR                 = ' '
    *   DYNPROFIELD            = ' '
    *   STEPL                  = 0
         WINDOW_TITLE           = 'Group'
         VALUE                  = DYFIELDS-FIELDVALUE
         VALUE_ORG              = 'S'
    *   MULTIPLE_CHOICE        = ' '
    *   DISPLAY                = ' '
    *   CALLBACK_PROGRAM       = ' '
    *   CALLBACK_FORM          = ' '
    *   MARK_TAB               =
    * IMPORTING
    *   USER_RESET             =
        TABLES
          VALUE_TAB              = GT_TE422
    *   FIELD_TAB              =
         RETURN_TAB             = LT_RETURN_TAB
    *   DYNPFLD_MAPPING        =
    * EXCEPTIONS
    *   PARAMETER_ERROR        = 1
    *   NO_VALUES_FOUND        = 2
    *   OTHERS                 = 3
      IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      READ TABLE LT_RETURN_TAB INTO LWA_RETURN_TAB INDEX 1.
      LV_MRU = LWA_RETURN_TAB-FIELDVAL.
    ENDFORM.                    " MRU_DATA_GET
    <b>b) ZISU_LTR15_TUNE - Actual R15 report</b>
    *& Report  ZISU_LTR15_TUNE                                             *
    REPORT  ZISU_LTR15_TUNE NO STANDARD PAGE HEADING  MESSAGE-ID ZISU
    LINE-SIZE 250 LINE-COUNT 65.
    **Tables
    TABLES :  EVER,
              FKKVKP,
              EANLH.
    SELECTION-SCREEN BEGIN OF BLOCK SELECTION
                              WITH FRAME TITLE TEXT-001 . "no intervals.
    SELECT-OPTIONS: SO_GSBER FOR EVER-GSBER OBLIGATORY,
                    SO_COKEY FOR EVER-COKEY,
                    SO_MRU   FOR EANLH-ABLEINH.
    PARAMETERS:     P_BMNTH(7) TYPE C OBLIGATORY.
    PARAMETERS:     P_CONT TYPE EVER-VERTRAG.
    SELECT-OPTIONS: SO_GPART FOR FKKVKP-GPART.
    SELECTION-SCREEN END OF BLOCK SELECTION.
    SELECTION-SCREEN BEGIN OF BLOCK PROCESS WITH FRAME.
    PARAMETERS:     P_COMPUT RADIOBUTTON GROUP R15.
    PARAMETERS:     P_INCLUD RADIOBUTTON GROUP R15,
                    P_FILE(60) TYPE C.
    SELECTION-SCREEN END OF BLOCK PROCESS.
    *              Start of Type declaration
    TYPES: BEGIN OF ST_TB024 ,
            IND_SECTOR TYPE TB024-IND_SECTOR,
            TEXTLONG TYPE TB024-TEXTLONG,
          END   OF ST_TB024,
          BEGIN OF ST_TECOKT,
            COKEY TYPE TECOKT-COKEY,
            LTEXT TYPE TECOKT-LTEXT,
          END   OF ST_TECOKT,
          BEGIN OF ST_TGSBT,
            GSBER   TYPE TGSBT-GSBER,
            GTEXT   TYPE TGSBT-GTEXT,
          END   OF ST_TGSBT,
          BEGIN OF ST_TE422,
            TERMSCHL  TYPE TE422-TERMSCHL,
            TERMTEXT  TYPE TE422-TERMTEXT,
          END   OF ST_TE422.
    *              Start of data declaration
    DATA: IT_TAB TYPE FILETABLE,
          GD_SUBRC TYPE I.
    DATA : GT_TB024 TYPE STANDARD TABLE OF ST_TB024 WITH HEADER LINE
             INITIAL SIZE 0,
           GT_TECOKT TYPE STANDARD TABLE OF ST_TECOKT
             WITH HEADER LINE,
          GT_TGSBT TYPE SORTED TABLE OF ST_TGSBT
          WITH UNIQUE KEY GSBER WITH HEADER LINE,
          GT_TE422 TYPE TABLE OF ST_TE422 WITH HEADER LINE INITIAL SIZE 0,
          BEGIN OF GWA_EVER,
            VKONT    TYPE EVER-VKONTO,
            ANLAGE   TYPE EVER-ANLAGE,
            ABRSPERR TYPE EVER-ABRSPERR,
          END   OF GWA_EVER,
          GT_EVER LIKE TABLE OF GWA_EVER INITIAL SIZE 0,
          BEGIN OF GWA_EANLH,
          ANLAGE     TYPE EANLH-ANLAGE,
          BRANCHE    TYPE EANLH-BRANCHE,
          END   OF GWA_EANLH,
          GT_EANLH LIKE TABLE OF GWA_EANLH INITIAL SIZE 0,
          BEGIN OF GWA_FKKVKP,
            VKONT   TYPE FKKVKP-VKONT,
            KTOKL   TYPE FKKVKP-KTOKL,
          END   OF GWA_FKKVKP,
          GT_FKKVKP LIKE TABLE OF GWA_FKKVKP INITIAL SIZE 0,
          BEGIN OF GWA_EVER_EANLH_FKKVKP,
            VKONT   TYPE FKKVKP-VKONT,
            ANLAGE   TYPE EVER-ANLAGE,
            ABRSPERR TYPE EVER-ABRSPERR,
            BRANCHE  TYPE EANLH-BRANCHE,
            KTOKL    TYPE FKKVKP-KTOKL,
          END OF GWA_EVER_EANLH_FKKVKP,
          GT_EVER_EANLH_FKKVKP LIKE TABLE OF GWA_EVER_EANLH_FKKVKP
            INITIAL SIZE 0,
          GT_EVER_EANLH_FKKVKP_INACT LIKE STANDARD TABLE OF
            GWA_EVER_EANLH_FKKVKP INITIAL SIZE 0,
          BEGIN OF GWA_ERCH,
            BELNR      TYPE ERCH-BELNR,
            VKONT      TYPE ERCH-VKONT,
          END OF GWA_ERCH,
          GT_ERCH LIKE TABLE OF GWA_ERCH INITIAL SIZE 0,
          BEGIN OF GWA_PRINTDOC,
            OPBEL    TYPE ERDK-OPBEL,
            GPART    TYPE ERDK-PARTNER,
            VKONT    TYPE ERDK-VKONT,
            BUDAT    TYPE ERDK-BUDAT,
            FAEDN    TYPE ERDK-FAEDN,
          END   OF GWA_PRINTDOC,
          GT_PRINTDOC LIKE TABLE OF GWA_PRINTDOC INITIAL SIZE 0,
          BEGIN OF GWA_DBERCHZ1,
            BELNR      TYPE DBERCHZ1-BELNR,
            EIN01      TYPE DBERCHZ1-EIN01,
            V_ABRMENGE TYPE DBERCHZ1-V_ABRMENGE,
          END OF GWA_DBERCHZ1,
          GT_DBERCHZ1 LIKE TABLE OF GWA_DBERCHZ1 INITIAL SIZE 0,
          BEGIN OF GWA_ERCHC,
            BELNR     TYPE ERCHC-BELNR,
            OPBEL     TYPE ERCHC-OPBEL,
            BUDAT     TYPE ERCHC-BUDAT,
          END   OF GWA_ERCHC,
          GT_ERCHC LIKE TABLE OF GWA_ERCHC INITIAL SIZE 0,
    * arrears for inactive consumers.
          BEGIN OF GWA_DFKKOP_INACTIVE_ARR,
              OPBEL       TYPE DFKKOP-OPBEL,
              VKONT       TYPE DFKKOP-VKONT,
              BETRH       TYPE DFKKOP-BETRH,
          END OF GWA_DFKKOP_INACTIVE_ARR,
          GT_DFKKOP_INACTIVE_ARR LIKE TABLE OF GWA_DFKKOP_INACTIVE_ARR
            INITIAL SIZE 0,
          BEGIN OF GWA_ETTIFN,
            ANLAGE    TYPE ETTIFN-ANLAGE,
            OPERAND   TYPE ETTIFN-OPERAND,
            WERT1     TYPE ETTIFN-WERT1,
          END OF GWA_ETTIFN,
          GT_ETTIFN LIKE SORTED TABLE OF GWA_ETTIFN
            WITH NON-UNIQUE KEY ANLAGE OPERAND INITIAL SIZE 0,
          BEGIN OF GWA_DBERDLB,
            PRINTDOC     TYPE DBERDLB-PRINTDOC,
            BILLDOC      TYPE DBERDLB-BILLDOC,
            BILLDOCLINE  TYPE DBERDLB-BILLDOCLINE,
            NETTOBTR     TYPE DBERDLB-NETTOBTR,
          END OF GWA_DBERDLB,
          GT_DBERDLB LIKE TABLE OF GWA_DBERDLB INITIAL SIZE 0,
          BEGIN OF GWA_DBERCHZ1_BILL,
            BELNR       TYPE DBERCHZ1-BELNR,
            BELZEILE    TYPE DBERCHZ1-BELZEILE,
            TVORG       TYPE DBERCHZ1-TVORG,
          END   OF GWA_DBERCHZ1_BILL,
          GT_DBERCHZ1_BILL LIKE TABLE OF GWA_DBERCHZ1_BILL INITIAL SIZE 0,
          BEGIN OF GWA_BILLDOC,
            PRINTDOC TYPE ERDK-OPBEL,
            BILLDOC TYPE DBERDLB-BILLDOC,
          END OF GWA_BILLDOC,
          GT_BILLDOC LIKE TABLE OF GWA_BILLDOC INITIAL SIZE 0,
          BEGIN OF GWA_DBERCHV,
            BELNR    TYPE DBERCHV-BELNR,
            OPERAND  TYPE DBERCHV-OPERAND,
            EZ_ABRMENGE TYPE DBERCHV-EZ_ABRMENGE,
            ABLESGR  TYPE DBERCHV-ABLESGR,
            ABLESGRV TYPE DBERCHV-ABLESGRV,
          END OF GWA_DBERCHV,
          GT_DBERCHV LIKE TABLE OF GWA_DBERCHV INITIAL SIZE 0,
          BEGIN OF GWA_DFKKOP_ARREAR,
            OPBEL     TYPE DFKKOP-OPBEL,
            VKONT     TYPE DFKKOP-VKONT,
            HVORG     TYPE DFKKOP-HVORG,
            TVORG     TYPE DFKKOP-TVORG,
            BUDAT     TYPE DFKKOP-BUDAT,
            BETRH     TYPE DFKKOP-BETRH,
            AUGDT     TYPE DFKKOP-AUGDT,
            XBLNR     TYPE DFKKOP-XBLNR,
          END OF GWA_DFKKOP_ARREAR,
          GT_DFKKOP_ARREAR LIKE TABLE OF GWA_DFKKOP_ARREAR INITIAL SIZE 0,
          BEGIN OF GWA_MASTER_DATA,
            SLNO(4)      TYPE C,
            IND_SECTOR   TYPE TB024-IND_SECTOR,
            TEXTLONG     TYPE TB024-TEXTLONG,
            AC_CODE      TYPE TFK033D-FUN01,
          END   OF GWA_MASTER_DATA,
          GT_MASTER_DATA LIKE TABLE OF GWA_MASTER_DATA INITIAL SIZE 0,
    **      internal table for final prepared data
          BEGIN OF GWA_FINAL_DATA,
              SLNO(4) TYPE C,
              IND_SECTOR      TYPE TB024-IND_SECTOR, " for testing
              INDUSTRY        TYPE TB024-TEXTLONG,
              AC_CODE         TYPE TFK033D-FUN01,
    *    *for urban partners
              UPARTNER        TYPE I , "(6) type n,
              UBAD_METER      TYPE I, "(4) type n,
              UINACTIVE       TYPE I,
              ULOAD(8)        TYPE P DECIMALS 2,
              UUNITS(8)       TYPE P DECIMALS 2,
              UDEMANDS(8)     TYPE P DECIMALS 2,
              UARREARS(8)     TYPE P DECIMALS 2, "FKKMAKO-Msalm,
              UINACT_ARR(8)   TYPE P DECIMALS 2,
              BLANK(10)       TYPE C,
    *    *for rural partners
              RPARTNER        TYPE I , "(6) type n,
              RBAD_METER      TYPE I , "(4) type n,
              RINACTIVE       TYPE I,
              RLOAD(8)        TYPE P DECIMALS 2,
              RUNITS(8)       TYPE P DECIMALS 2,
              RDEMANDS(8)     TYPE P DECIMALS 2,
              RARREARS(8)     TYPE P DECIMALS 2,
              RINACT_ARR(8)   TYPE P DECIMALS 2,
          END OF GWA_FINAL_DATA,
          GT_FINAL_DATA LIKE TABLE OF GWA_FINAL_DATA INITIAL SIZE 0,
          BEGIN OF GWA_MANUAL_DATA,
            COL_1(5)        TYPE C,
            COL_2(10)       TYPE C,
            COL_3(40)       TYPE C,
            COL_4(40)       TYPE C,
            COL_5(10)       TYPE C,
            COL_6(19)       TYPE C,
            COL_7(19)       TYPE C,
            COL_8(19)       TYPE C,
            COL_9(19)       TYPE C,
            COL_10(19)      TYPE C,
            COL_11(19)      TYPE C,
            COL_12(10)      TYPE C,
            COL_13(19)      TYPE C,
            COL_14(19)      TYPE C,
            COL_15(19)      TYPE C,
            COL_16(19)      TYPE C,
            COL_17(19)      TYPE C,
            COL_18(19)      TYPE C,
          END   OF GWA_MANUAL_DATA,
          GT_MANUAL_DATA LIKE TABLE OF GWA_MANUAL_DATA INITIAL SIZE 0.
    ** Variables for grand total of all heads.
    DATA : GV_T_UPART        TYPE I,
           GV_T_RPART        TYPE I,
           GV_T_RINACTIVE    TYPE I,
           GV_T_UINACTIVE    TYPE I,
           GV_UDEF_MTR       TYPE I,
           GV_RDEF_MTR       TYPE I,
           GV_UCON_LOAD(16)  TYPE P DECIMALS 2,
           GV_RCON_LOAD(16)  TYPE P DECIMALS 2,
           GV_UUNITS(16)     TYPE P DECIMALS 2,
           GV_RUNITS(16)     TYPE P DECIMALS 2,
           GV_UDEMAND(16)    TYPE P DECIMALS 2,
           GV_RDEMAND(16)    TYPE P DECIMALS 2,
           GV_UARREAR(16)    TYPE P DECIMALS 2,
           GV_RARREAR(16)    TYPE P DECIMALS 2,
           GV_UINACT_ARR(16) TYPE P DECIMALS 2,
           GV_RINACT_ARR(16) TYPE P DECIMALS 2,
           GV_U_SD_DMD(16)       TYPE P DECIMALS 2,
           GV_R_SD_DMD(16)       TYPE P DECIMALS 2,
           GV_U_SD_ARR(16)       TYPE P DECIMALS 2,
           GV_R_SD_ARR(16)       TYPE P DECIMALS 2,
           GV_UR_PART         TYPE I,
           GV_UR_DEF_MTR      TYPE I,
           GV_UR_CON_LOAD(16) TYPE P DECIMALS 2,
           GV_UR_UNITS(16)    TYPE P DECIMALS 2,
           GV_UR_DEMAND(16)   TYPE P DECIMALS 2,
           GV_UR_ARREARS(16)  TYPE P DECIMALS 2,
           GV_LOWDATE         TYPE SY-DATUM,
           GV_HIGHDATE        TYPE SY-DATUM,
           GV_YEAR   LIKE DBERCHV-EZ_ABRMENGE,
           GV_MONTH  LIKE DBERCHZ1-V_ABRMENGE,
           GV_MNTH_NAME TYPE T247-KTX.
    DATA:
    **total meter rent
          GV_UTOTMETERRENT TYPE P LENGTH 16 DECIMALS 2,
          GV_RTOTMETERRENT TYPE P LENGTH 16 DECIMALS 2,
    **for total surcharge
          GV_UTOTSURCHRG TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
          GV_RTOTSURCHRG TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
    **for total ED
          GV_UTOTED TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
          GV_RTOTED TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
    **for total ED Cess
          GV_UTOTEDCESS TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
          GV_RTOTEDCESS TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
    **for total other misc rev
          GV_UTOTMISCREV  TYPE P LENGTH 16 DECIMALS 2,
          GV_RTOTMISCREV TYPE P LENGTH 16 DECIMALS 2,
    **for total ED of Free agricultural pump
          GV_RTOTEDAGRI TYPE P LENGTH 16 DECIMALS 2,
          GV_UTOTEDAGRI TYPE P LENGTH 16 DECIMALS 2,
    **for ED cess of Free agriculture pump
          GV_RTOTCESSAGRI TYPE P LENGTH 16 DECIMALS 2,
          GV_UTOTCESSAGRI TYPE P LENGTH 16 DECIMALS 2,
    ***data for selection screen data validation
          GV_GSBER TYPE EVER-GSBER,
          GV_COKEY TYPE EVER-COKEY,
          DYFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE,
          GT_INTERN_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    RANGES: R_COKEY FOR TECOKT-COKEY.
    AT SELECTION-SCREEN.
    AT SELECTION-SCREEN ON SO_GSBER.
      IF NOT SO_GSBER-LOW IS INITIAL.
        SELECT SINGLE GSBER FROM TGSBT INTO GT_TGSBT-GSBER WHERE
        GSBER = SO_GSBER-LOW.
        IF SY-SUBRC <> 0.
          MESSAGE E007.
        ENDIF.
      ENDIF.
      IF NOT SO_GSBER-HIGH IS INITIAL .
        SELECT SINGLE GSBER FROM TGSBT INTO GT_TGSBT-GSBER WHERE
        GSBER = SO_GSBER-HIGH.
        IF SY-SUBRC <> 0.
          MESSAGE E007.
        ENDIF.
      ENDIF.
    AT SELECTION-SCREEN ON P_BMNTH.
    **check the validity of Billing month format and for valid billing month
      IF P_BMNTH CO '0123456789/'.
        IF P_BMNTH CP '++++/++'.
          IF P_BMNTH+5(2) > 12.
            MESSAGE E002 WITH 'from'.
          ENDIF.
    ** current year is less than year entered
          IF SY-DATUM(4) < P_BMNTH(4).
            MESSAGE E003 WITH 'from'.
          ELSEIF SY-DATUM(4) = P_BMNTH(4).
    ** month in future
            IF SY-DATUM+4(2) < P_BMNTH+5(2).
              MESSAGE E004 WITH 'from'.
            ENDIF.
          ENDIF.
        ELSE.
          MESSAGE E001 WITH 'from'.
        ENDIF.
      ELSE.
    **  entry have some invalid char
        MESSAGE E010.
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_COKEY-LOW.
    **for geting the CO account assigment key of the entered Business area
      CLEAR: DYFIELDS[], DYFIELDS.
      PERFORM DIVISON_DATA_GET CHANGING SO_COKEY-LOW.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_COKEY-HIGH.
      CLEAR: DYFIELDS[], DYFIELDS.
      PERFORM DIVISON_DATA_GET CHANGING SO_COKEY-HIGH.
    *AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
    *  REFRESH: IT_TAB.
    ***Opens File Open Dialog Box for selecting input file.
    *  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
    *    EXPORTING
    *      WINDOW_TITLE     = 'Select File'
    *      DEFAULT_FILENAME = '*.xls'
    *      MULTISELECTION   = ' '
    *    CHANGING
    *      FILE_TABLE       = IT_TAB
    *      RC               = GD_SUBRC.
    *  LOOP AT IT_TAB INTO P_FILE.
    **    so_fpath-sign = 'I'.
    **    so_fpath-option = 'EQ'.
    **    append so_fpath.
    *  ENDLOOP.
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        IF SCREEN-GROUP1 = 'ACT'.
          IF P_INCLUD = ' '.
            SCREEN-INPUT = '0'.
          ELSE.
            SCREEN-INPUT = '1'.
          ENDIF.
        ENDIF.
        MODIFY SCREEN.
      ENDLOOP.
    *              End of Selection screen processing
    TOP-OF-PAGE.
      DATA : LV_TEXT(70) TYPE C.
      FORMAT INTENSIFIED OFF.
      WRITE:/50 'CHHATTISGARH STATE ELECTRICITY BOARD',
            /42 'R-15 REPORT FOR LT CONSUMERS FOR THE MONTH OF',
                 GV_MNTH_NAME NO-GAP,'-' NO-GAP, P_BMNTH(4) NO-GAP,
            180 'PAGE-NO. -', SY-PAGNO LEFT-JUSTIFIED.
      SKIP.
      WRITE:/2 'RAO', 15 ':'.
      LOOP AT GT_TGSBT WHERE GSBER IN SO_GSBER.
        IF STRLEN( LV_TEXT ) > 60.
          WRITE: 16 LV_TEXT, / ''.
          CLEAR LV_TEXT.
        ENDIF.
        CONCATENATE LV_TEXT GT_TGSBT-GSBER '-' GT_TGSBT-GTEXT
          INTO LV_TEXT SEPARATED BY SPACE.
      ENDLOOP.
      WRITE: 16 LV_TEXT.
      CLEAR LV_TEXT.
      WRITE: /2 'Division',15 ':'.
      LOOP AT GT_TECOKT.
        IF STRLEN( LV_TEXT ) > 60.
          WRITE: 16 LV_TEXT, /.
          CLEAR LV_TEXT.
        ENDIF.
        CONCATENATE LV_TEXT GT_TECOKT-COKEY '-' GT_TECOKT-LTEXT
          INTO LV_TEXT SEPARATED BY SPACE.
      ENDLOOP.
      WRITE: 16 LV_TEXT.
      CLEAR LV_TEXT.
      WRITE: /2 'Group',15 ':'.
      LOOP AT GT_TE422 .
        IF STRLEN( LV_TEXT ) > 60.
          WRITE: 16 LV_TEXT, /.
          CLEAR LV_TEXT.
        ENDIF.
        CONCATENATE LV_TEXT GT_TE422-TERMSCHL '-' GT_TE422-TERMTEXT
          INTO LV_TEXT SEPARATED BY SPACE.
      ENDLOOP.
      WRITE: 16 LV_TEXT.
      CLEAR LV_TEXT.
    **legends
    *  write :/ text-028, 15 ':',16 text-029.
    **now write the headings on every page
      SET LEFT SCROLL-BOUNDARY COLUMN 50.
      FORMAT COLOR 1 ON.
      WRITE :/1(244) SY-ULINE.
      WRITE :/1 SY-VLINE,6 SY-VLINE,50 SY-VLINE, 58 SY-VLINE, 59
                '<----------------------------------',
                'U R B A N   A R E A',
                '----------------------------------->'.
      WRITE : 151 SY-VLINE, 152
                  '<----------------------------------',
                  'R U R A L   A R E A',
                  '----------------------------------->',
              244 SY-VLINE.
      WRITE :/1 SY-VLINE,
              2 'Slno',
              6 SY-VLINE,
              7 'Revenue Category',
              50 SY-VLINE,
              51 'A/C',
              58 SY-VLINE,
              59 'Cons-',
              67 SY-VLINE,
              68 'Deff',
              75 SY-VLINE,
              76 'Conn',
              89 SY-VLINE,
              90 'Sold',
              108 SY-VLINE,
              109 'Demand',
              129 SY-VLINE,
              130 'Previous',
              151 SY-VLINE,
              152 'Cons-',
              160 SY-VLINE,
              161 'Deff',
              168 SY-VLINE,
              169 'Conn',
              182 SY-VLINE,
              183 'Sold',
              201 SY-VLINE,
              202 'Demand',
              222 SY-VLINE,
              223 'Previous',
              244 SY-VLINE.
      WRITE :/1 SY-VLINE,
              6 SY-VLINE,
              50 SY-VLINE,
              51 'Code',
              58 SY-VLINE,
              59 'umers',
              67 SY-VLINE,
              68 'mtrs',
              75 SY-VLINE,
              76 'Load-KW',
              89 SY-VLINE,
              90 'Units',
              108 SY-VLINE,
              129 SY-VLINE,
              130 'Arrear',
              151 SY-VLINE,
              152 'umers',
              160 SY-VLINE,
              161 'mtrs',
              168 SY-VLINE,
              169 'Load-KW',
              182 SY-VLINE,
              183 'Units',
              201 SY-VLINE,
              222 SY-VLINE,
              223 'Arrear',
              244 SY-VLINE.
      WRITE :/1(244) SY-ULINE.
      SET LEFT SCROLL-BOUNDARY COLUMN 59.
    *              Start of Data Selection
    START-OF-SELECTION.
      SELECT GSBER GTEXT INTO TABLE GT_TGSBT FROM TGSBT
        WHERE SPRAS = SY-LANGU.
      SELECT IND_SECTOR TEXTLONG INTO TABLE GT_TB024
        FROM TB024 WHERE SPRAS = SY-LANGU
                     AND ( ( IND_SECTOR >= '01' AND IND_SECTOR <= '55' )
                      OR ( IND_SECTOR = '57' OR IND_SECTOR = '58'
                      OR IND_SECTOR = '94' ) ).
      SELECT SINGLE KTX INTO GV_MNTH_NAME FROM T247
       WHERE MNR = P_BMNTH+5(2) AND SPRAS = SY-LANGU.
    ***master data selection
      PERFORM CONSUMER_DATA_SELECTION.
    *&--Get Meter Status Connected Load & MF for each installation
      PERFORM OPERAND_DATA_SELECTION.
    *&--Get the Demand corresponding to each Print documents selected
      PERFORM BILLING_DATA_SELECTION.
    *&--Get the arrears corresponding to each Print document selected
      PERFORM ARREAR_DATA_SELECTION.
    *&--To include Mannual R-15 into computerized R-15.
      IF P_INCLUD = 'X'.
        OPEN DATASET P_FILE FOR INPUT IN TEXT MODE ENCODING DEFAULT.
        DO.
          READ DATASET P_FILE INTO GWA_MANUAL_DATA.
          IF SY-SUBRC <> 0.
            EXIT.
          ELSE.
            APPEND GWA_MANUAL_DATA TO GT_MANUAL_DATA.
          ENDIF.
        ENDDO.
        CLOSE DATASET P_FILE.
        DELETE DATASET P_FILE.
      ENDIF.
    END-OF-SELECTION.
    *              End of data Selection
    *            Start of Data Processing
      PERFORM FINAL_TABLE_PREPARE.
      PERFORM FINAL_OUTPUT_PREPARE.
      PERFORM FINAL_OUTPUT_DISPLAY.
    *              End of Data Processing
      PERFORM FREE_MEMORY.
    *&      Form  master_data_selection
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM CONSUMER_DATA_SELECTION .
      DATA: LV_MAX_DAYS TYPE I,
            LV_LAST_DAY(2) TYPE C,
            LV_IMONTH TYPE I,
            LV_IYEAR TYPE I,
            LV_BMNTH TYPE ZERDK_ERCHC-V_ABRMENGE,
            LV_BYEAR TYPE ZERDK_ERCHC-EZ_ABRMENGE,
    *&----Temporary tables for global internal tables.
            LT_DBERCHZ1_TEMP LIKE TABLE OF GWA_DBERCHZ1,
            LWA_DBERCHZ1_TEMP LIKE GWA_DBERCHZ1,
            LT_ERCH LIKE TABLE OF GWA_ERCH,
            LWA_ERCH LIKE GWA_ERCH,
            LT_EVER LIKE TABLE OF GWA_EVER.
    *DATA: lt_ever_fkkvkp like gwa_ever_eanlh_fkkvkp occurs 0.
      LV_IMONTH = P_BMNTH+5(2).
      LV_IYEAR  = P_BMNTH(4).
      LV_BMNTH  = P_BMNTH+5(2).
      LV_BYEAR  = P_BMNTH(4).
      CALL FUNCTION 'RTP_US_API_MAX_DAYS_IN_MONTH'
        EXPORTING
          I_DATE_MONTH = LV_IMONTH
          I_DATE_YEAR  = LV_IYEAR
        IMPORTING
          E_MAX_DAYS   = LV_MAX_DAYS.
      LV_LAST_DAY = LV_MAX_DAYS.
      CONCATENATE P_BMNTH(4) P_BMNTH+5(2)  LV_LAST_DAY INTO GV_HIGHDATE.
      IF SO_GPART[] IS INITIAL.
        SELECT VKONTO ANLAGE ABRSPERR
        INTO TABLE GT_EVER
        FROM EVER
        WHERE GSBER IN SO_GSBER
          AND COKEY IN SO_COKEY
          AND   BUKRS = 'CSEB'
          AND   SPARTE = '01'
          AND   KOFIZ  = '02'.
    **get installation no from contract data and check biling class in eanlh
        IF GT_EVER[] IS INITIAL.
    MESSAGE 'No Business Partner exist for entered selection data' TYPE 'A'.
        ENDIF.
        IF NOT GT_EVER[] IS INITIAL.
          SELECT VKONT KTOKL INTO TABLE GT_FKKVKP
            FROM FKKVKP
            FOR ALL ENTRIES IN GT_EVER
            WHERE VKONT = GT_EVER-VKONT
            AND   GPART IN SO_GPART.
          IF GT_FKKVKP[] IS INITIAL.
         MESSAGE 'No Business Partner exist for entered Selection' TYPE 'A'.
          ENDIF.
        ENDIF.
      ELSE.
        SELECT VKONT KTOKL INTO TABLE GT_FKKVKP
          FROM FKKVKP
          WHERE GPART IN SO_GPART.
        IF NOT GT_FKKVKP[] IS INITIAL.
          SELECT VKONTO ANLAGE INTO TABLE GT_EVER
            FROM EVER
            FOR ALL ENTRIES IN GT_FKKVKP
            WHERE VKONTO  EQ GT_FKKVKP-VKONT
              AND GSBER   IN SO_GSBER
              AND COKEY   IN SO_COKEY
              AND BUKRS   EQ 'CSEB'
              AND SPARTE  EQ '01'
              AND KOFIZ   EQ '02'.
        ENDIF.
      ENDIF.
      IF GT_EVER[] IS INITIAL AND GT_FKKVKP[] IS INITIAL.
        MESSAGE 'No Business Partner exist for entered Selection' TYPE 'A'.
      ENDIF.
      SELECT ANLAGE BRANCHE INTO TABLE GT_EANLH
        FROM EANLH
        FOR ALL ENTRIES IN GT_EVER
        WHERE ANLAGE EQ GT_EVER-ANLAGE
        AND   ABLEINH IN SO_MRU
        AND   AKLASSE EQ'0002'
        AND   AB <= GV_HIGHDATE
        AND   BIS => GV_HIGHDATE.
      IF GT_EANLH[] IS INITIAL.
        MESSAGE 'No Business Partner exist for entered Selection' TYPE 'A'.
      ENDIF.
      SORT : GT_EVER BY VKONT ANLAGE,
             GT_FKKVKP BY VKONT,
             GT_EANLH BY ANLAGE.
      LOOP AT GT_EANLH INTO GWA_EANLH.
        READ TABLE GT_EVER INTO GWA_EVER WITH KEY ANLAGE = GWA_EANLH-ANLAGE.
        IF SY-SUBRC = 0.
          READ TABLE GT_FKKVKP INTO GWA_FKKVKP
            WITH KEY VKONT = GWA_EVER-VKONT.
          IF SY-SUBRC = 0.
            GWA_EVER_EANLH_FKKVKP-VKONT = GWA_EVER-VKONT.
            GWA_EVER_EANLH_FKKVKP-ANLAGE = GWA_EVER-ANLAGE.
            GWA_EVER_EANLH_FKKVKP-ABRSPERR = GWA_EVER-ABRSPERR.
            GWA_EVER_EANLH_FKKVKP-BRANCHE  = GWA_EANLH-BRANCHE.
            GWA_EVER_EANLH_FKKVKP-KTOKL    = GWA_FKKVKP-KTOKL.
            APPEND GWA_EVER_EANLH_FKKVKP TO GT_EVER_EANLH_FKKVKP.
            CLEAR GWA_EVER_EANLH_FKKVKP.
          ENDIF.
        ENDIF.
      ENDLOOP.
      IF GT_EVER_EANLH_FKKVKP[] IS INITIAL.
        MESSAGE 'No Business Partner exist for Selection Data' TYPE 'A'.
      ENDIF.
    *&----get all the billdocuments for the busines partner's contract
    *&----account
      SELECT BELNR VKONT INTO TABLE GT_ERCH
        FROM ERCH
        FOR ALL ENTRIES IN GT_EVER_EANLH_FKKVKP
        WHERE VKONT EQ GT_EVER_EANLH_FKKVKP-VKONT.
    *&----get the BILL MONTH & BILL YEAR FOR THE BILLDOCUMENTS.
      IF NOT GT_ERCH[] IS INITIAL.
        SELECT BELNR EIN01 V_ABRMENGE INTO TABLE GT_DBERCHZ1
          FROM DBERCHZ1
          FOR ALL ENTRIES IN GT_ERCH
          WHERE BELNR EQ GT_ERCH-BELNR
            AND AKLASSE = '0002'
            AND ( ( EIN01 = 'BILL_MNTH1'
            AND V_ABRMENGE = P_BMNTH+5(2) )
            OR ( EIN01 = 'BILL_YEAR1'
            AND V_ABRMENGE = P_BMNTH(4) ) ).
    *&---- GET THOSE BILL DOCUMENTS WHICH ARE FOR THE ENTERED BILL MONTH
        IF NOT GT_DBERCHZ1[] IS INITIAL.
          LOOP AT GT_DBERCHZ1 INTO GWA_DBERCHZ1 WHERE EIN01 = 'BILL_MNTH1'
                                              AND V_ABRMENGE = P_BMNTH+5(2).
            READ TABLE GT_DBERCHZ1 INTO LWA_DBERCHZ1_TEMP
            WITH KEY BELNR = GWA_DBERCHZ1-BELNR EIN01 = 'BILL_YEAR1'
            V_ABRMENGE = P_BMNTH(4).
            IF SY-SUBRC = 0.
              APPEND LWA_DBERCHZ1_TEMP TO LT_DBERCHZ1_TEMP.
              CLEAR: LWA_DBERCHZ1_TEMP.
            ENDIF.
          ENDLOOP.
          GT_DBERCHZ1[] = LT_DBERCHZ1_TEMP[].
        ENDIF.
      ENDIF.
    *&---NOW FIND THE PRINT DOCUMENTS FOR THE SELECTED BILLDOCUMENTS.
      IF NOT GT_DBERCHZ1[] IS INITIAL.
        SELECT BELNR OPBEL BUDAT FROM ERCHC
          INTO TABLE GT_ERCHC
          FOR ALL ENTRIES IN GT_DBERCHZ1
          WHERE BELNR = GT_DBERCHZ1-BELNR
            AND INTOPBEL EQ SPACE
            AND SIMULATED EQ SPACE
            AND INVOICED EQ 'X'.
      ENDIF.
      IF NOT GT_ERCHC[] IS INITIAL.
        LOOP AT GT_ERCHC INTO GWA_ERCHC.
          READ TABLE GT_ERCH INTO GWA_ERCH WITH KEY BELNR = GWA_ERCHC-BELNR.
          IF SY-SUBRC = 0.
            APPEND GWA_ERCH TO LT_ERCH.
            CLEAR GWA_ERCH.
          ENDIF.
          CLEAR GWA_ERCHC.
        ENDLOOP.
      ENDIF.
      GT_ERCH[] = LT_ERCH[].
      FREE: LT_ERCH, LT_DBERCHZ1_TEMP,LWA_DBERCHZ1_TEMP.
      LOOP AT GT_EVER_EANLH_FKKVKP INTO GWA_EVER_EANLH_FKKVKP.
    *  READ TABLE gt_erdk_erchc INTO gwa_erdk_erchc
    *  WITH KEY vkont = gwa_ever_eanlh_fkkvkp-vkont.
        READ TABLE GT_ERCH INTO GWA_ERCH
          WITH KEY VKONT = GWA_EVER_EANLH_FKKVKP-VKONT.
        IF SY-SUBRC <> 0.
          IF GWA_EVER_EANLH_FKKVKP-ABRSPERR = SPACE.
            GWA_EVER_EANLH_FKKVKP-ABRSPERR = '01'.
            MODIFY GT_EVER_EANLH_FKKVKP FROM GWA_EVER_EANLH_FKKVKP
              TRANSPORTING ABRSPERR.
            APPEND GWA_EVER_EANLH_FKKVKP TO GT_EVER_EANLH_FKKVKP_INACT.
          ENDIF.
        ELSE.
          IF GWA_EVER_EANLH_FKKVKP-ABRSPERR <> SPACE.
            GWA_EVER_EANLH_FKKVKP-ABRSPERR = SPACE.
            MODIFY GT_EVER_EANLH_FKKVKP FROM GWA_EVER_EANLH_FKKVKP
              TRANSPORTING ABRSPERR.
          ENDIF.
        ENDIF.
        CLEAR GWA_ERCH.
      ENDLOOP.
      REFRESH GT_TECOKT[].
      IF NOT SO_COKEY[] IS INITIAL.
        SELECT COKEY LTEXT INTO TABLE GT_TECOKT
        FROM TECOKT
        WHERE COKEY IN SO_COKEY
          AND SPRAS = SY-LANGU .
    *    %_HINTS ORACLE '("TECOKT","TECOKT~1")'.
      ENDIF.
      IF NOT SO_MRU[] IS INITIAL.
        SELECT TERMSCHL TERMTEXT INTO TABLE GT_TE422
          FROM TE422
          WHERE TERMSCHL IN SO_MRU.
      ENDIF.
    *FREE lt_ever_fkkvkp[].
    ENDFORM.                    " consumer_data_selection
    *&      Form  Operand_data_selection
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM OPERAND_DATA_SELECTION .
      DATA: LT_EVER_EANLH_FKKVKP_ACT LIKE TABLE OF GWA_EVER_EANLH_FKKVKP.
    *  SORT gt_ever_eanlh_fkkvkp BY vkont.
      CHECK NOT GT_EVER_EANLH_FKKVKP[] IS INITIAL.
    **now depending upon the billing month check the time slice date
    **the last date of the billing month or the range of billing month
    *should fall in between the time slice of the installation
    ** billing month to is space
    **now select operands for processed installation
      LT_EVER_EANLH_FKKVKP_ACT[] = GT_EVER_EANLH_FKKVKP[].
      DELETE LT_EVER_EANLH_FKKVKP_ACT WHERE ABRSPERR NE SPACE.
      IF NOT LT_EVER_EANLH_FKKVKP_ACT[] IS INITIAL.
        SELECT ANLAGE OPERAND WERT1
        FROM ETTIFN
        INTO TABLE GT_ETTIFN
        FOR ALL ENTRIES IN LT_EVER_EANLH_FKKVKP_ACT
        WHERE ANLAGE = LT_EVER_EANLH_FKKVKP_ACT-ANLAGE
          AND OPERAND IN ('MTR_STS','CONN_LOAD','LOAD_CODE','KWH_MF')
          AND ( AB <= GV_HIGHDATE AND BIS >= GV_HIGHDATE ).
    *    %_HINTS ORACLE '("ETTIFN","ETTIFN~003")'.
      ENDIF.
    ENDFORM.                    " Operand_data_selection
    *&      Form  billing_data_selection
    *&------------------------------

    Hi,
    Please do run time analysis as Rob correctly mentioned or do SQL trace(ST05) to find where the program is consuming more time.
    Lanka

  • Error when using the method cl_gui_frontend_services= file_open_dialog

    Hello Experts,
    I am currently practicing BDC and I think the first step is to locate where my text file is. Now based on my code below, after selecting my text file nothing happens.
    Also, what will be my next after getting the file from a specific location? Thanks guys!
    REPORT  z_aris_practice_bdc_0
            NO STANDARD PAGE HEADING
            LINE-SIZE 255
            LINE-COUNT 64
            MESSAGE-ID zz.
    *BDC Data
    DATA: BEGIN OF bdc_tab OCCURS 0.
            INCLUDE STRUCTURE bdcdata.
    DATA: END OF bdc_tab.
    *Internal Table
    DATA: BEGIN OF it_input OCCURS 0,
             user     TYPE usr02-bname,
             title    TYPE sza5_d0700-title_medi,
             lname    TYPE addr3_data-name_last,
             fname    TYPE addr3_data-name_first,
             initials TYPE addr3_data-initials,
             nickname TYPE addr3_data-nickname,
             function TYPE addr3_data-function,
          END OF it_input.
    DATA: gt_lines TYPE sy-tabix,
          gt_file  TYPE filetable,
          wa_file  TYPE filetable,
          gt_subrc TYPE i.
    *CONSTANTS
    CONSTANTS: c_mask(60) TYPE c  VALUE ',..'.
    *Selection Screen
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS: p_input LIKE rlgrap-filename.
    SELECTION-SCREEN END OF BLOCK b1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_input.
      CALL METHOD cl_gui_frontend_services=>file_open_dialog
        EXPORTING
       WINDOW_TITLE            =
       DEFAULT_EXTENSION       =
       DEFAULT_FILENAME        =
       FILE_FILTER             =
          initial_directory       = 'C:\Temp\'
          multiselection          = 'X'
        CHANGING
          file_table              = gt_file[]
          rc                      = gt_subrc
       USER_ACTION             =
        EXCEPTIONS
          file_open_dialog_failed = 1
          cntl_error              = 2
          error_no_gui            = 3
          OTHERS                  = 4.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *START-OF-SELECTION
    START-OF-SELECTION.
      PERFORM put_in_itab.
      PERFORM process_records.
    *&      Form  get_files
          text
    FORM put_in_itab.
      DATA: lv_file TYPE string.
      lv_file = p_input.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          filename                      = lv_file
        FILETYPE                      = 'ASC'
         has_field_separator           = 'X'
        HEADER_LENGTH                 = 0
        READ_BY_LINE                  = 'X'
        DAT_MODE                      = ' '
        CODEPAGE                      = ' '
        IGNORE_CERR                   = ABAP_TRUE
        REPLACEMENT                   = '#'
        CHECK_BOM                     = ' '
        VIRUS_SCAN_PROFILE            =
        NO_AUTH_CHECK                 = ' '
      IMPORTING
        FILELENGTH                    =
        HEADER                        =
        TABLES
          data_tab                      = it_input
       EXCEPTIONS
         file_open_error               = 1
         file_read_error               = 2
         no_batch                      = 3
         gui_refuse_filetransfer       = 4
         invalid_type                  = 5
         no_authority                  = 6
         unknown_error                 = 7
         bad_data_format               = 8
         header_not_allowed            = 9
         separator_not_allowed         = 10
         header_too_long               = 11
         unknown_dp_error              = 12
         access_denied                 = 13
         dp_out_of_memory              = 14
         disk_full                     = 15
         dp_timeout                    = 16
         OTHERS                        = 17
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ELSE.
        DESCRIBE TABLE it_input LINES gt_lines.
      ENDIF.
    ENDFORM.                    "get_files
    *&      Form  process_records
          text
    FORM process_records.
      LOOP AT it_input.
      ENDLOOP.
    ENDFORM.                    "process_records

    Hii viraylab,
    go throgh this link..This sample code solves ur problem....
    /people/milind.upasani/blog/2007/03/07/step-by-step-approach-to-ceate-simple-bdc-session-program-using-reusable-template
        U are new to BDC it seems...
        first u read the sap help ... then u will come know what to do after wards....
        http://help.sap.com/saphelp_47x200/helpdata/en/fa/097720543b11d1898e0000e8322d00/frameset.htm
    Be familiar with the structure BDCDATA.
    <b>Data transfers</b>  In this page..
    Next u need to know about the <b>transaction RECORDER the tcode is SHDB.</b>
    Nothing is difficult in this ..
    For example When u r creating a data element in SE11 u go through some screens in a flow, by clicking some pushbuttons and by generating some function codes manually, and entering values manually...
    But here u wont do it manually, these values will be populated from file into an internal table...
    Before calling a transaction into which u r going to populate the data is to be filled into a table with structure <b>BDCDATA.</b>
    <b>U need to use CALL TRANSACTION 'SE11' using BDCDATA or
    the session method..</b>
    Reward points for helpful answers...
    sai ramesh

  • Problem in the BDC program to upload the data from a flat file.

    Hi,
    I am required to write a BDC program to upload the data from a flat file. The conditions are as mentioned below:-
    1) Selection Screen will be prompted to user and user needs to provide:- File Path on presentation server (with F4 help for this obligatory parameter) and File Separator e.g. @,#,$,%,... etc(fields in the file will be separated by using this special character) or fields may be separated by tab(tab delimited).
    2) Finally after the data is uploaded, following messages need to be displayed:-
    a) Total Number of records successfully uploaded.
    b) Session Name
    c) Number of Sessions created.
    Problem is when each record is fetched from flat file, the record needs to be split into individual fields separated by delimiter or in case tab separated, then proceeding in usual manner.
    It would be great if you provide me either the logic, pseudocode, or sample code for this BDC program.
    Thanks,

    Here is an example program,  if you require the delimitor to be a TAB, then enter TAB on the selection screen, if you require the delimitor to be a comma, slash, pipe, whatever, then simply enter that value.  This example is simply the uploading of the file, not the BDC, I assume that you know what to do once you have the data into the internal table.
    REPORT zrich_0001.
    TYPES: BEGIN OF ttab,
            rec TYPE string,
           END OF ttab.
    TYPES: BEGIN OF tdat,
           fld1(10) TYPE c,
           fld2(10) TYPE c,
           fld3(10) TYPE c,
           fld4(10) TYPE c,
           END OF tdat.
    DATA: itab TYPE TABLE OF ttab.
    data: xtab like line of itab.
    DATA: idat TYPE TABLE OF tdat.
    data: xdat like line of idat.
    DATA: file_str TYPE string.
    DATA: delimitor TYPE string.
    PARAMETERS: p_file TYPE localfile.
    PARAMETERS: p_del(5) TYPE c.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
      DATA: ifiletab TYPE filetable.
      DATA: xfiletab LIKE LINE OF ifiletab.
      DATA: rc TYPE i.
      CALL METHOD cl_gui_frontend_services=>file_open_dialog
        CHANGING
          file_table = ifiletab
          rc         = rc.
      READ TABLE ifiletab INTO xfiletab INDEX 1.
      IF sy-subrc = 0.
        p_file = xfiletab-filename.
      ENDIF.
    START-OF-SELECTION.
      TRANSLATE p_del TO UPPER CASE.
      CASE p_del.
        WHEN 'TAB'.
          delimitor = cl_abap_char_utilities=>horizontal_tab.
        WHEN others.
          delimitor = p_del.
      ENDCASE.
      file_str = p_file.
      CALL METHOD cl_gui_frontend_services=>gui_upload
        EXPORTING
          filename = file_str
        CHANGING
          data_tab = itab.
      LOOP AT itab into xtab.
        CLEAR xdat.
        SPLIT xtab-rec AT delimitor INTO xdat-fld1
                                         xdat-fld2
                                         xdat-fld3
                                         xdat-fld4.
        APPEND xdat to idat.
      ENDLOOP.
      LOOP AT idat into xdat.
        WRITE:/ xdat-fld1, xdat-fld2, xdat-fld3, xdat-fld4.
      ENDLOOP.
    Regards,
    Rich Heilman

  • Problem creating Purchase Order with Bapi_po_create  Return Message is ""

    Hello everybody
    When I get to create PO with bapi_po_create . I get this message in the return parameter :"Enter the PURCH_ORG".
    I think that I have implemented it very well but I don´t get the results that I was expected : No PO was created.
    Please see the following codes and let me know if something is wrong. Thanks .
    =====================================
    *& Report  Z_PED_TRAS                                                  *
    REPORT  z_ped_tras  .
    Definición de la tabla asociada la tabla interna bdcdata
    *DATA :in_data LIKE bdcdata OCCURS 0 WITH HEADER LINE.
    Definición de la estructura que contendrá los pedidos
    DATA : s_cabeceras_pedidos LIKE bapiekkoc,
           s_pos_pedidos LIKE bapiekpoc.
    DATA : t_cabeceras_pedidos LIKE  bapiekkoc OCCURS 0 WITH HEADER LINE,
           t_pos_pedidos LIKE  bapiekpoc OCCURS 0 WITH HEADER LINE,
           t_final_cabeceras_pedidos LIKE  bapiekkoc OCCURS 0 WITH HEADER
    LINE,
           t_final_pos_pedidos LIKE  bapiekpoc OCCURS 0 WITH HEADER LINE.
    Data : item_schedule like BAPIEKET occurs 0 with header line.
    *DATA : BEGIN OF pedidos,
          ematn TYPE mepo1211-ematn, "Número de material
          menge TYPE mepo1211-menge, "Cantidad de pedido
          name1 TYPE mepo1211-name1," Centro destino
          lgobe TYPE mepo1211-lgobe, "Almacén
         END OF pedidos.
    *DATA: s_pedidos  LIKE pedidos,
         wa_pedidos LIKE pedidos,
         t_pedidos LIKE pedidos OCCURS 0 .
    Variables  auxiliaires
    Variables para la ejecución del explorador de archivos
    DATA: l_temp_dir TYPE string.
    DATA: l_filter TYPE string.
    DATA: l_files TYPE filetable.
    DATA: l_rc TYPE i.
    DATA: l_file TYPE filename.
    DATA: l_filename TYPE string.
    DATA: excel TYPE alsmex_tabline OCCURS 0 WITH HEADER LINE.
    DATA: s_excel TYPE alsmex_tabline.
    DATA: qid LIKE apqi-qid.
    Declaración de parametros de selección
    PARAMETERS :
       p_center LIKE bapiekkoc-suppl_plnt OBLIGATORY,"" Proveedor/Centro
       p_ekorg LIKE bapiekkoc-purch_org OBLIGATORY , " Organización compras
       p_ekgrp LIKE bapiekkoc-pur_group OBLIGATORY, " Grupo de compras
       p_bukrs LIKE bapiekkoc-co_code OBLIGATORY,"Sociedad"
       p_date LIKE sy-datum DEFAULT sy-datum OBLIGATORY,  "fecha
       test AS CHECKBOX DEFAULT 'X'.
      p_center LIKE mepo_topline-superfield, " Proveedor/Centro
      p_ekorg LIKE mepo1222-ekorg, " Organización de compras
      p_ekgrp LIKE mepo1222-ekgrp, " Grupo de compras
      p_bukrs LIKE mepo1222-bukrs,"Sociedad"
      p_date LIKE sy-datum," Fecha
      test AS CHECKBOX DEFAULT 'X'.
    PARAMETERS: p_file LIKE rlgrap-filename DEFAULT 'C:PEDIDOS.XLS'. " Ruta
    Carga del explorador de ficheros **
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
      l_temp_dir = 'C:A'.
      l_filter = '.'.
      CALL METHOD cl_gui_frontend_services=>file_open_dialog
        EXPORTING
          default_extension       = '*.xls'
          file_filter             = l_filter
          initial_directory       = l_temp_dir
        CHANGING
          file_table              = l_files
          rc                      = l_rc
        EXCEPTIONS
          file_open_dialog_failed = 1
          cntl_error              = 2
          error_no_gui            = 3
          not_supported_by_gui    = 4
          OTHERS                  = 5.
      IF NOT l_files[] IS INITIAL.
        READ TABLE l_files INTO l_file INDEX 1.
        p_file = l_file.
        TRANSLATE p_file TO UPPER CASE.
      ENDIF.
    START-OF-SELECTION.
      IF p_file NE space.
        PERFORM upload_data.
        PERFORM fill_data.
        PERFORM llamar_bapi.
      ENDIF.
    END-OF-SELECTION.
    *&      Form  Upload_data
          text
    -->  p1        text
    <--  p2        text
    FORM upload_data .
      IF excel IS INITIAL .
        CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
          EXPORTING
            filename                = p_file
            i_begin_col             = 1
            i_begin_row             = 2
            i_end_col               = 4
            i_end_row               = 50000
          TABLES
            intern                  = excel
          EXCEPTIONS
            inconsistent_parameters = 1
            upload_ole              = 2
            OTHERS                  = 3.
        IF sy-subrc <> 0.
          WRITE :/'Hay un problema al cargar los datos delfichero excell'.
        ENDIF.
        SORT excel DESCENDING BY row col.
      ENDIF.
    ENDFORM.                    " Upload_data
    *&      Form  fill_excell
          text
    -->  p1        text
    <--  p2        text
    FORM fill_data .
      DATA :  cant TYPE i ,
              value_row TYPE i VALUE 1,
              data_aux TYPE alsmex_tabline OCCURS 0 WITH HEADER LINE.
    Leer las filas del fichero excell.
      IF test NE 'X'.
        s_cabeceras_pedidos-suppl_plnt = p_center.
        s_cabeceras_pedidos-purch_org = p_ekorg.
        s_cabeceras_pedidos-pur_group = p_ekgrp .
        s_cabeceras_pedidos-co_code = p_bukrs .
        s_cabeceras_pedidos-doc_date = p_date.
        APPEND  s_cabeceras_pedidos TO t_cabeceras_pedidos.
        cant = excel-row.
        DO cant TIMES.
          LOOP AT excel WHERE row EQ value_row.
            APPEND excel TO data_aux.
          ENDLOOP.
          SORT data_aux BY col.
          LOOP AT data_aux.
            CASE data_aux-col.
              WHEN '1'.
                s_pos_pedidos-pur_mat = data_aux-value.
              WHEN '2'.
                s_pos_pedidos-DISP_QUAN = data_aux-value.
              WHEN '3'.
                s_pos_pedidos-plant = data_aux-value.
              WHEN '4'.
                s_pos_pedidos-store_loc = data_aux-value.
            ENDCASE.
          ENDLOOP.
          APPEND s_pos_pedidos TO t_pos_pedidos.
        ENDDO.
      ENDIF.
    ENDFORM.                    " fill_data
    *&      Form  llamar_Bapi
          text
    -->  p1        text
    <--  p2        text
    FORM llamar_bapi .
    data : T_RETURN LIKE BAPIRETURN OCCURS 0 WITH HEADER LINE,
           PORDER LIKE BAPIEKKOC-PO_NUMBER.
    t_final_cabeceras_pedidos[] = t_cabeceras_pedidos[].
    t_final_pos_pedidos[] = t_pos_pedidos[].
      CALL FUNCTION 'BAPI_PO_CREATE'
        EXPORTING
          po_header                        = t_final_cabeceras_pedidos
    IMPORTING
       PURCHASEORDER                     = PORDER
        TABLES
          po_items                       = t_final_pos_pedidos
          po_item_schedules                = item_schedule
          RETURN                           = T_RETURN
      IF sy-subrc EQ 0 .
        WRITE :/ 'P O created well'.
      ELSE .
        WRITE :/ 'P .O was not created  well'.
        endif.
      ENDFORM.                    " llamar_Bapi

    Hi,
    When we use BAPI_PO_CREATE1 to create service PO, following tables are populated at item level:
    a) POITEM
    b) POITEMX
    c) POACCOUNT
    d) POACCOUNTX
    e) POSERVICES
    f) POSRVACCESSVALUES
    For service items: POITEM-PCKG_NO = u20180000000001u2019. (assign package no as a dummy number)
    Set PCKG_NO flag in POITEMX table as u2018Xu2019.
    Package No is the link that connect POITEM table to POACCOUNT table through tables POSERVICES and POSRVACCESSVALUES.
    Set POACCOUNT-SERIAL_NO to u201801u2019.
    Set same PCKG_NO to u20180000000001u2019 in POSERVICES table. Maintain two entries in POSERVICES table like this:
    WA_POSERVICES-PCKG_NO = u20180000000001u2019.
    WA_POSERVICES-LINE_NO = u20180000000001u2019.
    WA_POSERVICES-OUTL_IND = u2018Xu2019.
    WA_POSERVICES-SUBPCKG_NO = u20180000000003u2019. (Dummy No.)
    WA_POSERVICES-QUANTITY = u2018100.000u2019.
    WA_POSERVICES-BASE_UOM = u2018EAu2019.
    WA_POSERVICES-PRICE_UNIT = u20181u2019.
    WA_POSERVICES-GR_PRICE = u2018100.000u2019.
    WA_POSERVICES-SHORT_TEXT = u2018SERVICE TESTu2019.
    APPEND WA_POSERVICES TO IT_POSERVICES.
    WA_POSERVICES- PCKG_NO = u20180000000003u2019.
    WA_POSERVICES- LINE_NO = u20180000000002u2019.
    WA_POSERVICES-QUANTITY = u201810.000u2019.
    WA_POSERVICES- BASE_UOM = u2018EAu2019.
    WA_POSERVICES--PRICE_UNIT = u20181u2019.
    WA_POSERVICES-GR_PRICE = u2018100.000u2019.
    WA_POSERVICES-SHORT_TEXT = u2018SERVICE 1u2019.
    WA_POSERVICES-MATL_GROUP = u20180012u2019.
    APPEND WA_POSERVICES TO IT_POSERVICES.
    Set PCKG_NO as SUB_PCKG_NO in table POSRVACCESSVALUES this:
    WA_POSRVACCESSVALUES-PCKG_NO = u20180000000003u2019.
    WA_POSRVACCESSVALUES-LINE_NO = u20180000000002u2019.
    WA_POSRVACCESSVALUES-SERNO_LINE = u201801u2019.
    WA_POSRVACCESSVALUES-SERIAL_NO = u201801u2019.
    WA_POSRVACCESSVALUES-QUANTITY = u201910.000u2019.
    APPEND WA_POSRVACCESSVALUES TO IT_ POSRVACCESSVALUES.
    This logic will work definitely and PO Service Items will be created.
    Thanks & Regards.
    Dhina..

  • Double quotes problem while uploading tablimeited text file to internal tab

    H all,
    I am uploading excel data using GUI_UPLOAD function module by converting excel to tab delimited text format.
    Problem is Material AB" is converted to "AB"  "           " material in tabdelimited text format.
    Can anybody give solution to problem?
    Is it possible to upload excel file directly using GUI_UPLOAD function module?
    I can not use 'ALSM_EXCEL_TO_INTERNAL_TABLE'  and  'TEXT_CONVERT_XLS_TO_SAP'
    as i want to upload upload fields of length 3000 cahrs and these function module uploads fields of only 256 chars.
    Thanks.

    Get a excel - 97-2003.Fil the data which you want to upload .(3 columns )
    A      I      B     I     C     I.
    save it
    Code :
    TABLES : thead.
    Structure to store the file name, as selected from the open dialog
    TYPES: BEGIN OF file ,
            filename TYPE file_table-filename,
           END OF  file.
    Output for excel
    TYPES : BEGIN OF test,
                   a(5),
                   b(5),
                   c(5),
            END OF test.
    Internal table of excel
    DATA : it_test TYPE TABLE OF test.
    DATA : it_filename TYPE TABLE OF  file,.  "to store file names.
                 ws_filename TYPE       file.
    SELECTION-SCREEN
    PARAMETER: p_file LIKE rlgrap-filename  LOWER CASE.
    At Selection Screen
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
    Parameter to store the sy-subrc value from FM file_open_dialog
      DATA: rc TYPE i.
      CLEAR: it_filename,
             ws_filename,
             p_file .
    Get the file name and path from the presenatation server
      CALL METHOD cl_gui_frontend_services=>file_open_dialog
        EXPORTING
          window_title            = 'Select Input File'
          default_filename        = '*.xls'
        CHANGING
          file_table              = it_filename
          rc                      = rc
        EXCEPTIONS
          file_open_dialog_failed = 1
          cntl_error              = 2
          error_no_gui            = 3
          not_supported_by_gui    = 4
          OTHERS                  = 5.
      IF sy-subrc = 0.
        LOOP AT it_filename INTO ws_filename.
          p_file = ws_filename.
          EXIT.
        ENDLOOP.
      ENDIF.
    DATA: l_file TYPE string.
      CLEAR it_test .
      l_file = p_file.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          filename                = l_file
          filetype                = 'ASC'
          has_field_separator     = 'X'
        TABLES
          data_tab                = it_test
        EXCEPTIONS
          file_open_error         = 1
          file_read_error         = 2
          no_batch                = 3
          gui_refuse_filetransfer = 4
          invalid_type            = 5
          no_authority            = 6
          unknown_error           = 7
          bad_data_format         = 8
          header_not_allowed      = 9
          separator_not_allowed   = 10
          header_too_long         = 11
          unknown_dp_error        = 12
          access_denied           = 13
          dp_out_of_memory        = 14
          disk_full               = 15
          dp_timeout              = 16
          OTHERS                  = 17.
      IF sy-subrc NE 0.
        WRITE: "Upload error".
        STOP.
      ENDIF.

  • Problem with client_get_file_name

    Hi,
    v_filename := client_get_file_name(........);
    :b_test.test := v_filename;
    Above is the simple code that I use.
    But my problem is ... sometimes ( I think 1 out of 10 ), when I select
    the file in the dialogue and press open button, the dialogue closes but the file path
    cannot be assigned to :b_test.test.
    Anyone knows the reason ?
    Ivan

    Hi Gerd Volberg,
    Thanks for your reply.
    Does it mean that currently we cannot avoid this problem ?
    Many users complain about that it is not stable. It seems that what I can do is to ask
    them double click the file instead of selecting the file and then pressing the open
    button.
    does it solve the problem if i use webutil_file.file_open_dialog ?
    Thanks.
    Ivan

  • WebUtil Problem - Open File - Francois Degrelle  Please reply

    Dear Francois
    I'm facing a problem file trying to open file dialogue
    1. Created a Module with two items 1. Push button 1. Text Item
    2. Created trigger "When Button Pressed" with code
    DECLARE
         LC$Path VARCHAR2(250);
         LC$File VARCHAR2(275);
    BEGIN
         LC$Path := CLIENT_WIN_API_ENVIRONMENT.Get_Temp_Directory;
         LC$File := WEBUTIL_FILE.FILE_OPEN_DIALOG(LC$Path,'','|All files|*.*|','Select a file to upload');
         MESSAGE('File Selected : '||LC$File);
         :OPENFILE.TX_FILENAME := LC$File;
    EXCEPTION
         WHEN OTHERS THEN
         MESSAGE(sqlerrm);
    END;
    4. Attached PL/SQL Lib webutil.pll (with path removed option) as well as with Path ( tried both option to get rid of my problem)
    5. Open webutil.olb in object Lib
    6. Did both "subclass" as well as "Copy" in Object Group ( tried both option to get rid of my problem)
    Now ....
    Run Form --- Forms run perfect and "Open File Dialogue" comes up, can select file, move directories up/down and file name with path gets copied to text item
    Problem
    Now I save the form and close Builder and OC4J Server
    Now start Oc4J and Open this form again
    Try to complie the form and run the form then I get this error
    "FRM-92101 There was a failure in the forms Server during startup. This could happen due to invalid configuration.
    Please check the webserver log for detail"
    Another Problem , if do any combination of "Webutil.pll" (copy Path) or "Webutil.olb" (Subclass)
    I don't get First Problem but get "WEBUTIL_C.API_REGISTER_FUNCTION" werror.
    Interestingly
    I downloaded your example "WEBUTIL_DOC.fmb" and ran many times I DON"T GET THIS ERROR
    I have configured WBUTIL as per webutil manual.
    I'm using DeveloperSuite 10g (complete installation) version 10.2 On Windowx XP prof.

    Apologies for mentioning your name as I used one of your example to do it myself.
    Just thought that you will be right person to understand my problem.
    Apologies again from you and everyone on forum

  • Forms9i-Webutil : problem with CLIENT_TEXT_IO

    hello,
    This is a small function to create a local file whith CLIENT_TEXT_IO
    Forms 9i
    JInitiator: Version 1.3.1.13
    Utilisation de la version JRE 1.3.1.13-internal Java HotSpot(TM) Client VM
    Répertoire d'accueil de l'utilisateur = C:\Documents and Settings\degrelle
    Configuration du proxy : aucun proxy
    JAR cache enabled
    Location: C:\Documents and Settings\degrelle\Oracle Jar Cache
    Maximum size: 50 MB
    Compression level: 0
    when the cursor is about ten lines, all is OK,
    but when the cursor is about 100 lines, the Forms application become out of order !
    in the java console, nothing is display after the WUF[getProperty()] Getting property WUF_TEXTIO_OPEN line
    PROCEDURE export_texte IS
    LF$File CLIENT_TEXT_IO.FILE_TYPE;
    LC$Name Varchar2(100) ;
    LC$Fic Varchar2(100) ;
    Cursor EMISSIONS IS
    Select
    REGION,
    DATE_HEURE_PRESSE,
    TITRE,
    CHAPEAU
    From
    EMISSIONS_REGIONS
    Where
    DATE_HEURE_PRESSE Between :CONTROL.DATE_DEB and :CONTROL.DATE_FIN
    order by
         region,
         date_heure_presse
    LC$Old_region EMISSIONS_REGIONS.REGION%Type := 'X' ;
    BEGIN
    LC$Name := To_char( :CONTROL.DATE_DEB, 'DAY' ) || ' HEBDO ' || Ltrim( :PARAMETER.HEB_NUMERO ) || '.txt' ;
    LC$Fic := WEBUTIL_FILE.FILE_OPEN_DIALOG
         'D:\',
         LC$Name,
         'Sélectionner un fichier'
    If LC$Name is null Then
    Return ;
    End if ;
    LF$File := CLIENT_TEXT_IO.FOPEN(LC$Fic, 'W');
    CLIENT_TEXT_IO.PUT_LINE( LF$File, 'les magazines et documentaires de votre région' ) ;
    CLIENT_TEXT_IO.PUT_LINE( LF$File, To_char( :CONTROL.DATE_DEB, 'FMDay DD Month' ) ) ;
    CLIENT_TEXT_IO.PUT_LINE( LF$File, '' ) ;
    For C_EMS in EMISSIONS Loop
    If C_EMS.region <> LC$Old_region Then
    CLIENT_TEXT_IO.PUT_LINE( LF$File, '' ) ;
    CLIENT_TEXT_IO.PUT_LINE( LF$File, C_EMS.region ) ;
    LC$Old_region := C_EMS.region ;
    End if ;
    CLIENT_TEXT_IO.PUT( LF$File, To_char( C_EMS.date_heure_presse, 'HH24"h"MI' ) ) ;
    CLIENT_TEXT_IO.PUT( LF$File, ' ' ) ;
    CLIENT_TEXT_IO.PUT_LINE( LF$File, C_EMS.titre ) ;
    If C_EMS.chapeau is not null Then
    CLIENT_TEXT_IO.PUT_LINE( LF$File, C_EMS.chapeau ) ;
    end if ;
    End loop ;
    CLIENT_TEXT_IO.FCLOSE( LF$File ) ;
    END;
    2004-sept.-09 15:05:08.121 WUT[setProperty()] Setting property WUC_GET_LOCAL_PROPERTY to syslib.jacob.dll
    2004-sept.-09 15:05:08.215 WUT[getProperty()] Getting property WUC_GET_LOCAL_PROPERTY
    2004-sept.-09 15:05:08.231 WUT[loadSettings()] Local properties file loaded
    2004-sept.-09 15:05:08.278 WUT[setProperty()] Setting property WUC_GET_LOCAL_PROPERTY to syslib.JNIsharedstubs.dll
    2004-sept.-09 15:05:08.371 WUT[getProperty()] Getting property WUC_GET_LOCAL_PROPERTY
    2004-sept.-09 15:05:08.418 WUT[setProperty()] Setting property WUC_GET_LOCAL_PROPERTY to syslib.d2kwut60.dll
    2004-sept.-09 15:05:08.528 WUT[getProperty()] Getting property WUC_GET_LOCAL_PROPERTY
    2004-sept.-09 15:05:13.543 WUF[setProperty()] Setting property WUF_GFN_DIRNAME to D:\
    2004-sept.-09 15:05:13.637 WUF[setProperty()] Setting property WUF_FILENAME to SAMEDI HEBDO 37.txt
    2004-sept.-09 15:05:13.637 WUF[setProperty()] Setting property WUF_FILTER to false
    2004-sept.-09 15:05:13.746 WUF[setProperty()] Setting property WUF_GFN_MESSAGE to Sélectionner un fichier
    2004-sept.-09 15:05:13.840 WUF[setProperty()] Setting property WUF_GFN_MULTISELECT to FALSE
    2004-sept.-09 15:05:13.840 WUF[getProperty()] Getting property WUF_GFN_OPENFILE
    2004-sept.-09 15:05:17.621 WUF[setProperty()] Setting property WUF_FILENAME to D:\SAMEDI HEBDO 37.txt
    2004-sept.-09 15:05:17.621 WUF[setProperty()] Setting property WUF_TEXTIO_FILEMODE to W
    2004-sept.-09 15:05:17.621 WUF[getProperty()] Getting property WUF_TEXTIO_OPEN
    *** !!!-- the console stop display at this point when the function write more than 10 lines !!! ***
    2004-sept.-09 15:05:20.278 WUF[setProperty()] Setting property WUF_TEXTIO_HANDLE to 1
    2004-sept.-09 15:05:20.387 WUF[setProperty()] Setting property WUF_TEXTIO_PUT to 19/20 édition des régions et des locales
    2004-sept.-09 15:05:20.481 WUF[setProperty()] Setting property WUF_TEXTIO_NEWLINE to 1
    2004-sept.-09 15:05:20.575 WUF[setProperty()] Setting property WUF_TEXTIO_CLOSE to 1
    2004-sept.-09 15:05:56.840 WUI[VBeanCommon.destroy()] WebUtil GetClientInfo Utility being removed..
    2004-sept.-09 15:05:56.840 WUI[VBeanCommon.destroy()] 0 out of 0 object references removed, 0 (total) global references outstanding
    2004-sept.-09 15:05:56.840 WUF[VBeanCommon.destroy()] WebUtil Client Side File Functions being removed..
    2004-sept.-09 15:05:56.840 WUF[VBeanCommon.destroy()] 0 out of 0 object references removed, 0 (total) global references outstanding
    2004-sept.-09 15:05:56.840 WUH[VBeanCommon.destroy()] WebUtil Client Side Host Commands being removed..
    2004-sept.-09 15:05:56.840 WUH[VBeanCommon.destroy()] 0 out of 0 object references removed, 0 (total) global references outstanding
    2004-sept.-09 15:05:56.840 WUS[VBeanCommon.destroy()] WebUtil Session Monitoring Facilities being removed..
    2004-sept.-09 15:05:56.856 WUS[VBeanCommon.destroy()] 0 out of 0 object references removed, 0 (total) global references outstanding
    2004-sept.-09 15:05:56.856 WUT[VBeanCommon.destroy()] WebUtil File Transfer Bean being removed..
    2004-sept.-09 15:05:56.856 WUT[VBeanCommon.destroy()] 0 out of 0 object references removed, 0 (total) global references outstanding
    2004-sept.-09 15:05:56.856 WUO[VBeanCommon.destroy()] WebUtil Client Side Ole Functions being removed..
    2004-sept.-09 15:05:56.856 WUO[VBeanCommon.destroy()] 0 out of 0 object references removed, 0 (total) global references outstanding
    2004-sept.-09 15:05:56.856 WUL[VBeanCommon.destroy()] WebUtil C API Functions being removed..
    2004-sept.-09 15:05:56.856 WUL[VBeanCommon.destroy()] 0 out of 0 object references removed, 0 (total) global references outstanding
    2004-sept.-09 15:05:57.106 WUB[VBeanCommon.destroy()] WebUtil Browser Functions being removed..
    2004-sept.-09 15:05:57.106 WUB[VBeanCommon.destroy()] 0 out of 0 object references removed, 0 (total) global references outstanding
    *** this is OK when the cursor is about only ten lines ***
    any idea ?

    CORRECTION :
    the problem occurs after the FCLOSE() statment.
    so in all cases, the file is created on the client machine and it is correct (but very slow; about 30 seconds to create a 1008 bytes file with 80 lines !).
    it is just when the cursor is about 50 lines that the Forms application is space out.
    it seems to be the Clean() statments that are not applyed.

  • WebUtil_File.File_Open_Dialog VERY SLOW with large amounts of files

    Dear Friend,
    We are using WebUtil_File.File_Open_Dialog on the client to allow for the selection of an image from a folder on the server, which contains around 2-3000 files.
    It takes around 10-15 minutes to display the files within the folder. This is obviously unacceptable and I was wondering if anyone had come up with a viable solution to this problem, as i noticed similar issues had been posted in the past and no solution was suggested.
    The function call for the above operation is: :control.fichier := WebUtil_File.File_Open_Dialog(:global.path||'images\bdsurvey\', '', '*.jpg |*.jpg| (All files)*.* |*.*|', 'Nom du fichier photo');
    Many thanks,
    John

    This can be done by the following:
    Tuning the file system - reducing/filtering unwanted files, defragmentation, FAT (NTFS might consume more time)
    I am not sure whether you can do anything for this in AS.
    Alternatively there are some java classes which may be used instead of web util.

  • FILE_OPEN_DIALOG doesn't work on ECC 6.0

    Hi all,
    i'm trying to use the open file dialog in a report selection screen
    I've tried all the method's and FM's that i know but it's not working.
    cl_gui_frontend_services=>file_open_dialog
    F4_FILENAME
    WS_FILENAME_GET
    My SAP system is ECC 6.0 and the sap gui is the 620.
    Do you have any idea on what could be the problem on this.
    Thanks in advance.

    Check the below link:
    File open dialogue
    Thanks
    Seshu
    Message was edited by:
            Seshu Maramreddy

  • Webutil: webutil_file.file_open_dialog seems to hang when cancel is pressed

    Hi,
    I just used webutil_file.file_open_dialog to select files. I noticed when I press the cancel button, webforms hangs. I have to close my webforms session with the taskmanager, while the cpu has gone to 99%
    I encounter the same problem when using webutil_file.file_selection_dialog.
    Am I doing something wrong or is this a bug?

    what was the code problem that you resolved - I am running into the exact same problem when using the webutil_file.file_open_dialog and I hit cancel it all hangs.

  • Problems with shortcuts when selecting file to upload in BPS

    Hi all,
    We have a problem when the user is navigating through the directories for selecting a file to upload. When the user navigates between folders it is ok but if there is a shortcut to another disc the program interprets that as a file and then generates a lot of errors in BPS.
    This worked only a month ago and the only thing we have changed is a GUI upgrade from 640 to 710. Could this be the problem?
    We are using cl_gui_frontend_services=>file_open_dialog for uploading files in the planning layout.
    We are on:
    BW: 3.5 Patch 17
    GUI: 710
    SEM: 4 Patch 8
    Thanks for any help!
    Best Regards
    Pontus

    Hello Pontus,
    maybe you are using the incorrect file/path separator. Check SAP Note <a href="http://service.sap.com/sap/support/notes/1266211">1266211[</a> on how to get the correct separator.
    Regards,
    Marc
    SAP NetWeaver RIG

  • Buttons 'LIST' AND 'DETAILS' disabled in WEBUTIL_FILE.FILE_OPEN_DIALOG

    When I do 'WEBUTIL_FILE.FILE_OPEN_DIALOG' the explorer is opened and it shows some bittons ('List','Details',etc).
    My problem is that the buttons 'List' and 'Details' are disabled and I need to use them.
    And a question ¿could I hide any of the icons in the explorer?
    Sorry for my English
    Thank you

    Did you find out how to fix it? I need it, too, but looks like no one have answer. Please let me know if you know.
    Thanks,
    Jess

  • Problem in configuring Webutil

    Hello!!!
    I have installed Oracle Developer Suite 10g on Windows XP. I want to configure Webutil but following the instructions located in on-line help and specifically in step 4 (signing the jar files) , there is not the file 'signer.properties'!!!
    Where can I find it?
    Simon

    Hello ,
    I downloaded , extracted and installed webutil 1.0.6. - in Windows XP - above the one installed during the Developer Suite R.2 installation. I downloaded and extracted the jacob_18.zip.
    I followed the instructions on the webutil.html file on how to install .
    The problem is that a message ORA-06508 appears when I push a button on a very simple form - which consists of just this button and necessary webutil components. I inserted the webutil.pll and subclassed the webutil.olb on the form.
    The code of the WHEN-BUTTON-PRESSED is :
    declare
    a varchar2(500);
    begin
    a:=WEBUTIL_CLIENTINFO.Get_Date_Time;
    end;
    I tried , also the WEBUTIL_FILE.FILE_OPEN_DIALOG(dirname,null,'|All files|*.*|' ,'open') code with the same results....
    Surely , the problem may originate from the following :
    1) I can not import the java class called oracle.forms.webutil.ole.OleFunctions in the form .
    The error message is : Exception ----- java.lang.NoClassDefFoundError: com/jacob/com/ComFailException .
    2) The Java bean 'oracle.forms.webutil.ole.OleFunctions ' does not appear on the webutil canvas. , An error message appears...cannot find the Java Bean named ' 'oracle.forms.webutil.ole.OleFunctions '
    3) In the document the FORMS_BUILDER_CLASSPATH (it is the registry entry isn't ? ) is referenced to ' /forms/java/frmall.jar;/forms/java/frmwebutil.jar;/forms/java/jacob.jar'.
    The above paths must be written as they are (I use Windows XP system) or they must be written with the full path (e.g. c:\oracle\product\devsuite10g\forms\java\frmall.jar) ?
    Another problem about FORMS_BUILDER_CLASSPATH is that the length is 670 (exceeding 512 characters). What can I do for it?
    4) The same as above with the logical/physical paths exist in the following , according to the help file:
    - WEBUTIL_CONFIG parameter
    - CLASSPATH
    - the entry in 'j2ee/DevSuite/application-deployments/forms/formsweb/orion-web.xml ' .
    In these situations which path should I write (the physical(whole path) or the logical (as they are in the help document))?
    Thanks , a lot !!!!
    Simon

Maybe you are looking for

  • ITunes 12 crashes all the time (but music continues to play)

    Since I bought my new Macbook Pro I've had this annoying problem with iTunes. It's crashing more or less every ten minutes. It doesn't affect the track playing though. The track finishes playing, and when it's done nothing happens. Except for iTunes

  • How can I find duplicates in Photos app?

    I have a lot of all images that I imported to my mac way back from my old iPhones into folders on my hard drive, I know that there's some duplicates in those folders. But I dragged in everything to the new Photos app to clean up all the mess and keep

  • Exceptions with JEditorPane setPage() method (Catching not possible)

    hi all if anyone can help me...please help I got serious exceptions with the JEditorPane()'s setPage() method I have written the try & catch still i could not catch the exception..(those exceptions are not displaying any of my program lines)..setPage

  • Statspack : Top 5 Timed Events - CPU time

    Hi, I just get some statspack reports on my 10.2.0.2 database (HP-UX 11i). I'm just surprise about the CPU time into the Top-5 events. Top 5 Timed Events                                                    Avg %Total ~~~~~~~~~~~~~~~~~~                

  • Help to configure Audigy2ZS Platinum Pro and Cubase SX2

    Can anyone tell me how to set my Platinum Pro card with Cubase SX2...I'm also having Latency problems recording in 24bit-96hrtz...Should I buy a mixer or is The Audigy breakout box good enough...many questions I know...I hope ye can help me,,,,