Hello Sir,
Thank you for helping me. Actually it is a bapi for pending po's and i want net value(final value by multiplying quan and price) to be filled in header means the second screen shot in reference to the first..
below is the code..
TYPES: BEGIN OF ty_po_list,
ebeln TYPE ebeln,
END OF ty_po_list,
BEGIN OF ty_HRP1001,
OTYPE TYPE OTYPE,
OBJID TYPE HROBJID,
SCLAS TYPE SCLAS,
SOBID TYPE SOBID,
END OF ty_HRP1001,
BEGIN OF S_FRGGR,
EKKO TYPE ekko-frggr,
END OF S_FRGGR.
data: lt_HRP1001 type HRP1001 .
DATA: LS_FRGGR TYPE STANDARD TABLE OF S_FRGGR.
DATA: BEGIN OF zus OCCURS 10.
INCLUDE STRUCTURE t16fv.
DATA: END OF zus.
*-- Constants declaration
CONSTANTS : lc_frgrl TYPE frgrl VALUE 'X',
lc_bstyp TYPE ebstyp VALUE 'F'.
*-- Internal Table declaration
DATA: lt_po_list TYPE TABLE OF ty_po_list,
lt_release_final TYPE TABLE OF bapirlcopo,
lt_return1 TYPE bapiret2_t,
lt_agents TYPE TABLE OF t16fw.
*-- Structure declaration
DATA: wa_po_list TYPE ty_po_list,
wa_release_final TYPE bapirlcopo,
wa_agents TYPE t16fw,
wa_task_list TYPE ZPO_DETAILS_HEADER_MOBILE,
wa_line_data type ZPO_DETAILS_LINE_MOB.
*-- Variable declaration
DATA: lv_po_date TYPE bedat,
lv_release_posted TYPE bapirlcopo,
lv_relinfo TYPE bapirlgnpo,
lv_relcode TYPE frgco,
lv_rel_status type zstatus_po.
data: lw_header type BAPIMEPOHEADER.
data: ls_items type STANDARD TABLE OF BAPIMEPOITEM,
lw_items type BAPIMEPOITEM,
ls_text type STANDARD TABLE OF BAPIMEPOTEXTHEADER,
lw_text type BAPIMEPOTEXTHEADER .
data: lv_user type BAPIBNAME-BAPIBNAME,
lv_address type BAPIADDR3,
lt_return type STANDARD TABLE OF BAPIRET2.
*--- Get all agents
SELECT * FROM t16fw INTO TABLE lt_agents.
data:lw_agents like LINE OF lt_agents.
loop at lt_agents into lw_agents.
if lw_agents-otype ne 'US'.
select SINGLE * from HRP1001 INTO lt_hrp1001 WHERE OTYPE = lw_agents-otype and
OBJID = lw_agents-OBJID and
RSIGN = 'A' and
RELAT = '008' and
SCLAS = 'US'.
if sy-subrc eq 0.
lw_agents-otype = 'US'.
lw_agents-objid = lt_hrp1001-sobid.
modify lt_agents from lw_agents.
endif.
clear: lw_agents.
endif.
ENDLOOP.
delete lt_agents WHERE otype ne 'US'.
*DATA: s_frggr TYPE ekko-frggr.
* select * from t16fs into ls_t16fs WHERE frggr =
READ TABLE lt_agents into lw_agents WITH KEY otype = 'US' OBJID = USER_NAME.
CALL FUNCTION 'ME_REL_CHECK_MANY'
EXPORTING
i_frgot = '2'
i_frgco = lw_agents-FRGCO
TABLES
t_frggr = ls_frggr
t_t16fv = zus.
*--- Get PO relevant for release
SELECT ebeln FROM ekko
INTO TABLE lt_po_list FOR ALL ENTRIES IN ZUS
WHERE frggr EQ zus-frggr
AND frgsx EQ zus-frgsx AND
frgrl EQ lc_frgrl
AND bstyp EQ lc_bstyp
AND loekz EQ space
AND procstat NE '08'.
*--- Determine Release code and corresponding agents
LOOP AT lt_po_list INTO wa_po_list.
CALL FUNCTION 'BAPI_PO_GETRELINFO'
EXPORTING
purchaseorder = wa_po_list-ebeln
IMPORTING
general_release_info = lv_relinfo
release_already_posted = lv_release_posted
TABLES
release_final = lt_release_final
return = lt_return.
IF lt_return IS INITIAL.
READ TABLE lt_release_final INTO wa_release_final INDEX 1.
CLEAR lv_relcode.
LOOP AT lt_agents INTO wa_agents WHERE frggr =
lv_relinfo-rel_group and OTYPE = 'US' AND OBJID = USER_NAME.
data: lv_applicable type char1.
clear: lv_applicable.
* select SINGLE * from t16fs INTO lw_t16fs WHERE frggr
if lv_release_posted-REL_CODE1 = wa_agents-frgco or lv_release_posted-REL_CODE2 = wa_agents-frgco or lv_release_posted-REL_CODE3 = wa_agents-frgco
or lv_release_posted-REL_CODE4 = wa_agents-frgco or lv_release_posted-REL_CODE5 = wa_agents-frgco or lv_release_posted-REL_CODE6 = wa_agents-frgco
or lv_release_posted-REL_CODE7 = wa_agents-frgco or lv_release_posted-REL_CODE8 = wa_agents-frgco .
clear: lv_applicable.
else.
lv_applicable = 'X'.
endif.
* CALL FUNCTION 'ZMOB_PO_RELEASE_STATUS'
* EXPORTING
* IV_RELEASE_POSTED = lv_release_posted
* IV_RELEASE_FINAL = wa_release_final
* LV_ASSIGNED_CODE = wa_agents-frgco
* IMPORTING
* RV_RELCODE = lv_relcode
* REL_STATUS = lv_rel_status
* REL_APPLICABLE = lv_applicable.
if lv_applicable = 'X'.
CALL FUNCTION 'BAPI_PO_GETDETAIL1'
EXPORTING
PURCHASEORDER = wa_po_list-ebeln
HEADER_TEXT = 'X'
IMPORTING
POHEADER = lw_header
TABLES
POITEM = ls_items
POTEXTHEADER = ls_text.
*** Start of change to remove the PO line item which are blocked/deleted
READ TABLE ls_items into lw_items WITH KEY DELETE_IND = 'S'.
IF sy-subrc = 0.
exit.
ENDIF.
*** Start of change to remove the PO line item which are blocked/deleted
READ TABLE ls_items into lw_items INDEX 1.
if sy-subrc eq 0.
select SINGLE name1 from t001w into wa_task_list-plant WHERE werks eq lw_items-plant.
SHIFT wa_task_list-plant left by 12 PLACES.
endif.
data: lv_net_pr type BPREI.
* data: lv_net_pr type kbetr.
select SINGLE name1 from lfa1 INTO wa_task_list-vendor WHERE lifnr = lw_header-VENDOR.
clear: lw_items.
LOOP at ls_items INTO lw_items WHERE DELETE_IND = ' '.
wa_line_data-po_no = wa_po_list-ebeln.
wa_line_data-line_no = lw_items-PO_ITEM.
wa_line_data-ITEM_TEXT = lw_items-SHORT_TEXT.
wa_line_data-price = lw_items-net_price.
wa_line_data-CURRENCY = lw_header-currency.
* lv_net_pr = lv_net_pr + lw_items-net_price.
wa_line_data-PLANT = wa_task_list-plant.
wa_line_data-QUANTITY = lw_items-QUANTITY.
wa_line_data-QUANTITY_unit = lw_items-po_unit.
append wa_line_data to line_data.
endloop.
LV_USER = LW_HEADER-CREATED_BY.
CALL FUNCTION 'BAPI_USER_GET_DETAIL'
EXPORTING
USERNAME = lv_user
CACHE_RESULTS = 'X'
IMPORTING
ADDRESS = lv_address
TABLES
RETURN = lt_return.
if not line_data[] is INITIAL.
wa_task_list-po_no = wa_po_list-ebeln.
wa_task_list-po_status = lv_rel_status.
* WA_TASK_LIST-PO_VALUE = LV_NET_PR.
WA_TASK_LIST-PO_VALUE = lw_items-net_price * lw_items-QUANTITY.
WA_TASK_LIST-PO_CURRENCY = LW_HEADER-CURRENCY.
* CONCATENATE WA_TASK_LIST-PO_VALUE lw_header-currency INTO WA_TASK_LIST-PO_VALUE SEPARATED BY SPACE.
wa_task_list-RAISED_BY_LNAME = lv_address-LASTNAME.
wa_task_list-RAISED_BY_FNAME = lv_address-FIRSTNAME.
wa_task_list-RELEASE_GROUP = lv_relinfo-rel_group.
wa_task_list-RELEASE_STRATEGY = lw_agents-FRGCO.
append wa_task_list to header_data.
endif.
* wa_task_list-scenario = i_scenario.
* wa_task_list-backend = i_backend.
* wa_task_list-object_id = wa_po_list-ebeln.
* wa_task_list-object_type = /artec/ma_cl_common=>gc_po_bus2012.
* wa_task_list-agent = wa_agents-objid.
* APPEND wa_task_list TO et_task_list.
endif.
ENDLOOP.
endif.
ENDLOOP.