How to calculate the next incoming PO for a given material/plant in an elegant way

Hi experts,
Given a material and a plant i want to find out when the next PO is arriving. Is there a function module to calculate it?
This is the values i want to retrieve, but this method is not very optimized and can have performance issues:
"Entry un EKPO with material (MATNR), plant (WERKS), and Delivery Completed Indicator (ELIKZ) = blank, select the PO
numbers.
For all the POs, sort in EKET for the field ‘Delivery Date’ (EINDT) to get the next delivery date being
EINDT ≥ Todays day
Take the next PO to be received. Do the calculation (MENGE – WEMNG) for the item
The result of the calculation is the amount still open and that is supposed to be received. "

Hi,
   You can use the FM: MD_STOCK_REQUIREMENTS_LIST_API. Execute the FM with plant and material number in selection. Now, check the structure: MDEZX which will give you all the requirements for the item. You can filter the items in the structure where MDEZX - DE = BE which will give you only the purchase orders. Also, the items will be sorted automatically based on the date.
    Please check the same and revert back.
Regards,
AKPT

Similar Messages

  • FM/Class to find the class and characterstics for a given material

    Hi All,
    Is there any Class/FM to find the class and characterstics for a given material.I tried some BAPI_OBJCL* BAPI's but lot of the BAPI's need classnum as input parameter. But i need a BAPI or tables or class which can give the class and its characterstic values for a given material.

    Hi Ben
             Try ..
    BAPI_OBJCL_GETCLASSES
    BAPI_OBJCL_CREATE

  • How to get the Next free Number for External Number Range

    Hi ,
    To get next free number for External Number Range, I have used NUMBER_GET_NEXT Function module.
    It is throws the exception like  NUMBER_RANGE_NOT_INTERN.
    How can i get the next free number for external number range object. And How to update the Current Number for External Number Range Object
    Scenario.
    Call Function module              NUMBER_GET_NEXT
    Import Parameter.
    NR_RANGE_NR : 02
    OBJECT            : RV_BELEG
    QUANTITY         : 00000000000000000001
    I am getting Exception : NUMBER_RANGE_NOT_INTERN
    Thanks in advance.
    Regards
    Ram

    Hi Anand,
    The SAP system issues the numbers for internal number range intervals automatically. This number is between the from-number and the to-number. The last number issued is logged in the current number level.
    You need to enter a number for external number issue. The number you enter needs to be between the from-number and the to-number. For external number ranges, the number number used is not logged. So the next available number is not possible in a straight forward way.
    Only for Internal number ranges, the FM NUMBER_GET_NEXT can get the next available number.
    Hope this helps.
    Thanks,
    Balaji

  • How to calculate the total running time for process from sysssislog entries

    Hi All,
    I have the below query which gets me the log entries form the logs table when the process started/completed.
    Select row_number() over (order by starttime) row_num,Substring( Substring(message, CharIndex('''',message) +1 ,Len(message)) ,0, CharIndex('''',Substring(message, CharIndex('''',message) +1 ,Len(message)))) as Description,
    starttime,endtime,message
    from dbo.sysssislog
    where (message like 'start%' or message like 'finish%' ) and
    LEFT(Substring( Substring(message, CharIndex('''',message) +1 ,Len(message)) ,0, CharIndex('''',Substring(message, CharIndex('''',message) +1 ,Len(message)))),1) between 'A' and 'Z'
    order by starttime
    However,I have to build a report on the top of it showing how much time that attribute/dimension/heirarchy took to execute(Ex-How much time did YearlyReview dimension take to complete).I dont have much knowledge of T-SQL and unable to figure out how to calculate
    that on SQL or report level.
    Could someone please assist me in getting the exact query for that?
    Thanks a lot.

    I get the below output(sample 20 rows) on executing this query.Also,a start process does not necessarily follow up a finished message for the same dimension as it may have been stopped or it failed.So we need to leave it as NA in case it started but dint
    finish
    Row_Num Description starttime endtime Message
    1 PAC SC Super Type 12/13/12 16:38 12/13/12 16:38 Started processing the 'PAC SC Super Type' dimension.
    2 PAC SC Super Type 12/13/12 16:38 12/13/12 16:38 Started processing the 'PAC SC Super Type' dimension.
    3 Team Member Indicator 12/13/12 16:38 12/13/12 16:38 Started processing the 'Team Member Indicator' dimension.
    4 Team Member Indicator 12/13/12 16:38 12/13/12 16:38 Started processing the 'Team Member Indicator' dimension.
    5 PAC SC Super Type 12/13/12 16:38 12/13/12 16:38 Started reading data for the 'PAC SC Super Type' attribute.
    6 PAC SC Super Type 12/13/12 16:38 12/13/12 16:38 Started reading data for the 'PAC SC Super Type' attribute.
    7 Specialist Merger Indicator 12/13/12 16:38 12/13/12 16:38 Started reading data for the 'Specialist Merger Indicator' attribute.
    8 Specialist Merger Indicator 12/13/12 16:38 12/13/12 16:38 Started reading data for the 'Specialist Merger Indicator' attribute.
    9 YearlyReview 12/13/12 16:38 12/13/12 16:38 Started processing the 'YearlyReview' dimension.
    10 YearlyReview 12/13/12 16:38 12/13/12 16:38 Started processing the 'YearlyReview' dimension.
    11 PAC SC Repeat Caller 12/13/12 16:38 12/13/12 16:38 Started processing the 'PAC SC Repeat Caller' dimension.
    12 PAC SC Repeat Caller 12/13/12 16:38 12/13/12 16:38 Started processing the 'PAC SC Repeat Caller' dimension.
    13 Year 12/13/12 16:38 12/13/12 16:38 Started reading data for the 'Year' attribute.
    14 Year 12/13/12 16:38 12/13/12 16:38 Started reading data for the 'Year' attribute.
    15 Staffing Function 12/13/12 16:38 12/13/12 16:38 Started processing the 'Staffing Function' dimension.
    16 Staffing Function 12/13/12 16:38 12/13/12 16:38 Started processing the 'Staffing Function' dimension.
    17 PAC SC Repeat Caller 12/13/12 16:38 12/13/12 16:38 Started reading data for the 'PAC SC Repeat Caller' attribute.
    18 PAC SC Repeat Caller 12/13/12 16:38 12/13/12 16:38 Started reading data for the 'PAC SC Repeat Caller' attribute.
    19 PAC HV Cust 12/13/12 16:38 12/13/12 16:38 Started processing the 'PAC HV Cust' dimension.
    20 PAC HV Cust 12/13/12 16:38 12/13/12 16:38 Started processing the 'PAC HV Cust' dimension.

  • How to calculate the disk failure level for a 3-way mirror pool?

    On another post in this forum, the following information regarding a 3-way mirroring storage pool is given:
    Pool requires a quorum of 50% plus drives to be present to survive.
    with 3 way mirror - we have a guarantee of surviving 2 disk failure.
    Maintaining the above requirements and providing the guarantee -
    mandates us to have minimum 5 disks in pool. As if we loose 2, we still
    have 3 in the pool (>50%) for pool to maintain it's quorum.
    Just to be sure, I would like Microsoft to confirm that the following calculation applies to any number of disks in a 3-way mirroring pool.
    If the number of disks in a 3-way mirroring pool is n, INT(n/2) disks can fail without data loss.
    Examples:
    With 5 disks, INT(5/2)=INT(2.5)=2 disks can fail.
    With 6 disks, INT(6/2)=INT(3)=3 disks can fail.
    With 9 disks, INT(9/2)=INT(4.5)=4 disks can fail.
    Am I right in this assumption?
    Thanks for your answer.

    Hi,
    >>Am I right in this assumption?
    Based on my understanding, it’s not this case.
    Mirror spaces are designed for increased performance and protect your files from drive failure by keeping more than one copy. Two-way mirror spaces make two copies of your
    files and can tolerate one drive failure, while three-way mirror spaces can tolerate two drive failures.
    Regarding this point, the following thread can be referred to for better understanding.
    Storage Spaces - Disk resiliency
    http://social.technet.microsoft.com/Forums/en-US/8f13ecf3-61c8-4505-90da-e8a01023c62d/storage-spaces-disk-resiliency?forum=winserverfiles
    In addition, regarding storage spaces, the following article can be referred to for more information.
    Storage Spaces Overview
    http://social.technet.microsoft.com/wiki/contents/articles/15198.storage-spaces-overview.aspx
    Best regards,
    Frank Shen

  • How to get the salesprice and condition for a customer / material / date

    Hi all,
    how can I get the correct price and condition for a customer / material / date ?
    I know this is possible using the BAPI_SALESORDER_SIMULATE, but this bapi is using to much ressources on the system.
    I'm trying to get the correct price and condition WITHOUT using that BAPI.
    Does anyone know how it is possible ? As said before : I have the customer, material and a date.
    thanks in advance for your help

    Hi
    You need it because it's possible to have a complex pricing procedure, and you can't do it with a simple select on a table. Think that you can have pricing requirements, formulas (ie: VOFM) and so on in your pricing procedure (tcode V/08).
    I hope this helps you
    Regards
    Eduardo

  • How to find the name of query for a given report

    Hi All,
    I am having the name of a report and i need to find out the name of query for that report . Plz tell me how to find out the name of the query for a given report.
    Thanks.
    Regards,
    Pooja Joshi.

    Use this FM
    RSAQ_DECODE_REPORT_NAME
    This FM takes program name as I/P and gives Query Name as O/P.
    This FM uses the structure AQADEF to fetch the data.
    Hope this helps.
    Regards
    Vinayak

  • How to trace the RevTrac carrying changes for a given system table?

    Hi everyone!
    In our company we have a case of a change no one in the team states to have done, therefore we do not know the RevTrac number that carries the changes. Currently, the development system is different from the QA, staging and production systems for our ERP.
    Is there a transaction/program that traces changes for a given table and field specified accross a given environment-client?

    HI Nicolas,
    I chatted with Rev-Trac support earlier today and here is what they have come back to me with.
    Assuming the change in question was carried out in the development  system. Changes to fields in tables should in most cases be captured in transports. Assuming it was a transportable change then go to the development system and execute transaction SE16 and query Rev-Trac table /RSC/T_MFM_4T filtering by TABLENAME.
    On executing the query you should see a list of transports involved with changes to the transport. You can then check to see if there is a recent transport associated with the change - if so then you can find out who created the transport by using standard SAP functionality."
    If you find this doesn't help, then please contact your Rev-Trac Administrator who can then log a support request on our support portal at www.xrsc.com
    Hope this helps, Rick

  • How to calculate the subtotals in alv for curr field(bsik-wrbtr)

    I want to calculate subtotal for netamt for every new lifnr(vendor )
    this is my program
    REPORT  Z23PRAC1.
    *& Report  ZRFI_AP_AGING_REPORT
    TABLES : lfa1,lfb1.
    CONSTANTS : gc_linedat(1) TYPE c VALUE 'X',
                gc_duedate(1) TYPE c VALUE 'X',
                gc_koart(1) TYPE c VALUE 'K',
                gc_tname(9) TYPE c VALUE 'GT_OUTPUT'.
    TYPE-POOLS: slis.
    TYPES: BEGIN OF ty_output,
           bukrs    TYPE bsik-bukrs,                  "Company Code
           lifnr    TYPE bsik-lifnr,                  "Vendor Account
           blart    TYPE bsik-blart,                  "Document Type
           name1    TYPE lfa1-name1,                  "Vendor Name
           ktokk    TYPE lfa1-ktokk,                  "Account Group
           belnr    TYPE bsik-belnr,                  "Invoice
           ebeln    TYPE bsik-ebeln,                  "Purchasing Order
           bldat    TYPE bsik-bldat,                  "Document Date
           netdt    TYPE bsega-netdt,                 "Due Date
           wrbtr1   TYPE bsik-wrbtr,                            "Aged 1-30
           wrbtr2   TYPE bsik-wrbtr,                            "Aged 31-60
           wrbtr3   TYPE bsik-wrbtr,                            "Aged 61-90
           wrbtr4   TYPE bsik-wrbtr,                  "Aged Over 90
           grossamt TYPE bsik-wrbtr,                  "Gross Amount Due
           psskt    TYPE regup-psskt,                 "Discount
          netamt(13)   TYPE P decimals 2,                  "Net Amount Due
           NETAMT   TYPE BSIK-WRBTR,
           END OF ty_output.
    TYPES: BEGIN OF ty_vendor1,
           lifnr   TYPE lfa1-lifnr,
           name1   TYPE lfa1-name1,
           ktokk   TYPE lfa1-ktokk,
    END OF ty_vendor1.
    TYPES :BEGIN OF ty_vendor,
          bukrs   TYPE bsik-bukrs,                   "COMPANY CODE
          lifnr   TYPE bsik-lifnr,                   "CUSTOMER ACCOUNT
    END OF ty_vendor.
    TYPES :BEGIN OF ty_ekko,
          bukrs   TYPE ekko-bukrs,                   "COMPANY CODE
          lifnr   TYPE ekko-lifnr,                   "CUSTOMER ACCOUNT
          ebeln    TYPE ekko-ebeln,
    END OF ty_ekko.
    DATA: gt_output   TYPE TABLE OF ty_output,        "OUTPUT TABLE
          gt_lineitem TYPE TABLE OF bapi3008_2,       "LINE ITEMS TABLE
         gt_custdet  TYPE TABLE OF ty_custdet,       "CUSTOMER ACCOUNT VALIDATION
          gt_fieldcat TYPE slis_t_fieldcat_alv,       "FIELD CATALOG
          gt_events   TYPE slis_t_event,              "EVENTS CATALOG
          gt_sort     TYPE slis_t_sortinfo_alv,       "SORT CATALOG
          gt_text_top_of_page TYPE slis_t_listheader, "TOP OF THE PAGE
          gt_vendor1 TYPE TABLE OF ty_vendor1,
          gt_vendor TYPE TABLE OF ty_vendor,
          gt_ekko   TYPE TABLE OF ty_ekko.
    DATA: st_output   TYPE ty_output,                 "OUTPUT WORK AREA
          st_lineitem TYPE bapi3008_2,                "LINE ITEMS WORK AREA
         st_custdet  TYPE ty_custdet,                "CUSTOMER ACCOUNT VALIDATION
          st_faede    TYPE faede,                     "DUE DATE CALCULATION
          st_fieldcat LIKE LINE OF gt_fieldcat,
          st_events   LIKE LINE OF gt_events,
          st_sort     LIKE LINE OF gt_sort,
          st_text_top_of_page LIKE LINE OF gt_text_top_of_page,
          st_vendor1 TYPE ty_vendor1,
          st_vendor TYPE ty_vendor,
          st_ekko   TYPE ty_ekko.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS : s_lifnr FOR lfa1-lifnr,
                     s_bukrs FOR lfb1-bukrs,
                     s_ktokk FOR lfa1-ktokk.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
    PARAMETERS : p_astid TYPE rfpdo-allgstid DEFAULT sy-datum.
    SELECTION-SCREEN END OF BLOCK b2.
    SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
    PARAMETERS: p_summed AS CHECKBOX,
                p_linedt AS CHECKBOX DEFAULT gc_linedat.
    SELECTION-SCREEN END OF BLOCK b3.
    SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-004.
    PARAMETERS: p_docdat AS CHECKBOX,
                p_duedat AS CHECKBOX DEFAULT gc_duedate.
    SELECTION-SCREEN END OF BLOCK b4.
    START-OF-SELECTION.
      SELECT lifnr name1 ktokk FROM lfa1
                                    INTO TABLE gt_vendor1
                                    WHERE lifnr IN s_lifnr.
      SELECT bukrs
               lifnr
               ebeln
               FROM ekko
               INTO TABLE gt_ekko
               WHERE bukrs IN s_bukrs
               AND lifnr IN s_lifnr.
    IF s_bukrs IS NOT INITIAL AND s_lifnr IS NOT INITIAL.
      SELECT bukrs
             lifnr
             FROM lfb1
             INTO TABLE gt_vendor
             WHERE bukrs IN s_bukrs
             AND lifnr IN s_lifnr.
    *LOOP AT GT_OUTPUT INTO ST_OUTPUT.
    *endif.
      LOOP AT gt_vendor INTO st_vendor.
        READ TABLE gt_vendor1 INTO st_vendor1 WITH KEY lifnr = st_vendor-lifnr.
        READ TABLE gt_ekko INTO st_ekko WITH KEY lifnr = st_vendor-lifnr
                                                     bukrs = st_vendor-bukrs.
        CALL FUNCTION 'BAPI_AP_ACC_GETOPENITEMS'
          EXPORTING
            companycode = st_vendor-bukrs
            vendor      = st_vendor-lifnr
            keydate     = p_astid
          TABLES
            lineitems   = gt_lineitem.
        LOOP AT gt_lineitem INTO st_lineitem.
          st_faede-shkzg = st_lineitem-db_cr_ind.
          st_faede-koart = gc_koart.
          st_faede-zfbdt = st_lineitem-bline_date.
          st_faede-zbd1t = st_lineitem-dsct_days1.
          st_faede-zbd2t = st_lineitem-dsct_days2.
          st_faede-zbd3t = st_lineitem-netterms.
          st_faede-rebzg = st_lineitem-inv_ref.
          st_faede-rebzt = st_lineitem-nxt_doctyp.
          st_faede-bldat = st_lineitem-doc_date.
          CALL FUNCTION 'DETERMINE_DUE_DATE'
            EXPORTING
              i_faede                    = st_faede
            IMPORTING
              e_faede                    = st_faede
            EXCEPTIONS
              account_type_not_supported = 1
              OTHERS                     = 2.
          IF sy-subrc <> 0.
            MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
          ENDIF.
          st_output-bukrs = st_vendor-bukrs.
          st_output-lifnr = st_vendor-lifnr.
          st_output-name1 = st_vendor1-name1.
          st_output-ktokk = st_vendor1-ktokk.
          st_output-blart = st_lineitem-doc_type.
          st_output-belnr = st_lineitem-doc_no.
          st_output-ebeln = st_ekko-ebeln.
          st_output-bldat = st_faede-bldat.
          st_output-netdt = st_faede-netdt.
          DATA : lv_date TYPE i.
          IF p_docdat = 'X'.
            lv_date = p_astid - st_output-bldat.
            IF lv_date < 30 .
              st_output-wrbtr1 = st_lineitem-amt_doccur.
            ELSEIF lv_date < 60 .
              st_output-wrbtr2 = st_lineitem-amt_doccur.
            ELSEIF lv_date < 90 .
              st_output-wrbtr3 = st_lineitem-amt_doccur.
            ELSEIF lv_date > 90 .
              st_output-wrbtr4 = st_lineitem-amt_doccur.
            ENDIF.
          ELSE.
            lv_date = p_astid - st_output-bldat.
            IF lv_date < 30 .
              st_output-wrbtr1 = st_lineitem-amt_doccur.
            ELSEIF lv_date < 60 .
              st_output-wrbtr2 = st_lineitem-amt_doccur.
            ELSEIF lv_date < 90 .
              st_output-wrbtr3 = st_lineitem-amt_doccur.
            ELSEIF lv_date > 90 .
              st_output-wrbtr4 = st_lineitem-amt_doccur.
            ENDIF.
          ENDIF.
    DATA :  A TYPE BSIK-WRBTR,
            C TYPE STRING.
          st_output-grossamt = st_output-wrbtr1 +
                               st_output-wrbtr2 +
                               st_output-wrbtr3 +
                               st_output-wrbtr4 .
          A = st_output-grossamt - ( st_output-grossamt * st_output-psskt ) / 100.
          MOVE A TO C.
          MOVE C TO st_output-netamt .
    *st_output-netamt = st_output-grossamt - ( st_output-grossamt * st_output-psskt ) / 100.
          APPEND  st_output TO gt_output.
          CLEAR st_output.
        ENDLOOP.
      ENDLOOP.
    SORT gt_output.
    END-OF-SELECTION.
      PERFORM fill_field_catalog.
      PERFORM fill_event_catalog.
      PERFORM sort_catalog.
      PERFORM display_alv_list.
    *&      Form  fill_field_catalog
          text
    FORM fill_field_catalog .
    *Definition
      DEFINE field_cat.
        st_fieldcat-tabname      = &1.
        st_fieldcat-fieldname    = &2.
        st_fieldcat-ref_tabname  = &3.
        st_fieldcat-seltext_m    = &4.
        st_fieldcat-do_sum       = &5.
          append st_fieldcat to gt_fieldcat.
        clear st_fieldcat.
      END-OF-DEFINITION.
      field_cat gc_tname 'BUKRS' 'BSIK' 'Company Code' ''.
      field_cat 'GT_OUTPUT' 'LIFNR' 'BSIK' 'Customer Account' ''.
      field_cat 'GT_OUTPUT' 'BLART' 'BSIK' 'Document Type' ''.
      field_cat 'GT_OUTPUT' 'NAME1' 'LFA1' 'Vendor Name' ''.
      field_cat 'GT_OUTPUT' 'KTOKK' 'LFA1' 'Account Group' ''.
    field_cat gc_TNAME 'ALLGSTID' 'RFPDO' 'Key Date' ''.
      field_cat gc_tname 'BELNR' 'BSIK' 'Invoice' ''.
      field_cat gc_tname 'EBELN' 'EKKO' 'Purchasing Order' ''.
      field_cat gc_tname 'BLDAT' 'BSIK' 'Document Date' ''.
      field_cat gc_tname 'NETDT' 'BSEGA' 'Due Date' ''.
      field_cat gc_tname 'WRBTR1' 'BSIK' 'Aged 1-30' ''.
      field_cat gc_tname 'WRBTR2' 'BSIK' 'Aged 31-60' ''.
      field_cat gc_tname 'WRBTR3' 'BSIK' 'Aged 61-90' ''.
      field_cat gc_tname 'WRBTR4' 'BSIK' 'Aged Over 90' ''.
      field_cat gc_tname 'GROSSAMT' 'BSIK' 'Gross Amount' ''.
      field_cat gc_tname 'PSSKT' 'REGUP' 'Discount' ''.
      field_cat gc_tname 'NETAMT' 'BSIK' 'Net Amount' 'X' .
    ENDFORM.                    " fill_field_catalog
    *&      Form  fill_event_catalog
          EVENTS FILLING SUBROUTINE TO FIND THE TOP OF THE PAGE EVENT
    FORM fill_event_catalog .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = gt_events
        EXCEPTIONS
          list_type_wrong = 1
          OTHERS          = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      READ TABLE gt_events TRANSPORTING NO FIELDS WITH KEY name = 'TOP_OF_PAGE'.
      IF sy-subrc EQ 0.
        st_events-form = 'FILL_HEADER'.
        MODIFY gt_events FROM st_events INDEX sy-tabix TRANSPORTING form.
      ENDIF.
    ENDFORM.                    " fill_event_catalog
    *&      Form  FILL_HEADER
          FILL HEADER DATA
    FORM fill_header .
    st_text_top_of_page-typ = 'S'.
    st_text_top_of_page-info = sy-mandt.
    APPEND st_text_top_of_page TO gt_text_top_of_page.
    st_text_top_of_page-info = sy-uname.
    APPEND st_text_top_of_page TO gt_text_top_of_page.
    WRITE sy-datum TO st_text_top_of_page-info.
    APPEND st_text_top_of_page TO gt_text_top_of_page.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
         it_list_commentary = gt_text_top_of_page.
    ENDFORM.                   "fill header
    *&      Form  sort_catalog
          text
    -->  p1        text
    <--  p2        text
    FORM sort_catalog .
      st_sort-up = 'X'.
      st_sort-spos = 1.
      st_sort-subtot = 'X'.
      st_sort-fieldname = 'LIFNR'.
      APPEND st_sort TO Gt_sort.
      CLEAR st_sort.
      st_sort-up = 'X'.
      st_sort-spos = '2'.
      st_sort-subtot = ''.
      st_sort-fieldname = 'NETAMT'.
      APPEND st_sort TO gt_sort.
      CLEAR st_sort.
    ENDFORM.                    " sort_catalog
    *&      Form  display_alv_list
          CREATE THE OUTPUT IN THE ALV LIST FORMAT
    FORM display_alv_list .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = sy-repid
          it_fieldcat        = gt_fieldcat
          it_sort            = gt_sort
          i_default          = 'X'
          it_events          = gt_events
        TABLES
          t_outtab           = gt_output
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " display_alv_list

    Hi,
    This is the sample report for ALV SUBTOTAL.
    REPORT  YMS_ALVSUBTOTAL.
    *REPORT z_alv_sub_totals .
    TYPE-POOLS: slis.
    DATA: BEGIN OF it_output OCCURS 0,
              var1(8) TYPE n,
              var2(10),
              var3 TYPE I,
          END OF it_output.
    DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
           t_fieldcat TYPE slis_fieldcat_alv,
          it_sort TYPE slis_t_sortinfo_alv,
          t_sort TYPE slis_sortinfo_alv,
          v_repid LIKE sy-repid.
    INITIALIZATION.
      v_repid = sy-repid.
    START-OF-SELECTION.
      PERFORM get_data.
      PERFORM sort_fields.
      PERFORM fill_fieldcat.
      PERFORM list_display.
    *&      Form  GET_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM get_data.
      it_output-var1 = 1000.
      it_output-var2 = 'anupama'.
      it_output-var3 = '10000'.
    it_output-key = 'X'.
      APPEND it_output.
      CLEAR it_output.
      it_output-var1 = 1000.
      it_output-var2 = 'siddhu'.
      it_output-var3 = '20000'.
      APPEND it_output.
      CLEAR it_output.
      it_output-var1 = 1000.
      it_output-var2 = 'chinni'.
      it_output-var3 = '100000'.
      APPEND it_output.
      CLEAR it_output.
      it_output-var1 = 2000.
      it_output-var2 = 'chicchu'.
      it_output-var3 = '10000'.
      APPEND it_output.
      CLEAR it_output.
      it_output-var1 = 2000.
      it_output-var2 = 'candy'.
      it_output-var3 = '10000'.
      APPEND it_output.
      CLEAR it_output.
      it_output-var1 = 1000.
      it_output-var2 = 'anupama'.
      it_output-var3 = '10000'.
      APPEND it_output.
      CLEAR it_output.
      it_output-var1 = 4000.
      it_output-var2 = 'anupama'.
      it_output-var3 = '10000'.
      APPEND it_output.
      CLEAR it_output.
    ENDFORM.                    " GET_DATA
    *&      Form  fill_fieldcat
          text
    -->  p1        text
    <--  p2        text
    FORM fill_fieldcat.
      PERFORM fill_fields USING: 'IT_OUTPUT' 'VAR1' 'Variable 1' ' ',
                                 'IT_OUTPUT' 'VAR2' 'Variable 2' ' ',
                                 'IT_OUTPUT' 'VAR3' 'Variable 3' 'X'.
    ENDFORM.                    " fill_fieldcat
    *&      Form  fill_fields
          text
         -->P_0146   text
         -->P_0147   text
         -->P_0148   text
         -->P_0149   text
    FORM fill_fields USING    value(tabname) TYPE slis_tabname
                              value(fieldname) TYPE slis_fieldname
                              value(seltext_m) LIKE dd03p-scrtext_m
                              value(do_sum) TYPE c.
      t_fieldcat-tabname = tabname.
      t_fieldcat-fieldname = fieldname.
      t_fieldcat-seltext_m  = seltext_m.
      IF do_sum = 'X'.
        t_fieldcat-datatype = 'CURR'.
      ENDIF.
      t_fieldcat-do_sum = do_sum.
      APPEND t_fieldcat TO it_fieldcat.
      CLEAR t_fieldcat.
    ENDFORM.                    " fill_fields
    *&      Form  list_display
          text
    -->  p1        text
    <--  p2        text
    FORM list_display.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
         i_callback_program             = v_repid
         it_fieldcat                    = it_fieldcat
         it_sort                        = it_sort[]
       TABLES
          t_outtab                       = it_output
       EXCEPTIONS
         program_error                  = 1
         OTHERS                         = 2
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " list_display
    *&      Form  sort_fields
          text
    -->  p1        text
    <--  p2        text
    FORM sort_fields.
      t_sort-fieldname = 'VAR1'.
      t_sort-tabname = 'IT_OUTPUT'.
      t_sort-spos = 1.
      t_sort-up = 'X'.
      t_sort-subtot = 'X'.
      APPEND t_sort TO it_sort.
      CLEAR t_sort.
      t_sort-fieldname = 'VAR3'.
      t_sort-tabname = 'IT_OUTPUT'.
      t_sort-spos = 2.
      t_sort-up = 'X'.
      APPEND t_sort TO it_sort.
      CLEAR t_sort.
    ENDFORM.                    " sort_fields
    Thanks,
    Sankar M

  • How to remove the complete ALE configuration for a given system

    Hello everybody,
    Through ALE ,data is transferred between a number of SAP systems and the necessary ALE setups are in place.
    Now,a particular SAP system,which used to be a receivor to the central SAP system,is to be retired.
    Hence,the associated ALE set up is to be completely removed from the central SAP system.
    Is the following sequence correct?If not and I have missed something,please enlighten me with the correct sequence.
    1.Removal of the receivor logical system  and its assignment to client ,through transaction SALE.
    2.Removal of partner profile, through transaction WE20.
    3.Removal of RFC destinations,through transaction SM59.
    4.Removal of transactional ports for the logical system,through transaction code WE21.
    5.Removal of Distribution model between the retiring system and the central SAP system.
          (a)Regarding distribution model,I have a question-if the distribution model is maintained such that it contains the linking relationships between the central system and several receivor systems(in addition to the one I wish to remove),then is it possible to remove only the desired linkage and not touch the rest?   
          (b)Through BD64,I have tried but I am able to delete only the entire distribution model  as a whole,while I would like to keep the distribution model and delete just one of the nodes,so as to cut  the connection between only central system and the retiring system.
    This is so because the other receivor systems are working fine,involving a lot of batchjobs and I am afraid that deleting the distribution model wholly will create unnecessary trouble.
    Any help will be appreciated.Thanks
    Papri

    HI Nicolas,
    I chatted with Rev-Trac support earlier today and here is what they have come back to me with.
    Assuming the change in question was carried out in the development  system. Changes to fields in tables should in most cases be captured in transports. Assuming it was a transportable change then go to the development system and execute transaction SE16 and query Rev-Trac table /RSC/T_MFM_4T filtering by TABLENAME.
    On executing the query you should see a list of transports involved with changes to the transport. You can then check to see if there is a recent transport associated with the change - if so then you can find out who created the transport by using standard SAP functionality."
    If you find this doesn't help, then please contact your Rev-Trac Administrator who can then log a support request on our support portal at www.xrsc.com
    Hope this helps, Rick

  • How to calculate the measure for the next month using the AGO Function

    Hi,
    I need to calculate the measure for the current month and the next month.
    Can anyone please let me know the syntax to use AGO function for the above requirement.
    Regards,
    Ambika Nanda.

    Hi.
    You can also use Oracle analytic functions LAG and LEAD inside the EVALUATE obiee function. The second one will give you the next measure.
    For example the report is:
    TIMES.CALENDAR_MONTH_DESC
    SALES.AMOUNT_SOLD
    LAG column: EVALUATE('LAG(%1, 1) OVER (ORDER BY %2)' AS DOUBLE, SALES.AMOUNT_SOLD, TIMES.CALENDAR_MONTH_DESC)
    LEAD column: EVALUATE('LEAD(%1, 1) OVER (ORDER BY %2)' AS DOUBLE, SALES.AMOUNT_SOLD, TIMES.CALENDAR_MONTH_DESC)
    And the result is:
    CALENDAR_MONTH_DESC--------AMOUNT_SOLD--------LAG--------------LEAD
    2000-01----------------------------------8025513.84---------------------------8474475.88
    2000-02----------------------------------8474475.88----- 8025513.84-----7439568.24
    2000-03----------------------------------7439568.24------8474475.88-----7062040.48
    2000-04----------------------------------7062040.48------7439568.24-----7497971.40
    Regards
    Goran
    http://108obiee.blogspot.com

  • How to calculate the unit for RATE?

    Hey All,
    I am not sure if there is something standard for this or not.
    I am calculating the 'Rate' by using 'Value/Amount' and 'Quantity' as follows -
    Rate == Value /  Quantity
    I need to calculate the unit for the rate as below -
    Rate unit == Value unit (Currency) /  Quantity unit (Base_uom) 
    (for example -
    if value is 1000 USD and quantity is 10 TO then Rate should come out as 100 USD / TO)
    Could anyone please suggest how to calculate the unit in this case?
    Many Thanks!
    Tanu

    Hi,
    Go through the below link it may give some idea
    http://help.sap.com/saphelp_nw04/Helpdata/EN/19/1d7abc80ca4817a72009998cdeebe0/content.htm
    Regards,
    Marasa.

  • [svn:fx-trunk] 10545: Make DataGrid smarter about when and how to calculate the modulefactory for its renderers when using embedded fonts

    Revision: 10545
    Author:   [email protected]
    Date:     2009-09-23 13:33:21 -0700 (Wed, 23 Sep 2009)
    Log Message:
    Make DataGrid smarter about when and how to calculate the modulefactory for its renderers when using embedded fonts
    QE Notes: 2 Mustella tests fail:
    components/DataGrid/DataGrid_HaloSkin/Properties/datagrid_properties_columns_halo datagrid_properties_columns_increase0to1_halo
    components/DataGrid/DataGrid_SparkSkin/Properties/datagrid_properties_columns datagrid_properties_columns_increase0to1
    These fixes get us to measure the embedded fonts correctly when going from 0 columns to a set of columns so rowHeight will be different (and better) in those scenarios
    Doc Notes: None
    Bugs: SDK-15241
    Reviewer: Darrell
    API Change: No
    Is noteworthy for integration: No
    tests: checkintests mustella/browser/DataGrid
    Ticket Links:
        http://bugs.adobe.com/jira/browse/SDK-15241
    Modified Paths:
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridBase .as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColu mn.as

    Hi Matthias,
    Sorry, if this reply seems like a products plug (which it is), but this is really how we solve this software engineering challenge at JKI...
    At JKI, we create VI Packages (which are basically installers for LabVIEW instrument drivers and toolkits) of our reusable code (using the package building capabilities of VIPM Professional).  We keep a VI Package Configuration file (that includes a copy of the actual packages) in each of our project folders (and check it into source code control just as we do for all our project files).  We also use VIPM Enterprise to distribute new VI Packages over the network.
    Also, as others have mentioned, we use the JKI TortoiseSVN Tool to make it easy to use TortoiseSVN directly from LabVIEW.
    Please feel free to contact JKI if you have any specific questions about these products.
    Thanks,
    -Jim 

  • How to calculate the size each PSA request or all PSA for the Datasources?

    Hi All,
    Can anybody tell me how to calculate the size of each PSA Request or all PSA's requests for all datasources?
    Regards,
    Rajesh

    Hi ,
    PSA technical name can be found as,
    1)Right click on your Data Target,go to Display dataflow,click on the PSA ,here you can find the technical name.
    2)Goto RSRV tcode>PSA Table>Consistency between PSA Partitions and SAP Administration-->Give your Infosoure name,it gives u PSA technical name also,
    Thanks&Regards,
    Praveena.

  • PURCHASING-How to change the next approver for the Purchase Requistion(PR)-

    Hi All,
    Could you please let me know how to change the next approver for the Purchase Requistion(PR) from User "X" to "Y", as Y was manager of "X" and 'X' left the organization. how can i acheive this? can you please let me know the process ?
    Thanks,

    Hi,
    You have not mentioned the version you are using (11i or R12).. Are you using iProcurement... ? Are you using positional or Employee-Supervisor hierarchy..?
    Your question : How to change the next approver for the Purchase Requistion(PR) from User "X" to "Y", as Y was manager of "X" and 'X' left the organization.
    Ans: You can achieve this through below workarounds
    - Through *"Mass Update of Requisitions" functionality* (Conc. request) you can update the Approver name from User "X" to "Y" for existing PRs.
    - Replacing the Supervisor name of the requestor/requisitioner in the HR record (assignment) from User "X" to "Y"..
    Hope it helps.
    Kind Regards,
    S.P DASH

Maybe you are looking for