Variant calling in the report program.

Hi,
I got a report program to be called using the submit statement mentioned below.
SUBMIT... [USING SELECTION-SET <var>].
The Variant is saved in the Tcode. How can i get the Variant programatically rather than harcoding the variant name?.i mean any table it will be stored or any Function module available?.
The variants are stored in the TVARV table, but still i need to pass the variant name to get the entries from the table.Any other alternative.
Thanks,
Neslin.

Hi Vijay,
In the table i find a possibility of getting multiple variants for a single report pgm name. any way to get a unique variant..
Thanks,
Neslin

Similar Messages

  • Getting the variant name when the report program is run in background

    Hi All,
    How to get the variant name for the report program when run in background? My requirement is to create an email attachement with the name 'variant.XLS', where variant = selection screen variant, when the report program is run in background. The system field SY-SLSET holds the variant name only when run online.
    Any pointers to this will be highly appreciated.
    Thanks and regards,
    Nilesh.

    Hello Nilesh,
    Please find the algo:
    1. Call the FM: GET_JOB_RUNTIME_INFO to get the background job details.
    2. Select data from TBTCP using these details:
    DATA:
    FP_EVENTID   TYPE BTCEVENTID
    FP_EVTPARM   TYPE BTCEVTPARM
    FP_ACTIVE    TYPE BTCXPGFLAG
    FP_JOBCNT    TYPE BTCJOBCNT
    FP_JOBNM     TYPE BTCJOB
    FP_STEPCNT   TYPE BTCSTEPCNT.
      CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
        IMPORTING
          EVENTID                 = FP_EVENTID
          EVENTPARM               = FP_EVTPARM
          EXTERNAL_PROGRAM_ACTIVE = FP_ACTIVE
          JOBCOUNT                = FP_JOBCNT
          JOBNAME                 = FP_JOBNM
          STEPCOUNT               = FP_STEPCNT
        EXCEPTIONS
          NO_RUNTIME_INFO         = 1
          OTHERS                  = 2.
      IF SY-SUBRC <> 0.
    *   Error calling FM: GET_JOB_RUNTIME_INFO
      ENDIF.
    DATA: FP_VARIANT TYPE BTCVARIANT.
      SELECT JOBNAME JOBCOUNT STEPCOUNT VARIANT
      FROM   TBTCP
      INTO TABLE L_IT_TBTCP
      WHERE  JOBNAME   = FP_JOBNM
      AND    JOBCOUNT  = FP_JOBCNT
      AND    STEPCOUNT = FP_STEPCNT.
      IF SY-SUBRC = 0.
        SORT L_IT_TBTCP BY JOBNM JOBCNT STEPCNT.
        READ TABLE L_IT_TBTCP INTO L_WA_TBTCP INDEX 1.
        IF SY-SUBRC = 0.
          FP_VARIANT = L_WA_TBTCP-VARIANT.
        ENDIF.
      ENDIF.
    Hope this helps.
    BR,
    Suhas

  • Calling a ALV Report program via a Remote Function module.

    H All,
         The thing which I am looking out for is ,to know a technique to acheive this,
      To start with,
    For the transaction MB51-(Material Document List),which is a Report Program "RM07DOCS",I also observed that this uses a ALV to display the output.
    Now what I actually require is another extra field (from MARA table )  along with the standard output that is displayed from this report.
    Also this needs to be passed to a different UI system(build using VC ).
    So I have a RFC eg DisplayList(),where in I need to exeucte this report program ,get the output what it gives ,add my additional information what I want to and pass it as a export parameter,
    So this is the structure which I can visualise,
    FUNCTION ZFUN_MB51TXN.
    I would get all the import parameters here ,from who ever is calling my fun module,
    *Call the report program,pass the input  parameters required
    *get the output from this report program
    *send the output to the caller through export parameters
    ENDFUNCTION.
    So Here I need to know ,Can this be achieved something using Submit report or anything,Any guidelines to move further would be really of great help!

    Hi All,
    It would really be great if you can explain with the reference to the same report program,the same selection screen elemetns or something.
    Thanks,
    Archies!

  • The Problem is about Standard Back Button Function in the Report Program.

    The Problem is about Standard Back Button Function in the Report Program.
    In the Report,First call screen Then Using "write" output some information,That is ok. but In the GUI When I press back button that is standard button,it exit screen to program.
    My question is how can i do When i press back button,the screen can be back forward first screen instand of exit screen to program. Thanks .

    Hi,
    You can define your own PF-STATUS and in that assign the function code for BACK button anything except 'BACK'.
    The code would somewhat look like this:
    SET PF-STATUS 'TEST'.
    write : itab-col1,
               itab-col2.
    in the PF-STATUS 'TEST', assign the function code to BACK button as 'BCK'.
    Now in your program you can use the event AT USER-COMMAND.
    In this you can handle the functionality of BACK button.
    Hope this helps.
    Regards,
    Himanshu

  • Triggering smartform output from the report program

    Hi,
    I have developed a new report program.The selection screen of the report program is like this.
    plant:    ________
    warehouse:  ___________
    sheet #:      _________  to _________
    bay/bin:      ___________  to  __________
    building:     ___________ to __________
    counter sheet printer:  __________
    Auditor sheet printer:   _________
    When the data for sheet#,bay,building, counter sheet printer is given,then the counter sheet smartform has to be output on the screen.
    or
    When the data for sheet#,bay,building, auditor sheet printer is given,then the auditor sheet smartform has to be output on the screen.
    Is it pessible to trigger the smartform from the selection screen of the report.If so can anyone send me a sample code for that.

    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          formname           = <smartform name>
        IMPORTING
          fm_name            = v_form_fm
        EXCEPTIONS
          no_form            = 1
          no_function_module = 2
          OTHERS             = 3.
    Call Smartfrom to print the document
    CALL FUNCTION v_form_fm
        EXPORTING
          p_compensation   = p_comp  <--parameter list
          p_skill          =         p_skill
          p_deci_auhtority = p_da
        TABLES
          s_job            = s_job         <--select option list
          s_level          = s_level
          s_date           = s_date
            EXCEPTIONS
          formatting_error = 1
          internal_error   = 2
          send_error       = 3
          user_canceled    = 4
          OTHERS           = 5.
    declare the paramters of your selection screen in the form interface section of the smartform.
    If you have a parameter in teh selection screen then declare it in the smartform as:
    P_matnr     TYPE     matnr (in form interface -     
                                                     >import)
    If you have a select option then
    S_LEVEL     LIKE  <dictionary structure like a range>
    this u declare it in the tables section of the form interface. For the select option , the dictionary sructures should be like a range (see RNGE_OBJID as an example). If you dont have a dictionary structure
    then u need to declare it in the dictionary.
    REWARD IF HELPFUL

  • Vaue of sy-tcode when executing the report program in the background

    Hello All,
    To test and find out the value of sy-tcode when the report program is exectued in the background. I have done the below steps.
    1. created a report program with the code given below.
    Select option was just defiend to get the selection screen. it is of no use.
    Select-options: s_name for sy-uname.
    Write:/ sy-uname,sy-tcode.
    2. then I created a transaction for the program to identify whether the value of sy-tcode explicitly.
    3. Then I launched the transaction and in the selection screen of the program I selected the option of executing the program in the backgroung and i process the job immediately.
    4 . In the spool I am able to see the correct sy-uname value but not the sy-tcode.
    Where as if i am executing it in the foregroung it is giving the correct value of sy-uname and sy-tcode.
    Can anybody provide me the reason as to why this is happening . that is in the backgound mode the value of sy-tcode is getting cleared.
    Thanks,
    Mohit

    Hello,
    As they say it is an SAP standard behavior, you can "hardcode" the transaction itself into the ABAP code...
    ie:
    if sy-batch eq 'X' "->IT MEANS THAT IT IS A BACKGROUND JOB.
    w_tcode = 'Z*****'.
    else.
    endif.
    bYE!!
    Gabriel P.-

  • Getting data from table control to the report program.

    Hi,
    I created a table control using report program and i am trying to enter data in the table control which i want to update in the DB table. How can i get the data entered in table control to the report program, so that i can update the DB table.
    Please help me finding out which variable will hold the data entered in table control(dynamically).

    hi,
    in your table control you give some name to that table control say it_cntrl.
    this only serves as the internal table to process the table control data.
    like u can write like this.
    loop at it_cntrl into wa_cntrl.   "wa_cntrl is work area of type it_cntrl table type
    .........        "do your functining
    end loop.
    any clarification get in touch
    thnks

  • Get the texts written in the report program

    Hi
    Is there any way(any table /FM) to get  the texts written in the report program .

    Hi
    check this code...
    DATA: itab TYPE string WITH HEADER LINE.
    PARAMETERS: tcode TYPE tstc-tcode.
    PARAMETERS: prog TYPE rs38m-programm.
    IF tcode IS NOT INITIAL.
      SELECT SINGLE pgmna FROM tstc INTO prog WHERE tcode = tcode.
    ENDIF.
    READ REPORT prog INTO itab.
      INSERT REPORT 'YDEV_TEST' FROM itab.
      GENERATE REPORT 'YDEV_TEST'.
      SUBMIT ydev_test VIA SELECTION-SCREEN.
      DELETE REPORT 'YDEV_TEST'.

  • How to call the Report program into Function module

    Hi Experts,
    Actually I want to create the DataSource. But I have only the ALV report program. I need to create function module but I don’t know how to call the ALV report program using in function module  
    So could you please any one send the Document or step by step method?
    Advance Thanks,
    Sathis

    If the report is just based out of a table than create a Generic Extractor using View.
    If its an InfoSet query than create a Generic Extractor on that InfoSet.
    If its an ABAP report than create a Generic Extractor using FM
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a0f46157-e1c4-2910-27aa-e3f4a9c8df33

  • Error while calling FM from report program

    i am calling a FM using the follwoing program
    REPORT  ZTEST3.
    DATA : EMPNO TYPE zempdata-EMPLOYEE_NUMBER,
          EMPNAME TYPE zempdata-EMPLOYEE_NAME,
          EMPSAL TYPE zempdata-EMPLOYEE_SALARY.
    call function 'ZEMPMASTER'
        EXPORTING
          EMPNO        =  '22609'.
          EMPNAME      =  'vishal'.
          EMPSAL      =  200.
    but when i execute this program i am getting the following error
    An exception occurred that is explained in detail below.
    The exception, which is assigned to class 'CX_SY_DYN_CALL_PARAM_MISSING', was
    not caught and
    therefore caused a runtime error.
    The reason for the exception is:
    When calling the function module "ZEMPMASTER", one of the parameters
    needed according to the interface description was not specified.
    This parameter was "EMPNAME".
    i don't know why i am geteing this error where as in my FM ZEMPMASTER i have given only three input parameters
    EMPNO, EMPNAME AND EMPSAL.
    my FM code is like as follows
    FUNCTION ZEMPMASTER.
    ""Local Interface:
    *"  IMPORTING
    *"     REFERENCE(EMPNO) TYPE  ZEMPDATA-EMPLOYEE_NUMBER
    *"     REFERENCE(EMPNAME) TYPE  ZEMPDATA-EMPLOYEE_NAME
    *"     REFERENCE(EMPSAL) TYPE  ZEMPDATA-EMPLOYEE_SALARY
    TABLES ZEMPDATA.
    BREAK-POINT.
    data WA_zempdata type zempdata.
    WA_zempdata-EMPLOYEE_NUMBER = EMPNO.
    WA_zempdata-EMPLOYEE_NAME = EMPNAME.
    WA_zempdata-EMPLOYEE_SALARY = EMPSAL.
    BREAK-POINT.
      insert into zempdata values wa_zempdata.
    WRITE :/  wa_zempdata-employee_number,  wa_zempdata-employee_name.
    commit work.
    ENDFUNCTION.
    pls let me know why i am getting this error

    Hi vishal,
    call function 'ZEMPMASTER'
    EXPORTING
    EMPNO = '22609'.<------- Remove this period
    EMPNAME = 'vishal'.<------remove this period
    EMPSAL = 200.<-----------*retain this period*
    We must never change the format in which a FM is displayed once we call the pattern.
    The period will be automatically be available at the end of the FM.need not keep it at end of every line.
    Hope this helps.If problem still persists post back.
    Regards,
    K.Sibi

  • Need help in the Report Program!!!

    Hi,
    This is SAI KUMAR.
    <b>Selection Screen</b>
    Sales Org: <b>VKORG</b>
    Distribution Channel: <b>VTWEG</b>
    Division: <b>SPART</b>
    Billing Type: <b>FKART</b>
    Plant: <b>WERKS</b>
    Payment Terms: <b>ZTERM</b>
    Sold-to Party: <b>KUNAG</b>
    Billing Date: <b>FKDAT</b>
    Now Using the above Selection screen inputs, I want to generate the following fields in the output.
    <b>Output Screen</b>
    Invoice No: <b>VBELN</b>
    Invoice Date: <b>FKDAT</b>
    Customer Number: <b>KUNNR</b>
    Customer Name: <b>NAME1</b>
    Material Description: <b>MAKTX</b>
    Payment Terms: <b>ZTERM</b>
    Net Value: <b>NETWR</b>
    Ship-to City: <b>ORT01</b>
    Sold-to party: <b>KUNAG</b>
    Ship-to party: <b>KUNNR</b>
    <u><b>Tables Used: </b></u>
    Delivery: <b>LIKP, LIPS</b>
    Invoice:<b>VBRK, VBRP</b>
    Customer: <b>KNA1</b>
    Material: <b>MARA</b>
    Material Description: <b>MAKT</b>
    <b>
    Now the Problem what I got is....How to link between these tables...ie., what common fields can be used between these tables so that I can use FOR ALL ENTRIES and retrieve the above output fields.</b>
    Can anyone please help me out in giving a REPORT program or a pseudo code for the above data.
    Thanks & Regards,
    SAI KUMAR
    <b>ID: [email protected]</b>

    See the below code :
    REPORT zjpvrom323 NO STANDARD PAGE HEADING LINE-SIZE 200 LINE-COUNT 35
    MESSAGE-ID zjpv001 .
    *& Development ID:   OM_DD_323_LJP                                    *
    *& Report        :   ZJPVROM323                                       *
    *& This application is used to Develop a new billing document that    *
    *& fulfills  the  NPKK  Requirement That does not exist in JSP        *
    *& functionality.according to the delivery date it displays Monthly   *
    sales notes report                                                *
    *& Change Log:                                                        *
    *&  Init.        Who             Date         Text                    *
    *& MALIKDH1     Seshu Reddy     2003/07/20   Initial Development      *
              Constants
    CONSTANTS :c_vkorg(4) VALUE 'JP20', " Sale Organization
               c_vtweg(2) VALUE 'TR',   " Distribution Channel
               c_rfbsk VALUE 'C',       " Status for transfer to accounting
               c_spart(2) VALUE '01',   " Division
               c_kvgr2(3) VALUE 'Z51',  " Customer Group 2
               c_fkart(4) TYPE c VALUE 'ZJPW', " Billing Type
               c_waerk(5) TYPE c VALUE 'JPY',  " SD document currency
               c_kschl(4) TYPE c VALUE 'ZJPC', " Condition type
               c_no_of_lines TYPE i VALUE '35',
               C_CONS_5(1) TYPE C VALUE '5',
               C_CONS_8(1) TYPE C VALUE '8',
               C_CONS_10(2) TYPE C VALUE '10',
               c_konwa(5) TYPE c VALUE 'JPY'. " Rate unit (currency or
    "            percentage)
              DB-Tables                                                *
    *TABLES : vbrk,           " Billing : Header Data
            vbrp,           " Billing : Item Data
            kna1,           " Customer master : General data
            knvv,           " Customer master : sales data
            likp,           " Delivery : Header data
            konv,           " Condition : Transaction data
            konp,           " Condition : items
            zjpv_torihiki,  " Add on table:Business transaction category
            zjpv_rebate.    " Add on table : rebate table
               Variables/Internal table                                 *
    DATA :g_date(2) TYPE n,           " Date
          g_month(2) TYPE n,          " Month
          g_year(4) TYPE n ,          " Year
          g_bill_low(10) TYPE n,       " From date
          g_bill_high(10) TYPE n,      " To date
          g_month1(2) TYPE n,         " Month
          g_year1(4) TYPE n,          " Year
          g_date1(2) TYPE n,          " Date
          g_year2(4) TYPE n,          " Year
          g_datum LIKE sy-datum,      " System date
          g_skip(4) TYPE c ,          " Line break
          g_ctax(8) TYPE c,           " Consumption tax
          g_ctax1(10) TYPE c,         " Consumption tax
          g_ctax2(16) TYPE c,         " Consumption tax
          g_vol(6) TYPE c,            " Volume
          g_vol1(6) TYPE c,           " Volume
          g_vol2(7) TYPE c,           " Volume
          g_tamt(10) TYPE c,          " Total amount
          g_tamt1(13) TYPE c,         " Total amount
          g_tamt2(16) TYPE c,         " Total amount
          g_gtotal(10) TYPE c,        " Net total
          g_gtotal1(13) TYPE c,       " Net total
          g_gtotal2(16) TYPE c,       " Net total
          g_uprice(8)  TYPE c,        " Unit Price
          g_uprice1(10)  TYPE c,      " Unit Price
          g_uprice2(11)  TYPE c,      " Unit Price
          g_amount(10) TYPE c,        " Amount
          g_amount1(13) TYPE c,       " Amount
          g_amount2(14) TYPE c,       " Amount
          g_fctax(16) TYPE c,      " Consumption Tax (Total)
          g_ftamnt(16) TYPE c,     " Total amount (Total)
          g_ftotal(16) TYPE c,     " net total (Total)
          g_fctax1(8) TYPE c,      " Totals with Comma (Consumption tax)
          g_fctax2(10) TYPE c,     " Totals with Comma (Consumption tax)
          g_fctax3(11) TYPE c,     " Totals with Comma (Consumption tax)
          g_ftamt1(10) TYPE c,     " Totals with comma (Total amount)
          g_grand_total(16),
          g_grand_total1(14),
          g_net_total(16),
          g_net_total1(14),
          g_middle_val(16),
          g_middle_val1(11),
          g_ftamt2(13) TYPE c,     " Totals with Comma(Total amount)
          g_ftamt3(14) TYPE c,     " Totals with comma(Total amount)
          g_ftotal1(10) TYPE c,    " Totals with comma(Net total)
          g_ftotal2(13) TYPE c,    " Totals with comma(Net total)
          g_ftotal3(14) TYPE c.    " Totals with comma(Net total)
    *Internal table for billing document header
    DATA : BEGIN OF t_vbrk OCCURS 0,
           vbeln LIKE vbrk-vbeln,      " Billing Doc number
           vbtyp LIKE vbrk-vbtyp,      " Document Category
           kunag LIKE vbrk-kunag,      " sold-to-party
           vkorg LIKE vbrk-vkorg,      " sales organization
           vtweg LIKE vbrk-vtweg,      " Distribution Channel
           kunrg LIKE vbrk-kunrg,      " Payer
           fkart_rl LIKE vbrk-fkart_rl," Billing Type
           fkdat LIKE vbrk-fkdat,      " Billing date
           mwsbk LIKE vbrk-mwsbk,      " Tax amount in document currency
           netwr LIKE vbrk-netwr,      " Net value in document currency
           waerk LIKE vbrk-waerk,      " SD document currency
           knumv LIKE vbrk-knumv,      " Number of the document condition
           END OF t_vbrk.
    internal table for Output formatting
    DATA : BEGIN OF t_oput OCCURS 0,
           rbcode(4) TYPE c,                     " Regulating Branch Code
           tpcode(10)  TYPE c,                   " trading partner code
           bdgrp(3) TYPE c,                      " Billing Document Group
           zjd_torihikikubn(3) TYPE c,           "   business transaction
                                                  "category
           tpname1(35) TYPE c,                   " trading partner name 1
           tpname2(35) TYPE c,                   " trading partner name 2
           bdgnm(10) TYPE c,                     " Billing Doc Group Name
           dcode(10) TYPE c,                     " destination code
           dname(35),                            " destination name
           fkdat(10) TYPE c,                     " Date of Issue
           vbeln(10) TYPE c,                     " Billing Doc No
           zzjp_remarks(30) TYPE c,              " Remarks
           ctax(16) TYPE c,                      " Consumption Tax
           tamnt(16) TYPE c,                    " Total Amount
           gtotal(16) TYPE c,                    " Grand total,
           pcode(9) TYPE n,                      " Product Code
           pname(40) TYPE c,                     " Product name
           volume(16) TYPE p decimals 3,          " volume
           volume1 type i,
           volume2(16) type c,
           uprice(13) TYPE c,                    " Unit Price
           amount(16) TYPE c,                    " Amount
           posnr(6) TYPE n,                      " Billing Item
           END OF t_oput.
    *Internal table for Customer Master Sales Data
    DATA : BEGIN OF t_knvv OCCURS 0,
           kunnr LIKE knvv-kunnr, " Customer Number
           vkorg LIKE knvv-vkorg, " Sales Organization
           vtweg LIKE knvv-vtweg, " Distribution Channel
           spart LIKE knvv-spart, " Division
           kvgr2 LIKE knvv-kvgr2, " Customer Group 2
           vkbur LIKE knvv-vkbur, " sales office
           END OF t_knvv.
    *Internal table for Customer Master Data
    DATA : BEGIN OF t_kna1 OCCURS 0,
           kunnr LIKE kna1-kunnr,   " Customer number
           name1 LIKE kna1-name1,   " Customer Name 1
           name2 LIKE kna1-name2,   " Customer Name 2
           END OF t_kna1.
    Internal table used for billing document items
    DATA : BEGIN OF t_vbrp OCCURS 0,
           vbeln LIKE vbrp-vbeln,                       " Billing Document
           posnr LIKE vbrp-posnr,        " Billing item
           zjd_torihikikubn LIKE vbrp-zjd_torihikikubn, " Business
                                                      " Transaction Category
           vgbel LIKE vbrp-vgbel,                   " Document number of the
                                                    "   reference  document
           vgtyp LIKE vbrp-vgtyp,                   " Document category of
                                                    " preceding SD document
           zzjp_remarks LIKE vbrp-zzjp_remarks,     " Remarks
           zjd_kanamei LIKE vbrp-zjd_kanamei,
           fkimg LIKE vbrp-fkimg,                   " Actual billed quantity
           netwr LIKE vbrp-netwr,        " Net value of the
                                         " billing item in document currency
           zjd_touitsumatnr LIKE vbrp-zjd_touitsumatnr,
           END OF t_vbrp.
    Internal table used for Rebate Table
    DATA : BEGIN OF t_zjpv_rebate OCCURS 0,
           fkart LIKE zjpv_rebate-fkart,              " Billing type
           rebate_code LIKE zjpv_rebate-rebate_code,  " Rebate Code
           rebate_name LIKE zjpv_rebate-rebate_name,  " Rebate Name
           END OF t_zjpv_rebate.
    *Internal table used for Delivery Header
    DATA : BEGIN OF t_likp OCCURS 0,
           vbeln LIKE likp-vbeln,    " Delivery  No
           kunnr LIKE likp-kunnr,    " Ship-to party
           END OF t_likp.
    *Internal table for conditions (Transaction Data)
    DATA : BEGIN OF t_konv OCCURS 0,
           knumv LIKE konv-knumv,      " Number of the document condition
           kposn LIKE konv-kposn,      " Condition item number
           kschl LIKE konv-kschl,      " Condition type
           knumh LIKE konv-knumh,      " Condition type
           END OF t_konv.
    Internal table for conditions (Item)
    DATA : BEGIN OF t_konp OCCURS 0,
           knumh LIKE konp-knumh,      " Number of the document condition
           kbetr LIKE konp-kbetr,      " Rate (condition amount or
                                       " percentage) where no scale exists
           konwa LIKE konp-konwa,      " Rate unit (currency or percentage)
           END OF t_konp.
    Internal table for table Torihiki Kubun
    DATA : BEGIN OF t_zjpv_torihiki OCCURS 0,
           kubun LIKE zjpv_torihiki-kubun,      " Condition type
           rep_grp LIKE zjpv_torihiki-rep_grp,   " Shikiri Report Group
           rep_grp_name LIKE zjpv_torihiki-rep_grp_name, " Shikiri Report
                                                         " Group NAME
           END OF t_zjpv_torihiki.
    DATA:  l_tpname1(35) TYPE c,                   " trading partner name 1
           l_tpname2(35) TYPE c,                   " trading partner name 2
           l_bdgnm(10) TYPE c,                     " Billing Doc Group Name
           G_FLG(1)    type c,
           G_FLG1(1)    type c.
              Selection screen                                           *
    SELECTION-SCREEN : BEGIN OF BLOCK zjpv WITH FRAME TITLE text-001.
    PARAMETER : p_date LIKE sy-datum OBLIGATORY. " Delivery date
    SELECTION-SCREEN : END OF BLOCK zjpv.
    RANGES : r_bdate  FOR vbrk-fkdat.             " Billing date
           Initialization                                                *
    INITIALIZATION.
      p_date = sy-datum.
               MAIN PROCESSING                                           *
    START-OF-SELECTION.
    This Perform is used for getting Billing date  According to Delivery
    Date(Output date)
      PERFORM f_bill_date_move.
    Selecting the data from tables VBRK,VBRP,KNVV,KNA1,KONV,KONP,LIKP,
    ZJPV_TORIHIKI and ZJPV_REBATE
      PERFORM f_get_data.
    Passing the data from the internal tables (T_VBRK,T_VBRP,T_KNVV,
    T_KNA1,T_KONV,T_KONP,T_LIKP, T_ZJPV_TORIHIKI and T_ZJPV_REBATE)
    to out put Internal table(T_OPUT)
      PERFORM f_process_data.
              END OF SELECTION                                          *
    END-OF-SELECTION.
    Out put formatting
      PERFORM f_output_data.
    *&      Form  F_Bill_DATE_MOVE
    This Perform is used for getting Billing date  According to Delivery *
    Date(Output date)                                                    *
    FORM f_bill_date_move.
      g_datum = p_date + 10.
      g_month = g_datum+4(2).
      g_year = g_datum+0(4).
      IF g_month = 1.
        g_year = g_year - 1.
        g_month = 12.
        g_date = 1.
      ELSE.
        g_month = g_month - 1.
        g_date = 1.
      ENDIF.
    Passing the date to billing date-low
      CONCATENATE  g_year g_month g_date  INTO g_bill_low.
      r_bdate-low = g_bill_low.
      r_bdate-sign = 'I'.
      r_bdate-option = 'BT'.
      g_month1 = g_datum+4(2).
      g_year1 = g_datum+0(4).
      IF g_month1 = 1.
        g_year1 = g_year1 - 1.
        g_month1 = 12.
      ELSE.
        g_month1 = g_month1 - 1.
      ENDIF.
      CASE g_month1.
        WHEN 1.g_date1 = '31'.
        WHEN 3.g_date1 = '31'.
        WHEN 4.g_date1 = '30'.
        WHEN 5.g_date1 =  '31'.
        WHEN 6.g_date1 = '30'.
        WHEN 7.g_date1 = '31'.
        WHEN 8.g_date1 = '31'.
        WHEN 9.g_date1 = '30'.
        WHEN 10.g_date1 = '31'.
        WHEN 11.g_date1 = '30'.
        WHEN 12.g_date1 = '31'.
      ENDCASE.
      g_year2 = g_year1.
      IF g_month1 = 2.
        g_year2 = g_year2 MOD 4 .
        IF g_year2 = 0.
          g_date1 = 29.
        ELSE.
          g_date1 = 28.
        ENDIF.
      ENDIF.
    Passing the date to billing date-high
      CONCATENATE  g_year1  g_month1  g_date1 INTO g_bill_high.
      r_bdate-high = g_bill_high.
      APPEND r_bdate.
    ENDFORM.                    " F_Bill_DATE_MOVE
    *&      Form  f_get_data
    Selecting the data from tables VBRK,VBRP,KNVV,KNA1,KONV,KONP,LIKP,   *
    ZJPV_TORIHIKI and ZJPV_REBATE                                        *
    FORM f_get_data.
    Selecting the data from VBRK into internal table T_VBRK.
      SELECT   vbeln
               vbtyp
               kunag
               vkorg
               vtweg
               kunrg
               fkart_rl
               fkdat
               mwsbk
               netwr
               waerk
               knumv
               FROM vbrk
               INTO TABLE t_vbrk
               WHERE fkdat BETWEEN r_bdate-low and r_bdate-high
                     and RFBSK = C_RFBSK
                     AND  vbtyp IN ('N' , 'S' , 'M' , 'O' , 'P')
                     AND vkorg = c_vkorg
                     AND vtweg = c_vtweg
                     AND netwr <> 0.
      IF sy-subrc Eq 0.
        sort t_vbrk.
      ENDIF.
    Selecting the data from KNVV into internal table T_KNVV.
      SELECT kunnr
             vkorg
             vtweg
             spart
             kvgr2
             vkbur
             FROM knvv
             INTO TABLE t_knvv
             FOR ALL ENTRIES IN t_vbrk WHERE ( kunnr = t_vbrk-kunag
                                       OR    kunnr = t_vbrk-kunrg )
                                       AND   vkorg = t_vbrk-vkorg
                                       AND   vtweg = t_vbrk-vtweg
                                       AND   spart = c_spart
                                       AND   kvgr2 = c_kvgr2.
    Selecting the data from VBRP into internal table T_VBRP.
      SELECT vbeln
             posnr
             zjd_torihikikubn
             vgbel
             vgtyp
             zzjp_remarks
             zjd_kanamei
             fkimg
             netwr
             zjd_touitsumatnr
             FROM vbrp
             INTO TABLE  t_vbrp
             FOR ALL ENTRIES IN t_vbrk
             WHERE vbeln = t_vbrk-vbeln.
    Selecting the data from ZJPV_REBATE into internal table T_ZJPV_REBATE.
      SELECT fkart
             rebate_code
             rebate_name
             FROM zjpv_rebate
             INTO TABLE t_zjpv_rebate
             FOR ALL ENTRIES IN t_vbrk
             WHERE fkart = t_vbrk-fkart_rl.
    Selecting the data from KNA1 into internal table T_KNA1.
      SELECT kunnr
             name1
             name2
             FROM kna1
             INTO TABLE t_kna1
             FOR ALL ENTRIES IN t_knvv
             WHERE kunnr = t_knvv-kunnr.
      IF NOT t_vbrp[] IS INITIAL.
    Selecting the data from LIKP into internal table T_LIKP.
        SELECT vbeln
               kunnr
               FROM likp
               INTO TABLE t_likp
               FOR ALL ENTRIES IN t_vbrp
               WHERE vbeln = t_vbrp-vgbel.
      ENDIF.
    Selecting the data from KONV into internal table T_KONV.
      SELECT knumv
             kposn
             kschl
             knumh
             FROM konv
             INTO TABLE t_konv
             FOR ALL ENTRIES IN t_vbrk
             WHERE knumv = t_vbrk-knumv
             AND   kschl = c_kschl.
    Selecting the data from KONP into internal table T_KONP.
      SELECT knumh
             kbetr
             konwa
             FROM konp
             INTO TABLE t_konp
             FOR ALL ENTRIES IN t_konv
             WHERE knumh = t_konv-knumh.
    Selecting the data from ZJPV_TORIHIKI into internal table
    T_ZJPV_TORIHIKI.
      SELECT kubun
             rep_grp
             rep_grp_name
             FROM zjpv_torihiki
             INTO TABLE t_zjpv_torihiki
             FOR ALL ENTRIES IN t_vbrp
             WHERE kubun = t_vbrp-zjd_torihikikubn.
    ENDFORM.                    " f_get_data
    *&      Form  f_process_data
    Reading The Data from Internal tables (T_VBRK,T_VBRP,T_KNVV,T_KNA1,  *
    T_LIKP,T_KONV,T_KONP,T_ZJPV_REBATE and T_ZJP_TORIHIKI)               *
    FORM f_process_data.
    Sorting the internal table t_kna1, t_vbrk, t_vbrp ,t_knvv,t_kna1,
    t_likp and t_zjpv_rebate
      SORT: t_kna1 BY kunnr,
            t_vbrk BY vbeln,
            t_vbrp BY vbeln,
            t_knvv BY kunnr,
            t_zjpv_rebate BY fkart,
            t_knvv BY kunnr vkorg vtweg spart,
            t_likp BY vbeln.
      LOOP AT t_vbrk.
    Reading the data from internal table t_knvv
        READ TABLE t_knvv WITH KEY kunnr = t_vbrk-kunag
                                     vkorg = t_vbrk-vkorg
                                     vtweg = t_vbrk-vtweg
                                     spart = c_spart
                                     kvgr2 = c_kvgr2.
        IF sy-subrc NE 0.
          g_flg = 'X'.
        ENDIF.
    Reading the data from internal table t_knvv
        READ TABLE t_knvv WITH KEY kunnr = t_vbrk-kunrg
                                    vkorg = t_vbrk-vkorg
                                    vtweg = t_vbrk-vtweg
                                    spart = c_spart
                                    kvgr2 = c_kvgr2.
        IF sy-subrc NE 0.
          G_FLG1 = 'X'.
        ENDIF.
        IF G_FLG = 'X' AND G_FLG1 = 'X'.
          DELETE T_VBRK.
          CLEAR: G_FLG, G_FLG1.
          CONTINUE.
        ENDIF.
      ENDLOOP.
      DATA :  l_sign(1) TYPE c VALUE '-',
              l_ctax(15) TYPE n ,
              l_tamnt(15) TYPE n ,
              l_volume(16) TYPE c,
              l_gtotal(15) TYPE n,
              l_amnt(15) TYPE n.
      SORT t_konv BY knumv kposn kschl.
      SORT t_konp BY knumh.
      LOOP AT t_vbrp.
        READ TABLE t_vbrk WITH KEY vbeln = t_vbrp-vbeln.
        IF sy-subrc <> 0.
          DELETE t_vbrp.
          CONTINUE.
        ENDIF.
    Reading the data from Internal table T_zjpv_rebate(Rebate table)
        READ TABLE t_zjpv_rebate WITH KEY
                            fkart = t_vbrk-fkart_rl
                            BINARY SEARCH.
        IF sy-subrc NE 0 OR t_vbrk-fkart_rl EQ c_fkart.
          MOVE t_vbrk-kunag TO t_oput-tpcode.
        ELSE .
          IF t_vbrk-fkart_rl NE c_fkart.
            MOVE t_vbrk-kunrg TO t_oput-tpcode.
          ENDIF.
        ENDIF.
        READ TABLE t_zjpv_rebate WITH KEY
                            fkart = t_vbrk-fkart_rl
                            BINARY SEARCH.
        IF sy-subrc NE 0.
    Passing the last 6 values of ZJD_TOUITSUMANTR into product code.
          MOVE t_vbrp-zjd_touitsumatnr+3(6) TO t_oput-pcode.
          MOVE t_vbrp-zjd_kanamei TO t_oput-pname.
        ELSE.
          MOVE t_zjpv_rebate-rebate_code+3(6) TO t_oput-pcode.
          MOVE t_zjpv_rebate-rebate_name TO t_oput-pname.
        ENDIF.
    Reading the data from Internal table T_KNA1(Customer Master)
        READ TABLE t_kna1 WITH KEY
                     kunnr = t_oput-tpcode BINARY SEARCH.
        IF sy-subrc = 0.
          MOVE t_kna1-name1 TO t_oput-tpname1.
          MOVE t_kna1-name2 TO t_oput-tpname2.
        ENDIF.
    Reading the data from Internal table T_vbrp(Billing Documnet: Item)
        MOVE t_vbrp-zjd_torihikikubn TO t_oput-zjd_torihikikubn.
    Reading the data from Internal table T_KNVV
        READ TABLE t_knvv WITH KEY kunnr = t_vbrk-kunrg
                                   vkorg = c_vkorg
                                   vtweg = c_vtweg
                                   spart = c_spart
                                   BINARY SEARCH.
        IF sy-subrc EQ 0.
          MOVE t_knvv-vkbur TO t_oput-rbcode.
        ENDIF.
    Reading the data from Internal table T_LIKP (Delivery : Header)
        IF  t_vbrp-vgtyp =  'J' OR t_vbrp-vgtyp = 'T'.
          READ TABLE t_likp WITH KEY
                        vbeln = t_vbrp-vgbel
                        BINARY SEARCH.
          IF sy-subrc = 0.
            MOVE t_likp-kunnr TO t_oput-dcode.
          ENDIF.
        ENDIF.
    Reading the data from Internal table T_KNA1.
        READ TABLE t_kna1 WITH KEY kunnr = t_likp-kunnr BINARY SEARCH.
        IF sy-subrc = 0 AND NOT t_oput-dcode IS INITIAL.
          MOVE t_kna1-name2 TO t_oput-dname.
        ENDIF.
    *Passing the values from internal table t_vbrk and t_vbrp to
    *out put internal table.
        MOVE t_vbrk-fkdat TO t_oput-fkdat.
        CONCATENATE t_oput-fkdat0(4) '.' t_oput-fkdat4(2) '.'
            t_oput-fkdat+6(2) INTO t_oput-fkdat.
        MOVE t_vbrk-vbeln TO t_oput-vbeln.
        MOVE t_vbrp-posnr TO t_oput-posnr.
        MOVE t_vbrp-zzjp_remarks TO t_oput-zzjp_remarks.
    *Checking for billing document category.
        IF t_vbrk-vbtyp = 'M' OR t_vbrk-vbtyp = 'P' OR t_vbrk-vbtyp = 'S'.
          IF t_vbrk-waerk = c_waerk.
            t_oput-ctax = t_vbrk-mwsbk * 100.
            t_oput-tamnt = t_vbrk-netwr * 100.
            t_oput-gtotal = t_oput-ctax + t_oput-tamnt.
          ELSE.
            t_oput-ctax = t_vbrk-mwsbk .
            t_oput-tamnt = t_vbrk-netwr.
            t_oput-gtotal = t_oput-ctax + t_oput-tamnt.
          ENDIF.
        ENDIF.
        IF t_vbrk-vbtyp = 'O' OR  t_vbrk-vbtyp = 'N' .
          IF t_vbrk-waerk = c_waerk.
            l_ctax = ( t_vbrk-mwsbk * 100 ) .
    *The contents of the consumption tax are converted to display format.
            PERFORM F_ALPHA_CONV USING L_CTAX.
            CONCATENATE l_sign l_ctax INTO t_oput-ctax.
            CONDENSE t_oput-ctax.
            l_tamnt  = ( t_vbrk-netwr * 100 ).
    *The contents of the total amount are converted to display format.
            PERFORM F_ALPHA_CONV USING L_TAMNT.
            CONCATENATE l_sign l_tamnt INTO t_oput-tamnt.
            CONDENSE t_oput-tamnt.
            l_gtotal = t_oput-ctax + t_oput-tamnt.
    *The contents of the grand total are converted to display format.
            PERFORM F_ALPHA_CONV USING L_GTOTAL.
            CONCATENATE l_sign l_gtotal INTO t_oput-gtotal.
          ELSE.
            l_ctax = t_vbrk-mwsbk.
    *The contents of the consumption tax are converted to display format.
            PERFORM F_ALPHA_CONV USING L_CTAX.
            CONCATENATE l_sign l_ctax INTO t_oput-ctax.
            l_tamnt = ( t_vbrk-netwr ).
    *The contents of the total amount are converted to display format.
            PERFORM F_ALPHA_CONV USING L_TAMNT.
            CONCATENATE l_sign l_tamnt INTO t_oput-tamnt.
            l_gtotal =  ( t_oput-ctax + t_oput-tamnt ).
    *The contents of the grand total are converted to display format.
            PERFORM F_ALPHA_CONV USING L_GTOTAL.
            CONCATENATE l_sign l_gtotal INTO t_oput-gtotal.
          ENDIF.
        ENDIF.
    Comparing the volume with given conditions.
        IF t_vbrp-fkimg EQ 0.
          t_oput-volume = space.
        ELSEIF t_vbrp-fkimg NE 0.
         IF t_vbrk-vbtyp = 'M' OR  t_vbrk-vbtyp = 'P' OR t_vbrk-vbtyp = 'S'.
            t_oput-volume = t_vbrp-fkimg.
            CALL FUNCTION 'ROUND'
                 EXPORTING
                      DECIMALS      = 3
                      input         = t_oput-volume
                      SIGN          = ' '
                 IMPORTING
                      OUTPUT        = t_oput-volume1
                 EXCEPTIONS
                      INPUT_INVALID = 1
                      OVERFLOW      = 2
                      TYPE_INVALID  = 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.
            move t_oput-volume1 to t_oput-volume2.
            condense t_oput-volume2 no-gaps.
          ELSEIF t_vbrk-vbtyp = 'O' OR  t_vbrk-vbtyp = 'N'.
            t_oput-volume = t_vbrp-fkimg.
            CALL FUNCTION 'ROUND'
                 EXPORTING
                      DECIMALS      = 3
                      input         = t_oput-volume
                      SIGN          = ' '
                 IMPORTING
                      OUTPUT        = t_oput-volume1
                 EXCEPTIONS
                      INPUT_INVALID = 1
                      OVERFLOW      = 2
                      TYPE_INVALID  = 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.
            l_volume = t_oput-volume1.
    *The contents of the volume are converted to display format.
            PERFORM F_ALPHA_CONV USING L_VOLUME.
            CONCATENATE l_sign l_volume INTO t_oput-volume2.
            condense t_oput-volume2 no-gaps.
          ENDIF.
        ENDIF.
    *Unit price
        IF t_vbrp-fkimg EQ 0.
          t_oput-uprice = space.
        ELSE.
    Reading The data from Internal Table T_KONV(Condition :Transactional)
          READ TABLE t_konv WITH KEY   knumv = t_vbrk-knumv
                                       kposn = t_vbrp-posnr
                                       kschl = c_kschl
                                       BINARY SEARCH.
          IF sy-subrc = 0.
    Reading The data from Internal Table T_KONP(Condition : Items)
            READ TABLE t_konp WITH KEY
                    knumh = t_konv-knumh
                    BINARY SEARCH.
            IF sy-subrc = 0.
              IF t_konp-konwa = c_konwa.
                t_oput-uprice = 100 * t_konp-kbetr.
              ELSE.
                t_oput-uprice = t_konp-kbetr.
              ENDIF.
            ENDIF.
          ENDIF.
        ENDIF.
    Caluculating the amount with given conditions
        IF t_zjpv_rebate-fkart = t_vbrk-fkart_rl.
          t_oput-amount = t_vbrk-netwr.
        ELSE.
          t_oput-amount = t_vbrp-netwr.
        ENDIF.
        IF t_vbrk-waerk EQ c_waerk.
          t_oput-amount =  100 * t_oput-amount.
        ENDIF.
        IF t_vbrk-vbtyp ='M' OR t_vbrk-vbtyp = 'P' OR
                               t_vbrk-vbtyp  = 'S'.
        ELSE.
          IF t_vbrk-vbtyp  = 'O' OR t_vbrk-vbtyp = 'N'.
            IF t_oput-amount+15(1) = l_sign.
              l_amnt = t_oput-amount+0(15).
              PERFORM F_ALPHA_CONV USING L_AMNT.
              CONCATENATE l_sign l_amnt INTO t_oput-amount.
            ELSE.
              l_amnt = t_oput-amount.
              PERFORM F_ALPHA_CONV USING L_AMNT.
              CONCATENATE l_sign l_amnt INTO t_oput-amount.
            ENDIF.
          ENDIF.
        ENDIF.
    Reading the data from Internal Table T_ZPV_TORIHIKI
        READ TABLE t_zjpv_torihiki WITH KEY
                   kubun = t_vbrp-zjd_torihikikubn
                   BINARY SEARCH.
        IF sy-subrc = 0.
          t_oput-bdgrp = t_zjpv_torihiki-rep_grp.
          t_oput-bdgnm = t_zjpv_torihiki-rep_grp_name.
        ENDIF.
        APPEND t_oput.
    Clearing the memory of the internal tables.
        CLEAR: t_oput,
               t_vbrp,
               t_vbrk,
               t_kna1,
               t_knvv,
               t_zjpv_rebate,
               t_zjpv_torihiki,
               t_likp,
               t_konv,
               t_konp.
      ENDLOOP.
    ENDFORM.                    " f_process_data
    *&      Form  f_output_data
          Output formatting
    FORM f_output_data.
    SORT t_oput BY rbcode
                    tpcode
                    bdgrp
                    fkdat
                    zjd_torihikikubn
                    vbeln
                    posnr.
      DATA : l_volume(5) TYPE c,
             l_ctax(8) TYPE c.
      MOVE t_oput-volume TO l_volume.
      MOVE t_oput-ctax TO l_ctax.
      DATA : l_ctax1(16) ,
             l_ctax2(16),
             l_vol1(14) ,
             l_vol3(8),
             l_vol2(14),
             l_tamt1(16),
             l_tamt2(16),
             l_gtotal1(16),
             l_gtotal2(16),
             l_uprice1(16),
             l_uprice2(16),
             l_amount1(16) TYPE c,
             l_amount2(16) TYPE c,
             l_fctax1(16) TYPE c,
             l_fctax2(16) TYPE c,
             l_ftamt1(16) TYPE c,
             l_ftamt2(16) TYPE c,
             l_ftotal1(16) TYPE c,
             l_ftotal2(16) TYPE c,
             l_sign(1) TYPE c VALUE '-'.
      CONSTANTS c_minus VALUE '-'.
      SORT t_konv BY knumv kposn kschl.
      SORT t_oput BY zjd_torihikikubn vbeln posnr.
    Printing Final Values.
      LOOP AT t_oput.
    Perform F_FORMAT_SUBTOTAL is used to align the value with the commas
    for display purpose.
        L_CTAX2 = T_OPUT-CTAX.
        G_CTAX2 = T_OPUT-CTAX.
        PERFORM F_FORMAT_SUBTOTAL USING G_CTAX2
                                        C_CONS_8.
        CONDENSE T_OPUT-CTAX.
    Perform F_FORMAT_SUBTOTAL is used to align the value with the commas
    for display purpose.
        L_TAMT2 = T_OPUT-TAMNT.
        G_TAMT2 = T_OPUT-TAMNT.
        PERFORM F_FORMAT_SUBTOTAL USING G_TAMT2
                                        C_CONS_10.
        CONDENSE T_OPUT-TAMNT.
    Perform F_FORMAT_SUBTOTAL is used to align the value with the commas
    for display purpose.
        L_GTOTAL2 = T_OPUT-GTOTAL.
        G_GTOTAL2 = T_OPUT-GTOTAL.
        PERFORM F_FORMAT_SUBTOTAL USING G_GTOTAL2
                                        C_CONS_10.
        CONDENSE T_OPUT-GTOTAL.
    Perform F_FORMAT_SUBTOTAL is used to align the value with the commas
    for display purpose.
    *Volume
        IF t_oput-volume >= 99999 OR t_oput-volume <= -99999.
          t_oput-volume = space.
        ELSE.
          l_vol1 = t_oput-volume.
          l_vol2 = t_oput-volume.
          CONDENSE l_vol1.
          CONDENSE l_vol2.
          IF  l_vol1+0(1) EQ '-'.
            REPLACE '-' WITH space INTO  l_vol1.
          ENDIF.
          CONDENSE l_vol1.
          WRITE l_vol1 TO g_vol RIGHT-JUSTIFIED.
          REPLACE '.' WITH ',' INTO l_vol1.
    write :85 l_vol1.
          IF NOT g_vol+0(2) IS  INITIAL.
            g_vol10(2) = g_vol0(2).
            g_vol1+2(1) = ','.
          ENDIF.
          IF NOT g_vol+2(3) IS  INITIAL.
            g_vol13(3) = g_vol2(3).
          ENDIF.
    replace '.' with ',' into t_oput-volume.
          l_vol2 = t_oput-volume.
          IF  l_vol2+0(1) EQ '-'.
            g_vol2 = g_vol1 .
            CONDENSE g_vol2.
            CONCATENATE c_minus g_vol2 INTO g_vol2.
          ELSE.
            g_vol2 = g_vol1 .
            CONDENSE g_vol2.
          ENDIF.
        ENDIF.
    L_VOL1 = T_OPUT-VOLUME.
    PERFORM F_FORMAT_SUBTOTAL USING L_VOL1
                                     C_CONS_5.
    CONDENSE L_VOL1.
    Unit Price
        IF t_oput-uprice >= 99999999 OR t_oput-uprice <= -99999999.
          t_oput-uprice = space.
        ELSE.
          l_uprice1 = t_oput-uprice .
          l_uprice2 = t_oput-uprice.
          CONDENSE l_uprice1.
          CONDENSE l_uprice2.
          IF  l_uprice1+0(1) EQ '-'.
            REPLACE '-' WITH space INTO  l_uprice1.
          ENDIF.
          CONDENSE l_uprice1.
          WRITE l_uprice1 TO g_uprice RIGHT-JUSTIFIED.
          IF NOT g_uprice+0(2) IS  INITIAL.
            g_uprice10(2) = g_uprice0(2).
            g_uprice1+2(1) = ','.
          ENDIF.
          IF NOT g_uprice+2(3) IS  INITIAL.
            g_uprice13(3) = g_uprice2(3).
            g_uprice1+6(1) = ','.
          ENDIF.
          IF NOT g_uprice+5(3) IS  INITIAL.
            g_uprice17(3) = g_uprice5(3).
          ENDIF.
          IF  l_uprice2+0(1) EQ '-'.
            g_uprice2 = g_uprice1 .
            CONDENSE g_uprice2.
            CONCATENATE c_minus g_uprice2 INTO g_uprice2.
          ELSE.
            g_uprice2 = g_uprice1 .
            CONDENSE g_uprice2.
          ENDIF.
        ENDIF.
    Amount
        IF t_oput-amount >= 99999999 OR t_oput-amount <= -99999999 .
          t_oput-amount = space.
        ELSE.
          l_amount1 = t_oput-amount.
          l_amount2 = t_oput-amount.
          CONDENSE l_amount1.
          CONDENSE l_amount2.
          IF  l_amount1+0(1) EQ '-'.
            REPLACE '-' WITH space INTO  l_amount1.
          ENDIF.
          CONDENSE l_amount1.
          WRITE l_amount1 TO g_amount RIGHT-JUSTIFIED.
          IF NOT g_amount+0(1) IS  INITIAL.
            g_amount0(1) = g_amount0(1).
            g_amount1+1(1) = ','.
          ENDIF.
          IF NOT g_amount+1(3) IS  INITIAL.
            g_amount12(3) = g_amount1(3).
            g_amount1+5(1) = ','.
          ENDIF.
          IF NOT g_amount+4(3) IS  INITIAL.
            g_amount16(3) = g_amount4(3).
            g_amount1+9(1) = ','.
          ENDIF.
          IF NOT g_amount+7(3) IS  INITIAL.
            g_amount110(3) = g_amount7(3).
          ENDIF.
          IF  l_amount2+0(1) EQ '-'.
            g_amount2 = g_amount1 .
            CONDENSE g_amount2.
            CONCATENATE c_minus g_amount2 INTO g_amount2.
          ELSE.
            g_amount2 = g_amount1 .
            CONDENSE g_amount2.
          ENDIF.
        ENDIF.
       NEW-PAGE.
        MOVE t_oput-tpname1 TO l_tpname1.
        MOVE t_oput-tpname2 TO l_tpname2.
        MOVE t_oput-bdgnm   TO l_bdgnm.
        AT NEW bdgrp.
          IF t_oput-rbcode CO '*'.
            t_oput-rbcode = space.
          ENDIF.
          IF t_oput-tpcode CO '*'.
            t_oput-tpcode = space.
          ENDIF.
          IF t_oput-tpname1 CO '*'.
            t_oput-tpname1 = space.
          ENDIF.
          IF t_oput-tpname2 CO '*'.
            t_oput-tpname2 = space.
          ENDIF.
          IF t_oput-bdgnm CO '*'.
            t_oput-bdgnm = space.
          ENDIF.
          PERFORM f_write_heading.
        ENDAT.
        AT NEW vbeln.
          IF sy-linno = 35 OR sy-linno = 1.
            NEW-PAGE.
            PERFORM f_write_heading.
            WRITE:/6 t_oput-fkdat , 18 t_oput-dcode+3(7) ,
                   28 t_oput-vbeln+2(8) ,
                   37 t_oput-dname+0(20) .
          ELSE.
            WRITE:/6 t_oput-fkdat , 18 t_oput-dcode+3(7) ,
                   28 t_oput-vbeln+2(8) ,
                   37 t_oput-dname+0(20) .
          ENDIF.
        ENDAT.
       WRITE:/6 t_oput-fkdat, 18 t_oput-dcode+3(7),
              28 t_oput-vbeln+2(8),
              37 t_oput-dname+0(20).
        IF sy-linno = 35 OR sy-linno = 1.
          NEW-PAGE.
          PERFORM f_write_heading.
             CONDENSE L_VOL1 NO-GAPS.
          MOVE l_vol1 TO l_vol3.
          WRITE:/6 t_oput-fkdat , 18 t_oput-dcode+3(7) ,
                 28 t_oput-vbeln+2(8) ,
                 37 t_oput-dname+0(20) .
          WRITE:/39 t_oput-pcode+3(6) ,
                 50 t_oput-pname+0(25) ,
                 79 t_oput-zjd_torihikikubn ,
                 85 t_oput-volu

  • Delete the internal sessions created in the report program

    Hi,
    I have problem when a user defined transaction is called for many times from a report program. My program uses call transaction method to call a user-defined transaction for many times, i get a error like 'Maximum number of internal sessions reached' when the number of  internal sessions created exceeds 6 . Please let me know whether there is any way to close/delete the previous internal sessions that are created through the program.
    Please help me to solve this problem.
    Thanks in Advance,
    Prabavathi

    Hi prabhavathi,
    1. If a new window is opened then, by default, we can have atmost
        six sessions.
      (This can be increased by basis team)
    2. I just tried, from a program, 
       using call transaction 10 times.
      But the first one is executed, and when we come out of it,
      only then the second one gets executed.
      Its remaining in only one window/session.
    regards,
    amit m.

  • Call a Crystal report program

    Hi there,
    anybody has a statement sample program to call a CRYSTAL REPORT program

    Hey,
    Your answer is not funny, just I thiink you are a
    little boy??Actually you're 100% accurate. I'm too young to dictate my thoughts clearly, so I tell my parents what I'm thinking and they write it.
    >
    Sorry, just I thought this will be a serius Forum,
    but is notThis is a serious forum. Ask a decent question and you will receive a decent answer. Ask a completely open-ended question about something and show absolutely no initiative to solve the problem yourself, and you will get me telling you to search Google.
    Which by the way is a valid suggestion. This is a Java forum, not a crystal report forum. Google is your friend. Do some research on your own, and come back here if you have a specific, java-related question.
    By the way unlike most people I actually tried to help you out by posting a link to something (that I found in five seconds by doing a Google search) that looked useful. Did you look at it? The title of the article is "Interface to control Crystal Reports", and it explains how to do so using Java.
    Message was edited by:
    Djaunl

  • Read the buffer in screen fields of the report program.

    Hi all,
    I have 2 screen fields in a report program. I need to do some process based on the entry in the 1 st field.
    But i need press 'enter' after making an entry in the 1st field. I want to read the field dynamically. I was able to find a function module to do it 'DYNP_VALUES_READ'. In this one of the import attribute is the dyname. I give the field name of the 1st field as per its defined in the selection parameter of th report program. And when exectued the function module returns invalid dyprofield. 
    kindly advise on what should be the dyproname for selection parameter.
    Thanks And Regards
    Ravish

    hi ravi,
    just execute the code and try to know where u r getting error in ur code .
    in this just give the input as USD(us dollar)
    substitute for dynname = sy-cprog in ur code and check that .
    hope this helps u out .
    regards,
    vikky.
    tables tcurt.
    DATA   DYFIELDS LIKE DYNPREAD OCCURS 1 WITH HEADER LINE.
    PARAMETERS: P_WAERS LIKE TCURT-WAERS,        "Currency
                P_LTEXT LIKE TCURT-LTEXT,        "Long Text
                P_KTEXT LIKE TCURT-KTEXT.        "Short Text
    *--- Example of updating value of another field on the screen -
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_WAERS.
      CLEAR: DYFIELDS[], DYFIELDS.
    *--- select currency
      CALL FUNCTION 'HELP_VALUES_GET'
           EXPORTING
                fieldname        =  'WAERS'
                tabname          =  'TCURT'
           IMPORTING
                SELECT_VALUE     =   P_WAERS.
    *--- get long text for the selected currency
      SELECT SINGLE LTEXT FROM TCURT
        INTO DYFIELDS-FIELDVALUE
        WHERE SPRAS = SY-LANGU
        AND   WAERS = P_WAERS.
      IF SY-SUBRC <> 0.
        CLEAR DYFIELDS-FIELDVALUE.
      ENDIF.
    *--- update another field
      DYFIELDS-FIELDNAME = 'P_LTEXT'.
      APPEND DYFIELDS.
      CALL FUNCTION 'DYNP_VALUES_UPDATE'
           EXPORTING
                DYNAME               = SY-CPROG
                DYNUMB               = SY-DYNNR
           tables
                dynpfields           = DYFIELDS .
    **--- Example of reading value of another field
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_KTEXT.
    *--- read another field
      CLEAR: DYFIELDS[], DYFIELDS.
      DYFIELDS-FIELDNAME = 'P_WAERS'.
      APPEND DYFIELDS.
      CALL FUNCTION 'DYNP_VALUES_READ'
           EXPORTING
                DYNAME                   = SY-CPROG
                DYNUMB                   = SY-DYNNR
           TABLES
                DYNPFIELDS               = DYFIELDS .
      READ TABLE DYFIELDS INDEX 1.
    *--- get short text and update current field
      SELECT SINGLE KTEXT FROM TCURT
        INTO P_KTEXT
        WHERE SPRAS EQ SY-LANGU
        AND   WAERS EQ DYFIELDS-FIELDVALUE.

  • Key figure values vary each time the report is run by different users

    Hi All,
    We are facing a unique problem, here it goes :
    Different users are getting different values for the same key figure, when executing the same query  on the same selection conditions.Each time, user executes the report, he is getting varying values for the same key figure.Any idea's how to resolve this issue??
    Thanks in Advance
    Bindu

    Hi Bindu,
    One reason might be due to authorizations as discussed earlier.
    check how frequently is the cube getting refreshed.
    This might also happen that if users are running the data at different times and there is a cube load in between.
    check for this.
    Cheers,
    Srinath.

Maybe you are looking for