Smartforms Loop Calculation.

Hi xprts,
I'm trying to group and sum some fields of an internal table, the loop tool of the smartforms makes the agroupation well, but when it's time to sum the fields the result it's allways 0. Here's the structure of the IT :
Area Subarea Short Text Clasification Fund S1 S2 S3 S4 S5 Total
1      1            Vendors    23              2       2   2    2   2        8
1      1            Vendors    25              2       1   1    1   1        4
Then, when the tables arrives to the form, the loop structure do this :
                                                                      Total
Area ->        1 Administration                                0
Subarea->    1 Office                                            0
Clasification                               23     2  2  2  2    8
As you can see the agroupation it's well done, but not a sum by sort criteria. And i've defined variables to sum this field "Total". but Nothing works and i changed the target field name, the reset fiel too on the calculations tab and nothings works, any idea about it.
Tnxs for your help.

I think you should explain better what you wean by "loop to loop calculation".
What are you trying to accomplish?

Similar Messages

  • Smartform loop into internal table problem

    hello experts,
    i am doing an example given in **************** regarding smartforms. I am getting problem which doing the smartforms . please help me.
    http://****************/Tutorials/Smartforms/SFMain.htm
    in that i am doing the program
    Working with loop.
    I have done exactly as the screen shots in the program.
    Now in the main window i created a loop.
    in that loop i am not getting the option internal table.
    But it is showing as operand . It is in the data tab of the loop.
    I searched the all the tabs in the loop but did not find the option  internal table.
    so then i ticked the operand and i did as speified in the screen shots.
    it_tab into fs_tab
    Then i created a text and then placed &fs_tab-vbeln& etc.
    then i executed the smartform now in the output i am not getting the sales order number , item etc.
    The output is showing like
    &fs_tab-vbeln&     &fs_tab-posnr&   etc.
    please guide me how to get the internal table option in  the loop. And also tell me how to rectify this problem

    thanks for all the replies.
    I will give all  at the time of closing my thread.
    Hi Sravanthi -> in loop node i am not getting the internal table insted of that i am getting operand in the data tab.
    This is my main problem.I dont why operand is comming there.
    my version is 4.7e
    Hi Karthik and swati -> i simply hard coded the statements in the text as shown in the example.
    Now i will try with the add field.
    But please tell me why i am not getting internal table option in loop.

  • Smartform - Loop issue not printing correctly

    Hi,
    In smartforms -Main Window - I created like this
    1.Loop Statement   - This will loop - ITAB1
    TEXT statement - ITAB1-ADRNR - (prints the address)
    within the loop
      ITEM_DATA (item data) table.  - This will Loop ITAB2 - where ADRNR = ITAB1-ADRNR
    This supposed to put line items which are having ADRNR from ITAB1
    But my program is printing in wrong way..
    it is printing
    ADDRESS1 - ITAB1-ADRNR - correct
    ITEM DATA -  from ITAB2- related to ADRNR  (if it has only 1 record) - correct
    ADDRESS2-ITAB1-ADRNR - correct
    ITEM DATA - from ITAB2 - where ADRNR = ITAB1ADRNR - if this condition satisfies more than 1 record
    supposed to print all the records - but instead it is printing  always the first record   - wrong
    Ex- if 3 records has the same ADRNR of ITAB1 in ITAB2 - it is actually printing 3 times the first satisfying record - Wrong
    Can anyone please tell me what is the issue?
    Thanks for your time.
    Kevin

    Hi,
    I created like this..
    ITAB1 - complete data
    ITAB2 - unique records based on ADRNR
    1. LOOP ITAB2
    Print Address - ITAB2-ADRNR
    ITEM DATA(header and line items)
    I have given table name in DATA loop section
    - loop ITAB1 - where ADRNR = ITAB2-ADRNR
    But in item data it is printing the same line item repetedly .
    Any comments?
    Thanks for ur time.

  • WHERE clause in a SMARTFORM loop, problems with parenthesis

    Hi all gurus,
    a simple question: I'm coding a LOOP in the form builder for a smartform ... this simple loop should bind text elements to every position of a purchase order. The WHERE clause should be as follows:
    WHERE GUID = WA_ITEM-GUID
    AND ( TDID EQ 'ZDES' OR TDID EQ 'ZDST' ).
    Anyway, in the Form Builder I didn't find a way to add parenthesis; I workarounded the problem with the following query:
    (conditions in lines are in AND conjunction)
    GUID EQ     WA_ITEM-GUID
    TDID      EQ   'ZDES'
    OR
    GUID EQ     WA_ITEM-GUID                                                                               
    TDID      EQ 'ZDST'.
    It's quite a 'bad' way, but it works. I wonder if there's a way to express "complex" WHERE clauses (with addiction of parenthesis) in Form Builder.
    Thanks in advance

    In this case, your solution is the one that works. However in more complex cases with more variables, this can proove difficult to make or mantain.
    What I usually do is use the first part of the condition in the where and then add a condition to the printing area with the rest of the formula. Just remember to document this so that you'll find it easy and it's way more amintainable.
    In this case the loop would contain WHERE GUID = WA_ITEM-GUID and the inside condition TDID EQ 'ZDES' OR TDID EQ 'ZDST. This creates the and between the two blocks.

  • Smartforms-table-calculations tab usage............

    Hi sap gurus,
    i am designing a  smartforms in which i have created a table of data. this contains line items.
    one of the field is amount.
    a) how to sum up all the amount of each line item so as to display at the footer.
    please tell me how to use
    calculations tab in table --> to calculate the sum...
    please tell me if u r not clear about my question......
    Thanks
    krishna
    Edited by: krishna chaitanya on Mar 10, 2008 11:15 AM

    Hi,
      In smartform 
    Click on global definition>  declare one variable to collect the SUM amount.Ther in    INITIALIZATION->import parameter pass your ammount field.
    And wite code there 
    v_amount = v_amount + 1.   
    In main window  pass this amount field where you want to display

  • SMARTFORMS LOOP

    How to write "Do 5 times" loop in smartforms.

    Hi,
    Whats sf_example ... where to search it.
    Condition is working well , only problem i am facing is loop is not iterating if I dont take help of Internal Table.
    I am looking is there any other option to run loop 5 times other than INTERNAL TABLE.
    Thanks & Regards.

  • Smartforms. loop count - next page.

    Hi all,
    i have created a smart form for voucher printing.
    ->MainWindow.
    ->loop1          itab into itab.
       ->Template
       ->Table        itab1 into itab1 where belnr = itab-belnr.
       ->Text     signature.
       ->Text      pageno1.
    above are the nodes in my smartforms.
    while printing it prints all documents in one page.
    but i need to print one document in one page second in next page
    (means for itab first loop shoud be in first page. second loop in second page..)
    for each page signature and pageno shoud appear.
    expecting the reply.
    regards
    jai.

    Hi
    the problm is with LOOP.
    i have two internal tables one for header <b>itab</b>(data from BKPF) other for Line itms<b>(BSEG) itab1</b>
    My form should Print First DOcuments Header And Line Items In First Page.
    and the next document on next page. (means when the loop runs 2 nd time those data shoud print in a next page.)

  • Smartform: Loop to display data in window :

    Dear experts,
    I m facing a strange problem. its reagrding smartform.
    i hv passed a internal table to smart form (having one header record only).
    I want to display data into a window not a table.
    but its displaying nothing. and if i use loop as we use to display data into table,
    then its displaying data.
    According to my knowledge abt smartform, we do not put internal table into loop if datais to be displayed into window.
    if i insert a break-point into form and check internal table, data is there.
    Can anyone helpin this.
    Thanks in advance
    Regards

    Hi Maverick
    Please check if the following links give you some valid info:
    http://www.erpgenie.com/sap-technical/abap/introduction-to-sap-smartforms
    and
    http://www.sap-img.com/smartforms/display-a-contents-of-a-table-on-smartform-with-loop.htm
    Regards
    Chen

  • About smartforms loop

    hi,
    i am using an internal table importing from the program.
    i have one main window and 2 windows.the windows are not nested into main window.all windows are seperated.this is my main page.
    i have to insert this main page in a loop.how can i do this?

    right click on the window ? here u will find options LOOP? pick this
    and window format should be like this
    ---> window
    >looop
    >text
    u have to call Loop within the WINDOW.
    regards
    Prabhu

  • Edit Internal Table for Sales Order Smartform (Y640_SDORC_A)

    I want to modify SmartForm Y640_SDORC_A so I always print the net value and discount percentage.
    I have an access sequence and my discount can be created by a discount percentage condition (ZD00) or by Special Price (PR01) condition.
    My problem is that if I use the Special Price Condition the Internal Table where the smartform loops to get the price only gets the Net Value amount, and it wont print the discount percentage, but if I dont use the Special Price condition the internal value has 2 rows the first one is for Discount Condition and the second for Net Value and it prints correctly.
    This is how my access secuence is arranged, the X are the print id column:
    PR00 Price
    ZD00 Discount      (X)
    PR01 Special Price
    --- Net Value    (X)
    How can I fix the internal table creation so when there is a Special Price Condition (PR01) the internal table also gets the Discount percentage value.
    Here is my Forms Code:
    *&      Form  GET_ITM_PRICE_TABLE
    FORM get_itm_price_table
    USING
    is_vbdpa             TYPE vbdpa
    is_vbdka             TYPE vbdka
    iv_price_print_mode  TYPE c
    iv_spras             TYPE spras
    CHANGING
    ct_komv              TYPE t_komv_tab
    ct_komvd             TYPE t_komvd_tab
    cs_komk              TYPE komk.
      DATA ls_komp TYPE komp.
      DATA ls_komk TYPE komk.
    *  DATA lt_tkomv  TYPE STANDARD TABLE OF komv.
      IF ls_komk-knumv NE is_vbdka-knumv OR
      ls_komk-knumv IS INITIAL.
        CLEAR ls_komk.
        ls_komk-mandt = sy-mandt.
        ls_komk-kalsm = is_vbdka-kalsm.
        ls_komk-kappl = 'V'.
        ls_komk-waerk = is_vbdka-waerk.
        ls_komk-knumv = is_vbdka-knumv.
        ls_komk-knuma = is_vbdka-knuma.
        ls_komk-vbtyp = is_vbdka-vbtyp.
        ls_komk-land1 = is_vbdka-land1.
        ls_komk-vkorg = is_vbdka-vkorg.
        ls_komk-vtweg = is_vbdka-vtweg.
        ls_komk-spart = is_vbdka-spart.
        ls_komk-bukrs = is_vbdka-bukrs_vf.
        ls_komk-hwaer = is_vbdka-waers.
        ls_komk-prsdt = is_vbdka-erdat.
        ls_komk-kurst = is_vbdka-kurst.
        ls_komk-kurrf = is_vbdka-kurrf.
        ls_komk-kurrf_dat = is_vbdka-kurrf_dat.
      ENDIF.
      ls_komp-kposn = is_vbdpa-posnr.
      ls_komp-kursk = is_vbdpa-kursk.
      ls_komp-kursk_dat = is_vbdpa-kursk_dat.
      IF is_vbdka-vbtyp CA 'HKNOT6'.
        IF is_vbdpa-shkzg CA ' A'.
          ls_komp-shkzg = 'X'.
        ENDIF.
      ELSE.
        IF is_vbdpa-shkzg CA 'BX'.
          ls_komp-shkzg = 'X'.
        ENDIF.
      ENDIF.
      IF iv_price_print_mode EQ 'A'.
        CALL FUNCTION 'RV_PRICE_PRINT_ITEM'
          EXPORTING
            comm_head_i = ls_komk
            comm_item_i = ls_komp
            language    = iv_spras
          IMPORTING
            comm_head_e = ls_komk
            comm_item_e = ls_komp
          TABLES
            tkomv       = ct_komv
            tkomvd      = ct_komvd.
      ELSE.
        CALL FUNCTION 'RV_PRICE_PRINT_ITEM_BUFFER'
          EXPORTING
            comm_head_i = ls_komk
            comm_item_i = ls_komp
            language    = iv_spras
          IMPORTING
            comm_head_e = ls_komk
            comm_item_e = ls_komp
          TABLES
            tkomv       = ct_komv
            tkomvd      = ct_komvd.
      ENDIF.
      cs_komk = ls_komk.
    ENDFORM.                    "get_itm_price_table
    Regards,
    Carlos

    Turns out this can be done modifiying access sequence.
    Carlos

  • Solution manager Smartform in HTML format.

    Hi All,
       Here , I ahve a requirement, the smartform <b>CRM_SLFN_ORDER_SERVICE_01</b> is going to the service desk in PDF format as all the Output types in SCOT for Scripts and Smartforms have been configured as PDF. But I have to send it in HTML format.... is there any way other than coping the Class and modifying........
    if there is no way other than that PL. let me know how to modify the code to convert the output into HTML format......
    thank you,
    Girish.

    Hi,
    It is possible to send mail in html.
    Copy the Processing Class CL_DOC_PROCESSING_CRM_ORDER into own namespace (for example Z_CL_DOC_PROCESSING_CRM_ORDER)
    Create a new Processing Method (or copy the SAP Standard CRM_SRVORDER_EXEC_SMART_FROM) and insert (or replace) the following code:
    Z_CRM_SRVORDER_EXEC_SMARTFORM
    METHOD Z_CRM_SRVORDER_EXEC_SMART_FORM.
    INCLUDE: crm_direct.
      TYPES:
        SWC_OBJECT TYPE OBJ_RECORD.
      DATA:
            LS_CONTROL_PARAMETERS TYPE SSFCTRLOP.
    function name
      DATA: function_name TYPE rs38l_fnam,
            DUMMY(254)        TYPE C,
            ls_archive_index  TYPE  toa_dara,
            ls_orderadm_h     TYPE  crmt_output_orderadm_h_com,
            ls_activity_h     TYPE  crmt_output_activity_h_com,
            ls_opport_h       TYPE  crmt_output_opport_h_com,
            ls_orgman_h       TYPE  crmt_output_orgman_h_com,
            lt_partner_h      TYPE  crmt_output_partner_h_comt,
            ls_pricingdata_h  TYPE  crmt_output_pricingdata_h_com,
            ls_sales_h        TYPE  crmt_output_sales_h_com,
            ls_shipping_h     TYPE  crmt_output_shipping_h_com,
            lt_payplan_d_h    TYPE  crmt_output_payplan_d_h_comt,
            ls_customer_h     TYPE  crmt_output_customer_h_com,
            ls_cumulat_h      TYPE  crmt_output_cumulat_h_com,
            lt_billing_h      TYPE  crmt_output_billing_h_comt,
            lt_cancel_h       TYPE  crmt_output_cancel_h_comt,
            lt_appointment_h TYPE   crmt_output_appointment_h_comt,
            lt_billplan_d_h  TYPE   crmt_output_billplan_d_h_comt,
            lt_billplan_h    TYPE   crmt_output_billplan_h_comt,
            lt_status_d_h    TYPE   crmt_output_status_d_h_comt,
            lt_status_h      TYPE   crmt_output_status_h_comt,
            lt_srv_subject_h TYPE   crmt_output_srv_subject_h_comt,
            lt_srv_reason_h  TYPE   crmt_output_srv_reason_h_comt,
            lt_srv_result_h  TYPE   crmt_output_srv_result_h_comt,
            ls_acs_h         TYPE   crmt_acs_h_com,
            lt_srv_subject_i TYPE   crmt_output_srv_subject_h_comt,
            lt_srv_refobj_h  TYPE   crmt_output_srv_refobj_h_comt,
            lt_srv_refobj_i  TYPE   crmt_output_srv_refobj_h_comt,
            lt_orderadm_i    TYPE   crmt_output_orderadm_i_comt,
            lt_orgman_i      TYPE   crmt_output_orgman_i_comt,
            lt_pricingdata_i TYPE   crmt_output_pricingdata_i_comt,
            lt_pricing_i     TYPE   crmt_output_pricing_i_comt,
            lt_product_i     TYPE   crmt_output_product_i_comt,
            lt_sales_i       TYPE   crmt_output_sales_i_comt,
            lt_service_i       TYPE   crmt_output_service_i_comt,
            lt_shipping_i    TYPE   crmt_output_shipping_i_comt,
            lt_schedlin_i    TYPE   crmt_output_schedlin_i_comt,
            lt_customer_i    TYPE   crmt_output_customer_i_comt,
            lt_partner_i     TYPE   crmt_output_partner_i_comt,
            lt_item_cstics_i TYPE   crmt_item_cstics_tab,
            lt_billing_i     TYPE   crmt_output_billing_i_comt,
            lt_cancel_i      TYPE   crmt_output_cancel_i_comt,
            lt_finprod_i     TYPE   crmt_output_finprod_i_comt,
            lt_ordprp_i      TYPE   crmt_output_ordprp_i_comt,
            lt_appointment_i TYPE   crmt_output_appointment_i_comt,
            lt_billplan_d_i  TYPE   crmt_output_billplan_d_i_comt,
            lt_billplan_i    TYPE   crmt_output_billplan_i_comt,
            lt_orderadm_i_qt TYPE   crmt_output_orderadm_i_qt_comt,
            lt_orderadm_i_in TYPE   crmt_output_orderadm_i_in_comt,
            lt_schedlin_i_cf TYPE   crmt_output_schedlin_i_cf_comt,
            lt_status_i      TYPE   crmt_output_status_i_comt,
            lt_working_set_e_s_bbp TYPE /1cn/working_set_e_s_bbp_t,
            lv_language LIKE  sy-langu,
            lo_order TYPE REF TO cl_doc_crm_order,
            lv_object_guid TYPE crmt_object_guid,
            lv_status TYPE jstat,
            lt_status TYPE TABLE OF jstat,
            lv_error_tab_wrk TYPE ssferror,
            ls_output_options TYPE ssfcompop,
            lt_service_i_assi          TYPE   crmt_output_service_i_***_comt.
    fill internal structure for the output options
      ls_output_options = is_output_options.
    get the function name for this smart form
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
           EXPORTING
                formname           = ip_smart_form
    VARIANT            = ' '
    DIRECT_CALL        = ' '
           IMPORTING
                fm_name            = function_name
           EXCEPTIONS
                no_form            = 1
                no_function_module = 2
                OTHERS             = 3
      IF sy-subrc <> 0.
    add an error message to processing protocol
        MESSAGE i015(sppf_media) WITH ip_smart_form INTO dummy.
        CALL METHOD cl_log_ppf=>add_message
          EXPORTING
            ip_problemclass = '1'
            ip_handle       = ip_application_log.
        EXIT.
      ENDIF.
    determine the tables of the application
      CALL FUNCTION 'CRM_OUTPUT_SINGLE_READ'
        EXPORTING
          iv_object                 = io_appl_object
          iv_smart_form             = ip_smart_form
          ir_partner                = io_partner
        IMPORTING
          es_output_orderadm_h      = ls_orderadm_h
          es_output_activity_h      = ls_activity_h
          es_output_opport_h        = ls_opport_h
          es_output_orgman_h        = ls_orgman_h
          es_output_pricingdata_h   = ls_pricingdata_h
          es_output_sales_h         = ls_sales_h
          es_output_shipping_h      = ls_shipping_h
          et_output_partner_h       = lt_partner_h
          et_output_payplan_d_h     = lt_payplan_d_h
          es_output_customer_h      = ls_customer_h
          es_output_cumulat_h       = ls_cumulat_h
          et_output_billing_h       = lt_billing_h
          et_output_cancel_h        = lt_cancel_h
          et_output_appointment_h   = lt_appointment_h
          et_output_billplan_d_h    = lt_billplan_d_h
          et_output_billplan_h      = lt_billplan_h
          et_output_status_d_h      = lt_status_d_h
          et_output_status_h        = lt_status_h
          et_output_srv_subject_h   = lt_srv_subject_h
          et_output_srv_reason_h    = lt_srv_reason_h
          et_output_srv_result_h    = lt_srv_result_h
          et_output_srv_refobj_h    = lt_srv_refobj_h
          et_output_srv_refobj_i    = lt_srv_refobj_i
          et_output_srv_subject_i   = lt_srv_subject_i
          es_output_acs_h           = ls_acs_h
          et_output_orderadm_i      = lt_orderadm_i
          et_output_orgman_i        = lt_orgman_i
          et_output_pricingdata_i   = lt_pricingdata_i
          et_output_pricing_i       = lt_pricing_i
          et_output_product_i       = lt_product_i
          et_output_sales_i         = lt_sales_i
          et_output_service_i       = lt_service_i
          et_output_shipping_i      = lt_shipping_i
          et_output_schedlin_i      = lt_schedlin_i
          et_output_partner_i       = lt_partner_i
          et_item_cstics_i          = lt_item_cstics_i
          et_output_customer_i      = lt_customer_i
          et_output_billing_i       = lt_billing_i
          et_output_cancel_i        = lt_cancel_i
          et_output_finprod_i       = lt_finprod_i
          et_output_ordprp_i        = lt_ordprp_i
          et_output_appointment_i   = lt_appointment_i
          et_output_billplan_d_i    = lt_billplan_d_i
          et_output_billplan_i      = lt_billplan_i
          et_output_orderadm_i_qt   = lt_orderadm_i_qt
          et_output_orderadm_i_in   = lt_orderadm_i_in
          et_output_schedlin_i_cf   = lt_schedlin_i_cf
          et_output_status_i        = lt_status_i
          et_output_wrk_set_e_s_bbp = lt_working_set_e_s_bbp
          ev_language               = lv_language
          et_output_service_i_assi  = lt_service_i_assi.
    set mail title
      SELECT SINGLE caption INTO ls_output_options-tdtitle
        FROM stxfadmt WHERE
        formname = ip_smart_form AND
        langu    = lv_language.
      IF ls_output_options-tdtitle  IS INITIAL.
        SELECT SINGLE caption INTO ls_output_options-tdtitle
         FROM stxfadmt WHERE
         formname = ip_smart_form.
      ENDIF.
      REPLACE '&' WITH ls_orderadm_h-object_id
        INTO ls_output_options-tdtitle.
    *--language of smart form--
    determin here the language of the smart form
      ls_control_parameters = is_control_parameters.
      ls_control_parameters-langu = lv_language.
      CONSTANTS: C_GR_DIR TYPE TDTEXT VALUE 'MYGRAPHICS/'.      "#EC NOTEXT
      DATA:
        LS_XSFPARAM_LINE       TYPE SSFXSFP,
        LS_HTML                TYPE TRFRESULT,
        LT_GRAPHICS            TYPE TSF_XSF_GR.
    *SET SMARTFORM OUTPUT OPTIONS
      LS_OUTPUT_OPTIONS-XSFCMODE = 'X'.
      LS_OUTPUT_OPTIONS-XSF = 'X'.
      LS_OUTPUT_OPTIONS-XSFOUTMODE = 'A'.
      LS_OUTPUT_OPTIONS-XSFFORMAT = 'X'.
      LS_OUTPUT_OPTIONS-TDARMOD = '' .
      CLEAR LS_OUTPUT_OPTIONS-XSFOUTDEV.
      LS_XSFPARAM_LINE-NAME  = 'GRAPHICS'.                      "#EC NOTEXT
      LS_XSFPARAM_LINE-VALUE = 'EXTRACT'.                       "#EC NOTEXT
      APPEND LS_XSFPARAM_LINE TO LS_OUTPUT_OPTIONS-XSFPARS.
      LS_XSFPARAM_LINE-NAME  = 'GRAPHICS-DIRECTORY'.            "#EC NOTEXT
      LS_XSFPARAM_LINE-VALUE = C_GR_DIR.
      APPEND LS_XSFPARAM_LINE TO LS_OUTPUT_OPTIONS-XSFPARS.
      LS_XSFPARAM_LINE-NAME  = 'CONTENT-ID'.                    "#EC NOTEXT
      LS_XSFPARAM_LINE-VALUE = 'ENABLE'.                        "#EC NOTEXT
      APPEND LS_XSFPARAM_LINE TO LS_OUTPUT_OPTIONS-XSFPARS.
    SILENT MODE ON
      LS_OUTPUT_OPTIONS-TDIMMED = SPACE.
      LS_OUTPUT_OPTIONS-TDNEWID = SPACE.
      LS_CONTROL_PARAMETERS-NO_DIALOG = 'X'.                    "#EC NOTEXT
      LS_CONTROL_PARAMETERS-DEVICE = ''.  "EC NOTEXT
    call function to process smart form (old forms)
      CALL FUNCTION function_name
        EXPORTING
          archive_index        = is_archive_index
          archive_index_tab    = ct_archive_index_tab
          archive_parameters   = is_archive_parameters
          control_parameters   = ls_control_parameters
          mail_appl_obj        = is_mail_appl_obj
          mail_recipient       = is_mail_recipient
          mail_sender          = is_mail_sender
          output_options       = ls_output_options
          user_settings        = ip_user_settings
          orderadm_h           = ls_orderadm_h
          activity_h           = ls_activity_h
          opport_h             = ls_opport_h
          orgman_h             = ls_orgman_h
          partner_h            = lt_partner_h
          pricingdata_h        = ls_pricingdata_h
          sales_h              = ls_sales_h
          shipping_h           = ls_shipping_h
          payplan_d_h          = lt_payplan_d_h
          cumulat_h            = ls_cumulat_h
          customer_h           = ls_customer_h
          acs_h                = ls_acs_h
          billing_h            = lt_billing_h
          cancel_h             = lt_cancel_h
          appointment_h        = lt_appointment_h
          billplan_d_h         = lt_billplan_d_h
          billplan_h           = lt_billplan_h
          status_d_h           = lt_status_d_h
          status_h             = lt_status_h
          srv_subject_h        = lt_srv_subject_h
          srv_reason_h         = lt_srv_reason_h
          srv_result_h         = lt_srv_result_h
          srv_subject_i        = lt_srv_subject_i
          srv_refobj_h         = lt_srv_refobj_h
          srv_refobj_i         = lt_srv_refobj_i
          orderadm_i           = lt_orderadm_i
          orderadm_i_qt        = lt_orderadm_i_qt
          orgman_i             = lt_orgman_i
          pricingdata_i        = lt_pricingdata_i
          pricing_i            = lt_pricing_i
          product_i            = lt_product_i
          sales_i              = lt_sales_i
          service_i            = lt_service_i
          schedlin_i           = lt_schedlin_i
          schedlin_i_cf        = lt_schedlin_i_cf
          shipping_i           = lt_shipping_i
          partner_i            = lt_partner_i
          item_cstics_i        = lt_item_cstics_i
          customer_i           = lt_customer_i
          billing_i            = lt_billing_i
          cancel_i             = lt_cancel_i
          finprod_i            = lt_finprod_i
          ordprp_i             = lt_ordprp_i
          appointment_i        = lt_appointment_i
          billplan_d_i         = lt_billplan_d_i
          billplan_i           = lt_billplan_i
          status_i             = lt_status_i
          working_set_e_s_bbp  = lt_working_set_e_s_bbp
          language             = lv_language
          service_i_assi       = lt_service_i_assi
        IMPORTING
          document_output_info = es_document_output_info
          job_output_info      = es_job_output_info
          job_output_options   = es_job_output_options
        EXCEPTIONS
          output_canceled      = 1
          parameter_error      = 2
          OTHERS               = 3.
      IF sy-subrc = 0.
        DATA:
          LT_RETURN TYPE BAPIRET2_TAB,
          LT_RECEIVERS TYPE TABLE OF SOMLRECI1,
          LV_MAIL_SUBJECT TYPE  SO_OBJ_DES,
          LV_SEND_PARTNER TYPE BU_PARTNER.
    retrieve the sender and recipient from business objects
    provided by postprocessing framework
        DATA:
          LS_SENDER         TYPE SWC_OBJECT,
          LS_RECIPIENT      TYPE SWC_OBJECT,
          WA_RECEIVER       TYPE SOMLRECI1.
          SWC_CREATE_OBJECT LS_SENDER 'RECIPIENT' SPACE.
          SWC_OBJECT_FROM_PERSISTENT IS_MAIL_SENDER LS_SENDER.
          SWC_GET_PROPERTY LS_SENDER 'AddressString' LV_SEND_PARTNER.
        SWC_CREATE_OBJECT LS_RECIPIENT 'RECIPIENT' SPACE.
        SWC_OBJECT_FROM_PERSISTENT IS_MAIL_RECIPIENT LS_RECIPIENT.
        SWC_GET_PROPERTY LS_RECIPIENT 'AddressString' WA_RECEIVER-RECEIVER.
        SWC_GET_PROPERTY LS_RECIPIENT 'TypeId' WA_RECEIVER-REC_TYPE.
        WA_RECEIVER-COM_TYPE = 'INT'.                           "#EC NOTEXT
        APPEND WA_RECEIVER TO LT_RECEIVERS.
    Set Email Subject
      SELECT SINGLE caption INTO LV_MAIL_SUBJECT
        FROM stxfadmt WHERE
        formname = ip_smart_form AND
        langu    = lv_language.
      IF ls_output_options-tdtitle  IS INITIAL.
        SELECT SINGLE caption INTO LV_MAIL_SUBJECT
         FROM stxfadmt WHERE
         formname = ip_smart_form.
      ENDIF.
      REPLACE '&' WITH ls_orderadm_h-object_id
        INTO LV_MAIL_SUBJECT.
    ===========
        LS_HTML       = ES_JOB_OUTPUT_INFO-XMLOUTPUT-TRFRESULT.
        LT_GRAPHICS[] = ES_JOB_OUTPUT_INFO-XMLOUTPUT-XSFGR[].
        DATA: L_GRAPHIC       TYPE SSF_XSF_GR,
              HTML_DATA       TYPE TRFRESULT,
              GRAPHICS        TYPE TSF_XSF_GR,
              LV_SENT_TO_ALL  TYPE BOOLEAN,
              LV_SEND_ADDRESS TYPE ADR6-SMTP_ADDR,
              LI_SENDER       TYPE REF TO IF_SENDER_BCS,
              RECEIVER TYPE SOMLRECI1,
              LO_BCS          TYPE REF TO CL_BCS,
              LO_DOC_BCS      TYPE REF TO CL_DOCUMENT_BCS,
              LO_MIME_HELPER  TYPE REF TO CL_GBT_MULTIRELATED_SERVICE,
              LO_RECIPIENT    TYPE REF TO IF_RECIPIENT_BCS,
              L_FILENAME      TYPE STRING,
              LT_SOLI         TYPE SOLI_TAB,
              LT_SOLIX        TYPE SOLIX_TAB,
              LS_SOLI         TYPE SOLI,
              LS_SOLIX        TYPE SOLIX,
              L_HTML_RAW      LIKE LINE OF HTML_DATA-CONTENT,
              HTML_XSTR       TYPE XSTRING,
              HTML_STR        TYPE STRING,
              HTML_LEN        TYPE I,
              L_OFFSET        TYPE I,
              L_LENGTH        TYPE I,
              L_DIFF          TYPE I,
              L_CONTENT_ID    TYPE STRING,
              L_CONTENT_TYPE  TYPE W3CONTTYPE,
              L_OBJ_LEN       TYPE SO_OBJ_LEN,
              GR_XSTR         TYPE XSTRING,
              L_GR_RAW        TYPE BAPICONTEN,
              L_USERNAME      TYPE UNAME,
              L_MAIL_ADDRESS  TYPE AD_SMTPADR,
              WA_RETURN       TYPE BAPIRET2,
              LV_SEND_REQ_BCS TYPE REF TO CX_SEND_REQ_BCS,
              LV_ADDRESS_BCS  TYPE REF TO CX_ADDRESS_BCS,
              LV_GBT_MIME     TYPE REF TO CX_GBT_MIME,
              LV_BCOM_MIME    TYPE REF TO CX_BCOM_MIME,
              LV_DOCUMENT_BCS TYPE REF TO CX_DOCUMENT_BCS.
        CLEAR HTML_XSTR.
        LOOP AT LS_HTML-CONTENT INTO L_HTML_RAW.
          CONCATENATE HTML_XSTR L_HTML_RAW INTO HTML_XSTR IN BYTE MODE.
        ENDLOOP.
        HTML_XSTR = HTML_XSTR(LS_HTML-LENGTH).
        CALL FUNCTION 'SCP_TRANSLATE_CHARS'                     "#EC NOTEXT
          EXPORTING  INBUFF       = HTML_XSTR
                     INCODE       = '4110'       " UTF-8 "#EC NOTEXT
                   OUTCODE      = '0000'       " ACTUAL CODEPAGE
                     CSUBST       = 'X'                         "#EC NOTEXT
                     SUBSTC_SPACE = 'X'                         "#EC NOTEXT
          IMPORTING  OUTBUFF      = HTML_STR
                     OUTUSED      = HTML_LEN
          EXCEPTIONS OTHERS       = 1.
    CHANGE ENCODING UTF-8 TO LATIN1
        REPLACE ALL OCCURRENCES OF 'UTF-8' IN HTML_STR WITH 'iso-8859-1'
    IGNORING CASE.                                             "#EC NOTEXT
    *HACK THE HTML CODE GENERATED BY SMARTFORM TO MAKE THE
    *EXTERNAL IMAGES APPEAR AS <IMG> TAG IN HTML
      REPLACE ALL OCCURRENCES OF '&lt;IMG' IN HTML_STR WITH '<IMG' IGNORING
    CASE.                                                       "#EC NOTEXT
        REPLACE ALL OCCURRENCES OF '/&gt;' IN HTML_STR WITH '/>' IGNORING
    CASE.                                                      "#EC NOTEXT
        REPLACE ALL OCCURRENCES OF '&lt;/A&gt;' IN HTML_STR WITH '</A>'
              IGNORING CASE.                                    "#EC NOTEXT
        REPLACE ALL OCCURRENCES OF '&lt;' IN HTML_STR WITH '<'
              IGNORING CASE.                                    "#EC NOTEXT
        REPLACE ALL OCCURRENCES OF '&gt;' IN HTML_STR WITH '>'
              IGNORING CASE.                                    "#EC NOTEXT
        HTML_LEN = STRLEN( HTML_STR ).
        L_OFFSET = 0.
        L_LENGTH = 255.
        WHILE L_OFFSET < HTML_LEN.
          L_DIFF = HTML_LEN - L_OFFSET.
          IF L_DIFF > L_LENGTH.
            LS_SOLI-LINE = HTML_STR+L_OFFSET(L_LENGTH).
          ELSE.
            LS_SOLI-LINE = HTML_STR+L_OFFSET(L_DIFF).
          ENDIF.
          APPEND LS_SOLI TO LT_SOLI.
          ADD L_LENGTH TO L_OFFSET.
        ENDWHILE.
        CREATE OBJECT LO_MIME_HELPER.
        CALL METHOD LO_MIME_HELPER->SET_MAIN_HTML
          EXPORTING
            CONTENT     = LT_SOLI
          FILENAME    = 'SAPWEBFORM.HTM'                      "#EC NOTEXT
            DESCRIPTION =
               'SAP WEB FORM'.                                  "#EC NOTEXT
    *prepare the graphic content from the smartform
        LOOP AT LT_GRAPHICS INTO L_GRAPHIC.
          CLEAR GR_XSTR.
          LOOP AT L_GRAPHIC-CONTENT INTO L_GR_RAW.
            CONCATENATE GR_XSTR L_GR_RAW-LINE INTO GR_XSTR IN BYTE MODE.
          ENDLOOP.
          GR_XSTR = GR_XSTR(L_GRAPHIC-LENGTH).
          L_OFFSET = 0.
          L_LENGTH = 255.
          CLEAR LT_SOLIX[].
          WHILE L_OFFSET < L_GRAPHIC-LENGTH.
            L_DIFF = L_GRAPHIC-LENGTH - L_OFFSET.
            IF L_DIFF > L_LENGTH.
              LS_SOLIX-LINE = GR_XSTR+L_OFFSET(L_LENGTH).
            ELSE.
              LS_SOLIX-LINE = GR_XSTR+L_OFFSET(L_DIFF).
            ENDIF.
            APPEND LS_SOLIX TO LT_SOLIX.
            ADD L_LENGTH TO L_OFFSET.
          ENDWHILE.
          CONCATENATE C_GR_DIR L_GRAPHIC-GRAPHICS
           '.BMP' INTO L_FILENAME.                              "#EC NOTEXT
          CONCATENATE C_GR_DIR L_GRAPHIC-GRAPHICS
           '.BMP' INTO L_CONTENT_ID.                            "#EC NOTEXT
          L_CONTENT_TYPE = L_GRAPHIC-HTTPTYPE.
          L_OBJ_LEN      = L_GRAPHIC-LENGTH.
          CALL METHOD LO_MIME_HELPER->ADD_BINARY_PART
            EXPORTING
              CONTENT      = LT_SOLIX
            FILENAME     = L_FILENAME
              EXTENSION    = 'BMP'                              "#EC NOTEXT
              DESCRIPTION  = 'GRAPHIC IN BMP FORMAT'            "#EC NOTEXT
              CONTENT_TYPE = L_CONTENT_TYPE
              LENGTH       = L_OBJ_LEN
              CONTENT_ID   = L_CONTENT_ID.
        ENDLOOP.
        TRY.
            LO_DOC_BCS = CL_DOCUMENT_BCS=>CREATE_FROM_MULTIRELATED(
                                      I_SUBJECT          = LV_MAIL_SUBJECT
                                      I_MULTIREL_SERVICE = LO_MIME_HELPER ).
          CATCH CX_DOCUMENT_BCS INTO LV_DOCUMENT_BCS.
      ERROR HANDLING
            CLEAR WA_RETURN.
            WA_RETURN-TYPE = 'E'.                               "#EC NOTEXT
            MOVE LV_DOCUMENT_BCS->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.
            INSERT WA_RETURN INTO TABLE LT_RETURN.
            EXIT.
          CATCH CX_BCOM_MIME INTO LV_BCOM_MIME.
            CLEAR WA_RETURN.
            WA_RETURN-TYPE = 'E'.                               "#EC NOTEXT
            MOVE LV_BCOM_MIME->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.
            INSERT WA_RETURN INTO TABLE LT_RETURN.
            EXIT.
          CATCH CX_GBT_MIME INTO LV_GBT_MIME.
            CLEAR WA_RETURN.
            WA_RETURN-TYPE = 'E'.                               "#EC NOTEXT
            MOVE LV_GBT_MIME->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.
            INSERT WA_RETURN INTO TABLE LT_RETURN.
            EXIT.
        ENDTRY.
    REUSE THE CONTENT PREPARED FOR ALL RECEIVERS
        LOOP AT LT_RECEIVERS  INTO RECEIVER.
          L_MAIL_ADDRESS = RECEIVER-RECEIVER.
    CREATE SEND_REQUEST
          TRY.
              LO_BCS = CL_BCS=>CREATE_PERSISTENT( ).
              LO_BCS->SET_DOCUMENT( I_DOCUMENT = LO_DOC_BCS ).
            CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.
              CLEAR WA_RETURN.
              WA_RETURN-TYPE = 'E'.                             "#EC NOTEXT
              MOVE LV_SEND_REQ_BCS->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.
              INSERT WA_RETURN INTO TABLE LT_RETURN.
              EXIT.
          ENDTRY.
    CREATE SENDER
          CLASS CL_CAM_ADDRESS_BCS DEFINITION LOAD.
          TRY.
              IF L_USERNAME NS '@'.                             "#EC NOTEXT
                L_USERNAME = LV_SEND_PARTNER .
                TRANSLATE L_USERNAME TO UPPER CASE. "#EC TRANSLANG
                LI_SENDER ?= CL_SAPUSER_BCS=>CREATE( L_USERNAME ).
              ELSE.
                DATA: L_FROM_MAIL_ADDRESS TYPE AD_SMTPADR.
                L_FROM_MAIL_ADDRESS = L_USERNAME.
                LI_SENDER ?=
                  CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(
                    I_ADDRESS_STRING = L_FROM_MAIL_ADDRESS ).
              ENDIF.
              CALL METHOD LO_BCS->SET_SENDER
                EXPORTING
                  I_SENDER = LI_SENDER.
            CATCH CX_ADDRESS_BCS INTO LV_ADDRESS_BCS.
    ERROR HANDLING
              CLEAR WA_RETURN.
              WA_RETURN-TYPE = 'E'.                             "#EC NOTEXT
              MOVE LV_ADDRESS_BCS->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.
              INSERT WA_RETURN INTO TABLE LT_RETURN.
              EXIT.
            CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.
    FAILED TO ADD A RECIPIENT
              CLEAR WA_RETURN.
              WA_RETURN-TYPE = 'E'.                             "#EC NOTEXT
              MOVE LV_SEND_REQ_BCS->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.
              INSERT WA_RETURN INTO TABLE LT_RETURN.
              EXIT.
          ENDTRY.
    CREATE RECIPIENT
          TRY.
              LO_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(
        I_ADDRESS_STRING = L_MAIL_ADDRESS ).
            CATCH CX_ADDRESS_BCS INTO LV_ADDRESS_BCS.
    ERROR HANDLING
              CLEAR WA_RETURN.
              WA_RETURN-TYPE = 'W'.                             "#EC NOTEXT
              MOVE LV_ADDRESS_BCS->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.
              INSERT WA_RETURN INTO TABLE LT_RETURN.
              CONTINUE.
          ENDTRY.
          TRY.
              LO_BCS->ADD_RECIPIENT( I_RECIPIENT = LO_RECIPIENT ).
            CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.
    FAILED TO ADD A RECIPIENT
              CLEAR WA_RETURN.
              WA_RETURN-TYPE = 'W'.                             "#EC NOTEXT
              MOVE LV_SEND_REQ_BCS->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.
              INSERT WA_RETURN INTO TABLE LT_RETURN.
              CONTINUE.
          ENDTRY.
    SEND
          TRY.
    RECEIPTS ONLY FOR ERRORS
              CALL METHOD LO_BCS->SEND_REQUEST->SET_REQUESTED_STATUS
                EXPORTING
                  I_REQUESTED_STATUS =
                     'N'.                                       "#EC NOTEXT
              LV_SENT_TO_ALL = LO_BCS->SEND( ).
            CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.
              CLEAR WA_RETURN.
              WA_RETURN-TYPE = 'E'.                             "#EC NOTEXT
              MOVE LV_SEND_REQ_BCS->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.
              INSERT WA_RETURN INTO TABLE LT_RETURN.
    ERROR HANDLING
              EXIT.
          ENDTRY.
        ENDLOOP.     "  END LOOP AT LT_RECEIVERS
        COMMIT WORK.
        ES_JOB_OUTPUT_INFO-OUTPUTDONE = 'X'.
    SET THE SUCCESS INFORMATION
        WA_RETURN-TYPE = 'I'.                                   "#EC NOTEXT
        WA_RETURN-MESSAGE = 'MAIL SENT SUCCESSFULLY'.           "#EC NOTEXT
        INSERT WA_RETURN INTO TABLE LT_RETURN.
    SET STATUS PRINTED INTO THE CRM ORDER
        CALL FUNCTION 'CRM_STATUS_SET_INTERN'
          EXPORTING
            IV_OBJNR            = LV_OBJECT_GUID
            IV_STATUS           = GC_STATUS-PRINTED
            XNOAUTO             = TRUE
          EXCEPTIONS
            OBJECT_NOT_FOUND    = 1
            STATUS_INCONSISTENT = 2
            STATUS_NOT_ALLOWED  = 3
            OTHERS              = 4.
      ELSE.
        CASE SY-SUBRC.
          WHEN 1.
            MESSAGE E016(SPPF_MEDIA) INTO DUMMY.
          WHEN 2.
            MESSAGE E017(SPPF_MEDIA) WITH FUNCTION_NAME INTO DUMMY.
          WHEN 3.
            MESSAGE E018(SPPF_MEDIA) WITH FUNCTION_NAME INTO DUMMY.
        ENDCASE.
        CALL METHOD CL_LOG_PPF=>ADD_MESSAGE
          EXPORTING
            IP_PROBLEMCLASS = '1'
            IP_HANDLE       = IP_APPLICATION_LOG.
      ENDIF.
    GET ERROR TABLE
      CALL FUNCTION 'SSF_READ_ERRORS'
        IMPORTING
          ERRORTAB = ET_ERROR_TAB.
    FILL ERROR INTO CRM_ORDER STATUS
      LOOP AT ET_ERROR_TAB INTO LV_ERROR_TAB_WRK
               WHERE MSGTY = GC_MSGTYPE-ERROR.
        CALL FUNCTION 'CRM_MESSAGE_COLLECT'
             EXPORTING
                  IV_CALLER_NAME     = GC_OBJECT_NAME-ORDER
                  IV_MSGNO           = LV_ERROR_TAB_WRK-MSGNO
                  IV_MSGID           = LV_ERROR_TAB_WRK-MSGID
                  IV_MSGTY           = LV_ERROR_TAB_WRK-MSGTY
                  IV_MSGV1           = LV_ERROR_TAB_WRK-MSGV1
                  IV_MSGV2           = LV_ERROR_TAB_WRK-MSGV2
                  IV_MSGV3           = LV_ERROR_TAB_WRK-MSGV3
                  IV_MSGV4           = LV_ERROR_TAB_WRK-MSGV4
                IV_MSGTYPE         = GC_MSGTYPE-WARNING
                  IV_MSGLEVEL        = GC_MSGLEVEL-ADMINISTRATOR
             EXCEPTIONS
                  NOT_FOUND          = 1
                  APPL_LOG_ERROR     = 2
                  OTHERS             = 3.
      ENDLOOP.
    ENDMETHOD.
    Now put the class and method into the action definition.
    Kind regards,
    Remy Piets

  • PR Smartform for getting Approver name

    Hi Abap Expects,
    i am new to abap, i have developed Smartform for PR print out.
    In that i need to print level of Approver Name with Approval Date, Actually i am getting all the Approver Name correctly.
    but the problem is, i need to print name and date like this
    Approver1    Kavitha   date
    Approver2    Gokul   
    Approver3    Seetha  
    but now i am getting, name like below
    Approver1    Kavitha   date
    Approver2        
    Approver3       
    Approver1    Gokul   date
    Approver2      
    Approver3     
    Approver1    Seetha  date
    Approver2       
    Approver3      
    And i have declared internal in Loop.
    can any one Please help me to slove this Issue
    Thanks
    S.Kavitha

    Hi ,
    For one PR number 5 level of Approval is their, so I need the Print only one time. i will send the Screen shot of my Current output and how i declared it in Smartform loop. please find that one

  • How to print dynamic text in a window

    Hi All,
    My requirement is to print the payement in a window and which will be dynamic and will span across multiple number of pages and there is a main window which i already using to display line item details. Please suggest if there is any possible way to do this.
    Regards,
    Ashwin.

    Hi,
    Just fill one internal table with the payment details & in the main window of ur smartform.Create one table node in the main window of ur smartform & loop ur table in it.
    I hope this will help u.
    regards,
    rajesh.

  • Need help for a newbie problem

    I am VERY new to all this Java programming but have really started to enjoy it.
    I have two problems with my program that I can not find answers to.
    1. I am looking to find out why my code will not select the right answers when I select the first choice in the array. The answer that is delivered turns out to be the 3rd selection. The second and third selection work great, but the first selection always turns out with the thrid answer.
    2. I know I need to do better error checking on the user input. At this point I am only checking for correct integer input, but I dont know how to fix or avoid the error for when the user would mistakedly enter letters instead of numbers.
    Any hints?
    Code to follow... I hope...
    No gui allowed for this program.
    First time posting so I hope this works and I do it the right way...
    import java.text.DecimalFormat;      //To round to 2 decimal places for payment format.
    import java.io.*;                          //Allows User to input.
    public class Wk5JimP
         //classes for keyboard inputs from user
         public static InputStreamReader reader = new InputStreamReader (System.in);
         public static BufferedReader keyboard = new BufferedReader (reader);
         //main
         public static void main (String[] args) throws IOException
              //Variables
              DecimalFormat decimal = new DecimalFormat("#,##0.00");     //Makes the decimal format for the output
              int appAmount = 200000;                                             //approved loan amount
              short rPay = 0;                                                       //repayment option
              int ps;                                                                 //payment schedule switching variable.
              //Year array and variables
              int yTerm[] = {30, 15, 7,};                                        //Term of the loan in years array
              short rOller2 = 0;                                                  //looping variable for rolling the years
              short rOller3 = 0;                                                  //looping variable for rolling the years
              //Month array and variables
              int mTerm[] = {360, 180, 84,};                                   //Term of the loan in months array
              short rOller = 0;                                                  //looping variable for rolling the months
              short rOller1 = 0;                                                  //looping variable for rolling the months
              //Interest rate array and variables
              double iRate[] = {5.75, 5.50, 5.35,};                              //interest rate array
              int liRate = 0;                                                       //looping variable for interest rate
              int liRate1 = 0;                                                  //looping variable for interest rate
              // Payment array and variables
              double mPayment[] = {
                   ((appAmount*(iRate[0]/12/100))/(1-1/Math.pow((1+iRate[0]/12/100), mTerm[0]))),
                   ((appAmount*(iRate[1]/12/100))/(1-1/Math.pow((1+iRate[1]/12/100), mTerm[1]))),
                   ((appAmount*(iRate[2]/12/100))/(1-1/Math.pow((1+iRate[2]/12/100), mTerm[2])))
                                       };                                             //monthly payment array
              int lPay = 0;                                                       //looping variable for payment incrementation
              int lPay1 = 0;                                                       //looping variable for payment incrementation
              //Dollar amounts into decimal format of two places
              String fappAmount = decimal.format(appAmount);
              //Output to screen for header information
              System.out.println();
              System.out.println("Congratulations!");
              System.out.println("You are approved for a $" + fappAmount + " loan");
              System.out.println("The three repayment options are listed below.\n");
              System.out.println("-------------------------------------------------------------------------");
              System.out.println(" Repayment\t Loan\t\t   Term\t\t  Interest\t  Monthly");
              System.out.println("  Option\tAmount\t       Years   Months\t  Rate \t          Payment");
              System.out.println("-------------------------------------------------------------------------");
              //Begin repayment option loop for calculation
              while (rOller != 3)
                        // if else loop to second and third repayment options
                      if (rOller1 <= 2)
                           // for statement loops last repayment option
                           for (rPay = 1; rPay <=3; rPay++)
                                    {mPayment[lPay] = mPayment[lPay1++];
                                     yTerm[rOller2] = yTerm[rOller3++];
                                     mTerm[rOller] = mTerm[rOller1++];
                                     iRate[liRate] = iRate[liRate1++];
                                //Output to screen for numerical repayment option info
                              System.out.println("    " + rPay + "\t    $" + fappAmount + "\t\t " + yTerm[rOller2] + "\t" + mTerm[rOller] + "\t    " + decimal.format(iRate[liRate]) + "% \t$" + decimal.format(mPayment[lPay])+ "\n\n");
                        else
                             //begin payment option selection
                             System.out.println();
                             System.out.println("Which one of the payment schedules would you like to see?\n");
                             System.out.println("Please enter 1 or 2 or 3 to see the payment schedule\nor enter any other number to exit.");
                             ps = Integer.parseInt(keyboard.readLine());
                                  switch (ps)
                                            case 1:
                                                 System.out.println("\nOption #1\n");
                                                 paysched(yTerm[0], appAmount, iRate[0], mPayment[0]);
                                                 break;
                                            case 2:
                                                 System.out.println("\nOption #2\n\n");
                                                 paysched(yTerm[1], appAmount, iRate[1], mPayment[1]);
                                                 break;
                                            case 3:
                                                 System.out.println("\nOption #3\n\n");
                                                 paysched(yTerm[2], appAmount, iRate[2], mPayment[2]);
                                                 break;
                                            default:
                                                 System.out.println("Thank you!\n\n");
                                                 System.exit(0);
                                      }//end switch
                   }//end while
              }//end main
                             //payment schedule method
                             public static void paysched(int yTerm, int appAmount, double iRate, double mPayment) throws IOException
                             //Declare variables for looped calculations
                             DecimalFormat decimal = new DecimalFormat("#,##0.00");     //Makes the decimal format for the output
                             double balance = appAmount;
                             double monIRate = iRate / 12;
                             double iPay = 0;
                             double pPay = 0;
                             short pNum = 1;
                             short year = 1;
                             //Header Output to screen for payment schedule
                             System.out.println("-------------------------------------------------------------------------");
                             System.out.println("   Payment \t   Principle\tInterest\tTotal \t\tBalance");
                             System.out.println(" Year  Month\t   Payment\tPayment \tPayment \tRemaining");
                             System.out.println("-------------------------------------------------------------------------");
                             //Loop for shceduled payment calculation for all but the final year
                             do
                                       //Apply the payment
                                       iPay = balance * (monIRate /100);
                                       pPay = mPayment - iPay;
                                       balance = balance - pPay;
                                       //Output to screen for payment information
                                       System.out.println("   " +year+ " \t " +pNum+ " \t  $" +(decimal.format(pPay))+ "\t$" +(decimal.format(iPay))+ "\t      $" +(decimal.format(mPayment))+ "\t     $" +(decimal.format(balance)));
                                       pNum++;
                                       if (pNum % 13 == 0)
                                            System.out.println("Press enter to see the next year payments.");
                                            System.in.read();
                                            System.in.read();
                                            year++;
                                            pNum = 1;
                                            //Output to screen for payment schedule
                                            System.out.println("-------------------------------------------------------------------------");
                                            System.out.println("   Payment \t   Principle\tInterest\tTotal \t\tBalance");
                                            System.out.println(" Year  Month\t   Payment\tPayment \tPayment \tRemaining");
                                            System.out.println("-------------------------------------------------------------------------");
                                            } //end if
                                    } //end do
                             while(year < yTerm);
                             //Final Year calculations
                             do
                                       //Apply the payment
                                       iPay = balance * (monIRate /100);
                                       pPay = mPayment - iPay;
                                       balance = balance - pPay;
                                       //Output to screen for payment information
                                       System.out.println("   " +year+ " \t " +pNum+ " \t  $" +(decimal.format(pPay))+ "\t$" +(decimal.format(iPay))+ "\t      $" +(decimal.format(mPayment))+ "\t     $" +(decimal.format(balance)));
                                       pNum++;
                                       if (pNum % 13 == 0)
                                            System.out.println("Please press enter to select and view another payment schedule.");
                                            System.in.read();
                                            System.in.read();
                                            year++;
                                            } //end if
                                  }//end do
                             while(year < (yTerm+1));
                        }//end class
    }//end classThis is my first post so please be gentle...
    Thanks for any help!

    When you choose Java to solve the problems, you need to adapt to the power/strategies/methodology that java offers you, and thats the way for solving problems in Java.
    Why would you put the entire implementation for calculation inside main method? You could break down the program into smaller methods which could do the calculation bit and then call them in main method.
    Anyways the reason that it is calculating for term of 7 years is that
                           // for statement loops last repayment option
                           for (rPay = 1; rPay <=3; rPay++)
                                    {mPayment[lPay] = mPayment[lPay1++];
                                     yTerm[rOller2] = yTerm[rOller3++];You are changing the value of the array yTerm[ ]. Hence once the control is out of the for loop the value of y[0]=7,y[1]=7 and y[2]=7.
    Solution 1: mark yTerm as final.
    Solution 2: set yTerm[0], yTerm[1] back as 30,15 after the for loop.
                      if (rOller1 <= 2)
                           // for statement loops last repayment option
                           for (rPay = 1; rPay <=3; rPay++)
                                    {mPayment[lPay] = mPayment[lPay1++];
                                     yTerm[rOller2] = yTerm[rOller3++];
                                     mTerm[rOller] = mTerm[rOller1++];
                                     iRate[liRate] = iRate[liRate1++];
                                //Output to screen for numerical repayment option info
                              System.out.println("    " + rPay + "\t    $" + fappAmount + "\t\t " + yTerm[rOller2] + "\t" + mTerm[rOller] + "\t    " + decimal.format(iRate[liRate]) + "% \t$" + decimal.format(mPayment[lPay])+ "\n\n");
                           yTerm [0]=30;
                           yTerm [1]=15;
                              }Futher the issue is with monthly calculation of pay back amount in switch - case statement.
    As you have not provided what the problem is and what is the criteria for calculation of monthly interest or reducing the amount etc. Its not possible (at least for me) to tell you why it would run to negative. Mathematically that is the only thing possible,
    Step 1: make those changes in your code. Make changes required to claculate the balance.
    Step 2: Execute the new code and
    Step 3: Gimme the dukes.
    Cheers
    $

  • Problem in the main area of the table not coming on the same page

    Hi Experts,
    I have created a invoice in the table header with descriptions and main area with the values,below main area i have also created a template in smartform for calculation when i have assigned this to a transaction and i goto printpreview my main area and the calculation template are not coming in the same page,and the calculation and the header template goes to next page without main area,even if i decrease the size of main window my problem does not get solved.Is there any way out.
    Please Help
    Regards

    Hi Summet ,
      Just check in the form where your writing the code if theer are any new lines before your calculation template .
    It happens that may be the form you write is unabl;e to accomadate your window size .
    Try this!
    Hope it helps!
    Much Regards ,
    Amuktha .

Maybe you are looking for