IF ELSEIF Problem

Hi,   I am trying to do some math in the first IF statement:  divide total by 2.  When I look at my report the I am seeing the ({@Total}/2).  Here is my formula:
If (CurrentDate> {@21Days}) OR (CurrentDate >{@LastMonth})THEN "NOTICE OF TERMINATION OF CHILD CARE CONTRACT FOR NON-PAYMENT OF FEES." + chr(10)"" chr(10)+ "You must pay at least 50% of the total due:" + "({@Total}/2)"
ELSE
If (CurrentDate<{@LastMonth}) THEN "SECOND WEEK NON-PAYMENT/PARTIAL PAYMENT NOTICE"
ELSE
If {tblAROpenDoc.dtmDocDate} in LastFullWeek THEN "FIRST WEEK NON-PAYMENT/PARTIAL PAYMENT NOTICE" ELSE ""
Does anyone know what I should be doing?  Thanks.

Hi BJ,
I think it might work if you replace "({@Total}/2)" with ToText({@Total}/2).  Leave off the quotes.  ToText will convert the number to a string.
Hope that helps,
Cyndi

Similar Messages

  • Problem with if - elseif - endif.

    Hi,
    Pls see this code
    IF g_error = 'X'.
        WRITE: / "File formatted incorrectly.".
      ELSEIF tot_betrg NE g_tot_betrg OR g_tot_rec NE l_tot_rec .
        WRITE: / 'summary record count does not match.'.
        SKIP.
      ENDIF.
    This is giving me syntax error "Field elseif if unknown. It is neither in one of the specified tables nor defined by a 'data' statement.
    Please help
    Thanks
    Pranati

    Hi Pranati,
    Modify your code in this way.
    IF g_error = 'X'.
    WRITE: / "File formatted incorrectly.".
    ELSEIF.
    tot_betrg NE g_tot_betrg OR g_tot_rec NE l_tot_rec .
    WRITE: / 'summary record count does not match.'.
    SKIP.
    ENDIF.
    Hope this resolves your query.
    <b>Reward all the helpful answers.</b>
    Regards

  • Memory Problem with SEt and GET parameter

    hi,
    I m doing exits. I have one exit for importing and another one for changing parameter.
    SET PARAMETER exit code is ....
    *data:v_nba like eban-bsart,
           v_nbc like eban-bsart,
           v_nbo like eban-bsart.
           v_nbc = 'CAPX'.
           v_nbo = 'OPEX'.
           v_nba = 'OVH'.
    if im_data_new-werks is initial.
      if im_data_new-knttp is initial.
        if im_data_new-bsart = 'NBC' or im_data_new-bsart = 'SERC' or im_data_new-bsart = 'SERI'
           or im_data_new-bsart = 'SER' or im_data_new-bsart = 'SERM' or im_data_new-bsart = 'NBI'.
          set parameter id 'ZC1' field v_nbc.
        elseif im_data_new-bsart = 'NBO' or im_data_new-bsart = 'NBM' or im_data_new-bsart = 'SERO'.
          set parameter id 'ZC2' field v_nbo.
        elseif im_data_new-bsart = 'NBA' or im_data_new-bsart = 'SERA'.
          set parameter id 'ZC3' field  v_nba.
        endif.
      endif.
    endif. *
    and GET PARAMETER CODE IS....
      get parameter id 'ZC1' field c_fmderive-fund.
      get parameter id 'ZC2' field c_fmderive-fund.
      get parameter id 'ZC3' field c_fmderive-fund.
    FREE MEMORY ID 'ZC1'.
      FREE MEMORY ID 'ZC2'.
       FREE MEMORY ID 'ZC3'.
    In this code i m facing memory problem.
    It is not refreshing the memory every time.
    So plz give me proper solution.
    Its urgent.
    Thanks
    Ranveer

    Hi,
       I suppose you are trying to store some particular value in memory in one program and then retieve it in another.
    If so try using EXPORT data TO MEMORY ID 'ZC1'. and IMPORT data FROM MEMORY ID 'ZC1'.
    To use SET PARAMETER/GET PARAMETER the specified parameter name should be in table TPARA. Which I don't think is there in your case.
    Sample Code :
    Data declarations for the function codes to be transferred
    DATA : v_first  TYPE syucomm,
           v_second TYPE syucomm.
    CONSTANTS : c_memid TYPE char10 VALUE 'ZCCBPR1'.
    Move the function codes to the program varaibles
      v_first  = gv_bdt_fcode.
      v_second = sy-ucomm.
    Export the function codes to Memory ID
    EXPORT v_first
           v_second TO MEMORY ID c_memid.        "ZCCBPR1  --- Here you are sending the values to memory
    Then retrieve it.
    Retrieve the function codes from the Memory ID
      IMPORT v_first  TO v_fcode_1
             v_second TO v_fcode_2
      FROM MEMORY ID c_memid.                                   "ZCCBPR1
      FREE MEMORY ID c_memid.                                   "ZCCBPR1
    After reading the values from memory ID free them your problem should be solved.
    Thanks
    Barada
    Edited by: Baradakanta Swain on May 27, 2008 10:20 AM

  • 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

  • SAP GUI 730 PL8 Installation Problems

    Hi all!
    We are facing a problem with the following software product:
    Information NwSapSetupAdmin.exe:
    SAP GUI for Windows 7.30 (Compilation 3)
    Component ID: 1460620d-c8bc-44c2-86ec-e632e0986b01
    Version: 27625
    Latest Patch Level: 8
    SAP Automatic Workstation Update
    Component ID: 40d11884-3906-4e67-8a96-91035ca09814
    Version: 900.42
    Latest Patch Level: 45 Version 9.0.45.0
    Information SAP Logon:
    Release: 730 Final Release
    Dateiversion: 7300.3.8.1084
    Build: 1478436
    Patch-Level: 8
    Within the SAP GUI Installation (NwSapSetup.log) the following error occurs:
    16:25:13 NwSapsAtlC  1   Executing script action...
    16:25:13 NwSapsAtlC  1   Script-action: Checking reboot condition.
    16:25:13 NwSapsAtlC  1   Script-action: NwEngine.Context.Reboot = 1
    16:25:13 NwSapsAtlC  1E  Microsoft VBScript runtime error: Error message: Unknown error 0x800A01B6. Error code 0x800a01b6.
                             Object doesn't support this property or method: 'NwEngine.Context.Args' (Line 4, Col. 5)
                             The setup script contains the error listed above. Please contact your system administrator and provide this information, for example by sending him a screenshot of this message box (Press Alt+PrtScrn to create the screenshot and copy it to the clipboard).
    16:25:13 NwSapsAtlC  1E  Failed to run script:
                                  ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
                               1: NwEngine.Context.Log.Write "Script-action: Checking reboot condition."
                               2:             NwEngine.Context.Log.Write "Script-action: NwEngine.Context.Reboot = " & NwEngine.Context.Reboot
                               3:             If NwEngine.Context.Reboot = 1 Then
                               4:                 If NwEngine.Context.Args("SuppressReboot") <> "" Then
                               5:                     NwEngine.Context.Reboot = 0    'Setting Flag for no Reboot
                               6:                     NwEngine.Context.Log.WriteWarning "Script-action: Reboot suppressed by the user. NwEngine.Context.Reboot = " & NwEngine.Context.Reboot
                               7:                 ElseIf NwEngine.Context.Args("DelayReboot") <> "" Then
                               8:                     NwEngine.Context.Reboot = 1    'Setting Flag for delayed Reboot
                               9:                     NwEngine.Context.Log.WriteWarning "Script-action: Reboot delayed by the user. NwEngine.Context.Reboot = " & NwEngine.Context.Reboot
                              10:                 Else
                              11:                     NwEngine.Context.Reboot = 2    'Setting Flag for immediate Reboot
                              12:                     NwEngine.Context.Log.Write "Script-action: Enforce immediate reboot."
                              13:                 End If
                              14:             End If
                                  ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
                             Error message: Unknown error 0x80020101. Error code 0x80020101.
    16:25:13 NwSapsAtlC  1E  Failed to parse script. Error message: Unknown error 0x80020101. Error code 0x80020101.
    16:25:13 NwSapsAtlC  1E  While processing Component '$MS System Files' with Id '{F270A214-3AD3-4235-9C74-F4D323B54976}' 1 error(s) have been registered.
    16:25:13 NwSapsAtlC  1   CompAct.:Installed Component '$MS System Files' with Id '{F270A214-3AD3-4235-9C74-F4D323B54976}'
    With this the NwSapSetup.log ends with:
    16:26:23 NwSapSetup 1 Return-Code: 145
    In the next logical step within our environment a uninstallation of the SAP GUI gets started:
       Commandline:  
    '"C:\Program Files (x86)\SAP\SapSetup\Setup\NWSapSetup.exe"  /Silent /Uninstall /Package=PEACY'
    This operation gets done with:
    12:35:47 NwSapSetup 1 Return-Code: 0
    After that the installation of the SAP GUI gets started again with:
       Commandline:        '"C:\peacy.sys\source\SAPGUI730PL8\source\setup\NwSapSetup.exe"  /noDLG /norestart /Package=PEACY'
    Now the Installation gets done with:
    12:52:12 NwSapSetup 1 Return-Code: 0
    Every first installation of SAP GUI 7.30 PL8 is affected. This is a cross-platform issue (Windows 7 and Windows 8.1). If there was our older package version (SAP GUI 7.30 PL4) installed, the installation of SAP GUI 7.30 PL8 gets done without problems.
    Every new client with the SAP GUI 7.30 PL8 assigned or the re-installation of it, and every first installation of the package on a client without SAP GUI leads to the mentioned issue - package gets installed with the mentioned error, afterwards the uninstallation gets started by our environment and finally the installation gets done with the second try. This is not a practicable method for our support staff.
    Are there any hints how to resolve this issue. (A upgrade to the newest patch level of SAP GUI is not a practicable solution)
    Thanks in advance!
    Best regards
    Christian

    Hello Christian,
    For older releases of the SAP GUI client a good approach is to create package for uninstalling old SAP GUI.  Depending on the state of the old SAP GUI's you're upgrading those may not be "clean" enough to warrant upgrading in place.
    The older GUI's have component's no longer provided with the newer releases so most recommendations are to uninstall completely an do a fresh installation.
    I credit Matt Fraser for this information and suggest reading his documentation.  The last 4 articles are germane to you're situation.  I hope this helps you.
    http://scn.sap.com/thread/3620515
    http://scn.sap.com/docs/DOC-55477
    http://scn.sap.com/docs/DOC-55574
    http://scn.sap.com/docs/DOC-55575
    http://scn.sap.com/docs/DOC-55633
    http://scn.sap.com/docs/DOC-55634
    http://scn.sap.com/docs/DOC-55674
    Cheers,
    Dan Mead

  • Urgant problem for the updating problem  HELP

    Dear sir/miss,On 2008.12.01 one of our partner company consultant,setup an update(SAPKH50016 AND SAPKH50017) page on our production system without and test in the test system.
    Now our transaction code CV03N,CV02N,CV01N can not be used,jump out abap problems as below:
    It's already give us very big impact to our SAP system,so please tell me how to deal with it.
    "Runtime Errors MOVE_CAST_ERROR
    Exceptn CX_SY_MOVE_CAST_ERROR
    Date and Time 2008.12.02 08:23:43
    ShrtText
    A dynamic type conflict occurred during reference assignment.
    What happened?
    Error in ABAP application program.
    The current ABAP program "CL_EX_DOCUMENT_MAIN02=========CP" had to be
    terminated because one of the
    statements could not be executed.
    This is probably due to an error in the ABAP program.
    What can you do?
    Print out the error message (using the "Print" function)
    and make a note of the actions and input that caused the
    error.
    To resolve the problem, contact your SAP system administrator.
    You can use transaction ST22 (ABAP Dump Analysis) to view and administer
    termination messages, especially those beyond their normal deletion
    date.
    is especially useful if you want to keep a particular message.
    Error analysis
    An exception occurred. This exception is dealt with in more detail below
    . The exception, which is assigned to the class 'CX_SY_MOVE_CAST_ERROR', wa
    neither
    caught nor passed along using a RAISING clause, in the procedure
    "IF_EX_DOCUMENT_MAIN02~D100_BEFORE_PAI" "(METHOD)"
    Since the caller of the procedure could not have expected this exception
    to occur, the running program was terminated.
    The reason for the exception is:
    A 'CAST' operation ('?=' or 'MOVE ?TO') tried to assign an object or
    interface variable to a reference variable.
    However, the contents of the source variable do not fit in the target.
    Source type. "\CLASS=ZCL_IM_DOCUMENT_MAIN02"
    Target type: "\INTERFACE=IF_EX_DOCUMENT_MAIN02"
    How to correct the error
    If the error occurred in one of your own programs or in an SAP program
    that you modified, try to correct it yourself.
    You may able to find an interim solution to the problem
    in the SAP note system. If you have access to the note system yourself,
    use the following search criteria:
    "MOVE_CAST_ERROR" CX_SY_MOVE_CAST_ERRORC
    "CL_EX_DOCUMENT_MAIN02=========CP" or "CL_EX_DOCUMENT_MAIN02=========CM007"
    "IF_EX_DOCUMENT_MAIN02~D100_BEFORE_PAI"
    If you cannot solve the problem yourself and you wish to send
    an error message to SAP, include the following documents:
    1. A printout of the problem description (short dump)
    To obtain this, select in the current display "System->List->
    Save->Local File (unconverted)".
    2. A suitable printout of the system log
    To obtain this, call the system log through transaction SM21.
    Limit the time interval to 10 minutes before and 5 minutes
    after the short dump. In the display, then select the function
    "System->List->Save->Local File (unconverted)".
    3. If the programs are your own programs or modified SAP programs,
    supply the source code.
    To do this, select the Editor function "Further Utilities->
    Upload/Download->Download".
    4. Details regarding the conditions under which the error occurred
    or which actions and input led to the error.
    The exception must either be prevented, caught within the procedure
    "IF_EX_DOCUMENT_MAIN02~D100_BEFORE_PAI"
    "(METHOD)", or declared in the procedure's RAISING clause.
    To prevent the exception, note the following:
    System environment
    SAP Release.............. "640"
    Application server....... "ciserver"
    Network address.......... "172.31.120.37"
    Operating system......... "Linux"
    Release.................. "2.6.9-11.19AXsmp"
    Hardware type............ "x86_64"
    Character length......... 16 Bits
    Pointer length........... 64 Bits
    Work process number...... 3
    Short dump setting....... "full"
    Database server.......... "diserver"
    Database type............ "ORACLE"
    Database name............ "PRD"
    Database owner........... "SAPPRD"
    Character set............ "C"
    SAP kernel............... "640"
    Created on............... "May 22 2006 19:43:51"
    Created in............... "Linux GNU SLES-9 x86_64 cc3.3.3"
    Database version......... "OCI_920 "
    Patch level.............. "129"
    Patch text............... " "
    Supported environment....
    Database................. "ORACLE 9.2.0.., ORACLE 10.1.0.., ORACLE
    10.2.0.."
    SAP database version..... "640"
    Operating system......... "Linux 2.6"
    Memory usage.............
    Roll..................... 16192
    EM....................... 12569568
    Heap..................... 0
    Page..................... 57344
    MM Used.................. 2076240
    MM Free.................. 2111024
    SAP Release.............. "640"
    User and Transaction
    Client.............. 600
    User................ "MENGQC001"
    Language key........ "E"
    Transaction......... "CV03N "
    Program............. "CL_EX_DOCUMENT_MAIN02=========CP"
    Screen.............. "SAPLCV110 0100"
    Screen line......... 43
    Information on where terminated
    The termination occurred in the ABAP program "CL_EX_DOCUMENT_MAIN02=========CP"
    in "IF_EX_DOCUMENT_MAIN02~D100_BEFORE_PAI".
    The main program was "SAPLCV110 ".
    The termination occurred in line 134 of the source code of the (Include)
    program "CL_EX_DOCUMENT_MAIN02=========CM007"
    of the source code of program "CL_EX_DOCUMENT_MAIN02=========CM007" (when
    calling the editor 1340).
    Processing was terminated because the exception "CX_SY_MOVE_CAST_ERROR"
    occurred in the
    procedure "IF_EX_DOCUMENT_MAIN02~D100_BEFORE_PAI" "(METHOD)" but was not
    handled locally, not declared in the
    RAISING clause of the procedure.
    The procedure is in the program "CL_EX_DOCUMENT_MAIN02=========CP ". Its source
    code starts in line 1
    of the (Include) program "CL_EX_DOCUMENT_MAIN02=========CM007 ".
    ource Code Extract
    ine SourceCde
    104 CLEAR data_ref.
    105 GET REFERENCE OF OKCODE INTO data_ref.
    106 CALL METHOD <flt_cache_line>-eo_object->set_parameter(
    107 im_parmname = 'OKCODE'
    108 im_value = data_ref ).
    109
    110 CLEAR data_ref.
    111 GET REFERENCE OF DRAW INTO data_ref.
    112 CALL METHOD <flt_cache_line>-eo_object->set_parameter(
    113 im_parmname = 'DRAW'
    114 im_value = data_ref ).
    115
    116 CALL METHOD <flt_cache_line>-eo_object->evaluate
    117 IMPORTING
    118 ex_exception = exc
    119 EXCEPTIONS
    120 raise_exception = 1
    121 OTHERS = 2.
    122 IF sy-subrc = 2.
    123 MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    124 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    125 ELSEIF sy-subrc = 1.
    126 CASE exc-exceptn_nm.
    127 WHEN 'CANCEL'.
    128 MESSAGE ID exc-msgid TYPE exc-msgty NUMBER exc-msgno
    129 WITH exc-msgv1 exc-msgv2 exc-msgv3 exc-msgv4
    130 RAISING CANCEL.
    131 ENDCASE.
    132 ENDIF.
    133 WHEN OTHERS.
    EXITINTF ?= <flt_cache_line>-OBJ.
    135 CALL METHOD EXITINTF->D100_BEFORE_PAI
    136 EXPORTING
    137 TCODE = TCODE
    138 CHANGING
    139 OKCODE = OKCODE
    140 DRAW = DRAW
    141 EXCEPTIONS
    142 CANCEL = 1.
    143 case sy-subrc.
    144 when 1.
    145 raise CANCEL.
    146 endcase.
    147 ENDCASE.
    148
    149 CALL FUNCTION 'PF_ASTAT_CLOSE'
    150 EXPORTING
    151 OPENKEY = 'S61ZFJapGHhX00002X5BGm'
    152 TYP = 'UE'.
    153 ENDLOOP.
    Contents of system fields
    Name Val.
    SY-SUBRC 0
    SY-INDEX 0
    SY-TABIX 14
    SY-DBCNT 14
    SY-FDPOS 1
    SY-LSIND 0
    SY-PAGNO 0
    SY-LINNO 1
    SY-COLNO 1
    SY-PFKEY D100DISPLAY
    SY-UCOMM BACK
    SY-TITLE Display Document: Initial Screen
    SY-MSGTY
    SY-MSGID
    SY-MSGNO 000
    SY-MSGV1
    SY-MSGV2
    SY-MSGV3
    SY-MSGV4
    Active Calls/Events
    No. Ty. Program Include Line
    Name
    3 METHOD CL_EX_DOCUMENT_MAIN02=========CP CL_EX_DOCUMENT_MAIN02=========CM007 134
    CL_EX_DOCUMENT_MAIN02=>IF_EX_DOCUMENT_MAIN02~D100_BEFORE_PAI
    2 FORM SAPLCV110 LCV110F19 124
    D100_CONSUME_EVENTS
    1 MODULE (PAI) SAPLCV110 LCV110I08 10
    D100_FCODE
    Chosen variables
    Name
    Val.
    No. 3 Ty. METHOD
    Name CL_EX_DOCUMENT_MAIN02=>IF_EX_DOCUMENT_MAIN02~D100_BEFORE_PAI
    TCODE
    CV03
    45332222222222222222
    36030000000000000000
    00000000000000000000
    00000000000000000000
    OKCODE
    BACK
    4444222222222222222222222222222222222222222222222222222222222222222222
    213B000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000000000
    DRAW
    2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
    0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    SY-MSGV1
    22222222222222222222222222222222222222222222222222
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    EXC-MSGV1
    22222222222222222222222222222222222222222222222222
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    SY-MSGV2
    22222222222222222222222222222222222222222222222222
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    EXC-MSGV2
    22222222222222222222222222222222222222222222222222
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    SY-MSGV3
    22222222222222222222222222222222222222222222222222
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    EXC-MSGV3
    22222222222222222222222222222222222222222222222222
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    SY-MSGV4
    22222222222222222222222222222222222222222222222222
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    EXC-MSGV4
    22222222222222222222222222222222222222222222222222
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000
    EXITINTF
    F0000000
    F0000000
    <FLT_CACHE_LINE>-OBJ
    E0001000
    E0001000
    SYST-REPID
    CL_EX_DOCUMENT_MAIN02=========CP
    4454554445444554444333333333334522222222
    3CF58F4F35D5E4FD19E02DDDDDDDDD3000000000
    0000000000000000000000000000000000000000
    0000000000000000000000000000000000000000
    SY-REPID
    CL_EX_DOCUMENT_MAIN02=========CP
    4454554445444554444333333333334522222222
    3CF58F4F35D5E4FD19E02DDDDDDDDD3000000000
    0000000000000000000000000000000000000000
    0000000000000000000000000000000000000000
    %_DUMMY$$
    2222
    0000
    0000
    0000
    SY-SUBRC
    0
    0000
    0000
    No. 2 Ty. FORM
    Name D100_CONSUME_EVENTS
    LF_ACT_IMP_EXISTING
    X
    5
    8
    0
    0
    %_SPACE
    2
    0
    0
    0
    SY-REPID
    SAPLCV110
    5454453332222222222222222222222222222222
    310C361100000000000000000000000000000000
    0000000000000000000000000000000000000000
    0000000000000000000000000000000000000000
    SEEX_TRUE
    X
    5
    8
    0
    0
    LF_EXIT
    F0000000
    0000F000
    %_DUMMY$$
    2222
    0000
    0000
    0000
    GF_OI_CALLED_DISPLAY
    2
    0
    0
    0
    SYST-REPID
    SAPLCV110
    5454453332222222222222222222222222222222
    310C361100000000000000000000000000000000
    0000000000000000000000000000000000000000
    0000000000000000000000000000000000000000
    SCREEN
    MCDOK-REFVR
    4444425445522222222222222222222222222222222222222222222222222222222222222222222222222222222222
    D34FBD2566200000000000000000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    GF_TRANSACTION
    CV03
    45332222222222222222
    36030000000000000000
    00000000000000000000
    00000000000000000000
    OK_CODE
    BACK
    4444222222222222222222222222222222222222222222222222222222222222222222
    213B000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000000000
    DRAW
    2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
    0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    CL_WB_REQUEST=>TO_IMMEDIATE_START
    PROP_STRING
    360
    6000
    8100
    BITMAP_STRETCH
    2
    0000
    2000
    SY-SUBRC
    0
    0000
    0000
    SS_CENTER
    1
    0000
    1000
    C_DMS_PHIO_MASTER_CLASS
    DMS_PCD1
    4455544322
    4D3F034100
    0000000000
    0000000000
    PROP_TABINDEX
    230
    E000
    6000
    SPACE
    2
    0
    0
    0
    LF_FCODE
    2222222222222222222222222222222222222222222222222222222222222222222222
    0000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000000000
    No. 1 Ty. MODULE (PAI)
    Name D100_FCODE
    TREEV_ITEM_CLASS_CHECKBOX
    3
    0000
    3000
    Internal notes
    The termination occurred in the function "RxMoveCastErrorObj" of the SAP
    Basis System, specifically in line 2995 of the module
    "//bas/640_REL/src/krn/runt/abmove1.c#7".
    The internal operation just processed is "CAST".
    The internal session was started at 20081202082340.
    Active Calls in SAP Kernel
    Lines of C Stack in Kernel (Structure Differs on Each Platform)
    (CTrcStack2+0x7a)0x63b29a
    (CTrcStack+0xb)0x63b8db
    (ab_rabax+0x2f02)0xa4b1e2
    (_Z18RxMoveCastErrorObj4RUDIS_PKt+0xa5)0x7b7a45
    (_Z8ab_jcastv+0x673)0x7bdec3
    (_Z8ab_extriv+0x219)0x7ab4d9
    (_Z9ab_xeventPKt+0x29a)0x8f9b4a
    (ab_dstep+0x1a7)0xa5ec77
    (dynpmcal+0x39a)0x69d84a
    (dynppai0+0x933)0x69f393
    (dynprctl+0x414)0x69e324
    (dynpen00+0x444)0x693034
    (Thdynpen00+0x2df)0x50a24f
    (TskhLoop+0x307)0x514347
    (tskhstart+0x1ae)0x522fae
    (DpMain+0x28f)0x49b1bf
    (nlsui_main+0x9)0x475159
    (main+0x2e)0x47518e
    /lib64/libc.so.6(__libc_start_main+0xa9)0x2a97124b49
    List of ABAP programs affected
    Index Ty. Program Group Date Time Size Lang.
    0 Prg SAPLCV110 0 2008.12.01 10:13:43 671744 E
    1 Prg SAPMSSYD 0 2008.12.01 02:17:53 21504 E
    2 Prg SAPFSYSCALLS 0 2003.11.06 20:52:59 7168 E
    3 Typ DRAW 0 2008.04.29 10:29:35 11264
    4 Typ DRAT 0 1999.03.10 18:52:49 3072
    5 Typ DMS_DB_DRAT 0 1999.03.10 18:36:01 3072
    6 Typ TDWS 0 2003.09.10 16:46:37 6144
    7 Typ TDWST 0 1997.05.12 16:50:34 2048
    8 Typ AENR 0 2008.11.20 14:51:32 7168
    9 Typ USR03 0 1997.05.12 16:51:23 6144
    10 Typ T024X 0 1998.02.14 10:32:35 2048
    11 Typ MCDOK 0 2004.12.08 17:17:49 28672
    12 Prg SAPLCV121 12 2008.12.01 10:09:17 152576 E
    13 Prg CL_GUI_CFW====================CP 13 2003.11.06 20:53:18 176128 E
    14 Prg CL_GUI_PROPS_CONSUMER=========CP 14 2003.11.06 20:52:43 30720 E
    15 Prg %_CCNTL 14 2003.11.06 20:52:41 16384 E
    16 Prg SAPLTHFB 16 2008.12.01 02:18:03 368640 E
    17 Prg SAPLOLEA 17 2008.12.01 02:00:50 93184 E
    18 Prg SAPLSGUI 18 2008.12.01 02:18:03 76800 E
    19 Prg SAPLSTTM 19 2006.09.21 08:17:23 86016 E
    20 Prg SAPLSBDC 20 2006.09.21 08:24:43 45056 E
    21 Prg SAPLSFES 21 2008.12.01 02:18:03 278528 E
    22 Prg SAPLSPLUGIN 22 2003.11.06 21:28:25 8192 E
    23 Prg SAPFGUICNTL 17 2003.11.06 20:57:18 24576 E
    24 Typ DMS_FRONTEND_DATA 0 2001.06.07 17:41:14 2048
    25 Typ ITDWA 0 1999.12.09 18:54:10 3072
    26 Typ DNTAB 0 2000.11.09 14:07:14 6144
    27 Typ DMS_AUDITS 0 1998.12.10 18:00:41 3072
    28 Typ DRAD 0 1999.12.01 15:17:34 4096
    29 Typ DRAZ 0 1998.04.01 02:05:08 4096
    30 Typ DRAP 0 1995.04.04 16:53:07 3072
    31 Typ DRAOZ 0 1995.04.04 16:53:05 6144
    32 Typ DRAO 0 1995.04.04 16:53:03 6144
    33 Typ TOAV0 0 1996.06.14 09:51:26 3072
    34 Typ DMS_REC_FILE 0 2006.10.12 17:53:17 8192
    35 Typ DMS_DOC_FILE 0 1999.04.21 13:22:51 12288
    36 Prg SAPLCADM 36 2003.11.06 20:53:00 14336 E
    37 Typ TDWA 0 2001.06.07 17:50:38 6144
    38 Prg SAPLCV115 38 2008.12.01 10:13:43 220160 E
    39 Prg SAPLCV118 39 2008.11.30 22:54:57 86016 E
    40 Prg SAPLCV130 40 2008.12.01 09:57:54 342016 E
    41 Prg SAPLCLO0 41 2006.09.21 11:31:12 55296 E
    42 Typ API_CHAR 0 1997.07.09 23:48:05 2048
    43 Typ API_VALI 0 1998.04.23 14:46:27 5120
    44 Typ API_KSSK 0 1996.01.29 18:00:54 3072
    45 Typ API_VALI 0 1998.04.23 14:46:27 5120
    46 Prg SAPLCLFM 46 2008.12.01 03:27:54 711680 E
    47 Typ RMCLF 0 2004.03.15 16:55:47 31744
    48 Typ RMCLKSSK 0 2001.09.18 10:03:47 5120
    49 Typ RMCLAUSP 0 2001.09.18 10:03:46 7168
    50 Typ RMCLDEL 0 1997.08.13 12:51:45 3072
    51 Typ AUSP 0 2001.09.18 10:02:23 6144
    52 Prg SAPLCLSE 52 2008.11.20 14:51:39 188416 E
    53 Prg SAPLCTMS 53 2008.12.01 03:28:16 985088 E
    54 Prg SAPLCTCV 54 2008.12.01 03:27:56 197632 E
    55 Prg SAPLCTCF 55 2008.12.01 03:27:07 20480 E
    56 Typ USR01 0 1998.02.14 15:22:01 4096
    57 Prg SAPLCLPR 57 2001.11.19 16:12:29 64512 E
    58 Typ CLPROF 0 2001.06.07 17:40:33 12288
    59 Typ RMCLPAR 0 2001.06.07 17:45:28 13312
    60 Typ AGR_USERS 0 2003.01.20 16:27:01 3072
    61 Prg SAPLCTCU 61 2008.05.18 09:34:46 189440 E
    62 Prg %_CCXTAB 53 2003.11.06 21:51:14 7168 E
    63 Typ SCXTAB_CONTROL 0 2003.11.06 20:31:00 6144
    64 Prg SAPLCUDB 64 2008.11.30 22:48:18 332800 E
    65 Prg SAPLCUD0 65 2008.12.01 09:57:54 196608 E
    66 Prg SAPLCUEV 66 2001.06.07 18:26:56 12288 E
    67 Prg SAPLSUNI 67 2008.05.18 09:44:54 151552 E
    68 Typ TFDIR 0 1998.07.29 19:49:08 3072
    69 Typ CABN 0 2001.09.18 10:02:26 12288
    70 Typ CABN 0 2001.09.18 10:02:26 12288
    71 Typ DDB_C05 0 1997.08.28 08:44:01 2048
    72 Typ DDB_C02 0 1997.07.09 23:52:49 3072
    73 Typ DDB_ITP 0 1997.08.28 08:44:01 2048
    74 Typ DDB_C07 0 1997.07.09 23:52:50 2048
    75 Prg SAPLCUTM 75 2006.09.21 11:40:39 68608 E
    76 Prg SAPLCUPM 76 2008.05.18 11:52:42 472064 E
    77 Prg SAPLSLG0 77 2003.11.06 20:53:05 64512 E
    78 Prg SAPLSBAL_SERVICE 78 2008.05.18 09:48:19 172032 E
    79 Typ BALOBJ 0 1997.08.13 13:16:25 2048
    80 Typ BALSUB 0 1997.08.13 13:16:26 2048
    81 Typ BAL_S_LFIL 0 2000.12.04 12:45:13 12288
    82 Prg SAPLSBAL 82 2008.05.18 09:48:19 327680 E
    83 Typ BAL_S_LOG 0 2000.12.04 13:04:00 7168
    84 Typ BAL_S_CONT 0 1998.11.02 09:43:07 2048
    85 Typ BAL_S_PARM 0 2000.12.04 12:45:14 3072
    86 Typ BAL_S_CLBK 0 1998.11.02 09:43:07 2048
    87 Typ BAL_S_SCNT 0 1998.11.30 15:52:33 3072
    88 Typ BAL_S_SDEF 0 2000.12.04 12:45:15 2048
    89 Prg CL_ABAP_CHAR_UTILITIES========CP 89 2004.11.12 14:02:13 14336 E
    90 Prg SAPLSYGU 90 2003.11.06 20:55:40 29696 E
    91 Prg SAPLCUXP 91 2008.12.01 10:09:15 147456 E
    92 Typ CUXP_01 0 1995.04.10 15:58:58 3072
    93 Typ T100 0 1997.08.28 09:04:45 2048
    94 Typ CUXP_02 0 1995.04.10 15:58:59 2048
    95 Typ CUXP_02 0 1995.04.10 15:58:59 2048
    96 Typ TMS_JUST 0 1995.04.10 16:02:55 2048
    97 Typ CUXP_02 0 1995.04.10 15:58:59 2048
    98 Prg SAPLCUTC 98 2003.11.11 20:31:28 89088 E
    99 Prg SAPLCUTRC 99 2008.12.01 02:26:11 87040 E
    100 Typ CTMS_01 0 1997.08.13 12:25:20 3072
    101 Typ INCL_BILD 0 1997.05.12 15:10:50 2048
    102 Typ AUSP 0 2001.09.18 10:02:23 6144
    103 Prg SAPLCCRL 103 2008.11.30 22:34:49 144384 E
    104 Typ AEOIB 0 2001.09.18 10:02:18 7168
    105 Typ TCC09 0 1999.03.17 16:24:37 2048
    106 Typ AEOI 0 2001.09.18 10:02:17 5120
    107 Prg SAPLCCCN 107 2008.11.20 14:51:39 293888 E
    108 Typ AEOIT 0 2001.09.18 10:02:18 3072
    109 Typ CCIN 0 2001.10.09 13:06:55 6144
    110 Typ CCCN_XFACE 0 2001.10.09 13:06:55 7168
    111 Prg SAPLCCBU 111 2008.11.20 14:51:39 33792 E
    112 Prg SAPLCV150 112 2008.11.20 14:51:40 144384 E
    113 Prg SAPFSPOR 0 2008.12.01 07:23:38 14336 E
    114 Prg SAPLSCNT 114 2003.11.06 20:53:04 30720 E
    115 Typ DYCBOX 0 1998.08.20 11:16:53 3072
    116 Prg SAPLSVSM 116 2006.09.21 08:56:23 29696 E
    117 Prg CL_DATAPROVIDER===============CP 117 2003.11.06 20:52:43 52224 E
    118 Typ OBJ_RECORD 0 1998.02.14 08:30:43 2048
    119 Prg SAPLSTUP 119 2006.09.21 08:34:57 75776 E
    120 Prg SAPLCNDP 120 2006.09.21 09:10:54 208896 E
    121 Prg SAPSHDTV 114 2003.11.06 20:57:23 33792 E
    122 Typ SHDTVCIU 0 1998.12.14 23:15:37 3072
    123 Typ SHDSTU 0 1998.12.14 23:15:34 2048
    124 Typ SHDSTCIU 0 1998.12.14 23:15:34 2048
    125 Typ ARFCRDATA 0 2000.11.09 14:04:16 6144
    126 Prg SAPLGRFC 126 2003.11.06 20:53:02 16384 E
    127 Typ SWCBCONT 0 2000.11.15 17:55:11 3072
    128 Typ OLE_VERBS 0 1995.04.04 16:02:20 2048
    129 Typ OLE_PA 0 1995.04.04 16:02:19 2048
    130 Prg CL_DYNAMIC_GUI_EXTENSIONS=====CP 130 2003.11.06 20:52:43 37888 E
    131 Prg CL_GUI_DATAMANAGER============CP 131 2006.09.21 09:11:48 77824 E
    132 Prg CL_EXITHANDLER================CP 132 2008.12.01 02:24:29 34816 E
    133 Prg SAPLSEXV 133 2008.12.01 02:05:16 124928 E
    134 Prg CL_BADI_FLT_DATA_TRANS_AND_DB=CP 134 2008.12.01 02:24:26 44032 E
    135 Typ SXS_ATTR 0 2001.08.20 12:23:27 4096
    136 Typ V_EXT_ACT 0 2000.11.09 14:27:05 2048
    137 Typ SXC_EXIT 0 2000.11.09 14:23:43 2048
    138 Prg CL_EX_DOCUMENT_MAIN02=========CP 138 2008.04.29 10:29:37 80896 E
    139 Prg IF_EX_DOCUMENT_MAIN02=========IP 132 2008.04.29 10:29:39 30720 E
    140 Prg %_CSXRT 138 2004.11.12 13:45:31 16384 E
    141 Prg CL_EXIT_MASTER================CP 141 2006.09.21 09:10:54 24576 E
    142 Typ SXS_MLCO 0 2000.12.04 14:59:55 2048
    143 Prg CL_EX_BADI_LAYER==============CP 143 2006.09.21 09:10:54 32768 E
    144 Prg IF_EX_BADI_LAYER==============IP 132 2006.09.21 08:51:19 9216 E
    145 Typ V_EXT_IMP 0 2003.11.06 20:40:20 3072
    146 Typ V_EXT_IMP 0 2003.11.06 20:40:20 3072
    147 Typ SXC_IMPSWH 0 2000.11.09 14:23:44 2048
    148 Prg ZCL_IM_DOCUMENT_MAIN02========CP 148 2008.12.01 14:50:50 7168 E
    149 Prg SAPLASTAT_TRIG 149 2003.11.06 20:53:00 13312 E
    150 Typ ASTAT_TYP2 0 1998.11.10 05:35:18 2048
    151 Typ ASTAT_TYP1 0 1998.11.30 15:54:16 2048
    152 Prg CX_SY_MOVE_CAST_ERROR=========CP 152 2003.11.06 20:41:23 11264 E
    153 Typ SCX_SRCPOS 0 2000.11.09 14:12:15 2048
    154 Prg CX_DYNAMIC_CHECK==============CP 154 2003.11.06 21:33:04 10240 E
    155 Prg CX_ROOT=======================CP 155 2003.11.06 21:56:05 12288 E
    156 Prg CX_NO_CHECK===================CP 156 2003.11.06 21:33:04 10240 E
    157 Prg CX_SY_NO_HANDLER==============CP 157 2003.11.06 21:33:04 10240 E
    158 Typ SYST 0 2000.12.04 14:54:51 31744
    159 Typ SFBM_XCPTN 0 2000.12.04 14:54:21 3072
    160 Prg CL_WB_REQUEST=================CP 160 2008.12.01 02:25:56 71680 E
    irectory of Application Tables
    ame Date Time Lngth
    Val.
    rogram SAPLCV110
    YST . . : : 00004608
    \0\0\0\0\x0001\0\x000E\0\0\0\0\0\0\0\0\0\0\0\0\0\x000E\0
    RAW 2008.04.29 10:29:35 00003196
    RAT . . : : 00000236
    MS_DB_DRAT . . : : 00000238
    DWS . . : : 00000268
    DWST . . : : 00000048
    ENR . . : : 00000496
    00 00000000 00000000
    SR03 . . : : 00000876
    T024X . . : : 00000074
    MCDOK 2004.12.08 17:17:49 00013650
    TDWA 2001.06.07 17:50:38 00000340
    0000
    Program CL_GUI_PROPS_CONSUMER=========CP
    EUDB . . : : 00004068
    %C002380004933B6098D9166C5E1000000AC1F7825 \0\0\0
    Program SAPLCLFM
    RMCLF . . : : 00003736
    Program SAPLCTMS
    RCTMS 2002.04.17 10:32:13 00002034
    Program SAPLCTCF
    USR01 . . : : 00000220
    Program SAPLCLPR
    RMCLPAR . . : : 00000418
    SAPPROFILE
    CLPROF . . : : 00000272
    600BMENGQC001 X X XXX
    AGR_USERS . . : : 00000164
    0000000000000
    Program SAPLSUNI
    TFDIR . . : : 00000188
    CUD0_CUSTOM_CONFIG_INITIALIZERSAPLCUD0
    Program SAPLCCRL
    AENR . . : : 00000496
    00 00000000 00000000
    AEOI . . : : 00000436
    00
    Program SAPLCCCN
    CCIN . . : : 00000600
    00 0
    Program SAPSHDTV
    SHDSTU . . : : 00000106
    SHDSTCIU . . : : 00000100
    ABAP Control Blocks (CONT)
    Index Name Fl PAR0 PAR1 PAR2 PAR3 PAR4 PAR5 PAR6 SourceCde Line
    409 DWRI 01 0042 CL_EX_DOCUMENT_MAIN02=========CM007 128
    410 WRIT 00 C026 CL_EX_DOCUMENT_MAIN02=========CM007 128
    411 PAR1 C0 0000 CL_EX_DOCUMENT_MAIN02=========CM007 128
    412 JEND A6 0000 CL_EX_DOCUMENT_MAIN02=========CM007 128
    413 DWRI 01 0043 CL_EX_DOCUMENT_MAIN02=========CM007 128
    414 WRIT 00 C027 CL_EX_DOCUMENT_MAIN02=========CM007 128
    415 PAR1 C0 0000 CL_EX_DOCUMENT_MAIN02=========CM007 128
    416 JEND A6 0000 CL_EX_DOCUMENT_MAIN02=========CM007 128
    417 FUNE 01 006E CL_EX_DOCUMENT_MAIN02=========CM007 128
    418 ENDF 00 0000 CL_EX_DOCUMENT_MAIN02=========CM007 128
    419 MESS 00 0000 CL_EX_DOCUMENT_MAIN02=========CM007 128
    420 BRAX 00 0015 CL_EX_DOCUMENT_MAIN02=========CM007 133
    CAST 00 0000 C006 C028 CL_EX_DOCUMENT_MAIN02=========CM007 134
    423 METH 03 0003 0000 8001 0000 0000 0000 0000 CL_EX_DOCUMENT_MAIN02=========CM007 135
    427 PAR1 01 C000 CL_EX_DOCUMENT_MAIN02=========CM007 135
    428 PAR1 81 C001 CL_EX_DOCUMENT_MAIN02=========CM007 135
    429 PAR1 81 C002 CL_EX_DOCUMENT_MAIN02=========CM007 135
    430 PAR2 00 0000 0002 0000 CL_EX_DOCUMENT_MAIN02=========CM007 135
    432 PAR2 00 0000 006E 0001 CL_EX_DOCUMENT_MAIN02=========CM007 135
    434 BREL 04 0000 CL_EX_DOCUMENT_MAIN02=========CM007 143

    Hi,
    As per your query, pls contact any abap consultant regarding this he will provide the solution. Because some times programe given some error then the abaper see the programe and take action accordingly.
    Anil

  • Problem with modify command....

    Hi abapers,
    loop at itab.
    read table ifinal with key kunnr = itab-kunnr.
    if sy-subrc = 0.
    move: ifinal-dmbtr to itab-dmbtr.
    modify itab index sy-tabix.
    endif.
    endloop.
    Now the problem is that when i am using modify index sy-tabix it creating an additional entry
    and when i am using only modify itab its working fine so wat could be the reason that modify index sy-tabix is
    not working propertly.
    Thanks

    Hi Aarif,
    I am assuming there is one-to-one relationship between itab and ifinal.
    Try using following code.
    sort itab by kunnr.
    sort ifinal by kunnr.
    data: l_index like sy-tabix.
    l_index = 1.
    loop at itab.
      loop at ifinal from l_index.
         if ifinal-kunnr eq itab-kunnr.
            move: ifinal-dmbtr to itab-dmbtr.
        elseif ifinal-kunnr gt itab-kunnr.
           move sy-tabix to l_index.
           exit.
       endif.
    endloop.
      modify itab transporting dmbtr.
    endloop.
    Regards,
    Anil Salekar

  • Loop at Screen problem

    Hi,
    I am facing a few hicups in my code, I needed to make certain FIelds as updateable and some as non updateable but the problem is that this is not happening. Can you tell me where i am going wrong. I have written this code in my PBO at the end. The Code should enable FIELD KAWRT for the 1st Line and disable the rest, while for the others it should enable Field KWERT. what is the problem in my code.
      LOOP AT itab.
        IF sy-tabix = 1.
          LOOP AT SCREEN.
            IF screen-name = 'ITAB-KSCHL' OR
               screen-name = 'ITAB-KBETR' OR
               screen-name = 'ITAB-KWERT'.
              screen-input = '0'.
              screen-output = '0'.
              MODIFY SCREEN.
            ELSEIF screen-name = 'ITAB-KAWRT'.
              screen-input = '1'.
              screen-output = '1'.
              MODIFY SCREEN.
            ENDIF.
          ENDLOOP.
        ENDIF.
        READ TABLE i_kschl WITH KEY kschl = itab-kschl.
        IF sy-subrc = 0.
          LOOP AT SCREEN.
            IF screen-name = 'ITAB-KSCHL' OR
               screen-name = 'ITAB-KAWRT' OR
               screen-name = 'ITAB-KBETR'.
              screen-input = '0'.
              screen-output = '0'.
              MODIFY SCREEN.
            ELSEIF screen-name = 'ITAB-KWERT'.
              screen-input = '1'.
              screen-output = '1'.
              MODIFY SCREEN.
            ENDIF.
          ENDLOOP.
        ENDIF.
      ENDLOOP.

    Hi,
    Its happening so because as in your code:
    LOOP AT itab.
    IF sy-tabix = 1.
    LOOP AT SCREEN.                             "This is executed for the First Time That's *FINE*
    IF screen-name = 'ITAB-KSCHL' OR
    screen-name = 'ITAB-KBETR' OR
    screen-name = 'ITAB-KWERT'.
    screen-input = '0'.
    screen-output = '0'.
    MODIFY SCREEN.
    ELSEIF screen-name = 'ITAB-KAWRT'.
    screen-input = '1'.
    screen-output = '1'.
    MODIFY SCREEN.
    ENDIF.
    ENDLOOP.
    ENDIF.
    READ TABLE i_kschl WITH KEY kschl = itab-kschl.   
    *THIS PART OF CODE IS EXECUTED ALWAYS WHICH YOU DON'T  WANT SO THIS  SHUD BE IN ELSE PART OF _*IF SY-TABIX = 1**_                                             
    IF sy-subrc = 0.
    LOOP AT SCREEN.
    IF screen-name = 'ITAB-KSCHL' OR
    screen-name = 'ITAB-KAWRT' OR
    screen-name = 'ITAB-KBETR'.
    screen-input = '0'.
    screen-output = '0'.
    MODIFY SCREEN.
    ELSEIF screen-name = 'ITAB-KWERT'.
    screen-input = '1'.
    screen-output = '1'.
    MODIFY SCREEN.
    ENDIF.
    ENDLOOP.
    ENDIF.
    ENDLOOP.
    DO LIKE:
    LOOP AT itab.
    IF sy-tabix = 1.
    LOOP AT SCREEN.                     
    ENDLOOP.
    ELSE.
    READ TABLE i_kschl WITH KEY kschl = itab-kschl.   
    ENDIF.

  • ELSEIF in calculated key figure

    Dear gurus
    We have recently upgraded to NW2004s, and would need some help on the formula for my calculated key figure. This calculated key figure is meant to replicate IF... ELSEIF statement, depending on what the user enters. The logic that we have are as below :
    IF Var=1, then display key figure A
    ELSEIF Var=2, then display key figure B
    ELSEIF Var=3, then display key figure C
    ELSEIF Var=4, then display key figure D
    where Var is a Formula Variable, Processing By User Entry/Default value.
    The formula that we have originally, in BW3.5 is :
    <i>(Var == 1) * 'Amount in TC' + (Var== 2) * 'Amount in Comp Code' + (Var == 3) * 'Amount in Parall USD' + (Var == 4) * 'Amount in Hard Cur' </i>
    This formula has served us well in BW 3.1 to BW 3.5, and never had any problems with it. However, when we migrated over to BW 7.0, we could not get values for this formula (eventhough we have data in our cubes). The only data that get is when we key in Var=1, but when we try with Var=2, 3 or 4, no data is displayed in our key figure.
    We tried to debug, but somehow we could not figure out how the new BW7.0 calculates these type of key figures, and whether is there a change in the formula variable. We believe that the problem may lie in the way that BW 7.0 interprets the formula above, and only obtains the first portion of the formula (Var==1).
    We would appreciate any helps, and of course, points will be awarded if problem can be solved.
    Thanks a lot

    Dear all
    With some luck in searching, I manage to find an OSS note which depicts this error and resolve it. For those who have the same problem, please use this OSS Note 994194.
    Cheers

  • Problem :ALV:Deletion Flags not showing in output

    hi all !
    I have a alv program which displays customer data.there are three deletion flags columns in the output.
    First deletion flag will be: KNA1-LOEVM
    Second deletion flag will be: KNB1-LOEVM
    Third deletion flag will be: KNVV-LOEVM
    earlier all three were showing.but now no one is showing.i'm pasting my code here if any expert can have a look and find out the BUG.
    CODE STARTS----
    report zqsdcap_cust.
    INCLUDE DECLARATIONS
    include:
      ziabapcapph_macros.                   "Holcim Useful Macros
    TABLE DECLARATIONS
    tables:
      tvko,                                "Org. Unit: Sales Organizations
      t001,                                "Company codes
      kna1,                                "Customer Master
      knvv,                                "Customer master sales
      knvi,                                "Customer tax classificat'n
      knb1,                                "Customer master company code
         <<CR003-DEVK949538 start ins
      adr6.                                "SMTP numbers
         <<CR003-DEVK949538 end ins
    TYPE DECLARATIONS
    type-pools:
      slis.
    STRUCTURE DECLARATIONS
    Define structure for keep data in ALV list
    data: begin of gs_output_list,
            vkorg   like  knvv-vkorg,                "Sales organization
            ktokd   like  kna1-ktokd,                "Customer A/C grp
            kunnr   like  kna1-kunnr,                "Customer number
            vtweg   like  knvv-vtweg,                "Distribution channel
            name1   like  kna1-name1,                           "Name1
            name3   like  kna1-name3,                           "Name3
            name4   like  kna1-name4,                           "Name4
            stras   like  kna1-stras,                "Street
            cityc   like  kna1-cityc,                "City
            bezei1  like  t005h-bezei,               "Sales office
            land1   like  kna1-land1,                "Country
            regio   like  kna1-regio,                "Region
            bezei2  like  t005u-bezei,               "Region decription
            kdgrp   like  knvv-kdgrp,                "Customer group
            ktext   like  t151t-ktext,               "Cust grp name
            bzirk   like  knvv-bzirk,                "Sales district
            bztxt   like  t171t-bztxt,               "Description
            zterm   like  knvv-zterm,                "Payment term
            lzone   like  kna1-lzone,                "Transport zone
            vtext   like  tzont-vtext,               "Description
            erdat   like  kna1-erdat,                "Creation date
          end of gs_output_list.
    Internal table for customer tax data
    data: begin of gs_output_tax,
            vkorg  like  knvv-vkorg,                 "Sales organization
            kunnr  like  kna1-kunnr,                 "Customer number
            vtweg  like  knvv-vtweg,                 "Distribution channel
            name1  like  kna1-name1,                            "Name1
            name3  like  kna1-name3,                            "Name3
            name4  like  kna1-name4,                            "Name4
            ort01  like  kna1-ort01,                 "City
            stcd1  like  kna1-stcd1,                 "STD code
            spart  like  knvv-spart,                 "Division
            taxkd  like  knvi-taxkd,                 "Tax classific'n
            tatyp  like  knvi-tatyp,                 "Tax category
            vtext  like  tskdt-vtext,                "Tax description
          end of gs_output_tax.
    Internal table for HVL customer master
    data: begin of gs_output_hvl,
            kunnr  like  kna1-kunnr,                 "Customer number
            stceg  like  kna1-stceg,                 "VAT registration no
            telfx  like  kna1-telfx,                 "Fax number
            telf1  like  kna1-telf1,                 "First telephone number
            stras  like  kna1-stras,                 "House number and stret
            ort02  like  kna1-ort02,                 "District
            cityc  like  kna1-cityc,                 "City code
            bezei  like  t005h-bezei,                "City description
            regio  like  kna1-regio,                 "Region
            ort01  like  kna1-ort01,                 "City
            name2  like  kna1-name2,                            "Name2
            name1  like  kna1-name1,                            "Name1
            bzirk  like  knvv-bzirk,                 "Sales district
            spart  like  knvv-spart,                 "Division
            vtweg  like  knvv-vtweg,                 "Distribution channel
            vkorg  like  knvv-vkorg,                 "Sales organization
          end of gs_output_hvl.
    Internal table for customer database CRM
    data: begin of gs_output_crm,
            vkorg      like  knvv-vkorg,             "Sales organization
            vtweg      like  knvv-vtweg,             "Distribution channel
            bzirk      like  knvv-bzirk,             "Sales district
            kunnr      like  kna1-kunnr,             "Customer number
            name1      like  kna1-name1,                        "Name1
            name2      like  kna1-name2,                        "Name2
            stras      like  kna1-stras,             "House number street
            ort01      like  kna1-ort01,             "City
            ort02      like  kna1-ort02,             "District
            pstlz      like  kna1-pstlz,             "Postal code
            cityc      like  kna1-cityc,             "City code
            telf1      like  kna1-telf1,             "First telephone number
            telfx      like  kna1-telfx,             "Fax number
            vkbur      like  knvv-vkbur,             "Sales office
            regio      like  kna1-regio,             "Region
            vkgrp      like  knvv-vkgrp,             "Sales group
            kdgrp      like  knvv-kdgrp,             "Customer group
            kvgr3      like  knvv-kvgr3,             "Customer group 3
            altkn      like  knb1-altkn,             "Previous record number
            erdat      like  knvv-erdat,             "Creation date
            found_dat  like  zcrm_bp_ext-found_dat,  "Found date
          <<CR000-DEVK943142 start del
          versg      like  knvv-versg,             "Customer statistic grp
          bukrs      like  knb1-bukrs,             "Company code
          <<CR000-DEVK943142 end del
          end of gs_output_crm.
    Internal table for customer information
    data: begin of gs_output_info,
            kunnr           like  kna1-kunnr,        "Customer number
            vkorg           like  knvv-vkorg,        "Sales organization
            vtweg           like  knvv-vtweg,        "Distribution channel
            stcd2           like  kna1-stcd2,        "Tax code
            name1           like  kna1-name1,        "Name1
            name2           like  kna1-name2,        "Name2
          <<CR002-DEVK944835 start ins
            name3           like  kna1-name3,        "Name3
          <<CR002-DEVK944835 end ins
            stras           like  kna1-stras,        "House number street
            ort01           like  kna1-ort01,        "City
            ort02           like  kna1-ort02,        "District
            pstlz           like  kna1-pstlz,        "Postal code
            regio           like  kna1-regio,        "Region
            land1           like  kna1-land1,        "Country code
            cityc           like  kna1-cityc,        "City code
            telf1           like  kna1-telf1,        "First telephone number
            telfx           like  kna1-telfx,        "Fax number
          <<CR001-DEVK944239 start ins
            bzirk           like  knvv-bzirk,        "Sales District
            vkbur           like  knvv-vkbur,        "Sales Office
            kdgrp           like  knvv-kdgrp,        "Customer group
          <<CR001-DEVK944239 end ins
            vkgrp           like  knvv-vkgrp,        "Sales group
            kvgr3           like  knvv-kvgr3,        "Customer group 3
            versg           like  knvv-versg,        "Customer stat grp
            kdkg2           like  kna1-kdkg2,        "Customer condition gp2
            kdkg1           like  kna1-kdkg1,        "Customer condition gp1
          <<CR001-DEVK944239 start del
          kdgrp           like  knvv-kdgrp,        "Customer group
          <<CR001-DEVK944239 end del
            altkn           like  knb1-altkn,        "Previous record#
            erdat           like  knvv-erdat,        "Creation date
            note_text(200)  type  c,                 "<<CR003-DEVK949538 ins
            smtp_addr       like  adr6-smtp_addr,    "<<CR003-DEVK949538 ins
            loevm1          like  kna1-loevm,        "Deletion flag all
            loevm2          like  knb1-loevm,        "Deletion flag Cd
            loevm3          like  knvv-loevm,        "Deletion flag sal
          end of gs_output_info.
    ALV Grid Declaration
    data:
      gs_fieldcat             type  slis_fieldcat_alv,
      gs_layout               type  slis_layout_alv,
      gs_event                type  slis_t_event,
      gs_variant              like  disvariant,
      gs_sort_info            type  slis_sortinfo_alv,
      gs_exit_caused_by_user  type  slis_exit_by_user,
      gs_tabname              type  slis_tabname,
      gs_header               type  slis_entry.
    INTERNAL TABLE DECLARATIONS
    Define internal table for keep data in ALV list
    data:
      gt_output_list       like  table of gs_output_list,
      gt_output_tax        like  table of gs_output_tax,
      gt_output_hvl        like  table of gs_output_hvl,
      gt_output_crm        like  table of gs_output_crm,
      gt_output_info       like  table of gs_output_info,
    <<CR003-DEVK949538 start ins
      gv_text              like  tline occurs 0 with header line,
    <<CR003-DEVK949538 start ins
    ALV Grid Declaration
      gt_fieldcat           type  slis_t_fieldcat_alv,
      gt_list_top_of_page   type  slis_t_listheader,
      gt_list_top_of_page2  type  slis_t_listheader,
      gt_sort_info          type  slis_t_sortinfo_alv.
    VARIABLE DECLARATIONS
    data:
    ALV Grid Declaration
      gv_save,
      gv_exit_caused_by_caller,
      gv_repid         type  sy-repid,
      gv_user_command  type  slis_formname value 'USER_COMMAND',
      gv_top_of_page   type  slis_formname value 'TOP_OF_PAGE',
      gv_top_of_list   type  slis_formname value 'TOP_OF_LIST',
      gv_end_of_list   type  slis_formname value 'END_OF_LIST',
      lv_store         like  thead-tdname,           "<<CR003-DEVK949538 ins
      lv_id            like  thead-tdid,             "<<CR003-DEVK949538 ins
      lv_lines         type  i.                      "<<CR003-DEVK949538 ins
    SELECTION SCREEN DECLARATIONS
    Define selection-screen of query
    selection-screen: begin of block blk with frame title text-001.
    select-options:   s_vkorg  for   knvv-vkorg           "Sales org
                                     obligatory
                                     memory id vko,
                      s_bzirk  for   knvv-bzirk,          "Sales district
                      s_vtweg  for   knvv-vtweg,          "Dist channel
                      s_spart  for   knvv-spart           "Division
                                     default 'CM',
                      s_taxkd  for   knvi-taxkd,          "Tax classific'n
                      s_kunnr  for   kna1-kunnr,          "Customer number
                      s_regio  for   kna1-regio,          "Region
                      s_kdgrp  for   knvv-kdgrp,          "Customer group
                      s_vkgrp  for   knvv-vkgrp,          "Sales group
                      s_vkbur  for   knvv-vkbur,          "Sales office
                      s_lzone  for   kna1-lzone,          "Zone
                      s_erdat  for   kna1-erdat,          "Creation date
                      s_zuawa  for   knb1-zuawa,          "Key for sorting
                      s_ktokd  for   kna1-ktokd,          "Customer A/C grp
                      s_altkn  for   knb1-altkn,          "Previous rec no
                      s_bukrs  for   knb1-bukrs           "Company code
                                     obligatory
                                     memory id buk,
                     s_loevm1 for   kna1-loevm,          "Deletion flag all
                     s_loevm2 for   knb1-loevm,          "Deletion flag Cd
                     s_loevm3 for   knvv-loevm.          "Deletion flag sal
    selection-screen: end of block blk.
    selection-screen: begin of block b2 with frame title text-002.
    parameters:       pr_cust1  radiobutton group a1
                                default 'X'
                                user-command bkg,
                      pr_cust2  radiobutton group a1,
                      pr_cust3  radiobutton group a1,
                      pr_cust4  radiobutton group a1,
                      pr_cust5  radiobutton group a1.
    selection-screen: end of block b2.
    AT SELECTION-SCREEN ON S_VKORG
    at selection-screen on s_vkorg.
      select  vkorg
        into  tvko-vkorg
        from  tvko
       where  vkorg in s_vkorg.
      authorization check for sales org.
        authority-check object 'V_VBRK_VKO'
                            id 'VKORG' field tvko-vkorg
                            id 'ACTVT' field '03'.
        check sy-subrc ne 0.
        message e002(zgen) with 'No authorization for sales org.'
                                 tvko-vkorg.
      endselect.
    AT SELECTION-SCREEN ON S_BUKRS
    at selection-screen on s_bukrs.
      if pr_cust4 eq 'X' or
         pr_cust5 eq 'X'.
        select  bukrs
          into  t001-bukrs
          from  t001
         where  bukrs in s_bukrs.
        authorization check for plant and company code
          authority-check object 'A_S_WERK'
                              id 'BUKRS' field t001-bukrs
                              id 'WERKS' dummy.
          check sy-subrc ne 0.
          message e002(zgen) with 'No authorization for this company code.'
                                   t001-bukrs.
        endselect.
      endif.
    AT SELECTION-SCREEN OUTPUT
    at selection-screen output.
      loop at screen .
        if pr_cust1 eq 'X'.
          if screen-name = 'S_VTWEG-LOW'   or
             screen-name = 'S_VTWEG-HIGH'  or
             screen-name = 'S_SPART-LOW'   or
             screen-name = 'S_SPART-HIGH'  or
             screen-name = 'S_TAXKD-LOW'   or
             screen-name = 'S_TAXKD-HIGH'  or
             screen-name = 'S_BUKRS-LOW'   or
             screen-name = 'S_BUKRS-HIGH'  or
             screen-name = 'S_ERDAT-LOW'   or
             screen-name = 'S_ERDAT-HIGH'  or
             screen-name = 'S_ALTKN-LOW'   or
             screen-name = 'S_ALTKN-HIGH'  or
             screen-name = 'S_VKBUR-LOW'   or
             screen-name = 'S_VKBUR-HIGH'  or
             screen-name = 'S_LOEVM1-LOW'  or
             screen-name = 'S_LOEVM1-HIGH' or
             screen-name = 'S_LOEVM2-LOW'  or
             screen-name = 'S_LOEVM2-HIGH' or
             screen-name = 'S_LOEVM3-LOW'  or
             screen-name = 'S_LOEVM3-HIGH'.
            screen-input = 0.
          endif.
        elseif pr_cust2 eq 'X'.
          if screen-name = 'S_BZIRK-LOW'    or
             screen-name = 'S_BZIRK-HIGH'   or
             screen-name = 'S_KDGRP-LOW'    or
             screen-name = 'S_KDGRP-HIGH'   or
             screen-name = 'S_LZONE-LOW'    or
             screen-name = 'S_LZONE-HIGH'   or
             screen-name = 'S_KTOKD-LOW'    or
             screen-name = 'S_KTOKD-HIGH'   or
             screen-name = 'S_ERDAT-LOW'    or
             screen-name = 'S_ERDAT-HIGH'   or
             screen-name = 'S_KTOKD-LOW'    or
             screen-name = 'S_KTOKD-HIGH'   or
             screen-name = 'S_ALTKN-LOW'    or
             screen-name = 'S_ALTKN-HIGH'   or
             screen-name = 'S_VKBUR-LOW'    or
             screen-name = 'S_VKBUR-HIGH'   or
             screen-name = 'S_LOEVM1-LOW'   or
             screen-name = 'S_LOEVM1-HIGH'  or
             screen-name = 'S_LOEVM2-LOW'   or
             screen-name = 'S_LOEVM2-HIGH'  or
             screen-name = 'S_LOEVM3-LOW'   or
             screen-name = 'S_LOEVM3-HIGH'  or
             screen-name = 'S_BUKRS-LOW'    or
             screen-name = 'S_BUKRS-HIGH'   or
             screen-name = 'S_VKGRP-LOW'    or
             screen-name = 'S_VKGRP-HIGH'.
            screen-input = 0.
          endif.
        elseif pr_cust3 eq 'X'.
          if screen-name = 'S_BZIRK-LOW'   or
             screen-name = 'S_BZIRK-HIGH'  or
             screen-name = 'S_KDGRP-LOW'   or
             screen-name = 'S_KDGRP-HIGH'  or
             screen-name = 'S_LZONE-LOW'   or
             screen-name = 'S_LZONE-HIGH'  or
             screen-name = 'S_ERDAT-LOW'   or
             screen-name = 'S_ERDAT-HIGH'  or
             screen-name = 'S_KTOKD-LOW'   or
             screen-name = 'S_KTOKD-HIGH'  or
             screen-name = 'S_SPART-LOW'   or
             screen-name = 'S_SPART-HIGH'  or
             screen-name = 'S_TAXKD-LOW'   or
             screen-name = 'S_TAXKD-HIGH'  or
             screen-name = 'S_REGIO-LOW'   or
             screen-name = 'S_REGIO-HIGH'  or
             screen-name = 'S_ALTKN-LOW'   or
             screen-name = 'S_ALTKN-HIGH'  or
             screen-name = 'S_VKBUR-LOW'   or
             screen-name = 'S_VKBUR-HIGH'  or
             screen-name = 'S_LOEVM1-LOW'  or
             screen-name = 'S_LOEVM1-HIGH' or
             screen-name = 'S_LOEVM2-LOW'  or
             screen-name = 'S_LOEVM2-HIGH' or
             screen-name = 'S_LOEVM3-LOW'  or
             screen-name = 'S_LOEVM3-HIGH' or
             screen-name = 'S_BUKRS-LOW'   or
             screen-name = 'S_BUKRS-HIGH'  or
             screen-name = 'S_VKGRP-LOW'   or
             screen-name = 'S_VKGRP-HIGH'  or
             screen-name = 'S_VTWEG-LOW'   or
             screen-name = 'S_VTWEG-HIGH'.
            screen-input = 0.
          endif.
        elseif pr_cust4 eq 'X'.
          if screen-name = 'S_LZONE-LOW'  or
             screen-name = 'S_LZONE-HIGH' or
             screen-name = 'S_TAXKD-LOW'  or
             screen-name = 'S_TAXKD-HIGH' or
             screen-name = 'S_REGIO-LOW'  or
             screen-name = 'S_REGIO-HIGH' or
             screen-name = 'S_ZUAWA-LOW'  or
             screen-name = 'S_ZUAWA-HIGH'.
            screen-input = 0.
          endif.
        else.
          if screen-name = 'S_LZONE-LOW'   or
             screen-name = 'S_LZONE-HIGH'  or
             screen-name = 'S_TAXKD-LOW'   or
             screen-name = 'S_TAXKD-HIGH'.
            screen-input = 0.
          endif.
        endif.
        modify screen.
      endloop.
    INITIALIZATION
    initialization.
      perform deactivate_program using sy-cprog.
    START OF SELECTION
    start-of-selection.
    Customized function to get data from database table
      perform get_data.
    <<CR003-DEVK949538 start ins
      perform get_internal_note_text tables gt_output_info.
    <<CR003-DEVK949538 end ins
    Create sort of ALV list
      perform build_sort.
    Send data to ALV list to display
      if pr_cust1 eq 'X'.
        gs_tabname = text-003.
        gs_header  = text-004.
        perform write_alv_report tables gt_output_list
                                        gt_sort_info.
      elseif pr_cust2 eq 'X'.
        gs_tabname = text-005.
        gs_header  = text-006.
        perform write_alv_report tables gt_output_tax
                                        gt_sort_info.
      elseif pr_cust3 eq 'X'.
        gs_tabname = text-007.
        gs_header  = text-008.
        perform write_alv_report tables gt_output_hvl
                                        gt_sort_info.
      elseif pr_cust4 eq 'X'.
        gs_tabname = text-009.
        gs_header  = text-010.
        perform write_alv_report tables gt_output_crm
                                        gt_sort_info.
      else.
        gs_tabname = text-011.
        gs_header  = text-012.
        perform write_alv_report tables gt_output_info
                                        gt_sort_info .
      endif.
    FORM EVENTTAB_FIELD
    Fill Event tab, for ALV Grid Display
    form eventtab_field using gs_events type slis_t_event.
      data:
        ls_event  type  slis_alv_event.
      call function 'REUSE_ALV_EVENTS_GET'
           exporting
                i_list_type = 0
           importing
                et_events   = gs_events.
      read table gs_events with key name = slis_ev_top_of_page
                               into ls_event.
      if sy-subrc = 0.
        move gv_top_of_page to ls_event-form.
        append ls_event     to gs_events.
      endif.
    endform.                    " eventtab_field
    FORM TOP_OF_PAGE
    Write at Top of Page of ALV grid
    form top_of_page.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = gt_list_top_of_page.
    endform.                    "top_of_page
    FORM COMMENT_BUILD
    Write header of ALV grid
    form comment_build using lt_top_of_page type slis_t_listheader
                             gs_header.
      data:
        lv_tdate(10),
        lv_fdate(10),
        ls_line   type  slis_listheader.
      clear: ls_line.
      ls_line-typ  = 'H'.
      ls_line-info = gs_header.
      append ls_line to lt_top_of_page.
    endform.                    "comment_build
    FORM INIT_FIELDCAT
    Fill Field Catalog for ALV Grid
    form init_fieldcat using gs_tabname.
      refresh: gt_fieldcat.
    use this function to get the all fields in the structure.
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
           exporting
                i_program_name     = gv_repid
                i_internal_tabname = gs_tabname
                i_inclname         = gv_repid
           changing
                ct_fieldcat        = gt_fieldcat.
      if sy-subrc eq 0.
      clear mark for key field to set color of key column
        gs_fieldcat-key = ''.
        modify gt_fieldcat from gs_fieldcat transporting key
                          where fieldname ne space.
        read table gt_fieldcat with key fieldname = 'FOUND_DAT'
                                   into gs_fieldcat.
        gs_fieldcat-seltext_l = text-013.
        modify gt_fieldcat from gs_fieldcat
                   transporting seltext_l
                          where fieldname = 'FOUND_DAT'.
      <<CR003-DEVK949538 start ins
        read table gt_fieldcat with key fieldname = 'NOTE_TEXT'
                                   into gs_fieldcat.
        gs_fieldcat-seltext_l = text-014.
        modify gt_fieldcat from gs_fieldcat
                   transporting seltext_l
                          where fieldname = 'NOTE_TEXT'.
      <<CR003-DEVK949538 start ins
      endif.
    endform.                    "init_fieldcat
    FORM INIT_LAYOUT
    Layout initial
    form init_layout using gs_layout type slis_layout_alv.
      gs_layout-info_fieldname    = 'LINECOLOR'.
      gs_layout-colwidth_optimize = 'X'.
      gs_layout-zebra             = 'X'.
    endform.                    " init_layout
    FORM WRITE_ALV_REPORT
    form write_alv_report tables gt_output
                                 gt_sort_info.
    ALV Grid display
      clear: gv_repid,
             gv_save.
      gv_repid          = sy-repid.
      gs_variant-report = gv_repid.
      gv_save           = 'A'.
    Build fieldcatalog
      perform init_fieldcat using gs_tabname.
    Build list events
      perform eventtab_field using gs_event.
    Show in ALV Grid form
      perform init_layout using gs_layout.
    Build comments
      perform comment_build using gt_list_top_of_page[]
                                  gs_header.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_buffer_active         = ' '
                i_callback_program      = gv_repid
                is_layout               = gs_layout
                i_save                  = gv_save
                is_variant              = gs_variant
                it_events               = gs_event[]
                it_sort                 = gt_sort_info[]
                it_fieldcat             = gt_fieldcat[]
           importing
                e_exit_caused_by_caller = gv_exit_caused_by_caller
                es_exit_caused_by_user  = gs_exit_caused_by_user
           tables
                t_outtab                = gt_output
           exceptions
                program_error           = 1
                others                  = 2.
    endform.                    "write_alv_report
    FORM GET_DATA
    form get_data.
    Get customer list
      if pr_cust1 eq 'X'.
        select  knvv~vkorg
                kna1~ktokd
                kna1~kunnr
                knvv~vtweg
                kna1~name1
                kna1~name3
                kna1~name4
                kna1~stras
                kna1~cityc
                kna1~regio
                kna1~land1
                knvv~kdgrp
                knvv~bzirk
                knvv~zterm
                kna1~lzone
                kna1~erdat
          from  kna1 join  knvv
            on  kna1kunnr = knvvkunnr
          into  corresponding fields of table gt_output_list
         where  kna1~kunnr in s_kunnr
           and  knvv~vkorg in s_vkorg
           and  knvv~bzirk in s_bzirk
           and  kna1~regio in s_regio
           and  knvv~kdgrp in s_kdgrp
           and  kna1~lzone in s_lzone
           and  kna1~erdat in s_erdat
           and  kna1~ktokd in s_ktokd.
        loop at gt_output_list into gs_output_list.
        Get City decsription
          perform get_city_description using gs_output_list-cityc
                                    changing gs_output_list-bezei1.
        Get Region description
          select single  bezei
                   from  t005u
                   into  gs_output_list-bezei2
                  where  bland = gs_output_list-regio
                    and  land1 = gs_output_list-land1"<<CR000-DEVK942345 ins
                    and  spras = sy-langu.
        Get customer group description
          select single  ktext
                   from  t151t
                   into  gs_output_list-ktext
                  where  kdgrp = gs_output_list-kdgrp
                    and  spras = sy-langu.
        Get sales district description
          select single  bztxt
                   from  t171t
                   into  gs_output_list-bztxt
                  where  bzirk = gs_output_list-bzirk
                    and  spras = sy-langu.
        Get zone decription
          select single  vtext
                   from  tzont
                   into  gs_output_list-vtext
                  where  zone1 = gs_output_list-lzone
                    and  spras = sy-langu.
          modify gt_output_list from gs_output_list index sy-tabix
                                             transporting bezei1
                                                          bezei2
                                                          ktext
                                                          bztxt
                                                          vtext.
          clear gs_output_list.
        endloop.
    Get customer tax data
      elseif pr_cust2 eq 'X'.
        select  kna1~kunnr
                kna1~name1
                kna1~name3
                kna1~name4
                kna1~ort01
                kna1~stcd1
                knvv~vkorg
                knvv~spart
                knvv~vtweg
                knvi~taxkd
                knvi~tatyp
          from  kna1 join  knvv
            on  kna1kunnr = knvvkunnr
                join  knvi
            on  kna1kunnr = knvikunnr
          into  corresponding fields of table gt_output_tax
         where  kna1~kunnr in s_kunnr
           and  knvv~vkorg in s_vkorg
           and  knvv~vtweg in s_vtweg
           and  knvv~spart in s_spart
           and  kna1~regio in s_regio
           and  knvi~taxkd in s_taxkd.
      Get customer tax description
        loop at gt_output_tax into gs_output_tax.
          select single  vtext
                   from  tskdt
                   into  gs_output_tax-vtext
                  where  tatyp = gs_output_tax-tatyp
                    and  taxkd = gs_output_tax-taxkd
                    and  spras = sy-langu.
          if sy-subrc eq 0.
            modify gt_output_tax from gs_output_tax index sy-tabix
                                             transporting vtext.
            clear gs_output_tax.
          endif.
        endloop.
    Get customer HVL data
      elseif pr_cust3 eq 'X'.
        select  kna1~kunnr
                kna1~stceg
                kna1~telfx
                kna1~telf1
                kna1~stras
                kna1~ort02
                kna1~cityc
                kna1~regio
                kna1~ort01
                kna1~name2
                kna1~name1
                knvv~bzirk
                knvv~spart
                knvv~vtweg
                knvv~vkorg
          from  kna1 join  knvv
            on  kna1kunnr = knvvkunnr
          into  corresponding fields of table gt_output_hvl
         where  kna1~kunnr in s_kunnr
           and  knvv~vkorg in s_vkorg.
        loop at gt_output_hvl into gs_output_hvl.
        Get city description.
          perform get_city_description using gs_output_hvl-cityc
                                    changing gs_output_hvl-bezei.
          if sy-subrc eq 0.
            modify gt_output_hvl from gs_output_hvl index sy-tabix
                                             transporting bezei.
            clear gs_output_hvl.
          endif.
        endloop.
    Get cust CRM data
      elseif pr_cust4 eq 'X'.
        select  kna1~kunnr
              knvv~versg                           "<<CR000-DEVK943142 del
                knvv~vkorg
                knvv~vtweg
                knvv~bzirk
                knvv~vkgrp
                knvv~kdgrp
                knvv~vkbur
                kna1~name1
                kna1~name2
                kna1~ort01
                kna1~pstlz
                kna1~regio
                kna1~stras
                kna1~telf1
                kna1~telfx
                kna1~ort02
                kna1~cityc
                knvv~kvgr3
                knb1~altkn
              knb1~bukrs                           "<<CR000-DEVK943142 del
                knvv~erdat
                zcrm_bp_ext~found_dat
          from  kna1 join knvv
            on  kna1kunnr = knvvkunnr
          join  knb1
            on  knvvkunnr = knb1kunnr
          join  zcrm_bp_ext
            on  knb1kunnr = zcrm_bp_extkunnr
          into  corresponding fields of table gt_output_crm
         where  kna1~kunnr in s_kunnr
           and  knvv~vkorg in s_vkorg
           and  knvv~vtweg in s_vtweg
           and  knvv~spart in s_spart
           and  knvv~bzirk in s_bzirk
           and  knvv~kdgrp in s_kdgrp
           and  knvv~vkgrp in s_vkgrp
           and  knvv~vkbur in s_vkbur
           and  knvv~erdat in s_erdat
           and  kna1~ktokd in s_ktokd
           and  kna1~loevm in s_loevm1
           and  knb1~loevm in s_loevm2
           and  knvv~loevm in s_loevm3
           and  knb1~bukrs in s_bukrs
           and  knb1~altkn in s_altkn.
      else.
      Get customer information
       <<CR001-DEVK944342 start del
       select  kna1~kunnr
               knvv~vkorg
               knvv~vtweg
               kna1~stcd2
               kna1~name1
               kna1~name2
               kna1~ort01
               kna1~land1
               kna1~pstlz
               kna1~regio
               kna1~stras
               kna1~telf1
               kna1~telfx
               knvv~bzirk                          "<<CR001-DEVK944239 ins
               knvv~vkbur                          "<<CR001-DEVK944239 ins
               kna1~ort02
               kna1~cityc
               knvv~vkgrp
               knvv~kvgr3
               knvv~versg
               kna1~kdkg2
               kna1~kdkg1
               knvv~kdgrp
               knb1~altkn
               knvv~erdat
               kna1~loevm
               knb1~loevm
               knvv~loevm
       <<CR001-DEVK944342 end del
      <<CR001-DEVK944342 start ins
        select  kna1~kunnr
                knvv~vkorg
                knvv~vtweg
                kna1~stcd2
                kna1~name1
                kna1~name2
                kna1~name3                           "<<CR002-DEVK944835 ins
                kna1~stras
                kna1~ort01
                kna1~ort02
                kna1~pstlz
                kna1~regio
                kna1~land1
                kna1~cityc
                kna1~telf1
                kna1~telfx
                knvv~bzirk
                knvv~vkbur
                knvv~kdgrp
                knvv~vkgrp
                knvv~kvgr3
                knvv~versg
                kna1~kdkg2
                kna1~kdkg1
                knb1~altkn
                knvv~erdat
                kna1~loevm
                knb1~loevm
                knvv~loevm
      <<CR001-DEVK944342 end ins
          from  kna1 join knvv
            on  kna1kunnr = knvvkunnr
                join knb1
            on  kna1kunnr = knb1kunnr
        <<CR001-DEVK944252 start del
        into  corresponding fields of table gt_output_info
        <<CR001-DEVK944252 end del
        <<CR003-DEVK949538 start del
          into  table gt_output_info                "<<CR001-DEVK944342 ins
        <<CR003-DEVK949538 end del
        <<CR003-DEVK949538 start ins
          into  corresponding fields of table gt_output_info
        <<CR003-DEVK949538 end ins
         where  kna1~kunnr in s_kunnr
           and  knvv~vkorg in s_vkorg
           and  knvv~vtweg in s_vtweg
           and  knvv~spart in s_spart
           and  knvv~bzirk in s_bzirk
           and  knvv~kdgrp in s_kdgrp
           and  knvv~vkgrp in s_vkgrp
           and  knvv~vkbur in s_vkbur
           and  knvv~erdat in s_erdat
           and  kna1~ktokd in s_ktokd
           and  kna1~regio in s_regio
         <<CR001-DEVK944252 start del
         and  kna1~loevm in s_loevm1
         and  knb1~loevm in s_loevm2
         and  knvv~loevm in s_loevm3
         <<CR001-DEVK944252 end del
         <<CR001-DEVK944252 start ins
           and ( kna1~loevm in s_loevm1
            or   knb1~loevm in s_loevm2
            or   knvv~loevm in s_loevm3 )
         <<CR001-DEVK944252 end ins
           and  knb1~zuawa in s_zuawa
           and  knb1~bukrs in s_bukrs
           and  knb1~altkn in s_altkn.
         <<CR003-DEVK949538 start ins
           loop at gt_output_info into gs_output_info.
          select single  adrnr
                   into  kna1-adrnr
                   from  kna1
                  where  kunnr = gs_output_info-kunnr.
          check sy-subrc eq 0.
          select single  smtp_addr
                   into  adr6-smtp_addr
                   from  adr6
                  where  addrnumber = kna1-adrnr.
          check sy-subrc eq 0.
          gs_output_info-smtp_addr = adr6-smtp_addr.
          modify gt_output_info from gs_output_info.
        endloop.
         <<CR003-DEVK949538 end ins
      endif.
    <<CR003-DEVK949538 start ins
      loop at gt_output_info into gs_output_info.
        lv_store = gs_output_info-loevm1.
      endloop.
    <<CR003-DEVK949538 end ins
    endform.
    FORM BUILD_SORT
    form build_sort.
      if pr_cust1 eq 'X' or
         pr_cust2 eq 'X'.
        clear gs_sort_info.
        gs_sort_info-fieldname = 'VKORG'.
        gs_sort_info-spos      = 1.
        gs_sort_info-up        = 'X'.
        append gs_sort_info to gt_sort_info.
      endif.
      clear gs_sort_info.
      gs_sort_info-fieldname = 'KUNNR'.
      gs_sor

    hi shivaji!
    thx for the reply.
    can u chk whether there is any problem with the queries or not.
    regards
    sachin

  • Problem in a Interface

    Hi....
    I have an Interface which actually downloads the "MATERIAL MASTER DATA" from SAP to a flat file.
    The current o/p of the interface looks like:
    MAT NO. MAT DESCRIPTION Subst. Mat no......
    Now they askd me to add 3 more fields to that existing program.
    those are:
    1.OUTSERT No.
    2.MEDICATION PART No.
    3.AWP PRICE.
    So I have written 2 FORMS to retrieve these things.
    1st FORM is for getting OUTSERT and MED. PART No.
    2nd FORM for AWP PRICE.
    (1) OUTSERT: This we get from STPO-IDNRK field. similarly
    (2) MED. PART NO.: This also is from STPO-IDNRK field.
    The method I used for getting these two things is:
    Basically the OUTSERT and MED PART NO. is nothing but the BOM COMPONENTS [STPO-IDNRK].
    There is a simple difference between these two things:
    If the BOM Component contains 'O' or 'OP' in that value then it is taken as OUTSERT.
    For Eg: If STPO-IDNRK value is 73543O or 98723OP then it is OUTSERT.
    and If STPO-IDNRK value is 65489M or 68785MP then it is MED. PART NO.
    and we have two conditions to be satisfied to calculate these two things,
    1.The Material Group[MARA-MATKL] should be 'OST' or 'OSP'.
    means MARA-MATKL = 'OST' or 'OSP'.
    2.The Alternative BOM Text[STKO-STKTX] should be 'UNRESTRICTED'.
    means STKO-STKTX = 'UNRESTRICTED'.
    Coming to AWP PRICE, it should be get from field RATE[KONP-KBETR].
    I have used tables STKO, STPO to get Outsert and Med. Part No and A505, KONP for AWP Price...
    I have highlighted the part of the code which I have included in the existing program....
    But there are some problems with that code...so i'm not getting results....
    Plz look at the code and let me know wher I've gone wrong...
    Thanks much,
    The code is:
    REPORT Z02.
    Table definitions ----------------------------------------------------
    TABLES: AUSP, " Characteristic Values
    CABN, " Characteristic
    CAWN, " Characteristic values
    CAWNT, " Value Texts
    LFA1, " Vendor master (general section)
    MAKT, " Material Descriptions
    MARA, " Material Master: General Data
    MARM, " Units of Measure
    MBEW, " Material Valuation
    MVKE, " Material Master: Sales Data
    TVMST, " Materials: SD Status: Texts
    TVM3T, " Material pricing group 3: Description
    TVM5T, " Material pricing group 5: Description
    KOTD001, " Conditions: Substitution - Sample Structure
    KONDD, " Material Substitution - Data Division
    <b>mast,
    stko,
    stpo,
    a505,
    konp.</b>
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TITLE1.
    SELECT-OPTIONS: S_BWKEY FOR MBEW-BWKEY
    MEMORY ID DEFAULT_BWKEY OBLIGATORY
    No-Extension No Intervals.
    SELECTION-SCREEN END OF BLOCK B1.
    PARAMETERS:
    MATLFILE(100) LOWER CASE OBLIGATORY
    DEFAULT '/sapinterface/ebusiness/matlfile'.
    Constants ------------------------------------------------------------
    CONSTANTS:
    ZERO_DEC_3 TYPE P DECIMALS 3 VALUE 0,
    ZEROS(9) TYPE N VALUE 0,
    REC_TYPE(2) VALUE 'MM',
    DELIMETER_QUOTE VALUE '"',
    BEGIN OF DEFAULTS,
    BWTAR LIKE MBEW-BWTAR VALUE SPACE,
    VKORG LIKE MVKE-VKORG VALUE '1000',
    VTWEG LIKE MVKE-VTWEG VALUE '10',
    END OF DEFAULTS.
    constants:
    c_uncpath_material(43)
    value '/sapinterface/unconverted/zvppo102_matlfile',
    c_final_path(44)
    value '/sapinterface/ebusiness/' ,
    c_uncpath(26)
    value '/sapinterface/unconverted/' .
    Data Elements --------------------------------------------------------
    DATA: PROGNAME LIKE SY-REPID,
    PROG_START_DATE LIKE SY-DATUM,
    PROG_START_TIME LIKE SY-UZEIT,
    WRITE_COUNT TYPE I,
    OUTFILE(100),
    WK_STPRS LIKE MBEW-STPRS,
    WK_AUSP LIKE AUSP,
    WK_CABN LIKE CABN,
    WK_MARA LIKE MARA,
    WK_MARM LIKE MARM.
    DATA: BEGIN OF MATERIAL_DATA occurs 0,
    DELIMITER_START,
    REC_TYPE LIKE REC_TYPE,
    MATNR LIKE MARA-MATNR,
    MAKTX LIKE MAKT-MAKTX,
    SMATN LIKE KONDD-SMATN,
    SMATN_START LIKE KOTD001-DATAB,
    SMATN_END LIKE KOTD001-DATBI,
    VMSTA LIKE MVKE-VMSTA,
    VMSTB LIKE TVMST-VMSTB,
    LAEDA LIKE MARA-LAEDA,
    AENAM LIKE MARA-AENAM,
    VENDOR_NUM LIKE MARA-MFRNR,
    VENDOR_NM LIKE LFA1-NAME1,
    PROD_LINE_CD LIKE MVKE-MVGR5,
    PROD_LINE_DSC(20),
    DEA_SCH_ID LIKE MVKE-MVGR3,
    DEA_SCH_DSC(20),
    NORMT LIKE MARA-NORMT,
    STPRS(13),
    LOGO_DESC(30),
    PRESCRIPT_FLAG(1),
    THER_CLASS(5),
    THER_CLASS_DSC(30),
    THER_SUB_CLASS(5),
    THER_SUB_CLASS_DSC(30),
    THER_EQUIV(2),
    ITEM_PACKAGE_SIZE(10),
    ITEM_PACKAGE_TYPE(2),
    DOSAGE_FORM(3),
    DOSAGE_FORM_DSC(30),
    DOSE_ADMIN(3),
    DOSE_ADMIN_DSC(30),
    BOTTLE_SIZE(6),
    BRAND_NAME(25),
    BRAND_DISTR(20),
    BRAND_COLOR(20),
    BRAND_SHAPE(15),
    ANDA_DATE LIKE SY-DATUM,
    ANDA_NUMBER(9),
    BIO_STUDY,
    DESI_INDICATOR,
    DRUG_TERM_DT LIKE SY-DATUM,
    FDA_APPRV_DT LIKE SY-DATUM,
    ITEM_REG_NM(30),
    MARKET_DT LIKE SY-DATUM,
    PRODUCT_COLOR(20),
    PRODUCT_FLAVOR(15),
    PRODUCT_SHAPE(15),
    PRODUCT_STRENGTH(18),
    MEINS LIKE MARA-MEINS,
    BEGIN OF BASE_MEASURES,
    WEIGHT(15), "* like mara-brgew
    WT_UNIT LIKE MARA-GEWEI,
    VOLUM(15), "* like mara-volum,
    VOL_UNIT LIKE MARA-VOLEH,
    PKG_LENGTH(15), "* like mara-laeng
    PKG_WIDTH(15), "* like mara-breit
    PKG_HEIGHT(15), "* like mara-hoehe
    DIM_UNIT LIKE MARA-MEABM,
    END OF BASE_MEASURES,
    INR_CRTN_COUNT(6), "* like marm-umrez
    INR_CRTN_MEASURES LIKE MATERIAL_DATA-BASE_MEASURES,
    CASE_COUNT(6), "* like marm-umrez
    CASE_MEASURES LIKE MATERIAL_DATA-BASE_MEASURES,
    ITEM_NOTE(500),
    DELIMITER_END,
    <b>component like stpo-idnrk,
    mguide    like stpo-idnrk,
    awp       like konp-kbetr,</b>
    END OF MATERIAL_DATA.
    DATA : F_M_uncFILE(100) . " Material file(unconverted)
    DATA: W_BRM(3) Value 'BRM'.
    <b>data: str1(2) type c value 'O',
    str2(2) type c value 'OP',
    str3(2) type c value 'M',
    str4(2) type c value 'MP'.</b>
    <b>data: begin of i_material,
            matnr like mara-matnr,
            rate  like konp-kbetr,
          end of i_material.
    data: begin of i_outsert occurs 0,
            matnr like mara-matnr,
            stktx like stko-stktx,
            component like stpo-idnrk,
          end of i_outsert.</b>
    INITIALIZATION.
    *--- Initialize text fields for selection screen.
    TITLE1 = 'Set Default'.
    SET PARAMETER ID 'DEFAULT_BWKEY' FIELD W_BRM.
    START-OF-SELECTION.
    PERFORM INITIAL_STUFF.
    PERFORM MAIN_SELECT.
    PERFORM WRAPUP.
    Select all material master records for finished products.
    FORM MAIN_SELECT.
    SELECT MATNR
    BISMT
    LAEDA
    AENAM
    MEINS
    BRGEW
    GEWEI
    VOLUM
    VOLEH
    LAENG
    BREIT
    HOEHE
    MEABM
    NORMT
    INTO (MATERIAL_DATA-MATNR,
    MATERIAL_DATA-SMATN,
    MATERIAL_DATA-LAEDA,
    MATERIAL_DATA-AENAM,
    MATERIAL_DATA-MEINS,
    WK_MARA-BRGEW,
    MATERIAL_DATA-BASE_MEASURES-WT_UNIT,
    WK_MARA-VOLUM,
    MATERIAL_DATA-BASE_MEASURES-VOL_UNIT,
    WK_MARA-LAENG,
    WK_MARA-BREIT,
    WK_MARA-HOEHE,
    MATERIAL_DATA-BASE_MEASURES-DIM_UNIT,
    MATERIAL_DATA-NORMT)
    FROM MARA
    WHERE MTART = 'FERT' "* Finished product
    OR MTART = 'HAWA'
    ORDER BY MATNR.
    Assign default values for fields which may not be available.
    PERFORM ASSIGN_DEFAULTS.
    Get related data from other tables.
    PERFORM GET_MATERIAL_DESCRIPTION.
    PERFORM GET_STANDARD_PRICE.
    PERFORM GET_MVKE.
    PERFORM GET_MARM.
    PERFORM GET_AUSP.
    PERFORM GET_SUBSTITUTE_MATNR.
    PERFORM GET_BASIC_DATA_TEXT.
    PERFORM GET_VENDOR_NAME.
    <b>perform get_outsert.
    perform get_awp.</b>
    SEARCH MATERIAL_DATA FOR '"'.
    IF SY-SUBRC = 0.
    REPLACE '"' WITH ' ' INTO MATERIAL_DATA.
    ENDIF.
    MATERIAL_DATA-DELIMITER_START = DELIMETER_QUOTE.
    MATERIAL_DATA-DELIMITER_END = DELIMETER_QUOTE.
    Write output record.
    ADD 1 TO WRITE_COUNT.
    TRANSFER MATERIAL_DATA TO F_M_UNCFILE .
    Reinitialize work variables.
    CLEAR: MATERIAL_DATA,
    WK_STPRS,
    WK_AUSP,
    WK_CABN,
    WK_MARA,
    WK_MARM.
    ENDSELECT.
    ENDFORM. " main_select
    Assign numeric fields to character fields for output.
    FORM ASSIGN_DEFAULTS.
    MATERIAL_DATA-REC_TYPE = REC_TYPE.
    MATERIAL_DATA-BASE_MEASURES-WEIGHT = WK_MARA-BRGEW.
    MATERIAL_DATA-BASE_MEASURES-VOLUM = WK_MARA-VOLUM.
    MATERIAL_DATA-BASE_MEASURES-PKG_LENGTH = WK_MARA-LAENG.
    MATERIAL_DATA-BASE_MEASURES-PKG_WIDTH = WK_MARA-BREIT.
    MATERIAL_DATA-BASE_MEASURES-PKG_HEIGHT = WK_MARA-HOEHE.
    Set character fields to 0 in case not found on DB.
    MATERIAL_DATA-ANDA_NUMBER = ZEROS. "* ???
    MATERIAL_DATA-ITEM_PACKAGE_SIZE = 0.
    MATERIAL_DATA-INR_CRTN_COUNT = 0.
    MATERIAL_DATA-CASE_COUNT = 0.
    MATERIAL_DATA-INR_CRTN_MEASURES-WEIGHT = ZERO_DEC_3.
    MATERIAL_DATA-INR_CRTN_MEASURES-VOLUM = ZERO_DEC_3.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_LENGTH = ZERO_DEC_3.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_WIDTH = ZERO_DEC_3.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_HEIGHT = ZERO_DEC_3.
    MOVE-CORRESPONDING MATERIAL_DATA-INR_CRTN_MEASURES
    TO MATERIAL_DATA-CASE_MEASURES.
    ENDFORM. " assign_defaults
    FORM GET_VENDOR_NAME.
    SELECT SINGLE NAME1
    INTO MATERIAL_DATA-VENDOR_NM
    FROM LFA1
    WHERE LIFNR = MATERIAL_DATA-VENDOR_NUM.
    ENDFORM. " get_vendor_name
    FORM GET_OUTSERT *
    <b>form get_outsert.
    select matnr from mara into corresponding fields of table material_data
                 where mtart = 'FERT' or mtart = 'HAWA'.
         select didnrk amatnr
             into (i_outsert-component, i_outsert-matnr)
                from stpo as d
               inner join stko as c
                     on dstlnr = cstlnr
               inner join mast as b
                     on cstlnr = bstlnr
               inner join mara as a
                     on bmatnr = amatnr
              for all entries IN material_data
                   where a~matnr = material_data-matnr.
           append i_outsert.
         endselect.
        check i_outsert-stktx = 'UNRESTRICTED'.
      if ( i_outsert-component cs str1 ) or ( i_outsert-component cs str2 ).
               move i_outsert-component to material_data-component.
               append material_data.
      elseif ( i_outsert-component cs str3 ) or
                             ( i_outsert-component cs str4 ).
               move i_outsert-component to material_data-mguide.
               append material_data.
      endif.
          modify material_data transporting component
                          where matnr = i_outsert-matnr.
    endform.                               "get_outsert</b>
    FORM GET_AWP *
    <b>form get_awp.
    select matnr from mara into corresponding fields of table material_data
                  where mtart = 'FERT' or mtart = 'HAWA'.
        select bmatnr ckbetr into (i_material-matnr, i_material-rate)
               from konp as c
              inner join a505 as b
                    on cknumh = bknumh
              inner join mara as a
                    on bmatnr = amatnr
              for all entries IN material_data
                  where a~matnr = material_data-matnr
                    and b~kappl = 'V'
                    and b~kschl = 'ZR10'
                    and b~vkorg = '1000'
                    and b~pltyp = '01'
                    and b~datbi > sy-datum
                    and b~datab < sy-datum.
             append i_material.
        endselect.
            move i_material-rate to material_data-awp.
            append material_data.
            modify material_data transporting awp
                  where matnr = i_material-matnr.
    endform.                               "get_awp</b>
    FORM GET_MATERIAL_DESCRIPTION.
    SELECT SINGLE MAKTX
    INTO MATERIAL_DATA-MAKTX
    FROM MAKT
    WHERE MATNR = MATERIAL_DATA-MATNR
    AND SPRAS = SY-LANGU.
    ENDFORM. " get_material_description
    FORM GET_STANDARD_PRICE.
    data: l_vprsv like mbew-vprsv,
    l_verpr like mbew-verpr.
    clear: l_Vprsv, l_verpr.
    SELECT SINGLE VPRSV VERPR stprs
    into (l_vprsv, l_verpr, WK_stprs)
    FROM MBEW
    WHERE MATNR = MATERIAL_DATA-MATNR
    AND BWKEY IN S_BWKEY
    AND BWTAR = DEFAULTS-BWTAR.
    the need to change the assumption
    that standard price is housed in MBEW-STPRS. This does not apply to
    plant US18, so need to check to see what the price control field is
    (MBEW-VPRSV) and if it is S, use standard price, if it is V, use the
    moving average price.
    IF L_VPRSV = 'V'.
    WK_STPRS = L_VERPR.
    ENDIF.
    MATERIAL_DATA-STPRS = WK_STPRS.
    ENDFORM. " get_standard_price
    FORM GET_MVKE.
    SELECT SINGLE MVGR3
    VMSTA
    MVGR5
    INTO (MATERIAL_DATA-DEA_SCH_ID,
    MATERIAL_DATA-VMSTA,
    MATERIAL_DATA-PROD_LINE_CD)
    FROM MVKE
    WHERE MATNR = MATERIAL_DATA-MATNR
    AND VKORG = DEFAULTS-VKORG
    AND VTWEG = DEFAULTS-VTWEG.
    IF SY-SUBRC = 0.
    PERFORM GET_DEA_ID_DSC.
    PERFORM GET_PROD_LINE_DSC.
    PERFORM GET_VMSTB.
    ENDIF.
    ENDFORM. " get_mvke
    FORM GET_DEA_ID_DSC.
    SELECT SINGLE BEZEI
    INTO MATERIAL_DATA-DEA_SCH_DSC
    FROM TVM3T
    WHERE SPRAS = SY-LANGU
    AND MVGR3 = MATERIAL_DATA-DEA_SCH_ID.
    ENDFORM. " get_dea_id_dsc
    FORM GET_PROD_LINE_DSC.
    SELECT SINGLE BEZEI
    INTO MATERIAL_DATA-PROD_LINE_DSC
    FROM TVM5T
    WHERE SPRAS = SY-LANGU
    AND MVGR5 = MATERIAL_DATA-PROD_LINE_CD.
    ENDFORM. " form get_prod_line_dsc
    FORM GET_VMSTB.
    SELECT SINGLE VMSTB
    INTO MATERIAL_DATA-VMSTB
    FROM TVMST
    WHERE SPRAS = SY-LANGU
    AND VMSTA = MATERIAL_DATA-VMSTA.
    ENDFORM. " form get_vmstb
    Get measurements, etc. for inner carton and case from the MARM table.
    FORM GET_MARM.
    SELECT MEINH " alternative unit of measure for stockkeeping unit
    UMREZ " numerator for conversion to base units of measure
    LAENG " length
    BREIT " width
    HOEHE " height
    MEABM " unit of dimension for length/width/height
    VOLUM " volume
    VOLEH " volume unit
    BRGEW " gross weight
    GEWEI " unit of weight
    INTO (WK_MARM-MEINH,
    WK_MARM-UMREZ,
    WK_MARM-LAENG,
    WK_MARM-BREIT,
    WK_MARM-HOEHE,
    WK_MARM-MEABM,
    WK_MARM-VOLUM,
    WK_MARM-VOLEH,
    WK_MARM-BRGEW,
    WK_MARM-GEWEI)
    FROM MARM
    WHERE MATNR = MATERIAL_DATA-MATNR
    AND MEINH IN ('CS', 'PAK').
    PERFORM EVALUATE_MEINH.
    CLEAR WK_MARM.
    ENDSELECT.
    ENDFORM. " get_marm
    Populate output record fields based on alternative unit of measure.
    FORM EVALUATE_MEINH.
    CASE WK_MARM-MEINH.
    WHEN 'CS'.
    MATERIAL_DATA-CASE_COUNT = WK_MARM-UMREZ.
    MATERIAL_DATA-CASE_MEASURES-WEIGHT = WK_MARM-BRGEW.
    MATERIAL_DATA-CASE_MEASURES-WT_UNIT = WK_MARM-GEWEI.
    MATERIAL_DATA-CASE_MEASURES-VOLUM = WK_MARM-VOLUM.
    MATERIAL_DATA-CASE_MEASURES-VOL_UNIT = WK_MARM-VOLEH.
    MATERIAL_DATA-CASE_MEASURES-PKG_LENGTH = WK_MARM-LAENG.
    MATERIAL_DATA-CASE_MEASURES-PKG_WIDTH = WK_MARM-BREIT.
    MATERIAL_DATA-CASE_MEASURES-PKG_HEIGHT = WK_MARM-HOEHE.
    MATERIAL_DATA-CASE_MEASURES-DIM_UNIT = WK_MARM-MEABM.
    WHEN 'PAK'.
    MATERIAL_DATA-INR_CRTN_COUNT = WK_MARM-UMREZ.
    MATERIAL_DATA-INR_CRTN_MEASURES-WEIGHT = WK_MARM-BRGEW.
    MATERIAL_DATA-INR_CRTN_MEASURES-WT_UNIT = WK_MARM-GEWEI.
    MATERIAL_DATA-INR_CRTN_MEASURES-VOLUM = WK_MARM-VOLUM.
    MATERIAL_DATA-INR_CRTN_MEASURES-VOL_UNIT = WK_MARM-VOLEH.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_LENGTH = WK_MARM-LAENG.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_WIDTH = WK_MARM-BREIT.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_HEIGHT = WK_MARM-HOEHE.
    MATERIAL_DATA-INR_CRTN_MEASURES-DIM_UNIT = WK_MARM-MEABM.
    ENDCASE.
    ENDFORM. " evaluate_meinh
    Get characterics from the AUSP & CABN tables.
    FORM GET_AUSP.
    *--- Get object number for classification lookup.
    data: l_objek like ausp-objek.
    clear l_objek.
    select cuobj into l_objek from inob up to 1 rows
    where klart = '001'
    and obtab = 'MARA'
    and objek = material_data-matnr.
    endselect.
    SELECT A~ATINN " internal characteristic
    A~ATWRT " characteristic value
    A~ATAWE " unit of measurement
    A~ATAW1 " unit of measurement
    A~ATFLV " internal floating point from (value if date)
    C~ATNAM " characteristic name
    INTO (WK_AUSP-ATINN,
    WK_AUSP-ATWRT,
    WK_AUSP-ATAWE,
    WK_AUSP-ATAW1,
    WK_AUSP-ATFLV,
    WK_CABN-ATNAM)
    FROM AUSP AS A INNER JOIN
    CABN AS C ON AATINN = CATINN
    where a~objek = l_objek
    AND C~ATNAM LIKE 'MM_%'
    AND A~LKENZ = SPACE.
    PERFORM EVALUATE_CHARACTERISTIC.
    ENDSELECT.
    ENDFORM. " get_ausp
    Populate output record fields based on characteristic type.
    FORM EVALUATE_CHARACTERISTIC.
    DATA: SIZE_TEMP TYPE I.
    CASE WK_CABN-ATNAM.
    when 'MM_BOTTLE_SIZE'.
    MATERIAL_DATA-BOTTLE_SIZE = WK_AUSP-ATWRT.
    when 'MM_BRAND_COLOR'.
    MATERIAL_DATA-BRAND_COLOR = WK_AUSP-ATWRT.
    WHEN 'MM_BRAND_DISTRIBUTOR'.
    MATERIAL_DATA-BRAND_DISTR = WK_AUSP-ATWRT.
    when 'MM_BRAND_NAME'.
    MATERIAL_DATA-BRAND_NAME = WK_AUSP-ATWRT.
    when 'MM_BRAND_SHAPE'.
    MATERIAL_DATA-BRAND_SHAPE = WK_AUSP-ATWRT.
    WHEN 'MM_DOSAGE_FORM'.
    MATERIAL_DATA-DOSAGE_FORM = WK_AUSP-ATWRT.
    PERFORM GET_CHARACTERISTIC_DSC
    USING WK_AUSP-ATINN
    WK_AUSP-ATWRT
    CHANGING MATERIAL_DATA-DOSAGE_FORM_DSC.
    when 'MM_DOSE_ADMINISTRATION'.
    MATERIAL_DATA-DOSE_ADMIN = WK_AUSP-ATWRT.
    PERFORM GET_CHARACTERISTIC_DSC
    USING WK_AUSP-ATINN
    WK_AUSP-ATWRT
    CHANGING MATERIAL_DATA-DOSE_ADMIN_DSC.
    WHEN 'MM_ITEM_PACKAGE_SIZE'.
    SIZE_TEMP = WK_AUSP-ATFLV.
    MATERIAL_DATA-ITEM_PACKAGE_SIZE = SIZE_TEMP.
    WHEN 'MM_ITEM_PACKAGE_TYPE'.
    MATERIAL_DATA-ITEM_PACKAGE_TYPE = WK_AUSP-ATWRT.
    when 'MM_LOGO_DESC'.
    MATERIAL_DATA-LOGO_DESC = WK_AUSP-ATWRT.
    when 'MM_PRESCRIPTION_FLAG'.
    MATERIAL_DATA-PRESCRIPT_FLAG = WK_AUSP-ATWRT.
    when 'MM_THERAPEUTIC_CLASS'.
    MATERIAL_DATA-THER_CLASS = WK_AUSP-ATWRT.
    PERFORM GET_CHARACTERISTIC_DSC
    USING WK_AUSP-ATINN
    WK_AUSP-ATWRT
    CHANGING MATERIAL_DATA-THER_CLASS_DSC.
    when 'MM_THERAPEUTIC_SUB_CLASS'.
    MATERIAL_DATA-THER_SUB_CLASS = WK_AUSP-ATWRT.
    PERFORM GET_CHARACTERISTIC_DSC
    USING WK_AUSP-ATINN
    WK_AUSP-ATWRT
    CHANGING MATERIAL_DATA-THER_SUB_CLASS_DSC.
    WHEN 'MM_THERAPEUTIC_RATING'.
    MATERIAL_DATA-THER_EQUIV = WK_AUSP-ATWRT.
    when 'MM_ANDA_DATE'.
    PERFORM CONVERT_TO_DATE USING WK_AUSP-ATFLV
    CHANGING MATERIAL_DATA-ANDA_DATE.
    when 'MM_ANDA_NUMBER'.
    MATERIAL_DATA-ANDA_NUMBER = WK_AUSP-ATWRT.
    when 'MM_BIO_STUDY'.
    MATERIAL_DATA-BIO_STUDY = WK_AUSP-ATWRT.
    when 'MM_DESI_INDICATOR'.
    MATERIAL_DATA-DESI_INDICATOR = WK_AUSP-ATWRT.
    when 'MM_DRUG_TERMINATION_DATE'.
    PERFORM CONVERT_TO_DATE USING WK_AUSP-ATFLV
    CHANGING MATERIAL_DATA-DRUG_TERM_DT.
    when 'MM_FDA_APPROVAL_DATE'.
    PERFORM CONVERT_TO_DATE USING WK_AUSP-ATFLV
    CHANGING MATERIAL_DATA-FDA_APPRV_DT.
    when 'MM_ITEM_REGULATORY_NAME'.
    MATERIAL_DATA-ITEM_REG_NM = WK_AUSP-ATWRT.
    when 'MM_MARKET_DATE'.
    PERFORM CONVERT_TO_DATE USING WK_AUSP-ATFLV
    CHANGING MATERIAL_DATA-MARKET_DT.
    when 'MM_PRODUCT_COLOR'.
    MATERIAL_DATA-PRODUCT_COLOR = WK_AUSP-ATWRT.
    when 'MM_PRODUCT_FLAVOR'.
    MATERIAL_DATA-PRODUCT_FLAVOR = WK_AUSP-ATWRT.
    when 'MM_PRODUCT_SHAPE'.
    MATERIAL_DATA-PRODUCT_SHAPE = WK_AUSP-ATWRT.
    when 'MM_PRODUCT_STRENGTH'.
    MATERIAL_DATA-PRODUCT_STRENGTH = WK_AUSP-ATWRT.
    WHEN 'MM_VENDOR'.
    MATERIAL_DATA-VENDOR_NUM = WK_AUSP-ATWRT.
    ENDCASE.
    CLEAR SIZE_TEMP.
    ENDFORM. " evaluate_characteristic
    Get descriptive text from CAWN & CAWNT for characteristics.
    FORM GET_CHARACTERISTIC_DSC USING PARM_ATINN
    PARM_ATWRT
    CHANGING PARM_DSC_TEXT.
    CLEAR PARM_DSC_TEXT.
    SELECT SINGLE ATWTB
    INTO PARM_DSC_TEXT
    FROM CAWN AS C1 INNER JOIN
    CAWNT AS C2 ON C1ATINN = C2ATINN
    AND C1ATZHL = C2ATZHL
    WHERE C1~ATINN = PARM_ATINN
    AND C1~ATWRT = PARM_ATWRT
    AND C2~SPRAS = SY-LANGU
    AND C2~ADZHL = 0.
    ENDFORM. " get_characteristic_dsc
    Call function CTCV_CONVERT_FLOAT_TO_DATE to convert floating point
    number to a date in yyyymmdd format.
    form convert_to_date using date
    changing conv_date.
    clear conv_date.
    data: wrk_date(30) type c."Format YYYYMMDD changing it to MMDDYYYY
    call function 'CTCV_CONVERT_FLOAT_TO_DATE'
    EXPORTING
    float = date
    IMPORTING
    date = wrk_date
    EXCEPTIONS
    others = 1.
    CONV_DATE = WRK_DATE.
    ENDFORM. " convert_to_date
    Get substitute material number.
    FORM GET_SUBSTITUTE_MATNR.
    SELECT SINGLE SMATN
    DATAB
    DATBI
    INTO (MATERIAL_DATA-SMATN,
    MATERIAL_DATA-SMATN_START,
    MATERIAL_DATA-SMATN_END)
    FROM KOTD001 INNER JOIN
    KONDD ON KOTD001~KNUMH = KONDD~KNUMH
    WHERE KAPPL = 'V' "* Sales/Distribution
    AND KSCHL = 'A001' "* Material Entered
    AND MATWA = MATERIAL_DATA-MATNR
    AND DATBI >= SY-DATUM
    AND DATAB <= SY-DATUM
    AND SUGRD = SPACE.
    ENDFORM. " get_substitute_matnr.
    Get basic data text for material item note.
    If this is longer than 500 bytes, it will be truncated at 500.
    FORM GET_BASIC_DATA_TEXT.
    DATA: BEGIN OF TEXT_HEADER.
    INCLUDE STRUCTURE THEAD. "* SAPscript: Text Header
    DATA: END OF TEXT_HEADER.
    DATA: BEGIN OF TEXT_LINES OCCURS 100.
    INCLUDE STRUCTURE TLINE. "* SAPscript: text lines
    DATA: END OF TEXT_LINES.
    DATA: ITEM_NOTE_LENGTH TYPE I.
    Set up text header for call to READ_TEXT.
    TEXT_HEADER-TDOBJECT = 'MATERIAL'.
    TEXT_HEADER-TDNAME = MATERIAL_DATA-MATNR.
    TEXT_HEADER-TDID = 'GRUN'. "* Basic data text
    TEXT_HEADER-TDSPRAS = SY-LANGU.
    CALL FUNCTION 'READ_TEXT'
    EXPORTING
    CLIENT = SY-MANDT
    ID = TEXT_HEADER-TDID
    LANGUAGE = TEXT_HEADER-TDSPRAS
    NAME = TEXT_HEADER-TDNAME
    OBJECT = TEXT_HEADER-TDOBJECT
    ARCHIVE_HANDLE = 0
    IMPORTING
    HEADER =
    TABLES
    LINES = TEXT_LINES
    EXCEPTIONS
    ID = 1
    LANGUAGE = 2
    NAME = 3
    NOT_FOUND = 4
    OBJECT = 5
    REFERENCE_CHECK = 6
    WRONG_ACCESS_TO_ARCHIVE = 7
    OTHERS = 8.
    CASE SY-SUBRC.
    WHEN 0.
    LOOP AT TEXT_LINES.
    IF SY-TABIX = 1.
    MATERIAL_DATA-ITEM_NOTE = TEXT_LINES-TDLINE.
    ELSE.
    Pass up to 500 bytes to Siebel.
    ITEM_NOTE_LENGTH = STRLEN( MATERIAL_DATA-ITEM_NOTE ).
    IF ITEM_NOTE_LENGTH > 498.
    EXIT.
    ELSE.
    CONCATENATE MATERIAL_DATA-ITEM_NOTE
    TEXT_LINES-TDLINE
    INTO MATERIAL_DATA-ITEM_NOTE
    SEPARATED BY SPACE.
    ENDIF.
    ENDIF.
    ENDLOOP.
    WHEN 4.
    Not found; this is normal if no text was entered.
    WHEN OTHERS.
    MESSAGE E000(38) WITH 'Bad call to function READ_TEXT'.
    ENDCASE.
    ENDFORM. " get_substitute_matnr
    Open files, set initial conditions, etc.
    FORM INITIAL_STUFF.
    data : w_length type i .
    PROGNAME = SY-REPID.
    WRITE: / 'Program: ', PROGNAME.
    WRITE: / 'Execution start date: ', SY-DATUM.
    WRITE: / 'Execution start time: ', SY-UZEIT.
    WRITE: / .
    CALL FUNCTION 'Z_SET_INTERFACE_FILENAME'
    EXPORTING
    INTERFACE_NAME = MATLFILE
    DATE_TIME_SW = 'X'
    EXTENSION_TYPE = 'txt'
    IMPORTING
    PATHNAME = OUTFILE
    EXCEPTIONS
    OTHERS = 1.
    f_m_uncfile = outfile .
    clear w_length.
    w_length = strlen( matlfile ).
    replace matlfile with c_uncpath_material into F_M_UNCFILE length
    w_length .
    open dataset F_m_UNCFILE for output in text mode .
    if sy-subrc <> 0 .
    MESSAGE E000(38) WITH 'Unable to open file ' F_m_UNCFILE.
    endif.
    ENDFORM. " initial_stuff.
    Close files, etc.
    FORM WRAPUP.
    CLOSE DATASET F_M_UNCFILE.
    PERFORM CONVERT_FILE.
    WRITE: / 'Material interface file name: ', OUTFILE,
    / 'Number of records written to material file: ', WRITE_COUNT.
    endform.
    This form is included for testing and is performed if the test_rec
    checkbox is checked.
    FORM WRITE_FORMATTED_TEST_RECORD.
    WRITE: /,
    / 'Beginning of new record :',
    / 'Start Delimiter :|' NO-GAP,
    MATERIAL_DATA-DELIMITER_START NO-GAP, '|',
    / 'Record Type :|' NO-GAP,
    MATERIAL_DATA-REC_TYPE NO-GAP, '|',
    / 'Material Number :|' NO-GAP,
    MATERIAL_DATA-MATNR NO-GAP USING NO EDIT MASK, '|',
    / 'Material Description :|' NO-GAP,
    MATERIAL_DATA-MAKTX NO-GAP, '|',
    / 'Substitute Material Number :|' NO-GAP,
    MATERIAL_DATA-SMATN NO-GAP, '|',
    / 'Substitute Start Date :|' NO-GAP,
    MATERIAL_DATA-SMATN_START NO-GAP, '|',
    / 'Substitute End Date :|' NO-GAP,
    MATERIAL_DATA-SMATN_END NO-GAP, '|',
    / 'Status Code :|' NO-GAP,
    MATERIAL_DATA-VMSTA NO-GAP, '|',
    / 'Status Description :|' NO-GAP,
    MATERIAL_DATA-VMSTB NO-GAP, '|',
    / 'Date of last change :|' NO-GAP,
    MATERIAL_DATA-LAEDA NO-GAP, '|',
    / 'User who changed record :|' NO-GAP,
    MATERIAL_DATA-AENAM NO-GAP, '|',
    / 'Manufacturer Number :|' NO-GAP,
    MATERIAL_DATA-VENDOR_NUM NO-GAP, '|',
    / 'Vendor Name :|' NO-GAP,
    MATERIAL_DATA-VENDOR_NM NO-GAP, '|',
    / 'Product Line Code :|' NO-GAP,
    MATERIAL_DATA-PROD_LINE_CD NO-GAP, '|',
    / 'Product Line Description :|' NO-GAP,
    MATERIAL_DATA-PROD_LINE_DSC NO-GAP, '|',
    / 'DEA Schedule ID :|' NO-GAP,
    MATERIAL_DATA-DEA_SCH_ID NO-GAP, '|',
    / 'DEA Schedule Description :|' NO-GAP,
    MATERIAL_DATA-DEA_SCH_DSC NO-GAP, '|',
    / 'Labeller Code :|' NO-GAP,
    MATERIAL_DATA-NORMT NO-GAP, '|',
    / 'Standard Price :|' NO-GAP,
    MATERIAL_DATA-STPRS NO-GAP, '|',
    / 'Logo Description :|' NO-GAP,
    MATERIAL_DATA-LOGO_DESC NO-GAP, '|',
    / 'Prescription Flag :|' NO-GAP,
    MATERIAL_DATA-PRESCRIPT_FLAG NO-GAP, '|',
    / 'Therapeutic Class :|' NO-GAP,
    MATERIAL_DATA-THER_CLASS NO-GAP, '|',
    / 'Therapeutic Class Description :|' NO-GAP,
    MATERIAL_DATA-THER_CLASS_DSC NO-GAP, '|',
    / 'Therapeutic Subclass :|' NO-GAP,
    MATERIAL_DATA-THER_SUB_CLASS NO-GAP, '|',
    / 'Therapeutic Subclass Description:|' NO-GAP,
    MATERIAL_DATA-THER_SUB_CLASS_DSC NO-GAP, '|',
    / 'Therapeutic Equivalence :|' NO-GAP,
    MATERIAL_DATA-THER_EQUIV NO-GAP, '|',
    / 'Item Package Size :|' NO-GAP,
    MATERIAL_DATA-ITEM_PACKAGE_SIZE NO-GAP, '|',
    / 'Item Package Type :|' NO-GAP,
    MATERIAL_DATA-ITEM_PACKAGE_TYPE NO-GAP, '|',
    / 'Dosage Form :|' NO-GAP,
    MATERIAL_DATA-DOSAGE_FORM NO-GAP, '|',
    / 'Dosage Form Description :|' NO-GAP,
    MATERIAL_DATA-DOSAGE_FORM_DSC NO-GAP, '|',
    / 'Dose Administration :|' NO-GAP,
    MATERIAL_DATA-DOSE_ADMIN NO-GAP, '|',
    / 'Dose Administration Description :|' NO-GAP,
    MATERIAL_DATA-DOSE_ADMIN_DSC NO-GAP, '|',
    / 'Bottle Size :|' NO-GAP,
    MATERIAL_DATA-BOTTLE_SIZE NO-GAP, '|',
    / 'Brand Name :|' NO-GAP,
    MATERIAL_DATA-BRAND_NAME NO-GAP, '|',
    / 'Brand Distributor :|' NO-GAP,
    MATERIAL_DATA-BRAND_DISTR NO-GAP, '|',
    / 'Brand Color :|' NO-GAP,
    MATERIAL_DATA-BRAND_COLOR NO-GAP, '|',
    / 'Brand Shape :|' NO-GAP,
    MATERIAL_DATA-BRAND_SHAPE NO-GAP, '|',
    / 'ANDA Date :|' NO-GAP,
    MATERIAL_DATA-ANDA_DATE NO-GAP, '|',
    / 'ANDA Number :|' NO-GAP,
    MATERIAL_DATA-ANDA_NUMBER NO-GAP, '|',
    / 'Bio Study :|' NO-GAP,
    MATERIAL_DATA-BIO_STUDY NO-GAP, '|',
    / 'DESI Indicator :|' NO-GAP,
    MATERIAL_DATA-DESI_INDICATOR NO-GAP, '|',
    / 'Drug Term Date :|' NO-GAP,
    MATERIAL_DATA-DRUG_TERM_DT NO-GAP, '|',
    / 'FDA Approval Date :|' NO-GAP,
    MATERIAL_DATA-FDA_APPRV_DT NO-GAP, '|',
    / 'Item Regulatory Name :|' NO-GAP,
    MATERIAL_DATA-ITEM_REG_NM NO-GAP, '|',
    / 'Market Date :|' NO-GAP,
    MATERIAL_DATA-MARKET_DT NO-GAP, '|',
    / 'Product Color :|' NO-GAP,
    MATERIAL_DATA-PRODUCT_COLOR NO-GAP, '|',
    / 'Product Flavor :|' NO-GAP,
    MATERIAL_DATA-PRODUCT_FLAVOR NO-GAP, '|',
    / 'Product Shape :|' NO-GAP,
    MATERIAL_DATA-PRODUCT_SHAPE NO-GAP, '|',
    / 'Product Strength :|' NO-GAP,
    MATERIAL_DATA-PRODUCT_STRENGTH NO-GAP, '|',
    / 'Base Unit of Measure :|' NO-GAP,
    MATERIAL_DATA-MEINS NO-GAP, '|',
    / 'Base Weight :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-WEIGHT NO-GAP, '|',
    / 'Base Weight Unit :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-WT_UNIT NO-GAP, '|',
    / 'Base Volume :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-VOLUM NO-GAP, '|',
    / 'Base Volume Unit :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-VOL_UNIT NO-GAP, '|',
    / 'Base Package Length :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-PKG_LENGTH NO-GAP, '|',
    / 'Base Package Width :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-PKG_WIDTH NO-GAP, '|',
    / 'Base Package Height :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-PKG_HEIGHT NO-GAP, '|',
    / 'Base Dimension Unit :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-DIM_UNIT NO-GAP, '|',
    / 'Inner Carton Count :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_COUNT NO-GAP, '|',
    / 'Inner Carton Weight :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-WEIGHT NO-GAP, '|',
    / 'Inner Carton Weight Unit :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-WT_UNIT NO-GAP, '|',
    / 'Inner Carton Volume :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-VOLUM NO-GAP, '|',
    / 'Inner Carton Volume Unit :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-VOL_UNIT NO-GAP, '|',
    / 'Inner Carton Package Length :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_LENGTH NO-GAP, '|',
    / 'Inner Carton Package Width :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_WIDTH NO-GAP, '|',
    / 'Inner Carton Package Height :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_HEIGHT NO-GAP, '|',
    / 'Inner Carton Dimension Unit :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-DIM_UNIT NO-GAP, '|',
    / 'Case Count :|' NO-GAP,
    MATERIAL_DATA-CASE_COUNT NO-GAP, '|',
    / 'Case Weight :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-WEIGHT NO-GAP, '|',
    / 'Case Weight Unit :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-WT_UNIT NO-GAP, '|',
    / 'Case Volume :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-VOLUM NO-GAP, '|',
    / 'Case Volume Unit :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-VOL_UNIT NO-GAP, '|',
    / 'Case Length :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-PKG_LENGTH NO-GAP, '|',
    / 'Case Width :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-PKG_WIDTH NO-GAP, '|',
    / 'Case Height :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-PKG_HEIGHT NO-GAP, '|',
    / 'Case Dimension Unit :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-DIM_UNIT NO-GAP, '|',
    / 'Item Note :|' NO-GAP,
    MATERIAL_DATA-ITEM_NOTE NO-GAP, '|',
    / 'End Delimiter :|' NO-GAP,
    MATERIAL_DATA-DELIMITER_END NO-GAP, '|',
    ENDFORM. " write_formatted_test_record
    Copy the output files to the appropriate archive folder.
    FORM COPY_TO_ARCHIVE USING C_FILE.
    DATA:
    ARCHFILE(100),
    COPYFILES(255),
    ITAB LIKE BTCXPM OCCURS 0 WITH HEADER LINE,
    W_LENGTH TYPE I ,
    W_INFILE(100),
    W_OUTFILE(100).
    PERFORM BUILD_ARCHIVE_NAME USING C_FILE
    CHANGING ARCHFILE.
    CONCATENATE C_FILE C_UNCPATH INTO COPYFILES SEPARATED BY SPACE .
    CALL FUNCTION 'SXPG_COMMAND_EXECUTE'
    EXPORTING
    COMMANDNAME = 'ZUNIXCOPY'
    ADDITIONAL_PARAMETERS = COPYFILES
    OPERATINGSYSTEM = SY-OPSYS
    STDOUT = 'X'
    STDERR = 'X'
    TERMINATIONWAIT = 'X'
    TABLES
    EXEC_PROTOCOL = ITAB
    EXCEPTIONS
    NO_PERMISSION = 1
    COMMAND_NOT_FOUND = 2
    PARAMETERS_TOO_LONG = 3
    SECURITY_RISK = 4
    WRONG_CHECK_CALL_INTERFACE = 5
    PROGRAM_START_ERROR = 6
    PROGRAM_TERMINATION_ERROR = 7
    X_ERROR = 8
    PARAMETER_EXPECTED = 9
    TOO_MANY_PARAMETERS = 10
    ILLEGAL_COMMAND = 11
    WRONG_ASYNCHRONOUS_PARAMETERS = 12
    CANT_ENQ_TBTCO_ENTRY = 13
    JOBCOUNT_GENERATION_ERROR = 14
    OTHERS = 15.
    w_length = strlen( c_final_path ).
    replace c_final_path with ' ' into c_file length w_length.
    shift c_file left deleting leading space .
    concatenate c_uncpath c_file into w_infile .
    concatenate archfile c_file into w_outfile .
    CALL FUNCTION 'Z_CONVERT_UNIX2DOS'
    EXPORTING
    INFILE = w_infile
    OUTFILE = w_outfile
    EXCEPTIONS
    ERROR = 1
    IDENTICAL_FILENAMES = 2
    NO_INPUT_FILE = 3
    OTHERS = 4.
    IF SY-SUBRC = 0.
    SKIP.
    WRITE: / C_FILE, 'copied to', ARCHFILE.
    ELSE.
    MESSAGE E000(38) WITH 'Archive file copy failed.'.
    ENDIF.
    ENDFORM. " copy_to_archive.
    Build Archive file pathnames.
    FORM BUILD_ARCHIVE_NAME USING P_PATH
    CHANGING P_ARCH.
    DATA:
    NODECOUNT TYPE I,
    LASTNODE TYPE I,
    BEGIN OF NODES OCCURS 25,
    NODENAME(100),
    END OF NODES.
    SPLIT P_PATH AT '/' INTO TABLE NODES.
    DESCRIBE TABLE NODES LINES NODECOUNT.
    CLEAR P_ARCH.
    LASTNODE = NODECOUNT - 1.
    LOOP AT NODES.
    CASE SY-TABIX.
    WHEN LASTNODE.
    CONCATENATE P_ARCH NODES-NODENAME '/archive/' INTO P_ARCH.
    WHEN NODECOUNT.
    WHEN OTHERS.
    CONCATENATE P_ARCH NODES-NODENAME '/' INTO P_ARCH.
    ENDCASE.
    ENDLOOP.
    ENDFORM. " build_archive_name
    *& Form CONVERT_FILE
    Move output files from unconverted directory to final destination
    directory and convert from UNIX to DOS format in the process.
    FORM CONVERT_FILE.
    CONCATENATE MATLFILE '.txt' INTO OUTFILE.
    Convert customer file from Unix to DOS
    CALL FUNCTION 'Z_CONVERT_UNIX2DOS'
    EXPORTING
    INFILE = F_M_UNCFILE
    OUTFILE = outFILE
    EXCEPTIONS
    ERROR = 1
    IDENTICAL_FILENAMES = 2
    NO_INPUT_FILE = 3
    OTHERS = 4.
    IF SY-SUBRC <> 0.
    write: /'Error converting file. Input file: ', F_M_UNCFILE.
    write: /' Output file: ', outFILE.
    ENDIF.
    ENDFORM. " CONVERT_FILE

    Hi Vijay,
    thanks very much for the reply with valuable suggestion.
    I have made couple of changes in the program like this:
    i have created another Internal table like this...for selecting the data of MARA...
    <b>data: begin of it_temp occurs 0,
             matnr like mara-matnr,
          end of it_temp.</b>
    then I have changed the FORM like this ....
    Plz have a look on that and let me know if any thing is wrong in that...
    thnx much..
    <b>form get_outsert.
    select matnr from mara into corresponding fields of table
        it_temp where mtart = 'FERT' or mtart = 'HAWA'.
         select didnrk amatnr
             into (i_outsert-component, i_outsert-matnr)
                from stpo as d
               inner join stko as c
                     on dstlnr = cstlnr
               inner join mast as b
                     on cstlnr = bstlnr
               inner join mara as a
                     on bmatnr = amatnr
               for all entries IN it_temp
                   where a~matnr = it_temp-matnr.
           append i_outsert.
         endselect.
         loop at i_outsert where matnr = it_temp-matnr.
      if ( i_outsert-component cs str1 ) or ( i_outsert-component cs str2 ).
               write i_outsert-component to material_data-component.
               append material_data.
      elseif ( i_outsert-component cs str3 ) or
                             ( i_outsert-component cs str4 ).
               write i_outsert-component to material_data-mguide.
               append material_data.
      endif.
          modify material_data transporting component
                          where matnr = i_outsert-matnr.
         endloop.
    endform.                               "get_outsert</b>

  • Problem with output formatting.

    Hi all,
    I have an output as shown below.
    R1             R2                            R3                            R4           R5           R6            R7
    20000001      27.02.2007     3326          180080     D4          
    20000001     27.02.2007     3326          180080     D2          
    20000001     27.02.2007     3326          180080     D3          
    20000001     27.02.2007     3326          180080          D8H     
    20000001     27.02.2007     3326          180080               TT4
    my problem is that, i am not able to get my values in fields R6 and R7 in the first row. Can any one suggest me a method to get the values of R6 and R7 in to the first row it self.

    loop at t_plant.
         clear : p_test,x,y.
         call function 'CONVERSION_EXIT_ATINN_INPUT'
           exporting
             input  = 'HCC_MM_MAT_EQP'
           importing
             output = p_test.
         clear t_ausp1.
         refresh t_ausp1.
         select  objek
                 atinn
                 atzhl
                 atwrt
                 from ausp
                 into table t_ausp3
                 where objek = t_plant-matnr and
                       atinn = p_test.
         loop at t_ausp3.
           y = y + 1.
           t_ausp3-atwrt1 = t_ausp3-atwrt.
           modify t_ausp3.
           clear t_ausp3.
         endloop.
         clear : p_test.
         call function 'CONVERSION_EXIT_ATINN_INPUT'
           exporting
             input  = 'HCC_MM_MAT_MMO'
           importing
             output = p_test.
         clear t_ausp1.
         refresh t_ausp1.
         select  objek
                 atinn
                 atzhl
                 atwrt
                 from ausp
                 into table t_ausp2
                 where objek = t_plant-matnr and
                       atinn = p_test.
         loop at t_ausp2." where atzhl = t_ausp3-atzhl.
           x = x + 1.
           t_ausp2-atwrt = t_ausp2-atwrt.
           modify t_ausp2.
           clear t_ausp2.
         endloop.
         if ( ( x < y ) or ( x = y ) ).
           loop at t_ausp3." where atzhl = t_ausp2-atzhl.
             read table t_ausp2 with key objek = t_ausp3-objek.
                                        atzhl = t_ausp3-atzhl.
             move t_ausp2-atwrt to t_ausp3-atwrt2.
             modify t_ausp3.
             clear t_ausp3.
           endloop.
         elseif x > y.
           loop at t_ausp2." where atzhl = t_ausp3-atzhl.
             read table t_ausp2 with key objek = t_ausp3-objek.
                                        atzhl = t_ausp3-atzhl.
             move t_ausp2-atwrt to t_ausp3-atwrt2.
             append t_ausp3.
             clear t_ausp3.
           endloop.
         endif.
         clear : p_test.
         call function 'CONVERSION_EXIT_ATINN_INPUT'
           exporting
             input  = 'HCC_MM_MAT_OEM'
           importing
             output = p_test.
         clear t_ausp1.
         refresh t_ausp1.
         select  objek
                 atinn
                 atzhl
                 atwrt
                 from ausp
                 into table t_ausp1
                 where objek = t_plant-matnr and
                       atinn = p_test.
         loop at t_ausp3." where atzhl = t_ausp3-atzhl.
           read table t_ausp1 with key objek = t_ausp3-objek.
           move t_ausp1-atwrt to t_ausp3-atwrt3.
           modify t_ausp3.
           clear t_ausp3.
         endloop.
         if t_ausp1-atwrt is not initial.
           loop at t_ausp3." where objek = t_plant1-matnr.
             move-corresponding : t_plant to t_plant1.
             move : t_ausp3-atwrt1 to t_plant1-atwrt1.
             move : t_ausp3-atwrt2 to t_plant1-atwrt2.
             move : t_ausp3-atwrt3 to t_plant1-atwrt3.
             append t_plant1.
             clear t_plant1.
           endloop.
         else.
           move-corresponding : t_plant to t_plant1.
           append t_plant1.
           clear t_plant1.
         endif.
       endloop.
    this is the logic i wrote. whats happening is records are being appended

  • Problem displaying drill down STANDARD ALV for a particular record after pressing back button

    I have a simple interactive ALV grid report. NOT 'OO'. It display correctly on initial execution. AT the moment, 6 records. I want it to work such that if i click record '1', a drill-down version of that ALV with only that one record clicked is displayed. This currently occurs correctly. The problem arises when i click the back button and want to click on a new record, say in the 2nd row..this new 2nd row record is not displayed. The first one is displayed again. I tried clearing and fiddling around but then the last record is displayed. I have used the 'ID' field as a 'hotspot' getting picked up by sy-tabindex. Maybe it could be that i shouldn't loop and use  a work area e.g in my select statement. i'm not so sure i've looked around, and tried a few things. I can't get it right yet. My code is below:
    *& Report  ZALV
    REPORT  ZALV.
    TABLES: ZCONTACT.
    TYPE-POOLS: slis. "slis contains all of the ALV data types.
    TYPES: BEGIN OF ty_zcontact.
             INCLUDE STRUCTURE zcontact.
    TYPES: icon TYPE char4, "field holding traffic light value- adding a column to internal table to hold the traffic light
             END OF ty_zcontact.
    DATA: "fieldcatALOG TYPE slis_t_fieldcat_alv WITH HEADER LINE,
           it_zcontact TYPE TABLE OF ty_zcontact,"declares an internal table of type ZCONTACT
           wa_zcontact TYPE ty_zcontact,
           gd_layout TYPE slis_layout_alv,
           gd_repid LIKE sy-repid,
           g_variant TYPE disvariant,
           gx_variant TYPE disvariant,
           g_save TYPE c VALUE 'X',
           it_fieldcat TYPE slis_t_fieldcat_alv,"declares field catalog table of line type alv
           wa_fieldcat TYPE slis_fieldcat_alv, "declares the work area of the field catalog
           it_list_top_of_page TYPE slis_t_listheader.
    DATA: it_fieldcat1 TYPE slis_t_fieldcat_alv,
           wa_fieldcat1 TYPE slis_fieldcat_alv.
    DATA: V_FIELD(30) TYPE C,
    V_VALUE(10) TYPE C.
           "izontact TYPE TABLE OF zcontact.
            "i_logo TYPE OT.
           "ls_layout TYPE slis_layout_alv.
    **Selection Screen details
    *SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
    *PARAMETERS: variant like disvariant-variant.
    *SELECTION-SCREEN END OF BLOCK B1.
    SELECT-OPTIONS:
    age FOR wa_zcontact-age,
    lastnme FOR wa_zcontact-lastname.
    **Getting default variant
    *  AT SELECTION-SCREEN ON age.
    *    SELECT SINGLE age FROM zcontact INTO wa_zcontact-age WHERE age = age.
    *  IF sy-subrc NE 0.
    *    MESSAGE:'That age does not exist mate, Please enter another age' TYPE 'E'.
    *    ENDIF.
    INITIALIZATION.
    *gx_variant-report = sy-repid.
    *CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
    *EXPORTING
    *  I_SAVE = G_SAVE
    *  CHANGING
    *    CS_VARIANT = GX_VARIANT
    *  EXCEPTIONS
    *    NOT_FOUND = 2.
    *IF SY-SUBRC = 0.
    *  VARIANT = GX_VARIANT-VARIANT.
    *  ENDIF.
    START-OF-SELECTION.
      PERFORM DATA_RETRIEVAL.
      PERFORM BUILD_FIELDCATALOG.
      PERFORM DISPLAY_ALV_REPORT.
      PERFORM top_of_page.
    "g_repid = sy-repid.
    *Fetch data from the database
    FORM DATA_RETRIEVAL.
    SELECT * FROM zcontact INTO TABLE it_zcontact WHERE age IN age AND lastname IN lastnme.
    "assigning traffic light colour to each row based on a condition
    *  IF wa_zcontact-age GE 65.
    *   wa_zcontact-icon = 1. "Red Traffic Light
    *   ELSEIF wa_zcontact-age BETWEEN 40 AND 64.
    *     wa_zcontact-icon = 2. "Yellow traffic light
    *     ELSE.
    *       wa_zcontact-icon = 3." Green traffic light
    *       ENDIF.
    *       MODIFY it_zcontact FROM wa_zcontact TRANSPORTING icon.
    *       CLEAR wa_zcontact.
    ENDFORM.
    FORM BUILD_FIELDCATALOG.
    *Build field catalog
    wa_fieldcat-fieldname = 'ID'.
    "wa_fieldcat-seltext_m = 'The Contact ID'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'LASTNAME'.
    "wa_fieldcat-seltext_m = 'Contact Lastname'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'FIRSTNAME'.
    "wa_fieldcat-seltext_m = 'Contact Firstname'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'DOB'.
    "wa_fieldcat-seltext_m = 'Date Of Birth'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'TEL'.
    "wa_fieldcat-seltext_m = 'Telephone Number'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'ADDRESS'.
    "wa_fieldcat-seltext_m = 'The Address'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'OCCUPATION'.
    "wa_fieldcat-seltext_m = 'The Occupation'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'WEIGHT'.
    "wa_fieldcat-seltext_m = 'WEIGHT'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'AGE'.
    "wa_fieldcat-seltext_m = 'AGE OF THE CONTACT'.
    wa_fieldcat-do_sum   = 'X'.        "Display column total
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'SALARY'.
    "wa_fieldcat-seltext_m = 'SALARY'.
    wa_fieldcat-do_sum   = 'X'.
    APPEND wa_fieldcat TO it_fieldcat.
    gd_layout-lights_fieldname = 'ICON'.
    ENDFORM.
    FORM DISPLAY_ALV_REPORT.
    gd_repid = sy-repid.
    *Pass data and field catalog to ALV function module to display ALV list
       CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
           it_fieldcat            = it_fieldcat
           i_callback_program     = gd_repid
           i_callback_top_of_page =  'TOP_OF_PAGE'
           i_callback_user_command =  'USER_COMMAND'
           i_structure_name       =  'ZCONTACT'
           i_save                 = 'X'
           is_variant             = g_variant
           is_layout     = gd_layout
    TABLES
           t_outtab      = it_zcontact
    EXCEPTIONS
           program_error = 1
           OTHERS        = 2.
    ENDFORM.
    FORM top_of_page.
    *ALV Header declarations
       DATA: it_listheader TYPE slis_t_listheader,
             wa_listheader TYPE slis_listheader,
             t_line like wa_listheader-info,
             ld_lines TYPE I,
             ld_linesc(10) TYPE C.
    wa_listheader-typ = 'H'.
    wa_listheader-info = 'Contact Details'.
    APPEND wa_listheader TO it_listheader.
    CLEAR wa_listheader.
    wa_listheader-typ = 'S'.
    wa_listheader-info = sy-repid.
    wa_listheader-key = 'Program Name:'.
    APPEND wa_listheader TO it_listheader.
    CLEAR wa_listheader.
    wa_listheader-typ = 'S'.
    wa_listheader-info = sy-uname.
    wa_listheader-key = 'User Name:'.
    APPEND wa_listheader TO it_listheader.
    CLEAR wa_listheader.
    wa_listheader-typ = 'S'.
    wa_listheader-key = 'Run Date :'.
    CONCATENATE sy-datum+6(2)
                 sy-datum+4(2)
                 sy-datum(4)
                 INTO wa_listheader-info
                 SEPARATED BY '/'.
    APPEND wa_listheader TO it_listheader.
    CLEAR wa_listheader.
    wa_listheader-typ = 'S'.
    wa_listheader-key = 'Time :'.
    CONCATENATE sy-uzeit(2)
                 sy-uzeit+2(2)
                 sy-uzeit+4(2)
                 INTO wa_listheader-info
                 SEPARATED BY ':'.
    APPEND wa_listheader TO it_listheader.
    CLEAR wa_listheader.
       CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
         EXPORTING
           it_list_commentary = it_listheader
           i_logo = 'KLOGO'.
    ENDFORM. "top_of_page
    *& Form sub_user_command
    FORM USER_COMMAND USING P_UCOMM TYPE SY-UCOMM
    P_SELTAB TYPE SLIS_SELFIELD.
    CASE P_UCOMM.
       WHEN '&IC1'.
    CASE p_seltab-fieldname.
       WHEN 'ID'.
       READ TABLE it_zcontact INTO wa_zcontact INDEX p_seltab-tabindex.
       PERFORM DATA_RETRIEVAL1.
       PERFORM BUILD_FIELDCATALOG1.
       PERFORM SECOND_GRID.
       ENDCASE.
       ENDCASE.
    ENDFORM. "
    FORM DATA_RETRIEVAL1.
    SELECT * FROM zcontact INTO TABLE it_zcontact WHERE id EQ wa_zcontact-id.
    ENDFORM.
    FORM BUILD_FIELDCATALOG1.
    *Build field catalog
    CLEAR: wa_fieldcat, it_fieldcat.
    wa_fieldcat-fieldname = 'ID'.
    "wa_fieldcat-seltext_m = 'The Contact ID'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'LASTNAME'.
    "wa_fieldcat-seltext_m = 'Contact Lastname'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'FIRSTNAME'.
    "wa_fieldcat-seltext_m = 'Contact Firstname'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    ENDFORM.
    FORM SECOND_GRID.
       CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         I_CALLBACK_PROGRAM = SY-REPID
         IT_FIELDCAT = IT_FIELDCAT
         i_structure_name       =  'ZCONTACT'
         i_callback_user_command =  'USER_COMMAND'
         TABLES
           T_OUTTAB = IT_ZCONTACT.
       ENDFORM.

    Hi Ten Mariga,
                     I wonder why the second select Query is needed at all instead you can use
    ---> Not Needed
    FORM DATA_RETRIEVAL1.
    SELECT * FROM zcontact INTO TABLE it_zcontact WHERE id EQ wa_zcontact-id.
    ENDFORM.
    ----> Instead you can do
       READ TABLE it_zcontact INTO wa_zcontact INDEX p_seltab-tabindex.
      Append wa_zcontact to Second_table.
    And you can use the Second_table to display the second ALV. The second Select Query will affect the performance too.
    Cheers,
    Krishnakumar B.

  • AVL Double click Problem

    Dear Experts,
    I hv created an ALV report. when in double click on the record it take me to the required tcode (FB03).
    But the problem is ,it always display last record of internal table if I clicked on first record,
    Can any one suggest me something.
    Regards,
    Maverick

    Thanks for ur reply.
    I m using normal ALV. go through the following
    form display_all_item_alv.
    w_repid = sy-repid.
    perform update_catalog.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
       I_CALLBACK_PROGRAM                = w_repid
       I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
    *   I_CALLBACK_TOP_OF_PAGE            = 'TOP-OF-PAGE'
       IT_FIELDCAT                       = I_FCAT[]
       I_SAVE                             = 'X'
    * IMPORTING
    *   E_EXIT_CAUSED_BY_CALLER           =
    *   ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = i_faglflexa_all
    * EXCEPTIONS
    *   PROGRAM_ERROR                     = 1
    *   OTHERS                            = 2
    IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    endform.
    *       FORM USER_COMMAND                                          *
    *       --> R_UCOMM                                                *
    *       --> RS_SELFIELD                                            *
    form user_command using r_ucomm like sy-ucomm
                      rs_selfield TYPE slis_selfield.
      w_gjahr = p_gjahr.
      case r_ucomm.
         when '&IC1'.
            if r_open = 'X'.
              set parameter id 'BLN' field i_faglflexa_open-belnr.
            elseif r_clear = 'X'.
              set parameter id 'BLN' field i_faglflexa_clear-belnr.
            else.
              set parameter id 'BLN' field i_faglflexa_clear-belnr.
            endif.
          set parameter id 'BUK' field p_bukrs.
          set parameter id 'GJR' field w_gjahr.   "i_faglflexa_clear-gjahr.
          call transaction 'FB03' and skip first screen.
      endcase.
    endform.                    "user_command
    Regards,
    Maverick

  • Problem when trying to rename uploaded images using session value

    Hi,
    I have a form where 9 images are uploaded made into thumb nail size and then stored in a file. What I´m trying to do is rename those thumbnails from their original name to username_0, username_1, username_2 etc for each of the 9 thumbs. The username comes from the registration form on the same page. I have created a session variable for the username and am trying to use that to change to name of the image name, whilst my images are uploading and resizing the name stays as the original and not as the new username_$number. I have pasted relevant code below and would very much appreciate any help with this:
    <?php session_start();
    // check that form has been submitted and that name is not empty and has no errors
    if ($_POST && !empty($_POST['directusername'])) {
    // set session variable
    $_SESSION['directusername'] = $_POST['directusername'];
    // define a constant for the maximum upload size
    define ('MAX_FILE_SIZE', 5120000); 
    if (array_key_exists('upload', $_POST)) {
    // define constant for upload folder
    define('UPLOAD_DIR', 'J:/xampp/htdocs/propertypages/uploads/');
    // convert the maximum size to KB
    $max = number_format(MAX_FILE_SIZE/1024, 1).'KB';
    // create an array of permitted MIME types
    $permitted = array('image/gif','image/jpeg','image/pjpeg','image/png');
    foreach ($_FILES['photo']['name'] as $number => $file) {
    // replace any spaces in the filename with underscores
    $file = str_replace(' ', '_', $file);
    // begin by assuming the file is unacceptable
    $sizeOK = false;
    $typeOK = false;
    // check that file is within the permitted size
    if ($_FILES['photo']['size'] [$number] > 0 && $_FILES['photo']['size'] [$number] <= MAX_FILE_SIZE) {
    $sizeOK = true;
    // check that file is of a permitted MIME type
    foreach ($permitted as $type) {
    if ($type == $_FILES['photo']['type'] [$number]) {
    $typeOK = true;
    break;
    if ($sizeOK && $typeOK) {
    switch($_FILES['photo']['error'] [$number]) {
    case 0:
    include('Includes/create_thumbs.inc.php');
    break;
    case 3:
    $result[] = "Error uploading $file. Please try again.";
    default:
    $result[] = "System error uploading $file. Please contact us for further assistance.";
    elseif ($_FILES['photo']['error'] [$number] == 4) {
    $result[] = 'No file selected';
    else {
    $result[] = "$file cannot be uploaded. Maximum size: $max. Acceptable file types: gif, jpg, png.";
    ................CODE BELOW IS THE INCLUDES FILE THAT MAKES AND TRIES TO RENAME THE THUMBS................................................
    <?php
    // define constants
    define('THUMBS_DIR', 'J:/xampp/htdocs/propertypages/uploads/thumbs/');
    define('MAX_WIDTH_THB', 75);
    define('MAX_HEIGHT_THB', 75);
    set_time_limit(600);
    // process the uploaded image
    if (is_uploaded_file($_FILES['photo']['tmp_name'][$number] )) {
    $original = $_FILES['photo']['tmp_name'][$number] ;
    // begin by getting the details of the original
    list($width, $height, $type) = getimagesize($original);
    // check that original image is big enough
    if ($width < 270 || $height < 270) {
    $result[] = 'Image dimensions are too small, a minimum image of 270 by 270 is required';
    else { // crop image to a square before resizing to thumb
    if ($width > $height) {
    $x = ceil(($width - $height) / 2);
    $width = $height;
    $y = 0;
    else if($height > $width) {
    $y = ceil(($height - $width) / 2);
    $height = $width;
    $x = 0;
    // calculate the scaling ratio
    if ($width <= MAX_WIDTH_THB && $height <= MAX_HEIGHT_THB) {
    $ratio = 1;
    elseif ($width > $height) {
    $ratio = MAX_WIDTH_THB/$width;
    else {
    $ratio = MAX_HEIGHT_THB/$height;
    if (isset($_SESSION['directusername'])) {
    $username = $_SESSION['directusername'];
    // strip the extension off the image filename
    $imagetypes = array('/\.gif$/', '/\.jpg$/', '/\.jpeg$/', '/\.png$/');
    $name = preg_replace($imagetypes, '', basename($_FILES['photo']['name'][$number]));
    // change the images names to the user name _ the photo number
    $newname = str_replace ('name', '$username_$number', $name);
    // create an image resource for the original
    switch($type) {
    case 1:
    $source = @ imagecreatefromgif($original);
    if (!$source) {
    $result = 'Cannot process GIF files. Please use JPEG or PNG.';
    break;
    case 2:
    $source = imagecreatefromjpeg($original);
    break;
    case 3:
    $source = imagecreatefrompng($original);
    break;
    default:
    $source = NULL;
    $result = 'Cannot identify file type.';
    // make sure the image resource is OK
    if (!$source) {
    $result = 'Problem uploading image, please try again or contact us for further assistance';
    else {
    // calculate the dimensions of the thumbnail
    $thumb_width = round($width * $ratio);
    $thumb_height = round($height * $ratio);
    // create an image resource for the thumbnail
    $thumb = imagecreatetruecolor($thumb_width, $thumb_height);
    // create the resized copy
    imagecopyresampled($thumb, $source, 0, 0, $x, $y, $thumb_width, $thumb_height, $width, $height);
    // save the resized copy
    switch($type) {
    case 1:
    if (function_exists('imagegif'))  {
    $success[] = imagegif($thumb, THUMBS_DIR.$newname.'.gif');
    $photoname = $newname.'.gif';
    else {
    $success[] = imagejpeg($thumb, THUMBS_DIR.$newname.'.jpg',50);
    $photoname = $newname.'.jpg';
    break;
    case 2:
    $success[] = imagejpeg($thumb, THUMBS_DIR.$newname.'.jpg', 100);
    $photoname = $newname.'.jpg';
    break;
    case 3:
    $success[] = imagepng($thumb, THUMBS_DIR.$newname.'.png');
    $photoname = $newname.'.png';
    if ($success) {
    $result[] = "Upload sucessful";
    else {
    $result[] = 'Problem uploading image, please try again or contact us for further assistance';
    // remove the image resources from memory
    imagedestroy($source);
    imagedestroy($thumb);
    ?>
    I hope i´ve supplied enough information and look forward to receiving any help or advise in this matter.

    Use double quotes here:
    $newname = str_replace ('name', '$username_$number', $name);
    Change it to this:
    $newname = str_replace ('name', "$username_$number", $name);

Maybe you are looking for

  • How to fix Task form issue which is not opening in browser?

    Hi All, When trying to open task form link which is in email, facing: How to fix this issue? thanks in advance!

  • Table containing cost center and PO data

    hello, i need a table where the cost center(KOSTL) is defined as a primary key. the table should also contain PO numbers.

  • Nhrp issue

          my company uses dmvpn to connect with branch,but sometime when i “show ip nhrp bri " , i got some issus ,       the show information 3925VPN#sho ip nhrp bri    Target             Via            NBMA           Mode   Intfc   Claimed 192.168.96.2

  • PC54G2 & fedora 64 bits

    I want to run my PC54G2 with my OS : fedora core 3 x86_64. It seems this card can work in 64 bits mode, but which XP drivers I must use with ndiswrapper ? Thanks. Pierre. My config : Amd64 3200, Asus K8N-E Deluxe, 512 M Corsair Ram, wireless card pci

  • Java script in Jsp Dynpage

    Hi all, Can any one give me a sample code for using a java script in jsp dynpage which invokes on client click. I mean i want to call a java script function on client click.