AUTO STO PO CREATE (ME21N) USING BAPI

 





*&---------------------------------------------------*

*& Report ZSD_AUTO_STO_CREATE
*&---------------------------------------------------*
*& Program        : ZSD_AUTO_STO_CREATE
*& Author         : King Of ABAP
*& Created on     : 
*& Requested By   : 
*& Project        : 
*& Transport-No   : 
*& Description    : STO PO Creation 
*& T-Code         : 
*&---------------------------------------------------*
REPORT zsd_auto_sto_create.

INCLUDE zsd_auto_sto_create_top.
INCLUDE zsd_auto_sto_create_sel.
INCLUDE zsd_auto_sto_create_f01.

START-OF-SELECTION.
*** Validation For Input Field If PO is alredy exist
  IF NOT p_ref IS INITIAL.
    SELECT SINGLE FROM ekko INTO @DATA(ls_ekko)
      WHERE verkf EQ @p_ref.

    IF NOT ls_ekko-verkf IS INITIAL.
      MESSAGE 'PO Already exist for the invoice number' TYPE 'I'.
      EXIT.
    ENDIF.
  ENDIF.

  PERFORM get_data.
  PERFORM display_data.

*&---------------------------------------------------------------------*
*& Include          ZSD_AUTO_STO_CREATE_TOP
*&---------------------------------------------------------------------*

TYPESBEGIN OF ty_alv,
         sno     TYPE   i,
         po_no   TYPE ebeln,
         type    TYPE   bapi_mtype,
         message TYPE   bapi_msg,
       END  OF ty_alv.

DATAgt_alv TYPE STANDARD TABLE OF ty_alv,
      gs_alv TYPE ty_alv.
*&---------------------------------------------------------------------*
*& Include          ZSD_AUTO_STO_CREATE_SEL
*&---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
  PARAMETERSp_ref TYPE vbkd-bstkd OBLIGATORY.
SELECTION-SCREEN END  OF BLOCK b1.

*&---------------------------------------------------------------------*
*& Include          ZSD_AUTO_STO_CREATE_F01
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*

FORM get_data .
** Fill Header  Declaration
  DATAls_poheader  TYPE bapimepoheader,
        ls_poheaderx TYPE bapimepoheaderx.
*** Address Data  Declaration
  DATA:ls_address TYPE bapimepoaddrvendor.
*** Item Level Data Declaration
  DATAlt_poitem  TYPE STANDARD TABLE OF bapimepoitem,
        ls_poitem  TYPE  bapimepoitem,
        lt_poitemx TYPE STANDARD TABLE OF bapimepoitemx,
        ls_poitemx TYPE  bapimepoitemx.
*** Schedule Declarations
  DATAlt_poschedule  TYPE STANDARD TABLE OF bapimeposchedule,
        ls_poschedule  TYPE  bapimeposchedule,
        lt_poschedulex TYPE STANDARD TABLE OF bapimeposchedulx,
        ls_poschedulex TYPE  bapimeposchedulx.

*** Return Declarations
  DATA:lt_return TYPE TABLE OF  bapiret2,
       ls_return TYPE bapiret2.
*** PO Number Declaration
  DATA:lv_po TYPE  bapimepoheader-po_number.

  DATAlv_ebelp TYPE ebelp.


  IF p_ref IS NOT INITIAL.
    SELECT FROM vbkd INTO TABLE @DATA(lt_vbkd)
         WHERE bstkd EQ @p_ref.
  ENDIF.

  IF lt_vbkd IS NOT INITIAL.
    SELECT FROM vbap INTO TABLE @DATA(lt_vbap)
          FOR ALL ENTRIES IN @lt_vbkd
           WHERE vbeln EQ @lt_vbkd-vbeln.
  ENDIF.

*** Get Address Details
  IF lt_vbkd IS NOT INITIAL.
    SELECT FROM vbpa INTO TABLE @DATA(lt_vbpa)
      FOR ALL ENTRIES IN @lt_vbkd
       WHERE vbeln EQ @lt_vbkd-vbeln
         AND parvw EQ 'WE'.
  ENDIF.

  LOOP AT lt_vbkd INTO DATA(ls_vbkd).
    LOOP AT lt_vbap INTO DATA(ls_vbap).
      ls_poheader-doc_type     'ZEST'.
      ls_poheader-suppl_plnt   ls_vbap-zz1_werks_sdi.
      ls_poheader-purch_org    '****'.
      ls_poheader-pur_group    'P16'.
      ls_poheader-comp_code    '****'.
      ls_poheader-sales_pers   p_ref.
      ls_poheader-our_ref      ls_vbap-vbeln.

      ls_poheaderx-doc_type    abap_true.
      ls_poheaderx-suppl_plnt  abap_true.
      ls_poheaderx-purch_org   abap_true.
      ls_poheaderx-pur_group   abap_true.
      ls_poheaderx-comp_code   abap_true.
      ls_poheaderx-sales_pers  abap_true.
      ls_poheaderx-our_ref     abap_true.

      lv_ebelp            lv_ebelp + 10.
      ls_poitem-po_item   lv_ebelp.
      ls_poitem-material  |{ ls_vbap-matnr ALPHA IN }|.
      ls_poitem-plant     ls_vbap-werks.
      ls_poitem-quantity  ls_vbap-kwmeng.
      ls_poitem-stge_loc  '1000'.
      APPEND ls_poitem TO lt_poitem.
      CLEAR:ls_poitem.

