Datum problem

hi experts !
there  is a program for displaying domestic sales figures as per
  customer/document type/Invoice wise.
input data  for report is
Company code
DOCUMENT TYPE
START DATE & END DATE
FINANCIAL YEAR.
problem is in date when i entered date 01.05.07 to 04.05.07  or 02.05.07 to 05.05.07 or 02.05.07 to 06.05.07 its taking data for all 3 line items in invoice and showing correct data. but if date is 01.05.07 to 05.05.07  or 01.05.07 to 06.05.07 its taking data for two line items leaving 1st line item in invoice . Date for  these invoice creation is 02.05.07, its showing correct data for it . but not showing correct data in some date intervals(i.e its taking data for two line items leaving 1st line item in invoice )  . for other invoices its giving correct data except in this specific doc.no. otherwise it is correct . can anybody help me why its showing incorrect data for only one specific doc.no.
code for date is
i have checked fb03 and its showing correct  3 line items in invoice
FORM FORM_COLLECT_BKPF.
  SELECT BUKRS BELNR GJAHR BLDAT BUDAT BLART XBLNR BKTXT USNAM CPUDT
  CPUTM FROM BKPF
  INTO CORRESPONDING FIELDS OF TABLE IT_BKPF
  WHERE BUKRS = PR_BUKRS
  AND GJAHR = PR_GJAHR
  AND BLART IN SO_BLART
  AND BUDAT IN SO_BUDAT
  AND XREVERSAL = ''
  AND BSTAT = ''.
  IF IT_BKPF[] IS INIT

hi ranjna,
if I understand right this is one document with three line items. In this case the problem is not with the BKPF selection, but with the line item selections. Pls. check your code or copy it here and people can have a look.
hope this helps
ec

