Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BAPI PO CHANGES

divsmart
Participant
0 Likes
737
Hi Guys,

I have a requirement for PO changes ie.,User will have an Excel format and when we upload need to changes in ME22n . So i wrote an BAPI as below . But i am not getting 'Changes in PO screen' Please guidance me what mistake doing here.

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
*     I_FIELD_SEPERATOR    =
      i_line_header        = 'X'
      i_tab_raw_data       = it_raw
      i_filename           = p_file
    TABLES
      i_tab_converted_data = lt_bapi
    EXCEPTIONS
      conversion_failed    = 1
      OTHERS               = 2.
  IF sy-subrc <> 0.
    MESSAGE 'Please input the correct data' TYPE 'E'.
  ENDIF.


  SELECT ebeln
         ebelp
         etenr INTO TABLE lt_eket FROM eket FOR ALL ENTRIES IN lt_bapi WHERE
                                                            ebeln = lt_bapi-ebeln AND
                                                            ebelp = lt_bapi-ebelp.


  LOOP AT lt_bapi INTO ls_bapi.
* => Header Declarations.
    ls_bapimepoheader-po_number = ls_bapi-ebeln.
    ls_poheader-po_number = ls_bapi-ebeln.
    ls_poheader-purch_org = ls_bapi-ekorg.
    ls_poheader-pur_group = ls_bapi-ekgrp.
    ls_poheader-comp_code = ls_bapi-bukrs.
    APPEND ls_poheader TO lt_poheader.


*=>Header X Declartions.
    ls_poheaderx-po_number = 'X'.
    ls_poheaderx-purch_org = 'X'.
    ls_poheaderx-pur_group = 'X'.
    ls_poheaderx-comp_code = 'X'.
    APPEND ls_poheaderx TO lt_poheaderx.


*  =>Item Declartions.
    ls_poitem-po_item = ls_bapi-ebelp.
    ls_poitem-material = ls_bapi-matnr.
    ls_poitem-plant = ls_bapi-werks.
    ls_poitem-stge_loc = ls_bapi-lgort.
    ls_poitem-quantity = ls_bapi-menge.
    ls_poitem-po_unit = ls_bapi-meins.
    APPEND ls_poitem TO lt_poitem.


*=>Item X declartions.
    ls_poitemx-po_item = ls_bapi-ebelp.
    ls_poitemx-po_item = 'X'.
    ls_poitemx-material = 'X'.
    ls_poitemx-plant = 'X'.
    ls_poitemx-stge_loc = 'X'.
    ls_poitemx-quantity = 'X'.
    ls_poitemx-po_unit = 'X'.
    APPEND ls_poitemx TO lt_poitemx.


* =>Delivery date declarations.
    ls_bapimeposchedule-po_item = ls_bapi-ebelp.


    READ TABLE lt_eket INTO ls_eket WITH KEY ebeln = ls_bapi-ebeln
                                             ebelp = ls_bapi-ebelp.
    IF sy-subrc = 0.
      ls_bapimeposchedule-sched_line = ls_eket-etenr.
    ENDIF.


    ls_bapimeposchedule-delivery_date = ls_bapi-eindt.
    APPEND ls_bapimeposchedule TO lt_bapimeposchedule.


* =>Delivery date X declarations.
    ls_bapimeposchedule-po_item = ls_bapi-ebelp.




    READ TABLE lt_eket INTO ls_eket WITH KEY ebeln = ls_bapi-ebeln
                                             ebelp = ls_bapi-ebelp.
    IF sy-subrc = 0.


      ls_bapimeposchedule-sched_line = ls_eket-etenr.
    ENDIF.
    ls_bapimeposchedulx-po_itemx = 'X'.
    ls_bapimeposchedulx-sched_linex = 'X'.
    ls_bapimeposchedulx-delivery_date = 'X'.
    APPEND ls_bapimeposchedulx TO lt_bapimeposchedulx.


*    BREAK-POINT.
    CALL FUNCTION 'BAPI_PO_CHANGE'
      EXPORTING
        purchaseorder = ls_bapimepoheader-po_number
        poheader      = ls_poheader
        poheaderx     = ls_poheaderx
*  IMPORTING
*       EXPHEADER     =
*       EXPPOEXPIMPHEADER            =
      TABLES
        return        = lt_return
        poitem        = lt_poitem
        poitemx       = lt_poitemx
*       POADDRDELIVERY               =
        poschedule    = lt_bapimeposchedule
        poschedulex   = lt_bapimeposchedulx.


    IF lt_return IS NOT INITIAL.


      LOOP AT lt_return INTO ls_return WHERE type = 'E'.


        ls_alv-ebeln  = ls_bapi-ebeln.
        ls_alv-ekorg  = ls_bapi-ekorg.
        ls_alv-ekgrp  = ls_bapi-ekgrp.
        ls_alv-bukrs  = ls_bapi-bukrs.
        ls_alv-ebelp = ls_bapi-ebelp.
        ls_alv-eindt = ls_bapi-eindt.
        ls_alv-matnr  = ls_bapi-matnr.
        ls_alv-message  = 'Error'.
        APPEND ls_alv TO lt_alv.
        CLEAR ls_alv.
      ENDLOOP.


      IF sy-subrc NE 0.


        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.
        LOOP AT lt_return INTO ls_return.


          ls_alv-ebeln  = ls_bapi-ebeln.
          ls_alv-ekorg  = ls_bapi-ekorg.
          ls_alv-ekgrp  = ls_bapi-ekgrp.
          ls_alv-bukrs  = ls_bapi-bukrs.
          ls_alv-ebelp = ls_bapi-ebelp.
          ls_alv-eindt = ls_bapi-eindt.
          ls_alv-matnr  = ls_bapi-matnr.


          CASE ls_return-type.
            WHEN 'S'.
              ls_alv-message = 'SUCCESS'.
            WHEN OTHERS.
              ls_alv-message = 'WARNING'.
          ENDCASE.
          ls_alv-message = ls_return-message.
          APPEND ls_alv TO lt_alv.
          CLEAR ls_alv.
        ENDLOOP.
     ENDIF.
     CLEAR : ls_poheader,ls_poheaderx,ls_poitem,ls_poitemx,ls_bapimeposchedule,ls_bapimeposchedulx, ls_return .
      REFRESH : lt_poheader,lt_poheaderx,lt_poitem,lt_poitemx,lt_bapimeposchedule,lt_bapimeposchedulx.
    ENDIF.


    IF NOT lt_alv IS INITIAL.
      lt_alv1[] = lt_alv[].
    ENDIF.
  ENDLOOP.
1 REPLY 1
Read only

Jelena_Perfiljeva
Active Contributor
0 Likes
602

Sorry but it's impossible to read and understand the question since it's formatted as code and therefore became one very long (and therefore unreadable) line. Please fix the text if you're expecting any answers.

Thanks.