*** Flag Set
      ls_poitemx-po_item  lv_ebelp.
      ls_poitemx-po_itemx abap_true.
      ls_poitemx-material abap_true.
      ls_poitemx-quantity abap_true.
      ls_poitemx-plant    abap_true.
      ls_poitemx-stge_loc abap_true.
      APPEND ls_poitemx TO lt_poitemx.
      CLEAR:ls_poitemx.

**** po schedule
      ls_poschedule-po_item        lv_ebelp .
      ls_poschedule-quantity       ls_vbap-kwmeng.
      ls_poschedule-delivery_date  sy-datum.
      APPEND ls_poschedule TO lt_poschedule.
      CLEAR:ls_poschedule.
*** Flag Set
      ls_poschedulex-po_item       lv_ebelp .
      ls_poschedulex-po_itemx      abap_true.
      ls_poschedulex-delivery_date abap_true.
      ls_poschedulex-quantity      abap_true.
      APPEND ls_poschedulex TO lt_poschedulex.
      CLEAR:ls_poschedulex.
    ENDLOOP.
  ENDLOOP.

  CALL FUNCTION 'BAPI_PO_CREATE1'
    EXPORTING
      poheader         ls_poheader
      poheaderx        ls_poheaderx
    IMPORTING
      exppurchaseorder lv_po
    TABLES
      return           lt_return
      poitem           lt_poitem
      poitemx          lt_poitemx
      poschedule       lt_poschedule
      poschedulex      lt_poschedulex.

  DELETE lt_return WHERE type 'W'.
  DELETE lt_return WHERE type 'I'.


  READ TABLE lt_return INTO ls_return WITH KEY type 'E'.
  IF sy-subrc EQ 0.
    LOOP AT lt_return INTO ls_return WHERE type 'E'.
      gs_Alv-sno gs_Alv-sno + 1.
      gs_alv-type 'E'.
      gs_alv-message ls_return-message.
      APPEND gs_alv TO gt_alv.
      CLEAR:gs_alv.
    ENDLOOP.

  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait 'X'.

    LOOP AT lt_return INTO ls_return WHERE type 'S'.
      gs_Alv-sno gs_Alv-sno + 1.
      gs_alv-po_no lv_po.
      gs_alv-type 'S'.
      gs_alv-message ls_return-message.
      APPEND gs_alv TO gt_alv.
      CLEAR:gs_alv.
    ENDLOOP.

    CLEAR:lt_return,lt_poitem,lt_poitemx,lt_poschedule,lt_poschedulex,lt_vbap.
  ENDIF.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form display_data
*&---------------------------------------------------------------------*
FORM display_data .
  TYPE-POOLS:
          slis.
  DATA:
    ls_fieldcat TYPE slis_fieldcat_alv,
    ls_layout   TYPE slis_layout_alv.
  DATA:
     lt_fieldcat         TYPE slis_t_fieldcat_alv.

  DATA:
        lv_program TYPE sy-repid.


  IF gt_alv IS NOT INITIAL.

    CLEAR ls_fieldcat.
    ls_fieldcat-fieldname      'SNO'.
    ls_fieldcat-tabname        'GT_ALV'.
    ls_fieldcat-seltext_m      'Serial Number'.
    APPEND ls_fieldcat TO lt_fieldcat.

    CLEAR ls_fieldcat.
    ls_fieldcat-fieldname      'po_no'.
    ls_fieldcat-tabname        'GT_ALV'.
    ls_fieldcat-seltext_m      'PO Number'.
    APPEND ls_fieldcat TO lt_fieldcat.

    CLEAR ls_fieldcat.
    ls_fieldcat-fieldname      'TYPE'.
    ls_fieldcat-tabname        'GT_ALV'.
    ls_fieldcat-seltext_m      'STATUS'.
    APPEND ls_fieldcat TO lt_fieldcat.

    CLEAR ls_fieldcat.
    ls_fieldcat-fieldname      'MESSAGE'.
    ls_fieldcat-tabname        'GT_ALV'.
    ls_fieldcat-seltext_m      'Message'.
    APPEND ls_fieldcat TO lt_fieldcat.

    CLEAR ls_layout.
    ls_layout-colwidth_optimize 'X'.
    ls_layout-zebra             'X'.

    lv_program sy-repid.

* Display The Final Display
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        i_callback_program lv_program
        is_layout          ls_layout
        it_fieldcat        lt_fieldcat
      TABLES
        t_outtab           gt_alv
      EXCEPTIONS
        program_error      1
        OTHERS             2.
  ELSE.
    MESSAGE 'No Errors Found' TYPE 'I'.
  ENDIF.
ENDFORM.

Comments

Popular posts from this blog

PO rejection notification & rejection comments for Fiori

FB60 Vendor Invoice Post using BAPI

Service Invoice Upload For FB70 (BAPI)