Similar Messages

  • Sy-datum problem

    hello friends,
    i have a scenario, where , when the entered period as parameter is
    YYYYMM the last date for that particular month MM
    should be calculated ( i dont know how), and should be attached to this period
    like
    YYYYMMDD
    how do i calculate this DD (ie. last day of the moth) for the
    given month and year.
    like yyyymm is 200404   then i should output 20040431
    if 200510 then output sould be 20051031
    if 200302 then output should be 20030228.
    can some one help.
    thank you.

    Try this.
    report zrich_0001.
    data: yyyymm(6) type c value '200704'.
    data: datum type sy-datum.
    data: last_datum type sy-datum.
    datum = yyyymm.
    datum+6(2) = '01'.
    call function 'LAST_DAY_OF_MONTHS'
         exporting
              day_in            = datum
         importing
              last_day_of_month = last_datum.
    write:/ last_datum.
    Regards,
    RIch Heilman

  • Fb03 datum problem

    hi experts !
    there is a program for displaying domestic sales figures as per
    customer/document type/Invoice wise.
    input data for report is
    Company code
    DOCUMENT TYPE
    START DATE & END DATE
    FINANCIAL YEAR.
    problem is in date when i entered date 01.05.07 to 04.05.07 or 02.05.07 to 05.05.07 or 02.05.07 to 06.05.07 its taking data for all 3 line items in invoice and showing correct data. but if date is 01.05.07 to 05.05.07 or 01.05.07 to 06.05.07 its taking data for two line items leaving 1st line item in invoice . Date for these invoice creation is 02.05.07, its showing correct data for it . but not showing correct data in some date intervals(i.e its taking data for two line items leaving 1st line item in invoice ) . for other invoices its giving correct data except in this specific doc.no. otherwise it is correct . can anybody help me why its showing incorrect data for only one specific doc.no.
    code for date is
    i have checked fb03 and its showing correct 3 line items in invoice
    FORM FORM_COLLECT_BKPF.
    SELECT BUKRS BELNR GJAHR BLDAT BUDAT BLART XBLNR BKTXT USNAM CPUDT
    CPUTM FROM BKPF
    INTO CORRESPONDING FIELDS OF TABLE IT_BKPF
    WHERE BUKRS = PR_BUKRS
    AND GJAHR = PR_GJAHR
    AND BLART IN SO_BLART
    AND BUDAT IN SO_BUDAT
    AND XREVERSAL = ''
    AND BSTAT = ''.
    FORM FORM_COLLECT_BSEG .
      SELECT BUKRS BELNR GJAHR HKONT DMBTR KUNNR LIFNR BSCHL KOART MENGE
      MWSKZ ZUONR MWSTS PRCTR FROM BSEG INTO CORRESPONDING FIELDS OF TABLE
      IT_BSEG
      FOR ALL ENTRIES IN IT_BKPF
      WHERE
      BELNR = IT_BKPF-BELNR AND
      BUKRS = PR_BUKRS AND
      GJAHR = PR_GJAHR.
    ENDFORM.

    ranjana,
    Change the SQL to this -
    FORM FORM_COLLECT_BSEG .
    SELECT BUKRS BELNR GJAHR <b>BUZEI</b> HKONT DMBTR KUNNR LIFNR BSCHL KOART MENGE
    MWSKZ ZUONR MWSTS PRCTR FROM BSEG INTO CORRESPONDING FIELDS OF TABLE
    IT_BSEG
    FOR ALL ENTRIES IN IT_BKPF
    WHERE
    BELNR = IT_BKPF-BELNR AND
    BUKRS = PR_BUKRS AND
    GJAHR = PR_GJAHR.
    ENDFORM.
    If you do this - you will get all the line items.
    Make sure - You have added this BUZEI to ur internal table IT_BSEG also.
    Normally - FOR ALL ENTRIES fetches unique entries based on the Fields you are trying to SELECT. As you missed the BUZEI , it was fetching the unique sets based on the fields you have selected
    Hope it solves the problem.
    Cheers.
    SKC.
    Message was edited by:
            SKC

  • Problems creating background job for program (job open, submit and close)

    Hi gurus,
    im trying to start a background job using the FM BP_START_DATE_EDITOR to show the start date to the job or if it's imediate. this FM it's working fine, after call it im opening a job, submiting it and call the job close FM and the job close FM creates me the job.
    The problem it's when i go to the sm37 to see the job status the job has been canceled, and the job log says that i have to give a start date to the job.
    What i dont understand it's either the job is imediate or i choose a date to start the job always gives me this error...
    Below goes my code,
    any ideas will be rewarded
      CLEAR: stdt_modify_type, stdt_output.
      CALL FUNCTION 'BP_START_DATE_EDITOR'
           EXPORTING
                stdt_dialog                    = 'Y'
                stdt_input                     = stdt_input
                stdt_opcode                    = 14
           IMPORTING
                stdt_modify_type               = stdt_modify_type
                stdt_output                    = stdt_output
           EXCEPTIONS
                fcal_id_not_defined            = 1
                incomplete_last_startdate      = 2
                incomplete_startdate           = 3
                invalid_dialog_type            = 4
                invalid_eventid                = 5
                invalid_opcode                 = 6
                invalid_opmode_name            = 7
                invalid_periodbehaviour        = 8
                invalid_predecessor_jobname    = 9
                last_startdate_in_the_past     = 10
                no_period_data_given           = 11
                no_startdate_given             = 12
                period_and_predjob_no_way      = 13
                period_too_small_for_limit     = 14
                predecessor_jobname_not_unique = 15
                startdate_interval_too_large   = 16
                startdate_in_the_past          = 17
                startdate_is_a_holiday         = 18
                startdate_out_of_fcal_range    = 19
                stdt_before_holiday_in_past    = 20
                unknown_fcal_error_occured     = 21
                no_workday_nr_given            = 22
                invalid_workday_countdir       = 23
                invalid_workday_nr             = 24
                notbefore_stdt_missing         = 25
                workday_starttime_missing      = 26
                no_eventid_given               = 27
                OTHERS                         = 28.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        MOVE 'X' TO gv_flag.
      ENDIF.
      DATA jobname LIKE tbtcjob-jobname.
      DATA jobcount LIKE tbtcjob-jobcount.
      DATA job_release LIKE  btch0000-char1.
      DATA job_imediate TYPE c.
      CLEAR: jobname, jobcount, job_release.
      CONCATENATE 'MAPAEXEC' sy-uname sy-datum
                   INTO jobname SEPARATED BY space.
      CALL FUNCTION 'JOB_OPEN'
           EXPORTING
                jobname          = jobname
           IMPORTING
                jobcount         = jobcount
           EXCEPTIONS
                cant_create_job  = 1
                invalid_job_data = 2
                jobname_missing  = 3
                OTHERS           = 4.
      IF sy-subrc <> 0.
        MESSAGE i003(zmapas).
        EXIT.
      ENDIF.
      SUBMIT z_mapa_execucao_orcamental
             VIA JOB jobname NUMBER jobcount
             WITH ano EQ ano
             WITH so_perio IN so_perio
             WITH so_date IN so_date
             WITH so_org EQ so_org
             WITH so_num IN so_num
             AND RETURN.
      IF stdt_output-startdttyp EQ 'I'.
        CLEAR job_imediate.
        job_imediate = 'X'.
      ENDIF.
      CALL FUNCTION 'JOB_CLOSE'
           EXPORTING
                calendar_id                 = stdt_output-calendarid
                event_id                    = stdt_output-eventid
                event_param                 = stdt_output-eventparm
                event_periodic              = stdt_output-periodic  "?
                jobcount                    = jobcount
                jobname                     = jobname
                laststrtdt                  = stdt_output-laststrtdt
                laststrttm                  = stdt_output-laststrttm
                prddays                     = stdt_output-prddays  "??
                prdhours                    = stdt_output-prdhours  "?
                prdmins                     = stdt_output-prdmins  "??
                prdmonths                   = stdt_output-prdmonths
                prdweeks                    = stdt_output-prdweeks  "?
                predjob_checkstat           = stdt_output-checkstat
                pred_jobcount               = stdt_output-predjobcnt
                pred_jobname                = stdt_output-predjob
                sdlstrtdt                   = stdt_output-sdlstrtdt
                sdlstrttm                   = stdt_output-sdlstrttm
                strtimmed                   = job_imediate
                targetsystem                = stdt_output-instname
                start_on_workday_not_before = stdt_output-notbefore
                start_on_workday_nr         = stdt_output-wdayno
                workday_count_direction     = stdt_output-wdaycdir
           IMPORTING
                job_was_released            = job_release
           EXCEPTIONS
                cant_start_immediate        = 1
                invalid_startdate           = 2
                jobname_missing             = 3
                job_close_failed            = 4
                job_nosteps                 = 5
                job_notex                   = 6
                lock_failed                 = 7
                OTHERS                      = 8.
      IF sy-subrc <> 0.
        MESSAGE i003(zmapas).
        EXIT.
      ELSE.
        MESSAGE i004(zmapas) WITH jobname.
      ENDIF.
    Thanks in advance,
    Best Regards
    João Martins

    Hello João.
    In debug mode, check the value of variables you passed to parameters sdlstrtdt and sdlstrttm.
    As aditional info, I usually achieve your goal without FM BP_START_DATE_EDITOR.
    Check this code:
    CALL FUNCTION 'JOB_OPEN'
          EXPORTING
               jobname          = w_jobname
          IMPORTING
               jobcount         = w_jobcount
          EXCEPTIONS
               cant_create_job  = 1
               invalid_job_data = 2
               jobname_missing  = 3
               OTHERS           = 4.
    CHECK sy-subrc = 0.
    CLEAR seltab_wa.
    MOVE: t_jobs-param TO seltab_wa-selname,
    t_processar-line+34 TO seltab_wa-low.
    APPEND seltab_wa TO seltab.
    seltab_wa-selname = 'P_LOJA'.
    seltab_wa-low = t_processar-ficheiro+7(4).
    APPEND seltab_wa TO seltab.
    *** Submete o programa para o JOB
    SUBMIT (t_jobs-repid)
      WITH  SELECTION-TABLE seltab
      USER sy-uname
       VIA JOB w_jobname NUMBER w_jobcount
       AND RETURN.
    *** Encerra o JOB
      l_hora = sy-uzeit.
      ADD 60 TO l_hora.
    CALL FUNCTION 'JOB_CLOSE'
       EXPORTING
          jobcount           = w_jobcount
          jobname           = w_jobname
          sdlstrtdt            = sy-datum
          sdlstrttm           = l_hora
          targetserver       = w_servidor
       IMPORTING
          job_was_released     = l_liberado
       EXCEPTIONS
          cant_start_immediate = 1
          invalid_startdate    = 2
          jobname_missing      = 3
          job_close_failed     = 4
          job_nosteps          = 5
          job_notex            = 6
          lock_failed          = 7
          OTHERS               = 8.
    Regards.
    Valter Oliveira.

  • MULTIPLE ITEM PROBLEM IN VL31N BDC

    hI FRIENDS ,
        I AM POSTING A BDC OF TRANSACTION VL31N ,ie FOR SCHEDULE AGREEMENT INBOUND DELIVERY.I CREATE A FUNCTIONAL MODULE OF THE SAME AND CALL IT FROM AN ASP PAGE,IN THAT THERE IS PO NUMBER 5500000986 WHICH HAS TWO ITEMES 62 AND 95 RESPECTIVLY OF SAME MATARIAL NUMBER R010230123041002 AND DIE NUMBER 2304P,NOW THE PROBLEM IS THIS BDC IS WORKING WHEN THERE IS ONLY ONE ITEM BUT GIVES AN ERROR "CANT CREAT INBOUND DELIVERY FOR PO NO ...' WNEN IT HAS MULTIPLE ITEM.WHAT SHOULD I DO ? I ALSO USED LOOP BUT IT ALSO DOSENT WORK AS IT WILL ADD ALL OPEN QTY OF PO 986 AND UPDATE AGAINST ITEM NO 95.
    CODE IS AS FOLLOWS:.........
    FUNCTION y_synie_bdcinbdly.
    ""Local interface:
    *"  IMPORTING
    *"     VALUE(CTU) LIKE  APQI-PUTACTIVE DEFAULT 'X'
    *"     VALUE(MODE) LIKE  APQI-PUTACTIVE DEFAULT 'N'
    *"     VALUE(UPDATE) LIKE  APQI-PUTACTIVE DEFAULT 'L'
    *"     VALUE(GROUP) LIKE  APQI-GROUPID OPTIONAL
    *"     VALUE(USER) LIKE  APQI-USERID OPTIONAL
    *"     VALUE(KEEP) LIKE  APQI-QERASE OPTIONAL
    *"     VALUE(HOLDDATE) LIKE  APQI-STARTDATE OPTIONAL
    *"     VALUE(NODATA) LIKE  APQI-PUTACTIVE DEFAULT '/'
    *"     VALUE(EXTNID) LIKE  MAKT-MAKTG
    *"     VALUE(VENDORNO) LIKE  LFA1-LIFNR
    *"     VALUE(PONUMBER) LIKE  EKKO-EBELN
    *"     VALUE(ITEMNUMBER) LIKE  LIPS-VGPOS
    *"     VALUE(MATERIAL) LIKE  MAKT-MAKTG
    *"     VALUE(DLYQTY) LIKE  LIPS-LFIMG
    *"     VALUE(BTCHNO) LIKE  LIPS-CHARG
    *"     VALUE(POSLR) LIKE  EKES-EBELP OPTIONAL
    *"  EXPORTING
    *"     VALUE(SUBRC) LIKE  SYST-SUBRC
    *"     VALUE(INDELYNO) LIKE  SY-MSGV2
    *"     VALUE(MSG1) LIKE  SY-MSGV1
    *"     VALUE(MSG2) LIKE  SY-MSGV2
    *"     VALUE(MSG3) LIKE  SY-MSGV3
    *"     VALUE(MSG4) LIKE  SY-MSGV4
    *"  TABLES
    *"      MESSTAB STRUCTURE  BDCMSGCOLL
    *"      ERRTAB STRUCTURE  YSYNERRMSGS
    *"      INDLYTAB STRUCTURE  YSYN_QTYTAB
    Updated by ANAND SYNISE 19.1.2007
      DATA: BEGIN OF bdctab OCCURS 0.
              INCLUDE STRUCTURE bdcdata.
      DATA: END OF bdctab.
      DATA: datenow(10) TYPE c,
            fldvar(30)  TYPE c,
            fldno       TYPE i,
            flditoc(6)  TYPE c,
            qty(13)     TYPE c.
      DATA maxposnr LIKE lips-posnr.
      DATA testposnr TYPE posnr.
      DATA itemnoint TYPE i.
      CONCATENATE sy-datum6(2) '.' sy-datum4(2) '.' sy-datum+0(4) INTO datenow.
      CLEAR bdctab.
      REFRESH bdctab.
      PERFORM open_group      USING group user keep holddate ctu.
           CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '4007'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'RV50A-VERUR_LA'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '/00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-LIFNR'.
           bdctab-fval = vendorno.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LV50C-BSTNR'.
           bdctab-fval = ponumber.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-VERUR_LA'.
           bdctab-fval = extnid.
           APPEND bdctab.
       CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '=MKAL_T'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIKP-BLDAT'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
       CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '=POPO_T'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIPS-POSNR(01)'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '0111'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'RV50A-PO_MATNR'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = 'WEIT'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-PO_MATNR'.
           bdctab-fval = material.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '=POLO_T'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIPS-POSNR(01)'.
           APPEND bdctab.
    *ADDED BY ANAND ON 22-01-2007
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval =  ITEMNUMBER .     "ITEMNUMBER = LIPS-VGPOS
           APPEND bdctab.
    ************ENDED***********************
    ADDED BY MILIND 19.01.2007
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval =  poslr .
           APPEND bdctab.
    *    ENDED * *
       CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LIPS_SELKZ(01)'.
           bdctab-fval = ''.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
       CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '/00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIPS-CHARG(01)'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
          QTY = INDLYTAB-DLYQTY.
            qty = dlyqty.
           bdctab-fnam = 'LIPSD-G_LFIMG(01)'.
           bdctab-fval = QTY.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIPS-CHARG(01)'.
    *     BDCTAB-FVAL = INDLYTAB-BTCHNO.
           bdctab-fval = btchno.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
       CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '=SICH_T'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIPS-MATNR(02)'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
      CALL TRANSACTION 'VL31N' USING bdctab MODE 'N'  MESSAGES INTO messtab.
      subrc = sy-subrc.
      PERFORM close_group USING     ctu.
      CLEAR bdctab.
      REFRESH bdctab.
      IF sy-subrc EQ 0.
        indelyno = sy-msgv2.
      ENDIF.
      LOOP AT messtab.
        MOVE: messtab-msgid TO errtab-msgid,
              messtab-msgnr TO errtab-msgnr,
              messtab-msgv1 TO errtab-msg1,
              messtab-msgv2 TO errtab-msg2,
              messtab-msgv3 TO errtab-msg3,
              messtab-msgv4 TO errtab-msg4.
        APPEND ERRtab.
      ENDLOOP.
      LOOP AT errtab.
        SELECT SINGLE text FROM t100
          INTO errtab-errmsg
          WHERE msgnr EQ errtab-msgnr AND arbgb EQ errtab-msgid
          AND sprsl EQ sy-langu.
        MODIFY errtab.
      ENDLOOP.
    ENDFUNCTION.

    Hi,
    Check this code:
    REPORT Z_CUSTOMER_UPLOAD .
                  D A T A         D E C L A R A T I O N S                *
    DATA:BEGIN OF IT_CUSTOMER OCCURS 0,
         KUNNR LIKE MV10A-KUNNR,
         VKORG LIKE MV10A-VKORG,
         VTWEG LIKE MV10A-VTWEG,
         MATNR LIKE MV10A-MATNR,
         KDMAT LIKE MV10A-KDMAT,
         MEGRU LIKE MV10A-MEGRU,
         SELKZ TYPE C value 'X',
         LPRIO LIKE MV10A-LPRIO,
         ANTLF LIKE MV10A-ANTLF,
         END OF IT_CUSTOMER.
    DATA:BEGIN OF IT_success OCCURS 0,
         KUNNR LIKE MV10A-KUNNR,
         VKORG LIKE MV10A-VKORG,
         VTWEG LIKE MV10A-VTWEG,
         MATNR LIKE MV10A-MATNR,
         KDMAT LIKE MV10A-KDMAT,
         MEGRU LIKE MV10A-MEGRU,
         SELKZ TYPE C value 'X',
         LPRIO LIKE MV10A-LPRIO,
         ANTLF LIKE MV10A-ANTLF,
         END OF IT_success.
    DATA:BEGIN OF IT_error OCCURS 0,
         KUNNR LIKE MV10A-KUNNR,
         VKORG LIKE MV10A-VKORG,
         VTWEG LIKE MV10A-VTWEG,
         MATNR LIKE MV10A-MATNR,
         KDMAT LIKE MV10A-KDMAT,
         MEGRU LIKE MV10A-MEGRU,
         SELKZ TYPE C value 'X',
         LPRIO LIKE MV10A-LPRIO,
         ANTLF LIKE MV10A-ANTLF,
         END OF IT_error.
    DATA: L_INDEX TYPE SY-TABIX.
    DATA:IT_BDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
    IT_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    ERROR MESSAGE TABLE
    DATA:IT_MESSAGES LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
    DATA : C_S TYPE C VALUE 'S',
            C_E TYPE C VALUE 'E'.
    *DATA: IT_SUCCESS LIKE IT_CUSTOMER OCCURS 0,
         IT_ERROR LIKE IT_CUSTOMER  OCCURS 0.
    DATA : V_RECTOT TYPE I,
            V_RECERR TYPE I,
            V_RECSUC TYPE I.
                  S E L E C T I O N  -  S C R E E N                      *
    SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    PARAMETER        : P_FILE LIKE RLGRAP-FILENAME .
    SELECTION-SCREEN : END OF BLOCK B1.
               A T  S E L E C T I O N  -  S C R E E N                    *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
    to get F4 help for p_file
      PERFORM F4_FILENAME USING P_FILE.
                S T A R T   O F   S E L E C T I O N                      *
    START-OF-SELECTION.
    Uploading data from flat file into it_tab
      PERFORM BDC_UPLOAD USING P_FILE.
      PERFORM PROCESS_DATA.
      PERFORM POPULATE_BDC.
                E N D  O F   S E L E C T I O N                           *
    *END-OF-SELECTION.
    PERFORM DISPLAY_REPORT.
    *&      Form  F4_FILENAME
          text
         -->P_P_FILE  text
    FORM F4_FILENAME USING    P_P_FILE.
    DATA:L_FILE TYPE IBIPPARMS-PATH.
    CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      PROGRAM_NAME        = SYST-CPROG
      DYNPRO_NUMBER       = SYST-DYNNR
      FIELD_NAME          = ' '
    IMPORTING
       FILE_NAME           = L_FILE .
       P_P_FILE = L_FILE.
    ENDFORM.                    " F4_FILENAME
    *&      Form  BDC_UPLOAD
          text
         -->P_P_FILE  text
    FORM BDC_UPLOAD USING    P_P_FILE.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        FILENAME                      = P_P_FILE
        I_BEGIN_COL                   = 1
        I_BEGIN_ROW                   = 1
        I_END_COL                     = 8
        I_END_ROW                     = 1000
      TABLES
        INTERN                        = IT_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.
    ENDFORM.                    " BDC_UPLOAD
    *&      Form  PROCESS_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM PROCESS_DATA.
    SORT IT_DATA BY ROW COL.
      LOOP AT IT_DATA.
    CASE IT_DATA-COL.
    WHEN 1.
    IT_CUSTOMER-KUNNR   = IT_DATA-VALUE.
    WHEN 2.
    IT_CUSTOMER-VKORG   = IT_DATA-VALUE.
    WHEN 3.
    IT_CUSTOMER-VTWEG   = IT_DATA-VALUE.
    WHEN 4.
    IT_CUSTOMER-MATNR   = IT_DATA-VALUE.
    WHEN 5.
    IT_CUSTOMER-KDMAT   = IT_DATA-VALUE.
    WHEN 6.
    IT_CUSTOMER-MEGRU   = IT_DATA-VALUE.
    WHEN 7.
    IT_CUSTOMER-LPRIO   = IT_DATA-VALUE.
    WHEN 8.
    IT_CUSTOMER-ANTLF   = IT_DATA-VALUE.
    APPEND IT_CUSTOMER.
        ENDCASE.
      ENDLOOP.
    ENDFORM.                    " PROCESS_DATA
    *&      Form  POPULATE_BDC
          text
    -->  p1        text
    <--  p2        text
    FORM POPULATE_BDC.
    DATA:L_COUNTER TYPE N,
             L_STRING TYPE STRING.
    LOOP AT IT_CUSTOMER.
    AT NEW KUNNR.
    CLEAR L_COUNTER.
          L_INDEX = SY-TABIX.
          READ TABLE IT_CUSTOMER INDEX L_INDEX.
    perform bdc_dynpro      using 'SAPMV10A' '0100'.
    perform bdc_field       using 'MV10A-KUNNR'
                                  IT_CUSTOMER-KUNNR.
    perform bdc_field       using 'MV10A-VKORG'
                                  IT_CUSTOMER-VKORG.
    perform bdc_field       using 'MV10A-VTWEG'
                                  IT_CUSTOMER-VTWEG.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    ENDAT.
    L_COUNTER = L_COUNTER + 1.
        CLEAR L_STRING.
    perform bdc_dynpro      using 'SAPMV10A' '0200'.
    CONCATENATE 'MV10A-MATNR(' L_COUNTER ')' INTO L_STRING.
    perform bdc_field       using L_STRING
                            IT_CUSTOMER-MATNR.
    CONCATENATE 'MV10A-KDMAT(' L_COUNTER ')' INTO L_STRING.
    perform bdc_field       using     L_STRING
                                     IT_CUSTOMER-KDMAT.
    CONCATENATE 'MV10A-MEGRU(' L_COUNTER ')' INTO L_STRING.
    perform bdc_field       using   L_STRING
                                    IT_CUSTOMER-MEGRU.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    *-- For Page down in Call Transaction Mode
        IF L_COUNTER = 14.
          CLEAR L_COUNTER.
          PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                                '=P+'.
        ENDIF.
    perform bdc_dynpro      using 'SAPMV10A' '0200'.
    CONCATENATE 'MV10A-SELKZ(' L_COUNTER ')' INTO L_STRING.
    perform bdc_field       using L_STRING
                              IT_CUSTOMER-SELKZ.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=SELE'.
    perform bdc_dynpro      using 'SAPMV10A' '0300'.
    perform bdc_field       using 'MV10A-KDMAT'
                                  IT_CUSTOMER-KDMAT.
    perform bdc_field       using 'MV10A-LPRIO'
                                  IT_CUSTOMER-LPRIO.
    perform bdc_field       using 'MV10A-ANTLF'
                                  IT_CUSTOMER-ANTLF.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                        '/EBACK'.
    at end of kunnr.
    READ TABLE IT_CUSTOMER INDEX L_INDEX.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=SICH'.
    CALL TRANSACTION 'VD51' USING IT_BDC MODE 'A' UPDATE 'S'
          MESSAGES INTO IT_MESSAGES.
          CLEAR IT_BDC.
          REFRESH IT_BDC.
    ENDAT.
      IF NOT IT_MESSAGES[] IS INITIAL.
        PERFORM FORMAT_MESSAGE.
      ENDIF.
    ENDLOOP.
    ENDFORM.                    " POPULATE_BDC
    *&      Form  bdc_dynpro
          text
         -->P_0273   text
         -->P_0274   text
    FORM bdc_dynpro USING    VALUE(P_0273)
                             VALUE(P_0274).
    IT_BDC-PROGRAM = P_0273.
    IT_BDC-DYNPRO = P_0274.
    IT_BDC-DYNBEGIN = 'X'.
      APPEND IT_BDC.
      CLEAR IT_BDC.
    ENDFORM.                    " bdc_dynpro
    *&      Form  bdc_field
          text
         -->P_0278   text
         -->P_RECORD_KUNNR_001  text
    FORM bdc_field USING    VALUE(P_0278)
                           VALUE(P_0279).
    IT_BDC-FNAM = P_0278.
      IT_BDC-FVAL = P_0279.
      APPEND IT_BDC.
      CLEAR IT_BDC.
    ENDFORM.                    " bdc_field
    *&      Form  FORMAT_MESSAGE
          text
    -->  p1        text
    <--  p2        text
    FORM FORMAT_MESSAGE.
    DATA: L_MSG(100).
      LOOP AT IT_MESSAGES.
      READ TABLE IT_CUSTOMER INDEX L_INDEX.
        CALL FUNCTION 'FORMAT_MESSAGE'
             EXPORTING
                  ID        = IT_MESSAGES-MSGID
                  LANG      = SY-LANGU
                  NO        = IT_MESSAGES-MSGNR
                  V1        = IT_MESSAGES-MSGV1
                  V2        = IT_MESSAGES-MSGV2
                  V3        = IT_MESSAGES-MSGV3
                  V4        = IT_MESSAGES-MSGV4
             IMPORTING
                  MSG       = L_MSG
             EXCEPTIONS
                  NOT_FOUND = 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.
        write:/ l_msg.
      ENDLOOP.
    ENDFORM.                    " FORMAT_MESSAGE
    reward if helpful,
    keerthi

  • 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

  • Problem when i try to modifi and save a query

    Dear SDN Members
    I have the follow error when I try to save a query (after to modified a Variable)
    - The system tried to insert a data record, even though a data record with the same primary key already exists
    - An exception with the type CX_SY_OPEN_SQL_DB occurred, but was neither handled locally, nor declared in a RAISING clause
    - Program error in class SAPMSSY1 method: UNCAUGHT_EXCEPTION  
    My BW version is BI 7.0
    I went to TCODE ST22, and the dumps is the follow
    Runtime Errors         UNCAUGHT_EXCEPTION
    Exception              CX_SY_NO_HANDLER
    Date and Time          23.05.2007 12:03:10
    Short text
    An exception occurred that was not caught.
    What happened?
    The exception 'CX_SY_NO_HANDLER' was raised, but it was not caught anywhere
    along
    the call hierarchy.
    Since exceptions represent error situations and this error was not
    adequately responded to, the running ABAP program
    'CL_RSBOLAP_BICS_SERVICES======CP' has to be
    terminated.
    What can you do?
    Note down which actions and inputs caused the error.
    To process the problem further, contact you SAP system
    administrator.
    Using Transaction ST22 for ABAP Dump Analysis, you can look
    at and manage termination messages, and you can also
    keep them for a long time.
    Error analysis
    An exception occurred which is explained in detail below.
    The exception, which is assigned to class 'CX_SY_NO_HANDLER', was not caught
    and
    therefore caused a runtime error.
    The reason for the exception is:
    An exception with the type CX_SY_OPEN_SQL_DB occurred, but was neither handled
    locally, nor declared in a RAISING clause
    The occurrence of the exception is closely related to the occurrence of
    a previous exception "CX_SY_OPEN_SQL_DB", which was raised in the program
    "SAPLRZD1",
    specifically in line 148 of the (include) program "LRZD1U40".
    The cause of the exception was:
    The system tried to insert a data record, even though a data record with the
    same primary key already exists
    How to correct the error
    If the error occures in a non-modified SAP program, you may be able to
    find an interim solution in an SAP Note.
    If you have access to SAP Notes, carry out a search with the following
    keywords:
    "UNCAUGHT_EXCEPTION" "CX_SY_NO_HANDLER"
    "CL_RSBOLAP_BICS_SERVICES======CP" or "CL_RSBOLAP_BICS_SERVICES======CM003"
    "HANDLE_UNCAUGHT_EXCEPTION"
    If you cannot solve the problem yourself and want to send an error
    notification to SAP, include the following information:
    1. The description of the current problem (short dump)
    To save the description, choose "System->List->Save->Local File
    (Unconverted)".
    2. Corresponding system log
    Display the system log by calling transaction SM21.
    Restrict the time interval to 10 minutes before and five minutes
    after the short dump. Then choose "System->List->Save->Local File
    (Unconverted)".
    3. If the problem occurs in a problem of your own or a modified SAP
    program: The source code of the program
    In the editor, choose "Utilities->More
    Utilities->Upload/Download->Download".
    4. Details about the conditions under which the error occurred or which
    actions and input led to the error.
    System environment
    SAP-Release 700
    Application server... "ecedc05bwh02"
    Network address...... "192.168.186.10"
    Operating system..... "Windows NT"
    Release.............. "5.2"
    Hardware type........ "8x Intel 801586"
    Character length.... 8 Bits
    Pointer length....... 32 Bits
    Work process number.. 0
    Shortdump setting.... "full"
    Database server... "ECEDC05BWH02"
    Database type..... "ORACLE"
    Database name..... "BWD"
    Database user ID.. "SAPBWP"
    Char.set.... "Spanish_Spain.1252"
    SAP kernel....... 700
    created (date)... "Apr 2 2006 23:01:26"
    create on........ "NT 5.0 2195 Service Pack 4 x86 MS VC++ 13.10"
    Database version. "OCI_10103_SHARE "
    Patch level. 52
    Patch text.. " "
    Database............. "ORACLE 9.2.0.., ORACLE 10.1.0.., ORACLE 10.2.0.."
    SAP database version. 700
    Operating system..... "Windows NT 5.0, Windows NT 5.1, Windows NT 5.2"
    Memory consumption
    Roll.... 8112
    EM...... 8382048
    Heap.... 0
    Page.... 16384
    MM Used. 5467512
    MM Free. 2913088
    User and Transaction
    Client.............. 100
    User................ "ATOS"
    Language Key........ "S"
    Transaction......... " "
    Program............. "CL_RSBOLAP_BICS_SERVICES======CP"
    Screen.............. "SAPMSSY1 3004"
    Screen Line......... 2
    Information on caller of Remote Function Call (RFC):
    System.............. "########"
    Database Release.... 710
    Kernel Release...... 710
    Connection Type..... "E" (2=R/2, 3=ABAP System, E=Ext., R=Reg. Ext.)
    Call Type........... "synchron and non-transactional (emode 0, imode 0)"
    Inbound TID.........." "
    Inbound Queue Name..." "
    Outbound TID........." "
    Outbound Queue Name.." "
    Client.............. "###"
    User................ "############"
    Transaction......... " "
    Call Program........."BExQueryDesignerStarter"
    Function Module..... "RSZ_X_COMPONENT_SET_NEW"
    Call Destination.... "<unknown>"
    Source Server....... "clalinetzky2"
    Source IP Address... "10.139.56.93"
    Additional information on RFC logon:
    Trusted Relationship " "
    Logon Return Code... 0
    Trusted Return Code. 0
    Note: For releases < 4.0, information on the RFC caller are often
    only partially available.
    Information on where terminated
    Termination occurred in the ABAP program "CL_RSBOLAP_BICS_SERVICES======CP" -
    in "HANDLE_UNCAUGHT_EXCEPTION".
    The main program was "SAPMSSY1 ".
    In the source code you have the termination point in line 28
    of the (Include) program "CL_RSBOLAP_BICS_SERVICES======CM003".
    Source Code Extract
    Line
    SourceCde
    1
    METHOD handle_uncaught_exception.
    2
    3
    data:
    4
    l_r_program_error  TYPE REF TO cx_rsbolap_program_error.
    5
    data: lBExDebug type rs_bool.
    6
    GET PARAMETER ID 'BEXDEBUG' FIELD lBExDebug.
    7
    8
    if lBExDebug = rs_c_true or CL_RSTT_TRACE=>GET_TRACEMODE_CURRENT_TRACE( ) = rstt0_c_tracem
    9
    Break-point for debugging, e.g. during running a trace
    10
    break-point.  "#EC NOBREAK
    11
    endif.
    12
    Subcall?
    13
    if P_RFC_CALL_DEPTH > 1.
    14
      Forward the exception
    15
    subtract 1 from P_RFC_CALL_DEPTH.
    16
    DATA: l_r_x TYPE REF TO cx_no_check.
    17
    TRY.
    18
    l_r_x ?= i_r_exception.
    19
    CATCH cx_root.
    20
    CLEAR l_r_x.
    21
    ENDTRY.
    22
    23
    IF l_r_x IS INITIAL.
    24
    RAISE EXCEPTION TYPE cx_rsr_propagate_x
    25
    EXPORTING
    26
    previous = i_r_exception.
    27
    ELSE.
    >>>>>
    RAISE EXCEPTION l_r_x.
    29
    ENDIF.
    30
    endif.
    31
    32
    All exceptions should have been caugth -> X-Message
    33
    r_max_message_type = 'A'.
    34
    35
    Wrap the exception in a bolap program error exception
    36
    CREATE OBJECT l_r_program_error
    37
    EXPORTING
    38
    context  = 'UNCAUGHT_EXCEPTION'
    39
    previous = i_r_exception.
    40
    41
    Notify the message handler
    42
    CALL FUNCTION 'RRMS_EXCEPTION_HANDLING'
    43
    EXPORTING
    44
    I_MSGTY       = 'A'
    45
    i_r_exception = l_r_program_error.
    46
    47
    ENDMETHOD.
    Contents of system fields
    Name
    Val.
    SY-SUBRC
    0
    SY-INDEX
    52
    SY-TABIX
    0
    SY-DBCNT
    0
    SY-FDPOS
    1
    SY-LSIND
    0
    SY-PAGNO
    0
    SY-LINNO
    1
    SY-COLNO
    1
    SY-PFKEY
    SY-UCOMM
    SY-TITLE
    Control CPI-C y RFC
    SY-MSGTY
    SY-MSGID
    SY-MSGNO
    000
    SY-MSGV1
    SY-MSGV2
    SY-MSGV3
    SY-MSGV4
    SY-MODNO
    0
    SY-DATUM
    20070523
    SY-UZEIT
    120310
    SY-XPROG
    SAPCNVE
    SY-XFORM
    CONVERSION_EXIT
    Active Calls/Events
    No.   Ty.          Program                             Include                             Line
    Name
    5 METHOD       CL_RSBOLAP_BICS_SERVICES======CP    CL_RSBOLAP_BICS_SERVICES======CM003    28
    CL_RSBOLAP_BICS_SERVICES=>HANDLE_UNCAUGHT_EXCEPTION
    4 FUNCTION     SAPLRZX0                            LRZX0U52                              908
    RSZ_X_COMPONENT_SET_NEW
    3 FORM         SAPLRZX0                            LRZX0U52                                1
    RSZ_X_COMPONENT_SET_NEW
    2 FORM         SAPMSSY1                            SAPMSSY1                               85
    REMOTE_FUNCTION_CALL
    1 MODULE (PBO) SAPMSSY1                            SAPMSSY1                               30
    %_RFC_START
    Chosen variables
    Name
    Val.
    No.       5 Ty.          METHOD
    Name  CL_RSBOLAP_BICS_SERVICES=>HANDLE_UNCAUGHT_EXCEPTION
    I_R_EXCEPTION
    |
    | 1000E000 |
    | A0005000 |
    | R_MAX_MESSAGE_TYPE |
    |  |
    | 2 |
    | 0 |
    | L_R_X |
    |
    1000E000
    A0005000
    SYST-REPID
    CL_RSBOLAP_BICS_SERVICES======CP
    4455544445544455545544453333334522222222
    3CF232FC10F2933F35269353DDDDDD3000000000
    %_SPACE
    2
    0
    %_DUMMY$$
    2222
    0000
    %_ARCHIVE
    2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
    0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    RSJOBINFO
    00000000000000                                  ####
    222222222222222222222222222222223333333333333322222222222222222222222222222222220000
    000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    SY
    4###########################################################################y#################
    3000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000
    400000000000800000000000A000000000000000000010001000000010000000000000000000900000000000000000
    %_EXCP
    F0000000
    F0000000
    SY-REPID
    CL_RSBOLAP_BICS_SERVICES======CP
    4455544445544455545544453333334522222222
    3CF232FC10F2933F35269353DDDDDD3000000000
    SPACE
    2
    0
    L_R_PROGRAM_ERROR
    |
    | F0000000 |
    | F0000000 |
    | No.       4 Ty.          FUNCTION |
    | Name  RSZ_X_COMPONENT_SET_NEW |
    | I_COMPUID |
    | F3IH9GRA1X9X7DRPIYFPE1QP7 |
    | 4344345435353455454543553 |
    | 6398972118987420996051107 |
    | I_COPY_MODE |
    |  |
    | 2 |
    | 0 |
    | I_LANGUAGE |
    | S |
    | 5 |
    | 3 |
    | I_NODE |
    | 0000000000 |
    | 3333333333 |
    | 0000000000 |
    | I_NO_TRANSPORT |
    |  |
    | 2 |
    | 0 |
    | I_OBJVERS |
    | A |
    | 4 |
    | 1 |
    | I_QD_VERSION |
    | 700 |
    | 33322 |
    | 70000 |
    | I_ROLE |
    |  |
    | 222222222222222222222222222222 |
    | 000000000000000000000000000000 |
    | E_GENUNIID |
    |  |
    | 2222222222222222222222222 |
    | 0000000000000000000000000 |
    | E_SUBRC |
    | 0 |
    | 0000 |
    | 0000 |
    | C_T_CALC[] |
    | Table IT_3889[5x158] |
    | FUNCTION-POOL=RZX0FORM=RSZ_X_COMPONENT_SET_NEWDATA=%_%_C_T_CALC |
    | Table reference: 56 |
    | TABH+  0(20) = 28DD0EA0E81518A00000000038000000310F0000 |
    | TABH+ 20(20) = 050000009E000000FFFFFFFF04CB000058150000 |
    | TABH+ 40( 8) = 10000000C1248101 |
    | store        = 0x28DD0EA0 |
    | ext1         = 0xE81518A0 |
    | shmId        = 0     (0x00000000) |
    | id           = 56    (0x38000000) |
    | label        = 3889  (0x310F0000) |
    | fill         = 5     (0x05000000) |
    | leng         = 158   (0x9E000000) |
    | loop         = -1    (0xFFFFFFFF) |
    | xtyp         = TYPE#000087 |
    | occu         = 16    (0x10000000) |
    | access       = 1     (ItAccessStandard) |
    | idxKind      = 0     (ItIndexNone) |
    | uniKind      = 2     (ItUniqueNon) |
    | keyKind      = 1     (default) |
    | cmpMode      = 2     (cmpSingleMcmpR) |
    | occu0        = 1 |
    | groupCntl    = 0 |
    | rfc          = 1 |
    | unShareable  = 0 |
    | mightBeShared = 0 |
    | sharedWithShmTab = 0 |
    | isShmLockId  = 0 |
    | gcKind       = 0 |
    | isUsed       = 1 |
    | isCtfyAble   = 1 |
    | >>>>> Shareable Table Header Data <<<<< |
    | tabi         = 0x481839A0 |
    | pgHook       = 0x00000000 |
    | idxPtr       = 0x00000000 |
    | shmTabhSet   = 0x00000000 |
    | id           = 2911  (0x5F0B0000) |
    | refCount     = 0     (0x00000000) |
    | tstRefCount  = 0     (0x00000000) |
    | lineAdmin    = 16    (0x10000000) |
    | lineAlloc    = 16    (0x10000000) |
    | shmVersId    = 0     (0x00000000) |
    | shmRefCount  = 1     (0x01000000) |
    | >>>>> 1st level extension part <<<<< |
    | regHook      = 0x00000000 |
    | collHook     = 0x00000000 |
    | ext2         = 0xF0B70EA0 |
    | >>>>> 2nd level extension part <<<<< |
    | tabhBack     = 0x40F60EA0 |
    | delta_head   = 0100000065000000E40000002B00000004CB0000901500009E0000000100000005000000 |
    | pb_func      = 0x00000000 |
    | pb_handle    = 0x00000000 |
    | C_T_CELL[] |
    | Table IT_3890[0x76] |
    | FUNCTION-POOL=RZX0FORM=RSZ_X_COMPONENT_SET_NEWDATA=%_%_C_T_CELL |
    | Table reference: 52 |
    | TABH+  0(20) = 0000000028A51EA00000000034000000320F0000 |
    | TABH+ 20(20) = 000000004C000000FFFFFFFF04CB0000C8150000 |
    | TABH+ 40( 8) = 10000000C1248101 |
    | store        = 0x00000000 |
    | ext1         = 0x28A51EA0 |
    | shmId        = 0     (0x00000000) |
    | id           = 52    (0x34000000) |
    | label        = 3890  (0x320F0000) |
    | fill         = 0     (0x00000000) |
    | leng         = 76    (0x4C000000) |
    | loop         = -1    (0xFFFFFFFF) |
    | xtyp         = TYPE#000089 |
    | occu         = 16    (0x10000000) |
    | access       = 1     (ItAccessStandard) |
    | idxKind      = 0     (ItIndexNone) |
    | uniKind      = 2     (ItUniqueNon) |
    | keyKind      = 1     (default) |
    | cmpMode      = 2     (cmpSingleMcmpR) |
    | occu0        = 1 |
    | groupCntl    = 0 |
    | rfc          = 1 |
    | unShareable  = 0 |
    | mightBeShared = 0 |
    | sharedWithShmTab = 0 |
    | isShmLockId  = 0 |
    | gcKind       = 0 |
    | isUsed       = 1 |
    | isCtfyAble   = 1 |
    | >>>>> Shareable Table Header Data <<<<< |
    | tabi         = Not allocated |
    | pghook       = Not allocated |
    | idxPtr       = Not allocated |
    | shmTabhSet   = Not allocated |
    | id           = Not allocated |
    | refCount     = Not allocated |
    | tstRefCount  = Not allocated |
    | lineAdmin    = Not allocated |
    | lineAlloc    = Not allocated |
    | shmVersId    = Not allocated |
    | shmRefCount  = Not allocated |
    | shmIsReadOnly = Not allocated |
    | >>>>> 1st level extension part <<<<< |
    | regHook      = 0x00000000 |
    | collHook     = 0x00000000 |
    | ext2         = 0x68DA0EA0 |
    | >>>>> 2nd level extension part <<<<< |
    | tabhBack     = 0x38EA1DA0 |
    | delta_head   = 0100000066000000E60000002900000004CB0000001600004C0000000100000005000000 |
    | pb_func      = 0x00000000 |
    | pb_handle    = 0x00000000 |
    | C_T_COMPDIR[] |
    | Table IT_3891[7x169] |
    | FUNCTION-POOL=RZX0FORM=RSZ_X_COMPONENT_SET_NEWDATA=%_%_C_T_COMPDIR |
    | Table reference: 54 |
    | TABH+  0(20) = D8D80EA048A51EA00000000036000000330F0000 |
    | TABH+ 20(20) = 07000000A9000000FFFFFFFF04CB000098130000 |
    | TABH+ 40( 8) = 10000000C1248501 |
    | store        = 0xD8D80EA0 |
    | ext1         = 0x48A51EA0 |
    | shmId        = 0     (0x00000000) |
    | id           = 54    (0x36000000) |
    | label        = 3891  (0x330F0000) |
    | fill         = 7     (0x07000000) |
    | leng         = 169   (0xA9000000) |
    | loop         = -1    (0xFFFFFFFF) |
    | xtyp         = TYPE#000079 |
    | occu         = 16    (0x10000000) |
    | access       = 1     (ItAccessStandard) |
    | idxKind      = 0     (ItIndexNone) |
    | uniKind      = 2     (ItUniqueNon) |
    | keyKind      = 1     (default) |
    | cmpMode      = 2     (cmpSingleMcmpR) |
    | occu0        = 1 |
    | groupCntl    = 0 |
    | rfc          = 1 |
    | unShareable  = 0 |
    | mightBeShared = 1 |
    | sharedWithShmTab = 0 |
    | isShmLockId  = 0 |
    | gcKind       = 0 |
    | isUsed       = 1 |
    | isCtfyAble   = 1 |
    | >>>>> Shareable Table Header Data <<<<< |
    | tabi         = 0x382239A0 |
    | pgHook       = 0x00000000 |
    | idxPtr       = 0x00000000 |
    | shmTabhSet   = 0x00000000 |
    | id           = 2912  (0x600B0000) |
    | refCount     = 0     (0x00000000) |
    | tstRefCount  = 0     (0x00000000) |
    | lineAdmin    = 16    (0x10000000) |
    | lineAlloc    = 16    (0x10000000) |
    | shmVersId    = 0     (0x00000000) |
    | shmRefCount  = 2     (0x02000000) |
    | >>>>> 1st level extension part <<<<< |
    | regHook      = 0x00000000 |
    | collHook     = 0x00000000 |
    | ext2         = 0xB8C223A0 |
    | >>>>> 2nd level extension part <<<<< |
    | tabhBack     = 0x30B50EA0 |
    | delta_head   = 0100000067000000E70000002800000004CB0000D0130000A90000000100000005000000 |
    | pb_func      = 0x00000000 |
    | pb_handle    = 0x00000000 |
    | C_T_COMPIC[] |
    | Table IT_3892[5x81] |
    | FUNCTION-POOL=RZX0FORM=RSZ_X_COMPONENT_SET_NEWDATA=%_%_C_T_COMPIC |
    | Table reference: 49 |
    | TABH+  0(20) = 80D90EA060D90EA00000000031000000340F0000 |
    | TABH+ 20(20) = 0500000051000000FFFFFFFF04CB000008140000 |
    | TABH+ 40( 8) = 10000000C1248101 |
    | store        = 0x80D90EA0 |
    | ext1         = 0x60D90EA0 |
    | shmId        = 0     (0x00000000) |
    | id           = 49    (0x31000000) |
    | label        = 3892  (0x340F0000) |
    | fill         = 5     (0x05000000) |
    | leng         = 81    (0x51000000) |
    | loop         = -1    (0xFFFFFFFF) |
    | xtyp         = TYPE#000081 |
    | occu         = 16    (0x10000000) |
    | access       = 1     (ItAccessStandard) |
    | idxKind      = 0     (ItIndexNone) |
    | uniKind      = 2     (ItUniqueNon) |
    | keyKind      = 1     (default) |
    | cmpMode      = 2     (cmpSingleMcmpR) |
    | occu0        = 1 |
    | groupCntl    = 0 |
    | rfc          = 1 |
    | unShareable  = 0 |
    | mightBeShared = 0 |
    | sharedWithShmTab = 0 |
    | isShmLockId  = 0 |
    | gcKind       = 0 |
    | isUsed       = 1 |
    | isCtfyAble   = 1 |
    | >>>>> Shareable Table Header Data <<<<< |
    | tabi         = 0x409A1EA0 |
    | pgHook       = 0x00000000 |
    | idxPtr       = 0x00000000 |
    | shmTabhSet   = 0x00000000 |
    | id           = 2913  (0x610B0000) |
    | refCount     = 0     (0x00000000) |
    | tstRefCount  = 0     (0x00000000) |
    | lineAdmin    = 16    (0x10000000) |
    | lineAlloc    = 16    (0x10000000) |
    | shmVersId    = 0     (0x00000000) |
    | shmRefCount  = 1     (0x01000000) |
    | >>>>> 1st level extension part <<<<< |
    | regHook      = 0x00000000 |
    | collHook     = 0x00000000 |
    | ext2         = 0x18D90EA0 |
    | >>>>> 2nd level extension part <<<<< |
    | tabhBack     = 0xD8B21EA0 |
    | delta_head   = 0100000068000000E50000002A00000004CB000040140000510000000100000005000000 |
    | pb_func      = 0x00000000 |
    | pb_handle    = 0x00000000 |
    | C_T_ELTATTR[] |
    | Table IT_3893[0x124] |
    | FUNCTION-POOL=RZX0FORM=RSZ_X_COMPONENT_SET_NEWDATA=%_%_C_T_ELTATTR |
    | Table reference: 332 |
    | TABH+  0(20) = 0000000008DA0EA0000000004C010000350F0000 |
    | TABH+ 20(20) = 000000007C000000FFFFFFFF04CB0000B8120000 |
    | TABH+ 40( 8) = 10000000C1248101 |
    | store        = 0x00000000 |
    | ext1         = 0x08DA0EA0 |
    | shmId        = 0     (0x00000000) |
    | id           = 332   (0x4C010000) |
    | label        = 3893  (0x350F0000) |
    | fill         = 0     (0x00000000) |
    | leng         = 124   (0x7C000000) |
    | loop         = -1    (0xFFFFFFFF) |
    | xtyp         = TYPE#000075 |
    | occu         = 16    (0x10000000) |
    | access       = 1     (ItAccessStandard) |
    | idxKind      = 0     (ItIndexNone) |
    | uniKind      = 2     (ItUniqueNon) |
    | keyKind      = 1     (default) |
    | cmpMode      = 2     (cmpSingleMcmpR) |
    | occu0        = 1 |
    | groupCntl    = 0 |
    | rfc          = 1 |
    | unShareable  = 0 |
    | mightBeShared = 0 |
    | sharedWithShmTab = 0 |
    | isShmLockId  = 0 |
    | gcKind       = 0 |
    | isUsed       = 1 |
    | isCtfyAble   = 1 |
    | >>>>> Shareable Table Header Data <<<<< |
    | tabi         = Not allocated |
    | pghook       = Not allocated |
    | idxPtr       = Not allocated |
    | shmTabhSet   = Not allocated |
    | id           = Not allocated |
    | refCount     = Not allocated |
    | tstRefCount  = Not allocated |
    | lineAdmin    = Not allocated |
    | lineAlloc    = Not allocated |
    | shmVersId    = Not allocated |
    | shmRefCount  = Not allocated |
    | shmIsReadOnly = Not allocated |
    | >>>>> 1st level extension part <<<<< |
    | regHook      = 0x00000000 |
    | collHook     = 0x00000000 |
    | ext2         = 0xC0D90EA0 |
    | >>>>> 2nd level extension part <<<<< |
    | tabhBack     = 0x101520A0 |
    | delta_head   = 0100000069000000E30000002C00000004CB0000F01200007C0000000100000005000000 |
    | pb_func      = 0x00000000 |
    | pb_handle    = 0x00000000 |
    | C_T_ELTDIR[] |
    | Table IT_3894[98x203] |
    | FUNCTION-POOL=RZX0FORM=RSZ_X_COMPONENT_SET_NEWDATA=%_%_C_T_ELTDIR |
    | Table reference: 339 |
    | TABH+  0(20) = 48A01EA0A89F1EA00000000053010000360F0000 |
    | TABH+ 20(20) = 62000000CB000000FFFFFFFF04CB0000F8100000 |
    | TABH+ 40( 8) = 10000000C1248101 |
    | store        = 0x48A01EA0 |
    | ext1         = 0xA89F1EA0 |
    | shmId        = 0     (0x00000000) |
    | id           = 339   (0x53010000) |
    | label        = 3894  (0x360F0000) |
    | fill         = 98    (0x62000000) |
    | leng         = 203   (0xCB000000) |
    | loop         = -1    (0xFFFFFFFF) |
    | xtyp         = TYPE#000067 |
    | occu         = 16    (0x10000000) |
    | access       = 1     (ItAccessStandard) |
    | idxKind      = 0     (ItIndexNone) |
    | uniKind      = 2     (ItUniqueNon) |
    | keyKind      = 1     (default) |
    | cmpMode      = 2     (cmpSingleMcmpR) |
    | occu0        = 1 |
    | groupCntl    = 0 |
    | rfc          = 1 |
    | unShareable  = 0 |
    | mightBeShared = 0 |
    | sharedWithShmTab = 0 |
    | isShmLockId  = 0 |
    | gcKind       = 0 |
    | isUsed       = 1 |
    | isCtfyAble   = 1 |
    | >>>>> Shareable Table Header Data <<<<< |
    | tabi         = 0x883C39A0 |
    | pgHook       = 0x88A01EA0 |
    | idxPtr       = 0x00000000 |
    | shmTabhSet   = 0x00000000 |
    | id           = 2915  (0x630B0000) |
    | refCount     = 0     (0x00000000) |
    | tstRefCount  = 0     (0x00000000) |
    | lineAdmin    = 112   (0x70000000) |
    | lineAlloc    = 112   (0x70000000) |
    | shmVersId    = 0     (0x00000000) |
    | shmRefCount  = 1     (0x01000000) |
    | >>>>> 1st level extension part <<<<< |
    | regHook      = 0x00000000 |
    | collHook     = 0x00000000 |
    | ext2         = 0x609F1EA0 |
    | >>>>> 2nd level extension part <<<<< |
    | tabhBack     = 0xC01620A0 |
    | delta_head   = 010000006A000000E80000002700000004CB000030110000CB0000000100000005000000 |
    | pb_func      = 0x00000000 |
    | pb_handle    = 0x00000000 |
    | C_T_ELTPRIO[] |
    | Table IT_3895[77x150] |
    | FUNCTION-POOL=RZX0FORM=RSZ_X_COMPONENT_SET_NEWDATA=%_%_C_T_ELTPRIO |
    | Table reference: 341 |
    | TABH+  0(20) = 30A11EA010A01EA00000000055010000370F0000 |
    | TABH+ 20(20) = 4D00000096000000FFFFFFFF04CB000048120000 |
    | TABH+ 40( 8) = 10000000C1248101 |
    | store        = 0x30A11EA0 |
    | ext1         = 0x10A01EA0 |
    | shmId        = 0     (0x00000000) |
    | id           = 341   (0x55010000) |
    | label        = 3895  (0x370F0000) |
    | fill         = 77    (0x4D000000) |
    | leng         = 150   (0x96000000) |
    | loop         = -1    (0xFFFFFFFF) |
    | xtyp         = TYPE#000073 |
    | occu         = 16    (0x10000000) |
    | access       = 1     (ItAccessStandard) |
    | idxKind      = 0     (ItIndexNone) |
    | uniKind      = 2     (ItUniqueNon) |
    | keyKind      = 1     (default) |
    | cmpMode      = 2     (cmpSingleMcmpR) |
    | occu0        = 1 |
    | groupCntl    = 0 |
    | rfc          = 1 |
    | unShareable  = 0 |
    | mightBeShared = 0 |
    | sharedWithShmTab = 0 |
    | isShmLockId  = 0 |
    | gcKind       = 0 |
    | isUsed       = 1 |
    | isCtfyAble   = 1 |
    | >>>>> Shareable Table Header Data <<<<< |
    | tabi         = 0x889539A0 |
    | pgHook       = 0x70A11EA0 |
    | idxPtr       = 0x00000000 |
    | shmTabhSet   = 0x00000000 |
    | id           = 2917  (0x650B0000) |
    | refCount     = 0     (0x00000000) |
    | tstRefCount  = 0     (0x00000000) |
    | lineAdmin    = 112   (0x70000000) |
    | lineAlloc    = 112   (0x70000000) |
    | shmVersId    = 0     (0x00000000) |
    | shmRefCount  = 1     (0x01000000) |
    | >>>>> 1st level extension part <<<<< |
    | regHook      = 0x00000000 |
    | collHook     = 0x00000000 |
    | ext2         = 0xC89F1EA0 |
    | >>>>> 2nd level extension part <<<<< |
    | tabhBack     = 0xC01720A0 |
    | delta_head   = 010000006B000000E20000002D00000004CB000080120000960000000100000005000000 |
    | pb_func      = 0x00000000 |
    | pb_handle    = 0x00000000 |
    | C_T_ELTPROP[] |
    | Table IT_3896[98x695] |
    | FUNCTION-POOL=RZX0FORM=RSZ_X_COMPONENT_SET_NEWDATA=%_%_C_T_ELTPROP |
    | Table reference: 344 |
    | TABH+  0(20) = 18A21EA0C8B139A00000000058010000380F0000 |
    | TABH+ 20(20) = 62000000B7020000FFFFFFFF04CB0000D8110000 |
    | TABH+ 40( 8) = 10000000C1248101 |
    | store        = 0x18A21EA0 |
    | ext1         = 0xC8B139A0 |
    | shmId        = 0     (0x00000000) |
    | id           = 344   (0x58010000) |
    | label        = 3896  (0x380F0000) |
    | fill         = 98    (0x62000000) |
    | leng         = 695   (0xB7020000) |
    | loop         = -1    (0xFFFFFFFF) |
    | xtyp         = TYPE#000071 |
    | occu         = 16    (0x10000000) |
    | access       = 1     (ItAccessStandard) |
    | idxKind      = 0     (ItIndexNone) |
    | uniKind      = 2     (ItUniqueNon) |
    | keyKind      = 1     (default) |
    | cmpMode      = 2     (cmpSingleMcmpR) |
    | occu0        = 1 |
    | groupCntl    = 0 |
    | rfc          = 1 |
    | unShareable  = 0 |
    | mightBeShared = 0 |
    | sharedWithShmTab = 0 |
    | isShmLockId  = 0 |
    | gcKind       = 0 |
    | isUsed       = 1 |
    | isCtfyAble   = 1 |
    | >>>>> Shareable Table Header Data <<<<< |
    | tabi         = 0x48FC39A0 |
    | pgHook       = 0x58A21EA0 |
    | idxPtr       = 0x00000000 |
    | shmTabhSet   = 0x00000000 |
    | id           = 2919  (0x670B0000) |
    | refCount     = 0     (0x00000000) |
    | tstRefCount  = 0     (0x00000000) |
    | lineAdmin    = 128   (0x80000000) |
    | lineAlloc    = 112   (0x70000000) |
    | shmVersId    = 0     (0x00000000) |
    | shmRefCount  = 1     (0x01000000) |
    | >>>>> 1st level extension part <<<<< |
    | regHook      = 0x00000000 |
    | collHook     = 0x00000000 |
    | ext2         = 0xB0A01EA0 |
    | >>>>> 2nd level extension part <<<<< |
    | tabhBack     = 0x28DA0EA0 |
    | delta_head   = 010000006C000000E10000002E00000004CB000010120000B70200000100000005000000 |
    | pb_func      = 0x00000000 |
    | pb_handle    = 0x00000000 |
    | C_T_ELTTXT[] |
    | Table IT_3902[0x111] |
    | FUNCTION-POOL=RZX0FORM=RSZ_X_COMPONENT_SET_NEWDATA=%_%_C_T_ELTTXT |
    | Table reference: 349 |
    | TABH+  0(20) = 0000000068F73AA0000000005D0100003E0F0000 |
    | TABH+ 20(20) = 000000006F000000FFFFFFFF04CB000018170000 |
    | TABH+ 40( 8) = 10000000C1248001 |
    | store        = 0x00000000 |
    | ext1         = 0x68F73AA0 |
    | shmId        = 0     (0x00000000) |
    | id           = 349   (0x5D010000) |
    | label        = 3902  (0x3E0F0000) |
    | fill         = 0     (0x00000000) |
    | leng         = 111   (0x6F000000) |
    | loop         = -1    (0xFFFFFFFF) |
    | xtyp         = TYPE#000095 |
    | occu         = 16    (0x10000000) |
    | access       = 1     (ItAccessStandard) |
    | idxKind      = 0     (ItIndexNone) |
    | uniKind      = 2     (ItUniqueNon) |
    | keyKind      = 1     (default) |
    | cmpMode      = 2     (cmpSingleMcmpR) |
    | occu0        = 1 |
    | groupCntl    = 0 |
    | rfc          = 0 |
    | unShareable  = 0 |
    | mightBeShared = 0 |
    | sharedWithShmTab = 0 |
    | isShmLockId  = 0 |
    | gcKind       = 0 |
    | isUsed       = 1 |
    | isCtfyAble   = 1 |
    | >>>>> Shareable Table Header Data <<<<< |
    | tabi         = Not allocated |
    | pghook       = Not allocated |
    | idxPtr       = Not allocated |
    | shmTabhSet   = Not allocated |
    | id           = Not allocated |
    | refCount     = Not allocated |
    | tstRefCount  = Not allocated |
    | lineAdmin    = Not allocated |
    | lineAlloc    = Not allocated |
    | shmVersId    = Not allocated |
    | shmRefCount  = Not allocated |
    | shmIsReadOnly = Not allocated |
    | >>>>> 1st level extension part <<<<< |
    | regHook      = 0x00000000 |
    | collHook     = 0x00000000 |
    | ext2         = 0x20F73AA0 |
    | >>>>> 2nd level extension part <<<<< |
    | tabhBack     = 0xE0F63AA0 |
    | delta_head   = 000000000000000000000000000000000000000000000000000000000000000000000000 |
    | pb_func      = 0x00000000 |
    | pb_handle    = 0x00000000 |
    | C_T_ELTXREF[] |
    | Table IT_3897[188x74] |
    | FUNCTION-POOL=RZX0FORM=RSZ_X_COMPONENT_SET_NEWDATA=%_%_C_T_ELTXREF |
    | Table reference: 340 |
    | TABH+  0(20) = 18A31EA0F8A01EA00000000054010000390F0000 |
    | TABH+ 20(20) = BC0000004A000000FFFFFFFF04CB000028130000 |
    | TABH+ 40( 8) = 10000000C1248101 |
    | store        = 0x18A31EA0 |
    | ext1         = 0xF8A01EA0 |
    | shmId        = 0     (0x00000000) |
    | id           = 340   (0x54010000) |
    | label        = 3897  (0x390F0000) |
    | fill         = 188   (0xBC000000) |
    | leng         = 74    (0x4A000000) |
    | loop         = -1    (0xFFFFFFFF) |
    | xtyp         = TYPE#000077 |
    | occu         = 16    (0x10000000) |
    | access       = 1     (ItAccessStandard) |
    | idxKind      = 0     (ItIndexNone) |
    | uniKind      = 2     (ItUniqueNon) |
    | keyKind      = 1     (default) |
    | cmpMode      = 2     (cmpSingleMcmpR) |
    | occu0        = 1 |
    | groupCntl    = 0 |
    | rfc          = 1 |
    | unShareable  = 0 |
    | mightBeShared = 0 |
    | sharedWithShmTab = 0 |
    | isShmLockId  = 0 |
    | gcKind       = 0 |
    | isUsed       = 1 |
    | isCtfyAble   = 1 |
    | >>>>> Shareable Table Header Data <<<<< |
    | tabi         = 0xC8D53AA0 |
    | pgHook       = 0x58A31EA0 |
    | idxPtr       = 0x00000000 |
    | shmTabhSet   = 0x00000000 |
    | id           = 2921  (0x690B0000) |
    | refCount     = 0     (0x00000000) |
    | tstRefCount  = 0     (0x00000000) |
    | lineAdmin    = 432   (0xB0010000) |
    | lineAlloc    = 304   (0x30010000) |
    | shmVersId    = 0     (0x00000000) |
    | shmRefCount  = 1     (0x01000000) |
    | >>>>> 1st level extension part <<<<< |
    | regHook      = 0x00000000 |
    | collHook     = 0x00000000 |
    | ext2         = 0x98A11EA0 |
    | >>>>> 2nd level extension part <<<<< |
    | tabhBack     = 0x801720A0 |
    | delta_head   = 010000006D000000EA0000002500000004CB0000601300004A0000000100000005000000 |
    | pb_func      = 0x00000000 |
    | pb_handle    = 0x00000000 |
    | C_T_RANGE[] |
    | Table IT_3898[258x579] |
    | FUNCTION-POOL=RZX0FORM=RSZ_X_COMPONENT_SET_NEWDATA=%_%_C_T_RANGE |
    | Table reference: 345 |
    | TABH+  0(20) = B8F33AA088A31EA000000000590100003A0F0000 |
    | TABH+ 20(20) = 0201000043020000FFFFFFFF04CB0000E8140000 |
    | TABH+ 40( 8) = 10000000C1248101 |
    | store        = 0xB8F33AA0 |
    | ext1         = 0x88A31EA0 |
    | shmId        = 0     (0x00000000) |
    | id           = 345   (0x59010000) |
    | label        = 3898  (0x3A0F0000) |
    | fill         = 258   (0x02010000) |
    | leng         = 579   (0x43020000) |
    | loop         = -1    (0xFFFFFFFF) |
    | xtyp         = TYPE#000085 |
    | occu         = 16    (0x10000000) |
    | access       = 1     (ItAccessStandard) |
    | idxKind      = 0     (ItIndexNone) |
    | uniKind      = 2     (ItUniqueNon) |
    | keyKind      = 1     (default) |
    | cmpMode      = 2     (cmpSingleMcmpR) |
    | occu0        = 1 |
    | groupCntl    = 0 |
    | rfc          = 1 |
    | unShareable  = 0 |
    | mightBeShared = 0 |
    | sharedWithShmTab = 0 |
    | isShmLockId  = 0 |
    | gcKind       = 0 |
    | isUsed       = 1 |
    | isCtfyAble   = 1 |
    | >>>>> Shareable Table Header Data <<<<< |
    | tabi         = 0x580140A0 |
    | pgHook       = 0xF8F33AA0 |
    | idxPtr       = 0x00000000 |
    | shmTabhSet   = 0x00000000 |
    | id           = 2923  (0x6B0B0000) |
    | refCount     = 0     (0x00000000) |
    | tstRefCount  = 0     (0x00000000) |
    | lineAdmin    = 512   (0x00020000) |
    | lineAlloc    = 272   (0x10010000) |
    | shmVersId    = 0     (0x00000000) |
    | shmRefCount  = 1     (0x01000000) |
    | >>>>> 1st level extension part <<<<< |
    | regHook      = 0x00000000 |
    | collHook     = 0x00000000 |
    | ext2         = 0xD82C39A0 |
    | >>>>> 2nd level extension part <<<<< |
    | tabhBack     = 0x98A21EA0 |
    | delta_head   = 010000006E000000E90000002600000004CB000020150000430200000100000005000000 |
    | pb_func      = 0x00000000 |
    | pb_handle    = 0x00000000 |
    | C_T_SELECT[] |
    | Table IT_3899[239x116] |
    | FUNCTION-POOL=RZX0FORM=RSZ_X_COMPONENT_SET_NEWDATA=%_%_C_T_SELECT |
    | Table reference: 346 |
    | TABH+  0(20) = 20F53AA0E0A11EA0000000005A0100003B0F0000 |
    | TABH+ 20(20) = EF00000074000000FFFFFFFF04CB000078140000 |
    | TABH+ 40( 8) = 10000000C1248101 |
    | store        = 0x20F53AA0 |
    | ext1         = 0xE0A11EA0 |
    | shmId        = 0     (0x00000000) |
    | id           = 346   (0x5A010000) |
    | label        = 3899  (0x3B0F0000) |
    | fill         = 239   (0xEF000000) |
    | leng         = 116   (0x74000000) |
    | loop         = -1    (0xFFFFFFFF) |
    | xtyp         = TYPE#000083 |
    | occu         = 16    (0x10000000) |
    | access       = 1     (ItAccessStandard) |
    | idxKind      = 0     (ItIndexNone) |
    | uniKind      = 2     (ItUniqueNon) |
    | keyKind      = 1     (default) |
    | cmpMode      = 2     (cmpSingleMcmpR) |
    | occu0        = 1 |
    | groupCntl    = 0 |
    | rfc          = 1 |
    | unShareable  = 0 |
    | mightBeShared = 0 |
    | sharedWithShmTab = 0 |
    | isShmLockId  = 0 |
    | gcKind       = 0 |
    | isUsed       = 1 |
    | isCtfyAble   = 1 |
    | >>>>> Shareable Table Header Data <<<<< |
    | tabi         = 0x202D39A0 |
    | pgHook       = 0x60F53AA0 |
    | idxPtr       = 0x00000000 |
    | shmTabhSet   = 0x00000000 |
    | id           = 2925  (0x6D0B0000) |
    | refCount     = 0     (0x00000000) |
    | tstRefCount  = 0     (0x00000000) |
    | lineAdmin    = 432   (0xB0010000) |
    | lineAlloc    = 304   (0x30010000) |
    | shmVersId    = 0     (0x00000000) |
    | shmRefCount  = 1     (0x01000000) |
    | >>>>> 1st level extension part <<<<< |
    | regHook      = 0x00000000 |
    | collHook     = 0x00000000 |
    | ext2         = 0x98F43AA0 |
    | >>>>> 2nd level extension part <<<<< |
    | tabhBack     = 0xD8A21EA0 |
    | delta_head   = 010000006F000000CD0000000200000004CB0000B0140000740000000100000005000000 |
    | pb_func      = 0x00000000 |
    | pb_handle    = 0x00000000 |
    | C_T_UID_SERVER[] |
    | Table IT_3900[2x50] |
    | FUNCTION-POOL=RZX0FORM=RSZ_X_COMPONENT_SET_NEWDATA=%_%_C_T_UID_SERVER |
    | Table reference: 347 |
    | TABH+  0(20) = 60F33AA0D8F53AA0000000005B0100003C0F0000 |
    | TABH+ 20(20) = 0200000032000000FFFFFFFF04CB0000A8160000 |
    | TABH+ 40( 8) = 02000000C1248101 |
    | store        = 0x60F33AA0 |
    | ext1         = 0xD8F53AA0 |
    | shmId        = 0     (0x00000000) |
    | id           = 347   (0x5B010000) |
    | label        = 3900  (0x3C0F0000) |
    | fill         = 2     (0x02000000) |
    | leng         = 50    (0x32000000) |
    | loop         = -1    (0xFFFFFFFF) |
    | xtyp         = TYPE#000093 |
    | occu         = 2     (0x02000000) |
    | access       = 1     (ItAccessStandard) |
    | idxKind      = 0     (ItIndexNone) |
    | uniKind      = 2     (ItUniqueNon) |
    | keyKind      = 1     (default) |
    | cmpMode      = 2     (cmpSingleMcmpR) |
    | occu0        = 1 |
    | groupCntl    = 0 |
    | rfc          = 1 |
    | unShareable  = 0 |
    | mightBeShared = 0 |
    | sharedWithShmTab = 0 |
    | isShmLockId  = 0 |
    | gcKind       = 0 |
    | isUsed       = 1 |
    | isCtfyAble   = 1 |
    | >>>>> Shareable Table Header Data <<<<< |
    | tabi         = 0xE8F23AA0 |
    | pgHook       = 0x00000000 |
    | idxPtr       = 0x00000000 |
    | shmTabhSet   = 0x00000000 |
    | id           = 2930  (0x720B0000) |
    | refCount     = 0     (0x00000000) |
    | tstRefCount  = 0     (0x00000000) |
    | lineAdmin    = 2     (0x02000000) |
    | lineAlloc    = 2     (0x02000000) |
    | shmVersId    = 0     (0x00000000) |
    | shmRefCount  = 1     (0x01000000) |
    | >>>>> 1st level extension part <<<<< |
    | regHook      = 0x00000000 |
    | collHook     = 0x00000000 |
    | ext2         = 0x90F53AA0 |
    | >>>>> 2nd level extension part <<<<< |
    | tabhBack     = 0xE0F43AA0 |
    | delta_head   = 0100000070000000C50000000A00000004CB0000E0160000320000000100000005000000 |
    | pb_func      = 0x00000000 |
    | pb_handle    = 0x00000000 |
    | C_T_VAR[] |
    | Table IT_3901[2x644] |
    | FUNCTION-POOL=RZX0FORM=RSZ_X_COMPONENT_SET_NEWDATA=%_%_C_T_VAR |
    | Table reference: 348 |
    | TABH+  0(20) = A0F63AA080F63AA0000000005C0100003D0F0000 |
    | TABH+ 20(20) = 0200000084020000FFFFFFFF04CB000038160000 |
    | TABH+ 40( 8) = 10000000C1248101 |
    | store        = 0xA0F63AA0 |
    | ext1         = 0x80F63AA0 |
    | shmId        = 0     (0x00000000) |
    | id           = 348   (0x5C010000) |
    | label        = 3901  (0x3D0F0000) |
    | fill         = 2     (0x02000000) |
    | leng         = 644   (0x84020000) |
    | loop         = -1    (0xFFFFFFFF) |
    | xtyp         = TYPE#000091 |
    | occu         = 16    (0x10000000) |
    | access       = 1     (ItAccessStandard) |
    | idxKind      = 0     (ItIndexNone) |
    | uniKind      = 2     (ItUniqueNon) |
    | keyKind      = 1     (default) |
    | cmpMode      = 2     (cmpSingleMcmpR) |
    | occu0        = 1 |
    | groupCntl    = 0 |
    | rfc          = 1 |
    | unShareable  = 0 |
    | mightBeShared = 0 |
    | sharedWithShmTab = 0 |
    | isShmLockId  = 0 |
    | gcKind       = 0 |
    | isUsed       = 1 |
    | isCtfyAble   = 1 |
    | >>>>> Shareable Table Header Data <<<<< |
    | tabi         = 0xB8DD42A0 |
    | pgHook       = 0x00000000 |
    | idxPtr       = 0x00000000 |
    | shmTabhSet   = 0x00000000 |
    | id           = 2926  (0x6E0B0000) |
    | refCount     = 0     (0x00000000) |
    | tstRefCount  = 0     (0x00000000) |
    | lineAdmin    = 16    (0x10000000) |
    | lineAlloc    = 16    (0x10000000) |
    | shmVersId    = 0     (0x00000000) |
    | shmRefCount  = 1     (0x01000000) |
    | >>>>> 1st level extension part <<<<< |
    | regHook      = 0x00000000 |
    | collHook     = 0x00000000 |
    | ext2         = 0x38F63AA0 |
    | >>>>> 2nd level extension part <<<<< |
    | tabhBack     = 0xF8F53AA0 |
    | delta_head   = 0100000071000000EC0000002300000004CB000070160000840200000100000005000000 |
    | pb_func      = 0x00000000 |
    | pb_handle    = 0x00000000 |
    | %_DUMMY$$ |
    |  |
    | 2222 |
    | 0000 |
    | SY-REPID |
    | SAPLRZX0 |
    | 5454555322222222222222222222222222222222 |
    | 310C2A8000000000000000000000000000000000 |
    | <L_TRACE_MAX_MESSAGE_TYPE> |
    | ??? |
    | ?????? |
    | ?????? |
    | SYST |
    | 4###########################################################################y################# |
    | 3000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000 |
    | 400000000000800000000000A000000000000000000010001000000010000000000000000000900000000000000000 |
    | G_CS_UID_LOOKUP_WRONG_DEFTP |
    | ####ER9                  171 |
    | 1000453222222222222222222333 |
    | C000529000000000000000000171 |
    | G_CS_ELEMENT_LOCKED |
    | ####ER9                  113 |
    | 0000453222222222222222222333 |
    | D000529000000000000000000113 |
    | L_R_FUNCTION_MODULE_EXCEPTION |
    |
    1000E000
    A0005000
    SPACE
    2
    0
    L_TRACE_MAX_MESSAGE_TYPE
    2
    0
    SY-ONCOM
    X
    5
    8
    %_SPACE
    2
    0
    No.       3 Ty.          FORM
    Name  RSZ_X_COMPONENT_SET_NEW
    CL_RSTT_TRACE=>N_R_TRACEREF
    F0000000
    F0000000
    RSBBS_C_TYPE-ABAP_QUERY
    A
    4
    1
    %_%_I_QD_VERSION
    700
    33322
    70000
    %_%_I_COMPUID
    F3IH9GRA1X9X7DRPIYFPE1QP7
    4344345435353455454543553
    6398972118987420996051107
    %_%_I_COPY_MODE
    2
    0
    CL_GUI_TEXTEDIT=>ABAP_COMMENTLINE_IDENTIFIER
    %_%_I_LANGUAGE
    S
    5
    3
    %_%_I_NODE
    0000000000
    3333333333
    0000000000
    %_%_I_NO_TRANSPORT
    2
    0
    %_%_I_OBJVERS
    A
    4
    1
    %_%_I_ROLE
    222222222222222222222222222222
    000000000000000000000000000000
    G_CS_NO_IOBJ_F4_AVAILABLE
    ####SR9                  103
    0000553222222222222222222333
    8000329000000000000000000103
    %_%_E_GENUNIID
    2222222222222222222222222
    0000000000000000000000000
    CL_GUI_TEXTEDIT=>BOOL_INITIAL
    %_%_E_SUBRC
    0
    0000
    0000
    %_%_C_T_CALC
    Table IT_3889[5x158]
    %_%_C_T_CELL
    Table IT_3890[0x76]
    %_%_C_T_COMPDIR
    Table IT_3891[7x169]
    %_%_C_T_COMPIC
    Table IT_3892[5x81]
    %_%_C_T_ELTATTR
    Table IT_3893[0x124]
    CL_BSP_MESSAGES=>CO_SEVERITY_ERROR
    %_%_C_T_ELTDIR
    Table IT_3894[98x203]
    %_%_C_T_ELTPRIO
    Table IT_3895[77x150]

    Hi Gaurav 
    I already locked for a OSS note, but i could not find the answer
    Please, Could you tell me how you solve the problem?
    Thanks
    Ariel

  • Problem with the control break statement  - AT END OF

    data : IT_DATA   TYPE STANDARD TABLE OF /BIC/OH0SPA_OHD WITH  KEY /B28/S_D1DVOX5 ,
    FIELD-SYMBOLS :   <ls_data> TYPE any,
    SELECT * FROM (c_open_hub) INTO TABLE IT_DATA .
    *IF sy-subrc = 0.
    *ENDIF.
    Create the GUID for header
    CALL FUNCTION 'GUID_CREATE'
      IMPORTING
        EV_GUID_32 = LV_GUID.
    TRY.
        CALL METHOD CL_GDT_CONVERSION=>GUID_OUTBOUND
          EXPORTING
            IM_GUID_C = LV_GUID
          IMPORTING
            EX_VALUE  = LV_UUID.
      CATCH CX_GDT_CONVERSION  INTO go_exc .
        gv_text = go_exc->get_text( ).
    Application log for errors
        IF gv_text IS NOT INITIAL.
          PERFORM add_msg_to_log CHANGING lt_return.
          CALL FUNCTION '/SPA/APPL_LOG'
            EXPORTING
              LV_OBJECT    = '/SPA/APPL'
              LV_SUBOBJECT = '/SPA/ESOA'
              IT_RETURN    = lt_return.
        ENDIF.
    ENDTRY.
    OUTPUT-TRADE_PROMOTION_CRMBULK_CREATE-MESSAGE_HEADER-ID-CONTENT = LV_GUID.
    OUTPUT-TRADE_PROMOTION_CRMBULK_CREATE-MESSAGE_HEADER-UUID-CONTENT = LV_UUID.
    SELECT * FROM DD03T INTO TABLE lt_dd03t WHERE TABNAME = c_open_hub AND DDLANGUAGE = 'E' AND AS4LOCAL = 'A'.
    *IF sy-subrc = 0.
    *ENDIF.
    Sort the delta table
    SORT it_data.
    populate the output structure
    LOOP AT IT_DATA ASSIGNING <ls_data>.
    READ TABLE lt_dd03t INTO ls_dd03t with KEY DDTEXT = c_keyfigures.
    ASSIGN COMPONENT ls_dd03t-FIELDNAME OF STRUCTURE <ls_data> to <l_keyfigures>.
    READ TABLE lt_dd03t INTO ls_dd03t with KEY DDTEXT = c_signdata.
    ASSIGN COMPONENT ls_dd03t-FIELDNAME OF STRUCTURE <ls_data> to <l_signdata>.
    READ TABLE lt_dd03t INTO ls_dd03t with KEY DDTEXT = c_bbtype.
    ASSIGN COMPONENT ls_dd03t-FIELDNAME OF STRUCTURE <ls_data> to <l_bbtype>.
    READ TABLE lt_dd03t INTO ls_dd03t with KEY DDTEXT = c_customer.
    ASSIGN COMPONENT ls_dd03t-FIELDNAME OF STRUCTURE <ls_data> to <l_customer>.
    READ TABLE lt_dd03t INTO ls_dd03t with KEY DDTEXT = c_product.
    ASSIGN COMPONENT ls_dd03t-FIELDNAME OF STRUCTURE <ls_data> to <l_product>.
    READ TABLE lt_dd03t INTO ls_dd03t with KEY DDTEXT = c_territory.
    ASSIGN COMPONENT ls_dd03t-FIELDNAME OF STRUCTURE <ls_data> to <l_territory>.
    READ TABLE lt_dd03t INTO ls_dd03t with KEY DDTEXT = c_time.
    ASSIGN COMPONENT ls_dd03t-FIELDNAME OF STRUCTURE <ls_data> to <l_time>.
      CASE <l_keyfigures>.
        WHEN c_sd.
          PERFORM DATE_CALC USING <l_signdata> CHANGING  LV_DATE.
          ls_period_term-start_date = lv_date.
        WHEN c_ed.
          PERFORM DATE_CALC USING <l_signdata> CHANGING  LV_DATE.
          ls_period_term-end_date = lv_date.
        WHEN c_uplift.
          LS_PRODUCT_KF-ID-CONTENT = c_uplift_qyts.
          LS_PRODUCT_KF-VALUE = <l_signdata>.
         LS_PRODUCT_KF-YEAR = lv_week(4).
         LS_PRODUCT_KF-CALENDAR_PERIOD_ORDINAL_NUMBER = lv_week+4.
          APPEND LS_PRODUCT_KF TO LT_PRODUCT_KF.
        WHEN OTHERS.
        PERFORM DATE_CALC USING <l_signdata> CHANGING  LV_DATE.
         ls_period_term-start_date = lv_date.
    Get week
         CALL FUNCTION 'DATE_GET_WEEK'
           EXPORTING
             DATE = LS_PERIOD_TERM-START_DATE
           IMPORTING
             WEEK = LV_WEEK.
    append Keyfigure
          LS_PRODUCT_KF-ID-CONTENT = <l_keyfigures> .
          LS_PRODUCT_KF-VALUE = <l_signdata>.
         LS_PRODUCT_KF-YEAR = lv_week(4).
         LS_PRODUCT_KF-CALENDAR_PERIOD_ORDINAL_NUMBER = lv_week+4.
          APPEND LS_PRODUCT_KF TO LT_PRODUCT_KF.
    append tradespend
          SELECT SINGLE * FROM /SPA/SPEND_MAP INTO CORRESPONDING FIELDS OF LV_/SPA/SPEND_MAP
                 WHERE KEY_FIGURE = <l_keyfigures>.
          IF sy-subrc = 0.
            LS_TRADE_SPEND-TYPE_CODE-CONTENT = LV_/SPA/SPEND_MAP-SPEND_TYPE.
            LS_TRADE_SPEND-CATEGORY_CODE-CONTENT = LV_/SPA/SPEND_MAP-SPEND_CATEGORY.
            LS_TRADE_SPEND-METHOD_CODE-CONTENT = LV_/SPA/SPEND_MAP-SPEND_METHOD.
            APPEND LS_TRADE_SPEND TO LT_TRADE_SPEND.
          else.
            lv_flg = 'X'.
          ENDIF.
      ENDCASE.
    AT END OF /B28/S_D1DVOX5.   "
        SELECT SINGLE * FROM  /SPA/SO_TER_MAP INTO LS_/SPA/SO_TER_MAP WHERE TERRITORY = <l_territory>.
        IF sy-subrc = 0 AND lv_flg IS INITIAL.
    Create the GUID for TP's
          CALL FUNCTION 'GUID_CREATE'
            IMPORTING
              EV_GUID_32 = LV_GUID_MESSAGE.
          TRY.
              CALL METHOD CL_GDT_CONVERSION=>GUID_OUTBOUND
                EXPORTING
                  IM_GUID_C = LV_GUID_MESSAGE
                IMPORTING
                  EX_VALUE  = LV_UUID_MESSAGE.
            CATCH CX_GDT_CONVERSION .
          ENDTRY.
    populate the product
          LS_PRODUCT-ID-CONTENT = <l_product>.
          LS_CUSTOMER-ID-CONTENT = '300022'.
          LS_CUSTOMER-ROLE_CODE = '00000105'.
          LS_PRODUCT-KEY_FIGURE = LT_PRODUCT_KF.
          APPEND LS_PRODUCT TO LT_PRODUCT.
          APPEND LS_CUSTOMER TO LT_CUSTOMER.
          APPEND LS_DESCRIPTION TO LT_DESCRIPTION.
          APPEND LS_PERIOD_TERM TO LT_PERIOD_TERM.
          LS_TRADE_PROMOTION-TRADE_PROMOTION-SALES_AREA-ORGANISATIONAL_CENTRE_ID = LS_/SPA/SO_TER_MAP-SALES__ORG.
          LS_TRADE_PROMOTION-TRADE_PROMOTION-SALES_AREA-DISTRIBUTION_CHANNEL_CODE-CONTENT = LS_/SPA/SO_TER_MAP-DIST_CHANNEL.
          LS_TRADE_PROMOTION-TRADE_PROMOTION-PLANNING_ACCOUNT-CUSTOMER_INTERNAL_ID = <l_customer>.
          LS_TRADE_PROMOTION-TRADE_PROMOTION-PLANNING_PROFILE_GROUP_CODE-CONTENT = '4TPM'.
          LS_TRADE_PROMOTION-TRADE_PROMOTION-TYPE_CODE-CONTENT = 'Z002'.
          LS_TRADE_PROMOTION-TRADE_PROMOTION-UPLIFT_ACTIVE_INDICATOR = 'X'.
          LS_TRADE_PROMOTION-TRADE_PROMOTION-PLANNING_INFORMATION-MARKETING_PROJECT_PLANNING_PRO = '5'.
          LS_TRADE_PROMOTION-TRADE_PROMOTION-PLANNING_INFORMATION-CALENDAR_UNIT_CODE = 'WEE'.
          LS_TRADE_PROMOTION-TRADE_PROMOTION-TRADE_SPEND = LT_TRADE_SPEND.
          LS_TRADE_PROMOTION-TRADE_PROMOTION-PARTY = LT_CUSTOMER.
          LS_TRADE_PROMOTION-TRADE_PROMOTION-DESCRIPTION = LT_DESCRIPTION.
          LS_TRADE_PROMOTION-TRADE_PROMOTION-PLANNING_INFORMATION-PRODUCT = LT_PRODUCT.
          LS_TRADE_PROMOTION-TRADE_PROMOTION-PERIOD_TERM = LT_PERIOD_TERM.
          LS_TRADE_PROMOTION-MESSAGE_HEADER-ID-CONTENT = LV_GUID_MESSAGE.
          LS_TRADE_PROMOTION-MESSAGE_HEADER-UUID-CONTENT = LV_UUID_MESSAGE.
          LS_/SPA/REPORT_TAB-SPA_TP_ID = <l_bbtype>.
          LS_/SPA/REPORT_TAB-MESSAGE_ID = LV_GUID_MESSAGE.
          LS_/SPA/REPORT_TAB-CREATE_DATE = SY-DATUM.
          INSERT /SPA/REPORT_TAB FROM LS_/SPA/REPORT_TAB.
          APPEND LS_TRADE_PROMOTION TO LT_TRADE_PROMOTION.
          OUTPUT-TRADE_PROMOTION_CRMBULK_CREATE-TRADE_PROMOTION_CRMCREATE_REQU = LT_TRADE_PROMOTION.
          CLEAR : LT_DESCRIPTION, LT_PERIOD_TERM,LT_CUSTOMER, LT_PRODUCT, LT_PRODUCT_KF, LT_TRADE_SPEND,LS_/SPA/HEADER_TAB.
        ENDIF.
        CLEAR lv_flg .
      ENDAT.
    ENDLOOP.
    My problem is AT-END OF STATEMENT IS executing for each and every record of same /B28/S_D1DVOX5.
    Please help me from this problem

    Hello,
    First of all to know clearly about AT END.
    Let's say In IT_DATA fields are F1 F2 F3 /B28/S_D1DVOX5 F5.
    then AT END of /B28/S_D1DVOX5 means for each new value of this field at the end it will trigger.
    Please ensure thet IT_DATA is sorted by this field and then used Control break.
    Thanks,
    Pramod

  • SY-DATUM ISSUE.....

    Hi All,
    When I write the statement like this: WRITE: /1 sy-datum, its printing the date 01/28/2008, but my requirement is I wanted to print like this: 01/28/08, how to do please let me know.
    Akshitha.

    Hi,
    ther are many options. but uthis case if u change the user master record.or select the date format in table usr01.
    the hard coating is not at all god and it also have limitation .
    this function module also helps u.
    CONVERT_DATE_TO_EXTERNAL Converts date from system storage format to users specified display format
    let me know if u are not able to get it.
    reward all help full answers
    /: SET DATE MASK = 'date_mask'
    In the date mask, you can use the following codes:
    DD: day (two digits)
    DDD: day name - abbreviated
    DDDD: day name - written out in full
    MM: month (two digits)
    MMM: month name - abbreviated
    MMMM: month name - written out in full
    YY: year (two digits)
    YYYY: year (four digits)
    LD: day (formatted as for the L option)
    LM: month (formatted as for the L option)
    LY: year (formatted as for the L option)
    Assuming the current system date is March 1st, 1997.
    /: SET DATE MASK = 'Foster City, MM/DD/YY'
    &DATE& -> Foster City, 03/01/97
    /: SET DATE MASK = 'MMMM DD, YYYY'
    &DATE& -> March 01, 1997
    The date mask may be reset to the default setting by using an empty string:
    /: SET DATE MASK = ' '
    In most print programs there is a function module called as below.
    By setting the export parameter PI_COUNTRY one can set the form to print all dates according to country without any further coding.
    CALL FUNCTION 'WFMC_PREPARE_SMART_FORM'
    EXPORTING
    PI_NAST = NAST
    PI_COUNTRY = IS_DLV-LAND
    PI_ADDR_KEY = IS_ADDR_KEY
    PI_REPID = LF_REPID
    PI_SCREEN = XSCREEN
    IMPORTING
    PE_RETURNCODE = CF_RETCODE
    PE_ITCPO = LS_ITCPO
    PE_DEVICE = LF_DEVICE
    PE_RECIPIENT = CS_RECIPIENT
    PE_SENDER = CS_SENDER.
    or
    If the input is always in the format DD.MM.YYYY..Then check this..
    Use the sub field operation to get the values and then use concanate..
    Ex.
    DATA: V_INPUT(10) VALUE '27.03.2007'.
    DATA: V_OUTPUT(10).
    CONCATENATE V_INPUT3(2) '/' V_INPUT(2) '/' V_INPUT6(4)
    INTO V_OUTPUT.
    WRITE: / V_OUTPUT.
    or
    You can use function module CONVERSION_EXIT_SDATE_OUTPUT to convert the date format
    If your problem is solved please set the question as answered.
    Regards,
    Chandru

  • Problem in Loop

    Hi All,
    I am using the step type LOOP UNTIL in my workflow..
    I am using 2 container elements to check and will send a reminder to the
    possible agent when the condition is true..
    i will explain my problem using a scenario..
    i have a container lt_end = sy-datum + 20...so it has a value 20.03.2007
    and another container td_date = sy-datum...
    so using these 2 variables i loop using condition
    loop until lt_end = td_date..
    and when this condition is true i should send a mail..
    but it is goin in an infinite loop..and creating 1000's of reminder workitems...
    So i wanted to know how to compare <b>Dates in the loop</b>
    Thanks,
    Ravikiran

    Hi Ravikiran,
    I faced the same problem in one of my project. i explain what is my scenario and how i solved it.
    Scenario:
    A complaint is created in the crm and that is assigned to a 'assigned to' person, at this point i have to send a mail to this 'assigned to' person saying workitem is bending.
    If the person is not acting on that workitem for first four hours i have send a mail to his manager, and i have to send a notification to the manager for every 24 hrs if the person is not acting on that workitem.
    Solution:
    Remember this, in this kind of scenario you have to use 'REQUESTED START' the workitem will be place in the inbox when the deadline is reached.
    So i did like this, in the date field i gave sy-datum and in the time i gave sy-uzeit
    and i added 4 hours so when ever the workflow comes to this step if waits for 4 hours and then it sends the mail. I followed the same for 24 hours.
    I think the answer will be useful. give me your email id so that i can send you the screen shot.
    Give me points if this answer solves your problem.
    Regards
    Balaji E.

  • Problem in ALV report

    Hi Friends,
    I have the following 2 problems in ALV report
    1) Logo is not getting displayed in the report.
    2) When i click on the Purchase order number in the report  the interactive report is not working,i am not able to see report of First interactive level.
    can you help it out friends.
    Thanks and regards
    Dinesh
    REPORT  YSDBALV1
    tables: ekko , ekpo .
    type-pools: slis .
    Table for Display Header
    data:i_header type slis_t_listheader with header line.
    *Fieldcat Declaration
    data:fieldcatalog type slis_T_fieldcat_alv  WITH HEADER LINE.
    *Table of Events
    data:i_event type slis_t_event with header line .
    For Layout
    data:i_layout type slis_layout_alv .
    data: text(30) .
    *Internal Table Declaration
    data: begin of it_final occurs 0 ,
          ebeln like ekko-ebeln ,           "Purchasing Document No.
          bedat like ekko-bedat ,           "Purchasing Document Date
          matnr like ekpo-matnr ,           "Material No.
          netwr like ekpo-netwr ,         "Net Order Value in PO Currancy
          meins like ekpo-meins ,           "UOM
          chk(1) ,
          light(1) ,
          change like ekpo-menge ,
          end of it_final .
    **select option Declaration
    selection-screen begin of block block.
    select-options: s_ebeln for ekko-ebeln  .
    selection-screen end of block block .
    selection-screen begin of block block1 .
    parameters:grid radiobutton group r .
    parameters:list radiobutton group r .
    selection-screen end of block block1 .
    at selection screen
    at selection-screen .
    select single * from ekko where ebeln in s_ebeln .
    if sy-subrc <> 0 .
       message e000(8I) WITH 'No Data Exists' .
    endif .
    start-of-selection .
    if grid = 'X' .
    perform get_data .
    perform event using i_event[] .
    perform field using fieldcatalog[] .
    perform layout using i_layout .
    perform grid_display .
    endif .
    *&      Form  get_data
          text
    -->  p1        text
    <--  p2        text
    form get_data .
    *DATA Retrieval from tables
    SELECT EKKO~EBELN
           EKKO~BEDAT
           EKPO~EBELP
           EKPO~MATNR
           EKPO~NETWR
           EKPO~MEINS
           EKPO~MENGE
           EKPO~BPRME
           INTO CORRESPONDING FIELDS OF  table IT_FINAL
           FROM EKKO INNER JOIN EKPO ON EKKOEBELN = EKPOEBELN
           WHERE EKKO~EBELN IN S_EBELN.
           APPEND IT_FINAL.
    endform.                    " get_data
    *Getting the Event for Top of Page display.
    *&      Form  event
          text
         -->P_I_event[]  text
    form event  using    p_i_event type slis_t_event.
      clear p_i_event .
      refresh p_i_event .
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
       I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = p_i_event
    EXCEPTIONS
       LIST_TYPE_WRONG       = 1
       OTHERS                = 2
    read table p_i_event with key name = slis_ev_top_of_page into i_event.
          if sy-subrc = 0.
                 move 'TOP_OF_PAGE_PO' to i_event-form.
                 modify p_i_event from i_event index sy-tabix transporting form.
          endif.
          clear i_event.
    endform.                    " event
    *Display Top-of –Page Details and Logo
    form top_of_page_po .
           clear i_header .
           refresh i_header .
           write sy-datum to text.
           i_header-typ = 'H'.
           i_header-info = 'PURCHASE OREDER DETAILS'.
           append i_header.
          *Logo Display
          CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
                 EXPORTING
                     it_list_commentary       = i_header[]
                     I_LOGO                   = 'ENJOYSAPLOGO'.
    endform .
    *Field Catalog Append
    *&      Form  field
          text
         -->P_fieldCATALOG[]  text
    form field using  p_fieldcatalog type slis_t_fieldcat_alv.
         clear fieldcatalog.
          fieldcatalog-fieldname   = 'EBELN'.
          fieldcatalog-seltext_m   = 'Purchase Order No'.
          fieldcatalog-col_pos     = 1.
          append fieldcatalog .
          clear fieldcatalog.
          fieldcatalog-fieldname   = 'BEDAT'.
          fieldcatalog-seltext_m   = 'PO Date'.
          fieldcatalog-col_pos     = 2.
          append fieldcatalog .
          clear fieldcatalog.
          fieldcatalog-fieldname   = 'MATNR'.
          fieldcatalog-seltext_m   = 'Material No'.
          fieldcatalog-col_pos     = 4.
          fieldcatalog-outputlen   = 20.
          append fieldcatalog .
          clear fieldcatalog.
          fieldcatalog-fieldname   = 'NETWR'.
          fieldcatalog-seltext_m   = 'Net Value '.
          fieldcatalog-col_pos     = 5.
          fieldcatalog-outputlen   = 20.
          fieldcatalog-do_sum = 'X'.
          append fieldcatalog .
          clear fieldcatalog.
          fieldcatalog-fieldname   = 'MEINS'.
          fieldcatalog-seltext_m   = 'Units'.
          fieldcatalog-col_pos     = 6.
          fieldcatalog-outputlen   = 4.
          append fieldcatalog .
          clear fieldcatalog.
    endform.                    " field
    *&      Form  layout
          text
    form layout  using    p_i_layout TYPE SLIS_LAYOUT_ALV .
    i_layout-zebra  = 'X'.
        i_layout-lights_fieldname = 'LIGHT'.
        i_layout-lights_tabname = 'IT_FINAL'.
        i_layout-box_fieldname = 'CHK'.
        i_layout-box_tabname  = 'IT_FINAL'.
        i_layout-edit = ' '.
    endform.
    *To display Buttons in the MENU BAR if needed
    FORM SET_PO_PF_STATUS USING  P_I_EXTAB TYPE
                     SLIS_T_EXTAB.
                     SET PF-STATUS 'MENUPO'.
      ENDFORM.
    *Event for Interactive display of ALV report
    form USER_COMMAND  using r_ucomm like sy-ucomm
                             rs_selfield type slis_selfield .
      if r_ucomm = '&IC1'.
      READ TABLE IT_FINAL  index   rs_selfield-tabindex.
      write:/ IT_FINAL-ebeln.
      endif.
    endform .
    *Parameters of FM  REUSE_ALV_GRID_DISPLAY
    *&      Form  grid_display
          text
    -->  p1        text
    <--  p2        text
    form grid_display .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        I_CALLBACK_PROGRAM                = SY-REPID
       I_CALLBACK_PF_STATUS_SET          = 'SET_PO_PF_STATUS'
        I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
        IS_LAYOUT                         = I_LAYOUT
        IT_FIELDCAT                       = FIELDCATALOG[]
        IT_EVENTS                         = I_EVENT[]
      TABLES
        t_outtab                          = IT_FINAL.
    endform.                    " grid_display

    *& Report  YSDBALV1
    REPORT  YSDBALV1.
    tables: ekko , ekpo .
    type-pools: slis .
    Table for Display Header
    data:i_header type slis_t_listheader with header line.
    *Fieldcat Declaration
    data:fieldcatalog type slis_T_fieldcat_alv WITH HEADER LINE.
    *Table of Events
    data:i_event type slis_t_event with header line ,
         wa_event type line of slis_t_event.
    For Layout
    data:i_layout type slis_layout_alv .
    data: text(30) .
    *Internal Table Declaration
    data: begin of it_final occurs 0 ,
    ebeln like ekko-ebeln , "Purchasing Document No.
    bedat like ekko-bedat , "Purchasing Document Date
    matnr like ekpo-matnr , "Material No.
    netwr like ekpo-netwr , "Net Order Value in PO Currancy
    meins like ekpo-meins , "UOM
    chk(1) ,
    light(1) ,
    change like ekpo-menge ,
    end of it_final .
    **select option Declaration
    selection-screen begin of block block.
    select-options: s_ebeln for ekko-ebeln .
    selection-screen end of block block .
    selection-screen begin of block block1 .
    parameters:grid radiobutton group r .
    parameters:list radiobutton group r .
    selection-screen end of block block1 .
    at selection screen
    at selection-screen .
    select single * from ekko where ebeln in s_ebeln .
    if sy-subrc <> 0 .
    message e000(8I) WITH 'No Data Exists' .
    endif .
    start-of-selection .
    if grid = 'X' .
    perform get_data .
    perform event using i_event[] .
    perform field using fieldcatalog[] .
    perform layout using i_layout .
    perform grid_display .
    endif .
    *& Form get_data
    text
    --> p1 text
    <-- p2 text
    form get_data .
    *DATA Retrieval from tables
    SELECT EKKO~EBELN
    EKKO~BEDAT
    EKPO~EBELP
    EKPO~MATNR
    EKPO~NETWR
    EKPO~MEINS
    EKPO~MENGE
    EKPO~BPRME
    INTO CORRESPONDING FIELDS OF table IT_FINAL
    FROM EKKO INNER JOIN EKPO ON EKKOEBELN = EKPOEBELN
    WHERE EKKO~EBELN IN S_EBELN.
    APPEND IT_FINAL.
    endform. " get_data
    *Getting the Event for Top of Page display.
    *& Form event
    text
    -->P_I_event[] text
    form event using p_i_event type slis_t_event.
    clear p_i_event .
    refresh p_i_event .
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    I_LIST_TYPE = 0
    IMPORTING
    ET_EVENTS = p_i_event.
    EXCEPTIONS
    LIST_TYPE_WRONG = 1
    OTHERS = 2.
    read table p_i_event with key name = slis_ev_top_of_page into wa_event.
    if sy-subrc = 0.
    move 'TOP_OF_PAGE_PO' to i_event-form.
    modify p_i_event from i_event index sy-tabix transporting form.
    endif.
    clear i_event.
    endform. " event
    *Display Top-of –Page Details and Logo
    form top_of_page_po .
    clear i_header .
    refresh i_header .
    write sy-datum to text.
    i_header-typ = 'H'.
    i_header-info = 'PURCHASE OREDER DETAILS'.
    append i_header.
    *Logo Display
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    it_list_commentary = i_header[]
    I_LOGO = 'ENJOYSAP_LOGO'.
    endform .
    *Field Catalog Append
    *& Form field
    text
    -->P_fieldCATALOG[] text
    form field using p_fieldcatalog type slis_t_fieldcat_alv.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'EBELN'.
    fieldcatalog-seltext_m = 'Purchase Order No'.
    fieldcatalog-col_pos = 1.
    append fieldcatalog .
    clear fieldcatalog.
    fieldcatalog-fieldname = 'BEDAT'.
    fieldcatalog-seltext_m = 'PO Date'.
    fieldcatalog-col_pos = 2.
    append fieldcatalog .
    clear fieldcatalog.
    fieldcatalog-fieldname = 'MATNR'.
    fieldcatalog-seltext_m = 'Material No'.
    fieldcatalog-col_pos = 4.
    fieldcatalog-outputlen = 20.
    append fieldcatalog .
    clear fieldcatalog.
    fieldcatalog-fieldname = 'NETWR'.
    fieldcatalog-seltext_m = 'Net Value '.
    fieldcatalog-col_pos = 5.
    fieldcatalog-outputlen = 20.
    fieldcatalog-do_sum = 'X'.
    append fieldcatalog .
    clear fieldcatalog.
    fieldcatalog-fieldname = 'MEINS'.
    fieldcatalog-seltext_m = 'Units'.
    fieldcatalog-col_pos = 6.
    fieldcatalog-outputlen = 4.
    append fieldcatalog .
    clear fieldcatalog.
    endform. " field
    *& Form layout
    text
    form layout using p_i_layout TYPE SLIS_LAYOUT_ALV .
    i_layout-zebra = 'X'.
    i_layout-lights_fieldname = 'LIGHT'.
    i_layout-lights_tabname = 'IT_FINAL'.
    i_layout-box_fieldname = 'CHK'.
    i_layout-box_tabname = 'IT_FINAL'.
    i_layout-edit = ' '.
    endform.
    *To display Buttons in the MENU BAR if needed
    FORM SET_PO_PF_STATUS USING P_I_EXTAB TYPE
    SLIS_T_EXTAB.
    SET PF-STATUS 'MENUPO'.
    ENDFORM.
    *Event for Interactive display of ALV report
    form USER_COMMAND using r_ucomm like sy-ucomm
    rs_selfield type slis_selfield .
    if r_ucomm = '&IC1'.
    READ TABLE IT_FINAL index rs_selfield-tabindex.
    set parameter id 'VL1' field it_final-ebeln.
    call transaction 'ME23N'.
    endif.
    endform .
    *Parameters of FM REUSE_ALV_GRID_DISPLAY
    *& Form grid_display
    text
    --> p1 text
    <-- p2 text
    form grid_display .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = SY-REPID
    I_CALLBACK_PF_STATUS_SET = 'SET_PO_PF_STATUS'
    I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
    IS_LAYOUT = I_LAYOUT
    IT_FIELDCAT = FIELDCATALOG[]
    IT_EVENTS = I_EVENT[]
    TABLES
    t_outtab = IT_FINAL.
    endform. " grid_display
    Regards,
    Rusidar S.

  • URGENT -----  Problem in converting spool to pdf .

    Error - File cannot be opened because of no pages ......
    Hi experts,
    I am passing internal table contents to spool   -->  then spool to pdf  -
    >  then mail sending.
    Everything is fine but only error is in the receiving mail the above error is coming.
    given the code...
    <b>I think the error is in converting into pdf function module</b>
    <b>Help me to solve this problem as it is very urgent</b>
    include data_declare.       "  pasted down
    select * from kna1 into table itab up to 50 rows.
    CALL FUNCTION 'RSPO_OPEN_SPOOLREQUEST'
    EXPORTING
    dest = 'LP01'
    immediate_print = 'X'
    IMPORTING
    handle = handle
    SPOOLID = spoolid.
    loop at itab.
    concatenate itab-kunnr itab-name1 itab-land1 into text separated by
    space.
    CALL FUNCTION 'RSPO_WRITE_SPOOLREQUEST'
    EXPORTING
    handle = handle
    text =  text.
    endloop.
    CALL FUNCTION 'RSPO_CLOSE_SPOOLREQUEST'
    EXPORTING
    handle = handle.
    Convert Spool to PDF **********************************
      <b>CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
           EXPORTING
                src_spoolid              = spoolid "gd_spool_nr
                no_dialog                = c_no
                dst_device               = c_device
           IMPORTING
                pdf_bytecount            = gd_bytecount
           TABLES
                pdf                      = it_pdf_output
           EXCEPTIONS
                err_no_abap_spooljob     = 1
                err_no_spooljob          = 2
                err_no_permission        = 3
                err_conv_not_possible    = 4
                err_bad_destdevice       = 5
                user_cancelled           = 6
                err_spoolerror           = 7
                err_temseerror           = 8
                err_btcjob_open_failed   = 9
                err_btcjob_submit_failed = 10
                err_btcjob_close_failed  = 11
                OTHERS                   = 12.
      CHECK sy-subrc = 0.
    Transfer the 132-long strings to 255-long strings
      LOOP AT it_pdf_output.
        TRANSLATE it_pdf_output USING ' ~'.
        CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
      ENDLOOP.
      TRANSLATE gd_buffer USING '~ '.
      DO.
        it_mess_att = gd_buffer.
        APPEND it_mess_att.
        SHIFT gd_buffer LEFT BY 255 PLACES.
        IF gd_buffer IS INITIAL.
          EXIT.
        ENDIF.
      ENDDO.</b>
    Processing Mail Sending ************************************
      DATA: p_email LIKE somlreci1-receiver,
            p_sender LIKE somlreci1-receiver,
            sub(40).
      DESCRIBE TABLE it_mess_att LINES gd_recsize.
      CHECK gd_recsize > 0.
      REFRESH it_mess_bod.
    Default subject matter
      gd_subject         = 'Subject'.
      gd_attachment_desc = text-002.
      it_mess_bod        = text-001.
      APPEND it_mess_bod.
      IF p_sender EQ space.
        gd_sender_type  = space.
      ELSE.
        gd_sender_type  = 'INT'.
      ENDIF.
      MOVE 'Orders Rejeced on' TO sub.
      WRITE: sy-datum DD/MM/YYYY TO sub+27(10).
    Send file by email as .xls speadsheet
      PERFORM send_file_as_email_attachment
                                   TABLES it_mess_bod
                                          it_mess_att
                                    USING
                                         p_email
                                           sub                  "text-009
                                          'PDF'
                                           gd_attachment_name
                                           gd_attachment_desc
                                         p_sender
                                         gd_sender_type
                                 CHANGING gd_error
                                          gd_reciever.
    ENDFORM.                    " process_email
    *&      Form  send_file_as_email_attachment
          text
         -->P_IT_MESS_BOD  text
         -->P_IT_MESS_ATT  text
         -->P_TEXT_009  text
         -->P_1058   text
         -->P_GD_ATTACHMENT_NAME  text
         -->P_GD_ATTACHMENT_DESC  text
         <--P_GD_ERROR  text
         <--P_GD_RECIEVER  text
    FORM send_file_as_email_attachment TABLES it_message
                                              it_attach
                                        USING
                                            p_email
                                              p_mtitle
                                              p_format
                                              p_filename
                                              p_attdescription
                                            p_sender_address
                                            p_sender_addres_type
                                     CHANGING p_error
                                              p_reciever.
      DATA: ld_error    TYPE sy-subrc,
            ld_reciever TYPE sy-subrc,
            ld_mtitle LIKE sodocchgi1-obj_descr,
            ld_email LIKE  somlreci1-receiver,
            ld_format TYPE  so_obj_tp ,
            ld_attdescription TYPE  so_obj_nam ,
            ld_attfilename TYPE  so_obj_des ,
            ld_sender_address LIKE  soextreci1-receiver,
            ld_sender_address_type LIKE  soextreci1-adr_typ,
            ld_receiver LIKE  sy-subrc.
      DATA:   t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
              t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
              t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
              t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
              t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
              w_cnt TYPE i,
              w_sent_all(1) TYPE c,
              w_doc_data LIKE sodocchgi1.
    ld_email   = p_email.
      ld_mtitle = p_mtitle.
      ld_format              = p_format.
      ld_attdescription      = p_attdescription.
      ld_attfilename         = p_filename.
    ld_sender_address      = p_sender_address.
    ld_sender_address_type = p_sender_addres_type.
    Fill the document data.
      w_doc_data-doc_size = 1.
    Populate the subject/generic message attributes
      w_doc_data-obj_langu = sy-langu.
      w_doc_data-obj_name  = 'SAPRPT'.
      w_doc_data-obj_descr = ld_mtitle .
      w_doc_data-sensitivty = 'F'.
    Fill the document data and get size of attachment
      CLEAR w_doc_data.
      READ TABLE it_attach INDEX w_cnt.
      w_doc_data-doc_size =
         ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
      w_doc_data-obj_langu  = sy-langu.
      w_doc_data-obj_name   = 'SAPRPT'.
      w_doc_data-obj_descr  = ld_mtitle.
      w_doc_data-sensitivty = 'F'.
      CLEAR t_attachment.
      REFRESH t_attachment.
      t_attachment[] = it_attach[].
    Describe the body of the message
      CLEAR t_packing_list.
      REFRESH t_packing_list.
      t_packing_list-transf_bin = space.
      t_packing_list-head_start = 1.
      t_packing_list-head_num = 0.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE it_message LINES t_packing_list-body_num.
      t_packing_list-doc_type = 'RAW'.
      APPEND t_packing_list.
    Create attachment notification
      t_packing_list-transf_bin = 'X'.
      t_packing_list-head_start = 1.
      t_packing_list-head_num   = 1.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
      t_packing_list-doc_type   =  ld_format.
      t_packing_list-obj_descr  =  ld_attdescription.
      t_packing_list-obj_name   =  ld_attfilename.
      t_packing_list-doc_size   =  t_packing_list-body_num * 255.
      APPEND t_packing_list.
    Add the recipients email address
      CLEAR t_receivers.
      REFRESH t_receivers.
      t_receivers-rec_type = 'U'.
      t_receivers-com_type = 'INT'.
      t_receivers-notif_del = 'X'.
      t_receivers-notif_ndel = 'X'.
      CLEAR gt_mail.
      SELECT SINGLE * FROM zmail INTO gt_mail
                      WHERE grpnr = '1'.
      IF NOT gt_mail-mail1 IS INITIAL.
        t_receivers-receiver = gt_mail-mail1.
        APPEND t_receivers.
      ENDIF.
      IF NOT gt_mail-mail2 IS INITIAL.
        t_receivers-receiver = gt_mail-mail2.
        APPEND t_receivers.
      ENDIF.
      IF NOT gt_mail-mail3 IS INITIAL.
        t_receivers-receiver = gt_mail-mail3.
        APPEND t_receivers.
      ENDIF.
      IF NOT gt_mail-mail4 IS INITIAL.
        t_receivers-receiver = gt_mail-mail4.
        APPEND t_receivers.
      ENDIF.
    LOOP AT gt_mail.
       t_receivers-receiver = gt_mail-mailid..
       APPEND t_receivers.
    ENDLOOP.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                document_data              = w_doc_data
                put_in_outbox              = 'X'
                sender_address             = ld_sender_address
                sender_address_type        = ld_sender_address_type
                commit_work                = 'X'
           IMPORTING
                sent_to_all                = w_sent_all
           TABLES
                packing_list               = t_packing_list
                contents_bin               = t_attachment
                contents_txt               = it_message
                receivers                  = t_receivers
           EXCEPTIONS
                too_many_receivers         = 1
                document_not_sent          = 2
                document_type_not_exist    = 3
                operation_no_authorization = 4
                parameter_error            = 5
                x_error                    = 6
                enqueue_error              = 7
                OTHERS                     = 8.
    Populate zerror return code
      ld_error = sy-subrc.
    Populate zreceiver return code
      LOOP AT t_receivers.
        ld_receiver = t_receivers-retrn_code.
      ENDLOOP.
    ENDFORM.                    " send_file_as_email_attachment
    Data Declaration ************************************
    DATA : handle LIKE sy-tabix.
    data itab like kna1 occurs 0 with header line.
    data: text(50) type c.
    data: spoolid type TSP01-RQIDENT.
    DATA : gt_listobject LIKE abaplist OCCURS 10 .
    DATA : gt_objcont LIKE soli OCCURS 10 WITH HEADER LINE.
    DATA : gt_objcont1 LIKE soli OCCURS 10 WITH HEADER LINE.
    DATA : gt_objhead LIKE soli OCCURS 10 WITH HEADER LINE.
    DATA : gt_att_head LIKE soli OCCURS 10  WITH HEADER LINE.
    DATA : gt_receivers LIKE soos1 OCCURS 10 WITH HEADER LINE.
    DATA : gt_packing_list LIKE soxpl OCCURS 10 WITH HEADER LINE.
    DATA : gt_so_ali LIKE soli OCCURS 100 WITH HEADER LINE.
    DATA : gt_so_ali1 LIKE soli OCCURS 100 WITH HEADER LINE.
    DATA : gt_document_data LIKE sood1.
    DATA: lineno TYPE i , length TYPE i , size TYPE i.
    DATA: gt_message LIKE soli OCCURS 10 WITH HEADER LINE,
          gt_message1 LIKE soli OCCURS 10 WITH HEADER LINE.
    DATA: gt_scheme LIKE ztrc_scheme OCCURS 0 WITH HEADER LINE,
         gt_mail LIKE zmail_prov OCCURS 0 WITH HEADER LINE.
          gt_mail LIKE zmail." occurs 0 with header line.
    DATA: gd_recsize TYPE i.
    Spool IDs
    TYPES: BEGIN OF t_tbtcp.
            INCLUDE STRUCTURE tbtcp.
    TYPES: END OF t_tbtcp.
    DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
          wa_tbtcp TYPE t_tbtcp.
    Job Runtime Parameters
    DATA: gd_eventid LIKE tbtcm-eventid,
          gd_eventparm LIKE tbtcm-eventparm,
          gd_external_program_active LIKE tbtcm-xpgactive,
          gd_jobcount LIKE tbtcm-jobcount,
          gd_jobname LIKE tbtcm-jobname,
          gd_stepcount LIKE tbtcm-stepcount,
          gd_error    TYPE sy-subrc,
          gd_reciever TYPE sy-subrc.
    DATA:  w_recsize TYPE i.
    DATA: gd_subject   LIKE sodocchgi1-obj_descr,
          it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          gd_sender_type     LIKE soextreci1-adr_typ,
          gd_attachment_desc TYPE so_obj_nam,
          gd_attachment_name TYPE so_obj_des.
    Spool to PDF conversions
    DATA: gd_spool_nr LIKE tsp01-rqident,
          gd_destination LIKE rlgrap-filename,
          gd_bytecount LIKE tst01-dsize,
          gd_buffer TYPE string.
    Binary store for PDF
    DATA: BEGIN OF it_pdf_output OCCURS 0.
            INCLUDE STRUCTURE tline.
    DATA: END OF it_pdf_output.
    CONSTANTS: c_dev LIKE  sy-sysid VALUE 'DEV',
               c_no(1)     TYPE c   VALUE ' ',
               c_device(4) TYPE c   VALUE 'LOCL'.
    DATA: check TYPE c,
          days TYPE i.
    <b></b><b></b><b></b>

    Hi Prashant,
    Thanks for your reply. Really it is very useful one.
    In this, the output list is getting populated into spool and to pdf.
    But my requirement sending the internal table contents to spool directly without dispalying in the output list.
    I did the program like the above mentioned one already. But my requirement is not that one.
    Regards
    chakradhar

  • 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:ABAp list to pdf :downaloading single line item instead of multiple

    Hi all,
             my requirement is converting the report output as pdf and download. if user enter multiple vendors, we have to download vendor data based up on vendor as separate pdf file. for this i used NEW PAGE PRINT ON. everything i'm downaloding fine.but my problem is when vendor have multiple line items ,it is downloading only one line item that is lastline item. but i need total line items have to download.I'm pasting my code here. Can Anyone suggest.
    TYPES: BEGIN OF type_data,
           lifnr TYPE ekko-lifnr,
           matnr TYPE lips-matnr,
           vgbel TYPE lips-vgbel,
           vgpos TYPE lips-vgpos,
           mfrgr TYPE lips-mfrgr,
           vbeln TYPE ekes-vbeln,
           erdat TYPE ekes-erdat,
           lfdat TYPE ekes-eindt,
           lgort TYPE lips-lgort,
           verur TYPE ekes-xblnr,
           lfuhr TYPE ekes-uzeit,
           lfimg TYPE lips-lfimg,
           meins TYPE lips-meins,
           posnr TYPE lips-posnr,
           kdmat TYPE lips-kdmat,
           dabmg TYPE ekes-dabmg,
           eindt TYPE eket-eindt,
    * Add by liza DEVK989704
           park TYPE ZPO_PARK-menge,
    * End by liza DEVK989704
           END OF type_data.
    DATA: gt_data TYPE STANDARD TABLE OF type_data.
    DATA: gw_data LIKE LINE OF gt_data.
    Data : BEGIN OF t_data OCCURS 0,
           lifnr like ekko-lifnr,
           matnr like lips-matnr,
           maktx like makt-maktx,
           vgbel like lips-vgbel,
           vgpos(6),      " like lips-vgpos,
           mfrgr like lips-mfrgr,
           vbeln like ekes-vbeln,
           erdat like ekes-erdat,
           lfdat like ekes-eindt,
           lgort like lips-lgort,
           verur like ekes-xblnr,
           lfuhr like ekes-uzeit,
           lfimg(15) type p decimals 0,    "like lips-lfimg,
           meins(3),     " like lips-meins,
           posnr(6),     "like lips-posnr,
           kdmat like lips-kdmat,
           dabmg(15) type p decimals 0,    " like ekes-dabmg,
           menge(15) type p decimals 0,
           eindt like eket-eindt,
           adv(3),
           adrnr type lfa1-adrnr,
           EMAIL type zmamm_dt1002-EMAIL,
    * Add by liza DEVK989704
           PARK(15) type p decimals 0,
    * End by liza DEVK989704
           END OF t_data.
    FORM FM_DOWNLOAD_DATA .
      data: wa_pri_params like pri_params.
    data: w_valid(1).
    data: w_tabix type c.
    data: w_rqident type rspoid.
      data: list_name like PRI_PARAMS-PLIST.
          l_x = 'X'.
      caLL FUNCTION 'GET_PRINT_PARAMETERS'
       EXPORTING
         NO_DIALOG                      = L_X
       IMPORTING
         OUT_PARAMETERS                 = wa_pri_params
         VALID                          = w_VALID
      IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
       wa_pri_params-PAART = 'X_65_80'.
          wa_pri_params-LINSZ = '185'.
    IF w_valid EQ 'X'.
    * WAIT UP TO 1 SECONDS.
    CONCATENATE 'E'
    w_tabix
    sy-datum+4(4)
    sy-uzeit INTO
    wa_pri_params-plist.
    ENDIF.
      DATA: lv_maktx   TYPE makt-maktx,
            lv_adv(01) TYPE c.
      DATA: lv_menge TYPE zomm_t0104m-menge.
    *-- Set titles
      title1 = 'Panasonic HA Air-Conditioning (M) Sdn Bhd, Shah Alam'.
      title2 = '(Formerly Known As Matsushita Industrial Corp. Sdn. Bhd.)'.
      title3 = sy-title.
      IF NOT pa_fax IS INITIAL.
        NEW-PAGE LINE-SIZE 120 LINE-COUNT 44.
        title3 = 'Outstanding shipping notifications by supplier'.
      ENDIF.
      SORT gt_data BY lifnr lfdat matnr vgbel vgpos eindt.
      LOOP AT gt_data INTO gw_data.
    NEW-PAGE PRINT ON NO DIALOG PARAMETERS wa_pri_params.
        AT NEW lifnr.
          NEW-PAGE.
          sy-pagno = 1.
    *-- Get the vendor name
          CLEAR: gv_name1,
                 gv_telf1,
                 gv_telfx.
          SELECT SINGLE name1 telf1 telfx
                 INTO (gv_name1, gv_telf1, gv_telfx)
                 FROM lfa1
                 WHERE lifnr = gw_data-lifnr.
    ENDAT.
    at new matnr.
    *-- Get the material description
          CLEAR lv_maktx.
          SELECT SINGLE maktx INTO lv_maktx
                 FROM makt
                 WHERE matnr = gw_data-matnr
                   AND spras = sy-langu.
    endat.
    *-- If "only pending shipping notifications" is selected, remove all
    *   entries with no pending quantity
        IF gw_data-lfimg LE gw_data-dabmg AND
           pa_pend = 'X'.
          CONTINUE.
        ENDIF.
    *-- Highlight entries where the SN delivery date is before the PO
    *   delivery date
        IF gw_data-lfdat < gw_data-eindt.
          FORMAT INTENSIFIED ON.
          lv_adv = 'X'.
        ELSE.
          FORMAT INTENSIFIED OFF.
          CLEAR lv_adv.
        ENDIF.
        lv_menge = gw_data-lfimg - gw_data-dabmg.
    * Add by liza DEVK989704
        clear: PARKING, T_PARK.
        refresh: T_PARK.
        Select * from ZPO_PARK into T_PARK
        where vbeln = gw_data-vbeln
        and lifnr = gw_data-lifnr
        and matnr =  gw_data-matnr.
          Append T_PARK.
        Endselect.
        Loop at T_PARK.
          PARKING = PARKING + T_PARK-menge.
        Endloop.
        gw_data-park = PARKING.

    IF pa_fax IS INITIAL.
          WRITE:/2(18) gw_data-matnr,
                  (40) lv_maktx,
                       gw_data-vgbel,
                       gw_data-eindt,
                  (04) gw_data-mfrgr,
                  (18) gw_data-verur,
                       gw_data-vbeln,
                       gw_data-lfdat,
                  (07) gw_data-lfimg UNIT gw_data-meins,
                  (07) gw_data-dabmg UNIT gw_data-meins,
                  (07) lv_menge UNIT gw_data-meins,
                       gw_data-lgort,
                       gw_data-erdat,
                  (01) lv_adv,
    * Add by liza DEVK989704
                  (08) gw_data-park.
    * End by liza DEVK989704
        ELSE.
          WRITE:/2(12) gw_data-matnr,
                  (26) lv_maktx,
                       gw_data-vgbel,
                  (16) gw_data-verur,
                       gw_data-vbeln,
                       gw_data-lfdat,
                  (07) gw_data-lfimg UNIT gw_data-meins,
                  (07) gw_data-dabmg UNIT gw_data-meins,
                  (07) lv_menge UNIT gw_data-meins,
                       gw_data-lgort.
        ENDIF.
        PERFORM write_vline.
    *    AT END OF lifnr.
           If pa_dtim NE '000000'.
            ULINE.
            SKIP.
            WRITE:/12 TS_VEND.
            WRITE:/12 TS_ATT.
            WRITE:/12 TS_FROM.
            SKIP.                                               "D01K934099
            WRITE:/12'DELIVERY TIME:',pa_dtim.                  "D01K934099
            SKIP.                                               "D01K934099
            WRITE:/12 TS_TEXT1.
            WRITE:/12 TS_TEXT2.
            WRITE:/12 TS_TEXT3.
            WRITE:/12 TS_TEXT4.
          Else.
            ULINE.
            SKIP.
            WRITE:/12 TS_VEND.
            WRITE:/12 TS_ATT.
            WRITE:/12 TS_FROM.
            WRITE:/12 TS_TEXT1.
            WRITE:/12 TS_TEXT2.
            WRITE:/12 TS_TEXT3.
            WRITE:/12 TS_TEXT4.
          Endif.
        move-corresponding gw_data to t_data.
        move : lv_maktx  to t_data-maktx,
               lv_menge  to t_data-menge,
               lv_adv    to t_data-adv,
    * Add by liza DEVK989704
               parking   to t_data-park.
    * End by liza DEVK989704
        append t_data.
      IF sy-subrc NE 0.
        MESSAGE i999(sa) WITH 'No data found'.
      ENDIF.
    NEW-PAGE PRINT OFF.
    * To fetch the spool number from TSP01 table
      sELECT rqident
    FROM tsp01
    INTO w_rqident
    *UP TO 1 ROWS
    WHERE rq2name = wa_pri_params-plist.
    ENDSELECT.
    * /*--------Convert Spool to PDF-----------/
      IF wa_pri_params-PDEST IS INITIAL.
        wa_pri_params-PDEST = 'LOCL'.
      ENDIF.
      CONCATENATE P_DEST T_DATA-LIFNR '.PDF' INTO G_FILENAME.
      CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
        EXPORTING
          SRC_SPOOLID                    = w_RQIDENT
         NO_DIALOG                      = SPACE
       IMPORTING
         PDF_BYTECOUNT                  = G_BYTECOUNT
       TABLES
         PDF                            = T_PDF
       EXCEPTIONS
         ERR_NO_ABAP_SPOOLJOB           = 1
         ERR_NO_SPOOLJOB                = 2
         ERR_NO_PERMISSION              = 3
         ERR_CONV_NOT_POSSIBLE          = 4
         ERR_BAD_DESTDEVICE             = 5
         USER_CANCELLED                 = 6
         ERR_SPOOLERROR                 = 7
         ERR_TEMSEERROR                 = 8
         ERR_BTCJOB_OPEN_FAILED         = 9
         ERR_BTCJOB_SUBMIT_FAILED       = 10
         ERR_BTCJOB_CLOSE_FAILED        = 11
         OTHERS                         = 12
      IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *   /*---------download to specified folder--------/
      CALL FUNCTION 'GUI_DOWNLOAD'
        EXPORTING
          BIN_FILESIZE            = G_BYTECOUNT
          FILENAME                = G_FILENAME
          FILETYPE                = 'BIN'
        TABLES
          DATA_TAB                = T_PDF
        EXCEPTIONS
          FILE_WRITE_ERROR        = 1
          NO_BATCH                = 2
          GUI_REFUSE_FILETRANSFER = 3
          INVALID_TYPE            = 4
          NO_AUTHORITY            = 5
          UNKNOWN_ERROR           = 6
          HEADER_NOT_ALLOWED      = 7
          SEPARATOR_NOT_ALLOWED   = 8
          FILESIZE_NOT_ALLOWED    = 9
          HEADER_TOO_LONG         = 10
          DP_ERROR_CREATE         = 11
          DP_ERROR_SEND           = 12
          DP_ERROR_WRITE          = 13
          UNKNOWN_DP_ERROR        = 14
          ACCESS_DENIED           = 15
          DP_OUT_OF_MEMORY        = 16
          DISK_FULL               = 17
          DP_TIMEOUT              = 18
          FILE_NOT_FOUND          = 19
          DATAPROVIDER_EXCEPTION  = 20
          CONTROL_FLUSH_ERROR     = 21
          OTHERS                  = 22.
      IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    endloop.
    ENDFORM.

  • Report program Performance problem

    Hi All,
       one object is taking 30hr for executing.some one develped this in 1998 but this time it is a big Performance problem.please some one helep what to do i am giving that code.
    *--DOCUMENTATION--
    Programe written by :  31.03.1998 .
    Purpose : this programe updates the car status into the table zsdtab1
    This programe is to be schedule in the backgroud periodically .
    Querries can be fired on the table zsdtab1 to get the details of the
        Car .
    This programe looks at the changes made in the material master from
    last updated date and the new entries in material master and updates
    the tables zsdtab1 .
    Changes in the Sales Order are not taken into account .
    To get a fresh data set the value of zupddate in table ZSTATUS as
    01.01.1998 . All the data will be refreshed from that date .
    Program Changed on 23/7/2001 after version upgrade 46b by jyoti
    Addition of New tables for Ibase
    tables used -
    tables : mara ,                        " Material master
             ausp ,                        " Characteristics table .
             zstatus ,                     " Last updated status table .
             zsdtab1 ,    " Central database table to be maintained .
             vbap ,                        " Sales order header table .
             vbak ,                        " Sales order item table .
             kna1 ,                        " Customer master .
             vbrk ,
             vbrp ,
             bkpf ,
             bseg ,
             mseg ,
             mkpf ,
             vbpa ,
             vbfa ,
             t005t .                         " Country details tabe .
    --NEW TABLES ADDEDFOR VERSION 4.6B--
    tables :   ibsymbol ,ibin , ibinvalues .
    data : vatinn like ibsymbol-atinn , vatwrt like ibsymbol-atwrt ,
           vatflv like ibsymbol-atflv .
    *--types definition--
    types : begin of mara_itab_type ,
               matnr like mara-matnr ,
               cuobf like mara-cuobf ,
            end of mara_itab_type ,
            begin of ausp_itab_type ,
               atinn like ausp-atinn ,
               atwrt like ausp-atwrt ,
               atflv like ausp-atflv ,
            end of ausp_itab_type .
    data : mara_itab type mara_itab_type occurs 500 with header line ,
           zsdtab1_itab like zsdtab1 occurs 500 with header line ,
           ausp_itab type ausp_itab_type occurs 500 with header line ,
           last_date type d ,
           date type d .
    data: length type i.
    clear mara_itab . refresh mara_itab .
    clear zsdtab1_itab . refresh zsdtab1_itab .
    select single  zupddate into last_date from zstatus
           where programm = 'ZSDDET01' .
    select matnr cuobf into (mara_itab-matnr , mara_itab-cuobf) from mara
          where mtart eq 'FERT' or mtart = 'ZCBU'.
        where MATNR IN MATERIA
         and ERSDA IN C_Date
         and MTART in M_TYP.
        append mara_itab .
    endselect .
    loop at mara_itab.
    clear zsdtab1_itab .
    zsdtab1_itab-commno = mara_itab-matnr .
       Get the detailed data into internal table ausp_itab .----------->>>
    clear ausp_itab . refresh ausp_itab .
    --change starts--
    select atinn atwrt atflv into (ausp_itab-atinn , ausp_itab-atwrt ,
                               ausp_itab-atflv) from ausp
          where objek = mara_itab-matnr .
          append ausp_itab .
       endselect .
       clear ausp_itab .
    select  atinn  atwrt atflv  into (ausp_itab-atinn , ausp_itab-atwrt ,
    ausp_itab-atflv) from ibin as a inner join ibinvalues as b
                      on ain_recno = bin_recno
           inner join  ibsymbol as c
                      on bsymbol_id = csymbol_id
        where a~instance = mara_itab-cuobf  .
      append ausp_itab .
    endselect .
    ----CHANGE ENDS HERE -
    sort ausp_itab by atwrt.
    loop at ausp_itab .
    clear date .
    case ausp_itab-atinn .
      when '0000000094' .
        zsdtab1_itab-model = ausp_itab-atwrt .  " model  .
      when '0000000101' .
        zsdtab1_itab-drive = ausp_itab-atwrt .  " drive
      when '0000000095' .
        zsdtab1_itab-converter = ausp_itab-atwrt . "converter
      when '0000000096' .
        zsdtab1_itab-transmssn = ausp_itab-atwrt . "transmission
      when '0000000097' .
        zsdtab1_itab-colour = ausp_itab-atwrt .    "colour
      when '0000000098' .
        zsdtab1_itab-ztrim = ausp_itab-atwrt .     "trim
      when '0000000103' .
    *=========Sujit 14-Mar-2006
       IF AUSP_ITAB-ATWRT(3) EQ 'WDB' OR AUSP_ITAB-ATWRT(3) EQ 'WDD'
       OR AUSP_ITAB-ATWRT(3) EQ 'WDC' OR AUSP_ITAB-ATWRT(3) EQ 'KPD'.
           ZSDTAB1_ITAB-CHASSIS_NO = AUSP_ITAB-ATWRT+3(14).
       ELSE.
           ZSDTAB1_ITAB-CHASSIS_NO = AUSP_ITAB-ATWRT .     "chassis no
       ENDIF.
        zsdtab1_itab-chassis_no = ausp_itab-atwrt .     "chassis no
    *=========14-Mar-2006
      when '0000000166' .
    ----25.05.04
      length = strlen( ausp_itab-atwrt ).
      if length < 15.                       "***aded by patil
       zsdtab1_itab-engine_no = ausp_itab-atwrt .     "ENGINE NO
      else.
    zsdtab1_itab-engine_no = ausp_itab-atwrt+13(14)."Aded on 21.05.04 patil
      endif.
    ----25.05.04
      when '0000000104' .
        zsdtab1_itab-body_no = ausp_itab-atwrt .     "BODY NO
      when '0000000173' .                                          "21.06.98
        zsdtab1_itab-cockpit = ausp_itab-atwrt .     "COCKPIT NO . "21.06.98
      when '0000000102' .
        zsdtab1_itab-dest = ausp_itab-atwrt .     "destination
      when '0000000105' .
        zsdtab1_itab-airbag = ausp_itab-atwrt .     "AIRBAG
      when '0000000110' .
        zsdtab1_itab-trailer_no = ausp_itab-atwrt .     "TRAILER_NO
      when '0000000109' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-fininspdat = date .   "FIN INSP DATE
      when '0000000108' .
        zsdtab1_itab-entrydate = ausp_itab-atwrt .     "ENTRY DATE
      when '0000000163' .
        zsdtab1_itab-regist_no = ausp_itab-atwrt .     "REGIST_NO
      when '0000000164' .
        zsdtab1_itab-mech_key = ausp_itab-atwrt .     "MECH_KEY
      when '0000000165' .
        zsdtab1_itab-side_ab_rt = ausp_itab-atwrt .     "SIDE_AB_RT
      when '0000000171' .
        zsdtab1_itab-side_ab_lt = ausp_itab-atwrt .     "SIDE_AB_LT
      when '0000000167' .
        zsdtab1_itab-elect_key = ausp_itab-atwrt .     "ELECT_KEY
      when '0000000168' .
        zsdtab1_itab-head_lamp = ausp_itab-atwrt .     "HEAD_LAMP
      when '0000000169' .
        zsdtab1_itab-tail_lamp = ausp_itab-atwrt .     "TAIL_LAMP
      when '0000000170' .
        zsdtab1_itab-vac_pump = ausp_itab-atwrt .     "VAC_PUMP
      when '0000000172' .
        zsdtab1_itab-sd_ab_sn_l = ausp_itab-atwrt .     "SD_AB_SN_L
      when '0000000174' .
        zsdtab1_itab-sd_ab_sn_r = ausp_itab-atwrt .     "SD_AB_SN_R
      when '0000000175' .
        zsdtab1_itab-asrhydunit = ausp_itab-atwrt .     "ASRHYDUNIT
      when '0000000176' .
        zsdtab1_itab-gearboxno = ausp_itab-atwrt .     "GEARBOXNO
      when '0000000177' .
        zsdtab1_itab-battery = ausp_itab-atwrt .     "BATTERY
      when '0000000178' .
        zsdtab1_itab-tyretype = ausp_itab-atwrt .     "TYRETYPE
      when '0000000179' .
        zsdtab1_itab-tyremake = ausp_itab-atwrt .     "TYREMAKE
      when '0000000180' .
        zsdtab1_itab-tyresize = ausp_itab-atwrt .     "TYRESIZE
      when '0000000181' .
        zsdtab1_itab-rr_axle_no = ausp_itab-atwrt .     "RR_AXLE_NO
      when '0000000183' .
        zsdtab1_itab-ff_axl_nor = ausp_itab-atwrt .     "FF_AXLE_NO_rt
      when '0000000182' .
        zsdtab1_itab-ff_axl_nol = ausp_itab-atwrt .     "FF_AXLE_NO_lt
      when '0000000184' .
        zsdtab1_itab-drivairbag = ausp_itab-atwrt .     "DRIVAIRBAG
      when '0000000185' .
        zsdtab1_itab-st_box_no = ausp_itab-atwrt .     "ST_BOX_NO
      when '0000000186' .
        zsdtab1_itab-transport = ausp_itab-atwrt .     "TRANSPORT
      when '0000000106' .
        zsdtab1_itab-trackstage = ausp_itab-atwrt .  " tracking stage
      when '0000000111' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_1 = date .    " tracking date for 1.
      when '0000000112' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_5 = date .    " tracking date for 5.
      when '0000000113' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_10 = date .   "tracking date for 10
      when '0000000114' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_15 = date .   "tracking date for 15
      when '0000000115' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_20 = date .   " tracking date for 20
      when '0000000116' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_25 = date .   " tracking date for 25
      when '0000000117' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_30 = date .   "tracking date for 30
      when '0000000118' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_35 = date .   "tracking date for 35
      when '0000000119' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_40 = date .   " tracking date for 40
      when '0000000120' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_45 = date .   " tracking date for 45
      when '0000000121' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_50 = date .   "tracking date for 50
      when '0000000122' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_55 = date .   "tracking date for 55
      when '0000000123' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_60 = date .   " tracking date for 60
      when '0000000124' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_65 = date .   " tracking date for 65
      when '0000000125' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_70 = date .   "tracking date for 70
      when '0000000126' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_75 = date .   "tracking date for 75
      when '0000000127' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_78 = date .   " tracking date for 78
      when '0000000203' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_79 = date .   " tracking date for 79
      when '0000000128' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_80 = date .   " tracking date for 80
      when '0000000129' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_85 = date .   "tracking date for 85
      when '0000000130' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_90 = date .   "tracking date for 90
      when '0000000131' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dat_trk_95 = date .   "tracking date for 95
      when '0000000132' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dattrk_100 = date .   " tracking date for100
      when '0000000133' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dattrk_110 = date .   " tracking date for110
      when '0000000134' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dattrk_115 = date .   "tracking date for 115
      when '0000000135' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dattrk_120 = date .   "tracking date for 120
      when '0000000136' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-dattrk_105 = date .   "tracking date for 105
      when '0000000137' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_1 = date .     "plan trk date for 1
      when '0000000138' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_5 = date .     "plan trk date for 5
      when '0000000139' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_10 = date .    "plan trk date for 10
      when '0000000140' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_15 = date .    "plan trk date for 15
      when '0000000141' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_20 = date .    "plan trk date for 20
      when '0000000142' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_25 = date .    "plan trk date for 25
      when '0000000143' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_30 = date .    "plan trk date for 30
      when '0000000144' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_35 = date .    "plan trk date for 35
      when '0000000145' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_40 = date .    "plan trk date for 40
      when '0000000146' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_45 = date .    "plan trk date for 45
      when '0000000147' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_50 = date .    "plan trk date for 50
      when '0000000148' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_55 = date .    "plan trk date for 55
      when '0000000149' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_60 = date .    "plan trk date for 60
      when '0000000150' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_65 = date .    "plan trk date for 65
      when '0000000151' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_70 = date .    "plan trk date for 70
      when '0000000152' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_75 = date .    "plan trk date for 75
      when '0000000153' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_78 = date .    "plan trk date for 78
      when '0000000202' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_79 = date .    "plan trk date for 79
      when '0000000154' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_80 = date .    "plan trk date for 80
      when '0000000155' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_85 = date .    "plan trk date for 85
      when '0000000156' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_90 = date .    "plan trk date for 90
      when '0000000157' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_95 = date .    "plan trk date for 95
      when '0000000158' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_100 = date .   "plan trk date for 100
      when '0000000159' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_105 = date .   "plan trk date for 105
      when '0000000160' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_110 = date .   "plan trk date for 110
      when '0000000161' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_115 = date .   "plan trk date for 115
      when '0000000162' .
        perform date_convert using  ausp_itab-atflv changing date .
        zsdtab1_itab-pdt_tk_120 = date .   "plan trk date for 120
    ********Additional fields / 24.05.98**********************************
      when '0000000099' .
        case ausp_itab-atwrt .
          when '540' .
            zsdtab1_itab-roll_blind = 'X' .
          when '482' .
            zsdtab1_itab-ground_clr = 'X' .
          when '551' .
            zsdtab1_itab-anti_theft = 'X' .
          when '882' .
            zsdtab1_itab-anti_tow = 'X' .
          when '656' .
            zsdtab1_itab-alloy_whel = 'X' .
          when '265' .
            zsdtab1_itab-del_class = 'X' .
          when '280' .
            zsdtab1_itab-str_wheel = 'X' .
          when 'CDC' .
            zsdtab1_itab-cd_changer = 'X' .
          when '205' .
            zsdtab1_itab-manual_eng = 'X' .
          when '273' .
            zsdtab1_itab-conn_handy = 'X' .
          when '343' .
            zsdtab1_itab-aircleaner = 'X' .
          when '481' .
            zsdtab1_itab-metal_sump = 'X' .
          when '533' .
            zsdtab1_itab-speaker = 'X' .
          when '570' .
            zsdtab1_itab-arm_rest = 'X' .
          when '580' .
            zsdtab1_itab-aircond = 'X' .
          when '611' .
            zsdtab1_itab-exit_light = 'X' .
          when '613' .
            zsdtab1_itab-headlamp = 'X' .
          when '877' .
            zsdtab1_itab-readlamp = 'X' .
          when '808' .
            zsdtab1_itab-code_ckd = 'X' .
          when '708' .
            zsdtab1_itab-del_prt_lc = 'X' .
          when '593' .
            zsdtab1_itab-ins_glass = 'X' .
          when '955' .
            zsdtab1_itab-zelcl = 'Elegance' .
          when '593' .
            zsdtab1_itab-zelcl = 'Classic' .
        endcase .
    endcase .
    endloop .
    *--Update the sales data .--
    perform get_sales_order using mara_itab-matnr .
    perform get_cartype using mara_itab-matnr .
    append zsdtab1_itab .
    endloop.
    <<<
    loop at zsdtab1_itab .
      if zsdtab1_itab-cartype <> 'W-203'
      or zsdtab1_itab-cartype <> 'W-210'
      or zsdtab1_itab-cartype <> 'W-211'.
          clear zsdtab1_itab-zelcl.
      endif.
    SELECT SINGLE * FROM ZSDTAB1 WHERE COMMNO = MARA_ITAB-MATNR .
    select single * from zsdtab1 where commno = zsdtab1_itab-commno.
    if sy-subrc <> 0 .
        insert into zsdtab1 values zsdtab1_itab .
    else .
        update zsdtab1 set :vbeln = zsdtab1_itab-vbeln
                       bill_doc = zsdtab1_itab-bill_doc
                       dest = zsdtab1_itab-dest
                       lgort = zsdtab1_itab-lgort
                       ship_tp = zsdtab1_itab-ship_tp
                       country = zsdtab1_itab-country
                       kunnr = zsdtab1_itab-kunnr
                       vkbur = zsdtab1_itab-vkbur
                       customer = zsdtab1_itab-customer
                       city   = zsdtab1_itab-city
                       region = zsdtab1_itab-region
                       model = zsdtab1_itab-model
                       drive = zsdtab1_itab-drive
                       converter = zsdtab1_itab-converter
                       transmssn = zsdtab1_itab-transmssn
                       colour = zsdtab1_itab-colour
                       ztrim = zsdtab1_itab-ztrim
                       commno = zsdtab1_itab-commno
                       trackstage = zsdtab1_itab-trackstage
                       chassis_no    =   zsdtab1_itab-chassis_no
                       engine_no     =   zsdtab1_itab-engine_no
                       body_no       =   zsdtab1_itab-body_no
                       cockpit       =   zsdtab1_itab-cockpit
                       airbag        =   zsdtab1_itab-airbag
                       trailer_no    =   zsdtab1_itab-trailer_no
                       fininspdat    =   zsdtab1_itab-fininspdat
                       entrydate     =   zsdtab1_itab-entrydate
                       regist_no     =   zsdtab1_itab-regist_no
                       mech_key      =   zsdtab1_itab-mech_key
                       side_ab_rt    =   zsdtab1_itab-side_ab_rt
                       side_ab_lt    =   zsdtab1_itab-side_ab_lt
                       elect_key     =   zsdtab1_itab-elect_key
                       head_lamp     =   zsdtab1_itab-head_lamp
                       tail_lamp     =   zsdtab1_itab-tail_lamp
                       vac_pump      =   zsdtab1_itab-vac_pump
                       sd_ab_sn_l    =   zsdtab1_itab-sd_ab_sn_l
                       sd_ab_sn_r    =   zsdtab1_itab-sd_ab_sn_r
                       asrhydunit    =   zsdtab1_itab-asrhydunit
                       gearboxno     =   zsdtab1_itab-gearboxno
                       battery       =   zsdtab1_itab-battery
                       tyretype      =   zsdtab1_itab-tyretype
                       tyremake      =   zsdtab1_itab-tyremake
                       tyresize      =   zsdtab1_itab-tyresize
                       rr_axle_no    =   zsdtab1_itab-rr_axle_no
                       ff_axl_nor    =   zsdtab1_itab-ff_axl_nor
                       ff_axl_nol    =   zsdtab1_itab-ff_axl_nol
                       drivairbag    =   zsdtab1_itab-drivairbag
                       st_box_no     =   zsdtab1_itab-st_box_no
                       transport     =   zsdtab1_itab-transport
    OPTIONS-
                       roll_blind    = zsdtab1_itab-roll_blind
                       ground_clr    = zsdtab1_itab-ground_clr
                       anti_theft    = zsdtab1_itab-anti_theft
                       anti_tow      = zsdtab1_itab-anti_tow
                       alloy_whel    = zsdtab1_itab-alloy_whel
                       del_class     = zsdtab1_itab-del_class
                       str_wheel     = zsdtab1_itab-str_wheel
                       cd_changer    = zsdtab1_itab-cd_changer
                       manual_eng    = zsdtab1_itab-manual_eng
                       conn_handy    = zsdtab1_itab-conn_handy
                       aircleaner    = zsdtab1_itab-aircleaner
                       metal_sump    = zsdtab1_itab-metal_sump
                       speaker       = zsdtab1_itab-speaker
                       arm_rest      = zsdtab1_itab-arm_rest
                       aircond       = zsdtab1_itab-aircond
                       exit_light    = zsdtab1_itab-exit_light
                       headlamp      = zsdtab1_itab-headlamp
                       readlamp      = zsdtab1_itab-readlamp
                       code_ckd      = zsdtab1_itab-code_ckd
                       del_prt_lc    = zsdtab1_itab-del_prt_lc
                       ins_glass     = zsdtab1_itab-ins_glass
                       dat_trk_1 = zsdtab1_itab-dat_trk_1
                       dat_trk_5 = zsdtab1_itab-dat_trk_5
                       dat_trk_10 = zsdtab1_itab-dat_trk_10
                       dat_trk_15 = zsdtab1_itab-dat_trk_15
                       dat_trk_20 = zsdtab1_itab-dat_trk_20
                       dat_trk_25 = zsdtab1_itab-dat_trk_25
                       dat_trk_30 = zsdtab1_itab-dat_trk_30
                       dat_trk_35 = zsdtab1_itab-dat_trk_35
                       dat_trk_40 = zsdtab1_itab-dat_trk_40
                       dat_trk_45 = zsdtab1_itab-dat_trk_45
                       dat_trk_50 = zsdtab1_itab-dat_trk_50
                       dat_trk_55 = zsdtab1_itab-dat_trk_55
                       dat_trk_60 = zsdtab1_itab-dat_trk_60
                       dat_trk_65 = zsdtab1_itab-dat_trk_65
                       dat_trk_70 = zsdtab1_itab-dat_trk_70
                       dat_trk_75 = zsdtab1_itab-dat_trk_75
                       dat_trk_78 = zsdtab1_itab-dat_trk_78
                       dat_trk_79 = zsdtab1_itab-dat_trk_79
                       dat_trk_80 = zsdtab1_itab-dat_trk_80
                       dat_trk_85 = zsdtab1_itab-dat_trk_85
                       dat_trk_90 = zsdtab1_itab-dat_trk_90
                       dat_trk_95 = zsdtab1_itab-dat_trk_95
                       dattrk_100 = zsdtab1_itab-dattrk_100
                       dattrk_105 = zsdtab1_itab-dattrk_105
                       dattrk_110 = zsdtab1_itab-dattrk_110
                       dattrk_115 = zsdtab1_itab-dattrk_115
                       dattrk_120 = zsdtab1_itab-dattrk_120
                       pdt_tk_1 = zsdtab1_itab-pdt_tk_1
                       pdt_tk_5 = zsdtab1_itab-pdt_tk_5
                       pdt_tk_10 = zsdtab1_itab-pdt_tk_10
                       pdt_tk_15 = zsdtab1_itab-pdt_tk_15
                       pdt_tk_20 = zsdtab1_itab-pdt_tk_20
                       pdt_tk_25 = zsdtab1_itab-pdt_tk_25
                       pdt_tk_30 = zsdtab1_itab-pdt_tk_30
                       pdt_tk_35 = zsdtab1_itab-pdt_tk_35
                       pdt_tk_40 = zsdtab1_itab-pdt_tk_40
                       pdt_tk_45 = zsdtab1_itab-pdt_tk_45
                       pdt_tk_50 = zsdtab1_itab-pdt_tk_50
                       pdt_tk_55 = zsdtab1_itab-pdt_tk_55
                       pdt_tk_60 = zsdtab1_itab-pdt_tk_60
                       pdt_tk_65 = zsdtab1_itab-pdt_tk_65
                       pdt_tk_70 = zsdtab1_itab-pdt_tk_70
                       pdt_tk_75 = zsdtab1_itab-pdt_tk_75
                       pdt_tk_78 = zsdtab1_itab-pdt_tk_78
                       pdt_tk_79 = zsdtab1_itab-pdt_tk_79
                       pdt_tk_80 = zsdtab1_itab-pdt_tk_80
                       pdt_tk_85 = zsdtab1_itab-pdt_tk_85
                       pdt_tk_90 = zsdtab1_itab-pdt_tk_90
                       pdt_tk_95 = zsdtab1_itab-pdt_tk_95
                       pdt_tk_100 = zsdtab1_itab-pdt_tk_100
                       pdt_tk_105 = zsdtab1_itab-pdt_tk_105
                       pdt_tk_110 = zsdtab1_itab-pdt_tk_110
                       pdt_tk_115 = zsdtab1_itab-pdt_tk_115
                       pdt_tk_120 = zsdtab1_itab-pdt_tk_120
                       cartype = zsdtab1_itab-cartype
                       zelcl = zsdtab1_itab-zelcl
                       excise_no = zsdtab1_itab-excise_no
    where commno = zsdtab1_itab-commno .
       Update table .---------<<<
    endif .
    endloop .
    perform update_excise_date .
    perform update_post_goods_issue_date .
    perform update_time.
    *///////////////////// end of programe /////////////////////////////////
    Get sales data -
    form get_sales_order using matnr .
      data : corr_vbeln like vbrk-vbeln .
    ADDED BY ADITYA / 22.06.98 **************************************
    perform get_order using matnr .
    select single vbeln lgort into (zsdtab1_itab-vbeln , zsdtab1_itab-lgort)
                from vbap where matnr = matnr .   " C-22.06.98
                  from vbap where vbeln = zsdtab1_itab-vbeln .
      if sy-subrc = 0 .
    ************Get the Excise No from Allocation Field*******************
        select single * from zsdtab1 where commno = matnr .
        if zsdtab1-excise_no =  '' .
          select * from vbrp where matnr = matnr .
            select single vbeln into corr_vbeln from vbrk where
            vbeln = vbrp-vbeln and vbtyp = 'M'.
            if sy-subrc eq 0.
              select single * from vbrk where vbtyp = 'N'
              and sfakn = corr_vbeln.      "cancelled doc.
              if sy-subrc ne 0.
                select single * from vbrk where vbeln = corr_vbeln.
                if sy-subrc eq 0.
                  data : year(4) .
                  move sy-datum+0(4) to year .
      select single * from bkpf where awtyp = 'VBRK' and awkey = vbrk-vbeln
                                      and  bukrs = 'MBIL' and gjahr = year .
                  if sy-subrc = 0 .
      select single * from bseg where bukrs = 'MBIL' and belnr = bkpf-belnr
                                       and gjahr = year and koart = 'D' and
                                                               shkzg = 'S' .
                    zsdtab1_itab-excise_no = bseg-zuonr .
                  endif .
                endif.
              endif.
            endif.
          endselect.
        endif .
        select single kunnr vkbur into (zsdtab1_itab-kunnr ,
                zsdtab1_itab-vkbur) from vbak
                where vbeln = zsdtab1_itab-vbeln .
        if sy-subrc = 0 .
          select single name1 ort01 regio into (zsdtab1_itab-customer ,
             zsdtab1_itab-city , zsdtab1_itab-region) from kna1
             where kunnr = zsdtab1_itab-kunnr .
        endif.
      Get Ship to Party **************************************************
        select single * from vbpa where vbeln = zsdtab1_itab-vbeln and
                        parvw = 'WE' .
        if sy-subrc = 0 .
            zsdtab1_itab-ship_tp = vbpa-kunnr .
      Get Destination Country of Ship to Party .************
            select single * from kna1 where kunnr = vbpa-kunnr .
            if sy-subrc = 0 .
               select single * from t005t where land1 = kna1-land1
                                       and spras = 'E' .
               if sy-subrc = 0 .
                   zsdtab1_itab-country = t005t-landx .
               endif .
            endif .
        endif .
      endif .
    endform.                               " GET_SALES
    form update_time.
      update zstatus set zupddate = sy-datum
                         uzeit = sy-uzeit
      where programm = 'ZSDDET01' .
    endform.                               " UPDATE_TIME
    *&      Form  DATE_CONVERT
    form date_convert using atflv changing date .
      data : dt(8) , dat type i .
      dat = atflv .
      dt = dat .
      date = dt .
    endform.                               " DATE_CONVERT
    *&      Form  UPDATE_POST_GOODS_ISSUE_DATE
    form update_post_goods_issue_date .
      types : begin of itab1_type ,
                mblnr like mseg-mblnr ,
                budat like mkpf-budat ,
              end of itab1_type .
      data : itab1 type itab1_type occurs 10 with header line .
      loop at mara_itab .
        select single * from zsdtab1 where commno = mara_itab-matnr .
        if sy-subrc =  0  and zsdtab1-postdate =  '00000000' .
          refresh itab1 . clear itab1 .
        select * from mseg where matnr = mara_itab-matnr and bwart = '601' .
            itab1-mblnr = mseg-mblnr .
            append itab1 .
          endselect .
          loop at itab1 .
            select single * from mkpf where mblnr = itab1-mblnr .
            if sy-subrc = 0 .
              itab1-budat = mkpf-budat .
              modify itab1 .
            endif .
          endloop .
          sort itab1 by budat .
          read table itab1 index 1 .
          if sy-subrc = 0 .
            update zsdtab1 set postdate = itab1-budat
                         where commno = mara_itab-matnr .
          endif .
        endif .
      endloop .
    endform.                               " UPDATE_POST_GOODS_ISSUE_DATE
    *&      Form  UPDATE_EXCISE_DATE
    form update_excise_date.
      types : begin of itab2_type ,
                mblnr like mseg-mblnr ,
                budat like mkpf-budat ,
              end of itab2_type .
      data : itab2 type itab2_type occurs 10 with header line .
      loop at mara_itab .
        select single * from zsdtab1 where commno = mara_itab-matnr .
        if sy-subrc =  0  and zsdtab1-excise_dat  = '00000000' .
          refresh itab2 . clear itab2 .
          select * from mseg where matnr = mara_itab-matnr and
                                  (  bwart = '601' or  bwart = '311' ) .
            itab2-mblnr = mseg-mblnr .
            append itab2 .
          endselect .
          loop at itab2 .
            select single * from mkpf where mblnr = itab2-mblnr .
            if sy-subrc = 0 .
              itab2-budat = mkpf-budat .
              modify itab2 .
            endif .
          endloop .
          sort itab2 by budat .
          read table itab2 index 1 .
          if sy-subrc = 0 .
            update zsdtab1 set excise_dat = itab2-budat
                         where commno = mara_itab-matnr .
          endif .
        endif .
      endloop .
    endform.                               " UPDATE_EXCISE_DATE
    form get_order using matnr .
    types :  begin of itab_type ,
                vbeln like vbap-vbeln ,
                posnr like vbap-posnr ,
             end of itab_type .
    data : itab type itab_type occurs 10 with header line .
    refresh itab . clear itab .
    select * from vbap where matnr = mara_itab-matnr .
       itab-vbeln = vbap-vbeln .
       itab-posnr = vbap-posnr .
       append itab .
    endselect .
    loop at itab .
      select single * from vbak where vbeln = itab-vbeln .
      if vbak-vbtyp <> 'C' .
        delete itab .
      endif .
    endloop .
    loop at itab .
    select single * from vbfa where vbelv = itab-vbeln and
             posnv = itab-posnr and vbtyp_n = 'H' .
    if sy-subrc = 0 .
      delete itab .
    endif .
    endloop .
    clear :  zsdtab1_itab-vbeln ,  zsdtab1_itab-bill_doc .
    loop at itab .
      zsdtab1_itab-vbeln = itab-vbeln .
      select single * from vbfa where vbelv = itab-vbeln and
             posnv = itab-posnr and vbtyp_n = 'M' .
    if sy-subrc = 0 .
      zsdtab1_itab-bill_doc = vbfa-vbeln .
    endif .
    endloop .
    endform .
    *&      Form  GET_CARTYPE
    form get_cartype using matnr .
    select single * from mara where matnr = matnr .
    zsdtab1_itab-cartype = mara-satnr .
    endform.                    " GET_CARTYPE

    Hi,
    I have analysed your program and i would like to share following points for better performance of this report :
    (a)  Use the field Names instead of Select * or Select Single * as if you use the field names it will consume less amount of resources inside the loop as well as you have lot many Select Single * and u r using very big tables like VBAP and many more.
    (b) Trace on ST05 which particular query is mostly effecting your system or use ST12 in current mode to trace for less inputs which run the report for 20-30 min so that we get an idea which queries are effecting the system and taking a lot of time.
    (c) In Case of internal tables sort the data properly and use binary search for getting the data.
    I think this will help.
    Thanks and Regards,
    Harsh

Maybe you are looking for