Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 8667

Re: Getting net value of purchase order

$
0
0

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.


Viewing all articles
Browse latest Browse all 8667

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>