on 12-05-2018 5:11 AM
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.
User | Count |
---|---|
12 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.