cancel
Showing results for 
Search instead for 
Did you mean: 

How to get Planned Orders and Pegged Purchase Requisitions from BAPI_MOSRVAPS_GETLIST2

sandeep_gvv2
Participant
0 Kudos

Hello All,

I am new to SAP APO Can you Pls help me how to get Planned Orders and Pegged Purchase Requisitions and i am using BAPI_MOSRVAPS_GETLIST2 but i am not getting data in it.

Pls find my code and suggest me how to get data through BAPI_MOSRVAPS_GETLIST2. For this i am taking input as

Product No : FESAP005

Location : I30200012

Version : SIM

For this do we need to do any configuration or settings to get planned orders and purchase requisitions?

Source Code :
METHOD get_planned_orders.

DATA: li_atpcat   TYPE STANDARD TABLE OF bapiapoatpcat,
      li_output   TYPE STANDARD TABLE OF bapi10503ordoutputout,
      li_pegout   TYPE STANDARD TABLE OF bapi10503ordoutputpegout,
      li_head     TYPE STANDARD TABLE OF bapi10503ordheadout,
      li_return   TYPE STANDARD TABLE OF bapiret2,
      li_loctzone TYPE STANDARD TABLE OF t_s_loctzone.
DATA: lv_logsys TYPE logsys,
      lv_count  TYPE i,
      lv_index  TYPE i,
      lv_ploop  TYPE flag,
      lv_sdate  TYPE /sapapo/bdate,
      lv_edate  TYPE /sapapo/edate.
FIELD-SYMBOLS:
      <lf_output>   TYPE bapi10503ordoutputout,
      <lf_pegout>   TYPE bapi10503ordoutputpegout,
      <lf_head>     TYPE bapi10503ordheadout,
      <lf_return>   TYPE bapiret2,
      <lf_loctzone> TYPE t_s_loctzone,
      <lf_plndord>  TYPE t_s_plndord,
      <lf_peggedpr> TYPE t_s_peggedpr.

    IF im_i_matloc IS INITIAL.
      RETURN.
    ENDIF.
* Logical system
    lv_logsys = get_own_logical_system( ).
* Get planned orders ATP category
    SELECT atpcat
    INTO TABLE li_atpcat
    FROM /sapapo/atp03
    WHERE atpcat IN im_x_selection-plcat
      AND atpcattyp = '1'
      AND r3obj = '5'.
* Get planned orders for the input selection
    CALL FUNCTION 'BAPI_MOSRVAPS_GETLIST2'
      EXPORTING
        logical_system        = lv_logsys
        plng_version          = 'SIM'
      TABLES
        product_location_keys = im_i_matloc
        atpcat_selection      = li_atpcat
        order_heads           = li_head
        output_nodes          = li_output
        pegging_output_nodes  = li_pegout
        return                = li_return.
    DELETE li_pegout WHERE pgin_int_order_type <> '021'.
* Get time zone of the vendor location
    SELECT locno
           tzone
    INTO TABLE li_loctzone
    FROM /sapapo/loc
    FOR ALL ENTRIES IN li_head
    WHERE locno = li_head-location.
* Get Planned order details and pegged purchase requisitions
    SORT: li_output BY ordid,
          li_loctzone BY locno.
    LOOP AT li_head ASSIGNING <lf_head>.
      CLEAR: lv_sdate, lv_edate.
* Check whether the planned order is between the input release window, if not don't pick those orders
  READ TABLE li_loctzone ASSIGNING <lf_loctzone> WITH KEY locno = <lf_head>-location BINARY SEARCH.
    IF sy-subrc = 0.

 CONVERT TIME STAMP <lf_head>-order_start_date TIME ZONE <lf_loctzone>-tzone INTO DATE lv_sdate.
 CONVERT TIME STAMP <lf_head>-order_end_date   TIME ZONE <lf_loctzone>-tzone INTO DATE lv_edate.
        lv_edate = lv_edate - 1.
      ENDIF.
    READ TABLE li_output ASSIGNING <lf_output> WITH KEY ordid = <lf_head>-ordid BINARY SEARCH.
      IF sy-subrc = 0.
        APPEND INITIAL LINE TO ex_i_plndord ASSIGNING <lf_plndord>.
        <lf_plndord>-ordno    = <lf_head>-order_number.
        <lf_plndord>-matnr    = <lf_output>-product.
        <lf_plndord>-locno    = <lf_output>-location.
        <lf_plndord>-logsys   = <lf_head>-order_system.
        <lf_plndord>-atpcat   = <lf_output>-atpcat.
        <lf_plndord>-menge    = <lf_output>-real_quantity.
        <lf_plndord>-rmqty    = <lf_output>-real_quantity.
        <lf_plndord>-ordid    = <lf_head>-ordid.
        <lf_plndord>-sdate    = lv_sdate.
        <lf_plndord>-edate    = lv_edate.
        <lf_plndord>-delps    = <lf_output>-item_number.
        <lf_plndord>-delet    = <lf_output>-sched_line.
        <lf_plndord>-ordtyp   = <lf_head>-order_type.
      ENDIF.
    ENDLOOP.
    SORT: ex_i_plndord BY matnr locno sdate,
          li_pegout  BY ordid.
* Get pegged purchase requisitions
    LOOP AT ex_i_plndord ASSIGNING <lf_plndord>.
      READ TABLE li_pegout TRANSPORTING NO FIELDS WITH KEY ordid = <lf_plndord>-ordid.
      IF sy-subrc = 0.
        lv_index = sy-tabix.
        lv_ploop = abap_true.
        WHILE ( lv_ploop = abap_true ).
          READ TABLE li_pegout ASSIGNING <lf_pegout> INDEX lv_index.
          IF sy-subrc = 0 AND <lf_pegout>-ordid = <lf_plndord>-ordid.
            APPEND INITIAL LINE TO ex_i_peggedpr ASSIGNING <lf_peggedpr>.
            <lf_peggedpr>-plordid   = <lf_plndord>-ordid.
            <lf_peggedpr>-prordid   = <lf_pegout>-pgin_guid.
            <lf_peggedpr>-plordno   = <lf_plndord>-ordno.
            <lf_peggedpr>-prordno   = <lf_pegout>-pgin_order_number.
            <lf_peggedpr>-prpegqty  = <lf_pegout>-flow_quantity.
          ELSE.
            CLEAR lv_ploop.
          ENDIF.
          lv_index = lv_index + 1.
        ENDWHILE.
      ENDIF.
    ENDLOOP.
  ENDMETHOD.

Accepted Solutions (0)

Answers (0)