AUTO PO CREATION with Extension (Custom Fields ) (ME21N) Using BAPI


 

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

*& Report ZMM_AUTO_PO_CREATE
*&---------------------------------------------------------------------*
************************************************************************
*      Program        : ZMM_AUTO_PO_CREATE
*      Author         : King Of ABAP'r
*      Created on     : 2022
*      Requested By   : 
*      Transport-No   : 1234567890
*----------------------------------------------------------------------*
*      Description    : Cutover Object
*      Assumption     :
*      Called from    :
*      Called to      : N/A
*      Includes       : N/A
*      Logical DB     : N/A
*----------------------------------------------------------------------*
REPORT zmm_auto_po_create.

INCLUDE zmm_auto_po_create_top.
INCLUDE zmm_auto_po_create_sel.
INCLUDE zmm_auto_po_create_f01.

START-OF-SELECTION.
* Get File Data
  PERFORM get_file_data.
* Process The Data
  PERFORM process_data.
* Create Purchase Order
  PERFORM creat_po.
* Display Error/Success Log
  PERFORM display_log.

*&---------------------------------------------------------------------*
*& Include          ZMM_AUTO_PO_CREATE_TOP
*&---------------------------------------------------------------------*
tablessscrfields.
TYPES BEGIN OF ty_file,
          sno(4)         TYPE c,         "serial Number
          doc_type(4)    TYPE c,         "ekko-bsart,       "Purchasing Document Type
          vendor(10)     TYPE c,         "ekko-lifnr,       "Vendor's account number
          inco1(30)      TYPE c,         "ekko-inco1,       "Incoterms (Part 1)    
          inco2(30)      TYPE c,         "ekko-inco2,       "Incoterms (Part 2)
          pay_term(4)    TYPE c,         "ekko-zterm,       "Terms of payment key
*          currency(5)    TYPE c,         "ekko-WAERS,       " Currency key        
          currency(3)    TYPE c,         "ekko-WAERS,       " Currency key         
          pur_org(4)     TYPE c,         "ekko-ekorg,       "Purchasing organization
          pur_grp(4)     TYPE c,         "ekko-ekgrp,       "Purchasing Group
          comp_code(4)   TYPE c,         "ekko-bukrs,       "Company Code
          scn_no(20)     TYPE c,         "ekko-zzscnum,     "SCN Number
          prgm_code(5)   TYPE c,         "ekko-zzprgm_code, "Program Code in PO
          text(12)       TYPE c,         "ekko-ihrez,       "Your Reference text
          liqtxt(1)      TYPE c,         " Liquid Text Indicator for PO
          reason(25)     TYPE c,         "Liquid damages reason
          po_item(5)     TYPE c,         "PO Item Number
          pr_item(10)    TYPE c,         "Purchase Requisition Number
          item_no(5)     TYPE n,         "Item Number of Purchasing Document
*          material(18)   TYPE c,         "Material Number
          material(40)   TYPE c,         "Material Number
          qnty           TYPE bstmg,     "Purchase Order Quantity
          del_date(10)   TYPE c,         "Delivery Date
          net_price(13)  TYPE c,         "Net Price in Purchasing Document
          price_unit(5)  TYPE c,         "Price unit
          uom(3)         TYPE c,         "ekpo-meins,
          tax_code(2)    TYPE c,         "ekpo-mwskz,     "Tax on sales/purchases code
          value_type(10TYPE c,         "ekpo-bwtar,     "Valuation Type
          plant(4)       TYPE c,         "ekpo-werks      " Plant
          storage_loc(4TYPE c,         "ekpo-lgort,     " Storage location  
          free_ind       TYPE c,         "Free Of Cost Indicator  
        END OF ty_file.

TYPESBEGIN OF ty_header,
         sno(4)      TYPE c,         "serial Number
         ebeln       TYPE ebeln,
         bsart       TYPE bsart,
         lifnr       TYPE elifn,
         inco1(30)   TYPE c,      
         inco2(30)   TYPE c,       
         zterm       TYPE dzterm,
         waers       TYPE waers,   
         ekorg       TYPE ekorg,
         ekgrp       TYPE ekgrp,
         burks       TYPE bukrs,
         zzscnum     TYPE zzscnum,
         zzprgm_code TYPE zdeprgm_code,
         ihrez       TYPE ihrez,
         zzliqtxt    TYPE zdeliqtxt,
         zldreason   TYPE zldreason,
       END OF ty_header.
TYPESBEGIN OF ty_item,
         sno(4)    TYPE   c,         "serial Number
         ebeln     TYPE   ebeln,
         ebelp     TYPE   ebelp,
         bnfpo     TYPE   bnfpo,
*         matnr(18) TYPE   c,    "matnr,
         matnr(40TYPE   c,                ""so
         menge     TYPE   bstmg,
         meins     TYPE   bstme,
         bprme     TYPE   bbprm,
         netpr     TYPE   bprei,
         mwskz     TYPE   mwskz,
         bwtar     TYPE   bwtar_d,
         eindt(10TYPE   c"eindt,
         werks     TYPE   ewerk,
         lgort     TYPE   lgort_d,    
         free_ind  TYPE umson,        
       END OF ty_item.
TYPESBEGIN OF ty_alv,
         ebeln   TYPE   ebeln,
         type    TYPE   bapi_mtype,
         message TYPE   bapi_msg,
       END  OF ty_alv.

DATAgt_data   TYPE STANDARD TABLE OF ty_file,
      gs_data   TYPE ty_file,
      gt_header TYPE STANDARD TABLE OF ty_header,
      gs_header TYPE ty_header,
      gt_item   TYPE STANDARD TABLE OF ty_item,
      gs_item   TYPE ty_item,
      gt_alv    TYPE STANDARD TABLE OF ty_alv,
      gs_alv    TYPE ty_alv.

DATAlv_ebelp TYPE ebelp.
DATAlv_bnfpo TYPE bnfpo.

***Excel File Dowload Button
DATAh_excel TYPE ole2_object" Excel object
      h_mapl  TYPE ole2_object" list of workbooks
      h_map   TYPE ole2_object" workbook
      h_zl    TYPE ole2_object" cell
      h_f     TYPE ole2_object" font

*&---------------------------------------------------------------------*
*& Include          ZMM_AUTO_PO_CREATE_SEL
*&---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
  PARAMETERS:p_file  LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END  OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-003.
  PARAMETERSP_CHECK AS CHECKBOX.
SELECTION-SCREEN END  OF BLOCK b2.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE TEXT-004.
  SELECTION-SCREENPUSHBUTTON 2(60cmdgen USER-COMMAND a_gen VISIBLE LENGTH 20.
SELECTION-SCREEN END OF BLOCK b3.

INITIALIZATION.
  CALL FUNCTION 'ICON_CREATE'
    EXPORTING
      name   icon_xxl
      text   'Generate Template'
      info   'Generate Excel File Template'
    IMPORTING
      result cmdgen
    EXCEPTIONS
      OTHERS 0.

AT SELECTION-SCREEN.
  CASE sscrfields.
    WHEN 'A_GEN'.
      PERFORM generate_template.
  ENDCASE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
* File Upload
  PERFORM file_upload.

*&---------------------------------------------------------------------*
*& Include          ZMM_AUTO_PO_CREATE_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form file_upload
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM file_upload .
* F4 Functionality
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  syst-cprog
      dynpro_number syst-dynnr
      field_name    'P_FILE'
    IMPORTING
      file_name     p_file.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_file_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM get_file_data .
  DATA:  lt_raw TYPE   truxs_t_text_data.
* Convert the XL file to Internal Table
  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
*     I_FIELD_SEPERATOR    =
      i_line_header        abap_true
      i_tab_raw_data       lt_raw
      i_filename           p_file
    TABLES
      i_tab_converted_data gt_data
    EXCEPTIONS
      conversion_failed    1
      OTHERS               2.
  IF sy-subrc <> 0.
    CASE sy-subrc.
      WHEN 1.
        MESSAGE 'File Conversion Error' TYPE 'E' DISPLAY LIKE 'S'.
    ENDCASE.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form process_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM process_data .
  LOOP AT gt_data INTO DATA(ls_data).
    gs_data ls_data.
    AT NEW sno.
      gs_header-sno        gs_data-sno.
      gs_header-ebeln      gs_data-pr_item.
      gs_header-bsart      gs_data-doc_type.

      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  gs_data-vendor
        IMPORTING
          output gs_data-vendor.

      gs_header-lifnr      gs_data-vendor.
      gs_header-inco1      gs_data-inco1.
      gs_header-inco2      gs_data-inco2.
      gs_header-zterm      gs_data-pay_term.
      gs_header-waers      gs_data-currency.  
      gs_header-ekorg      gs_data-pur_org.
      gs_header-ekgrp      gs_data-pur_grp.
      gs_header-burks      gs_data-comp_code.
      gs_header-zzscnum    gs_data-scn_no.
      gs_header-zzprgm_code gs_data-prgm_code.
      gs_header-ihrez      gs_data-text.
      gs_header-zzliqtxt   gs_data-liqtxt.
      gs_header-zldreason  gs_data-reason.
      APPEND gs_header TO gt_header.
      CLEAR gs_header.
    ENDAT.
    gs_item-sno        gs_data-sno.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  gs_data-pr_item
      IMPORTING
        output gs_data-pr_item.

    gs_item-ebeln      gs_data-pr_item.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  gs_data-po_item
      IMPORTING
        output gs_data-po_item.

    gs_item-ebelp      gs_data-po_item.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  gs_data-item_no
      IMPORTING
        output gs_data-item_no.

    gs_item-bnfpo      gs_data-item_no.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  gs_data-material
      IMPORTING
        output gs_data-material.

    gs_item-matnr      gs_data-material.
    gs_item-menge      gs_data-qnty.
    gs_item-eindt      gs_data-del_date.
    gs_item-netpr      gs_data-net_price.
    gs_item-bprme      gs_data-price_unit.
    gs_item-meins      gs_data-uom.
    gs_item-mwskz      gs_data-tax_code.
    gs_item-bwtar      gs_data-value_type.
    gs_item-werks      gs_data-plant.
    gs_item-lgort      gs_data-storage_loc.  
    gs_item-free_ind   gs_data-free_ind.
    APPEND gs_item TO gt_item.
    CLEARgs_item gs_data ls_data.
  ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Creat_po
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM creat_po .

  DATA ls_header  TYPE  bapimepoheader,
         ls_headerx TYPE  bapimepoheaderx.
  DATA lt_item   TYPE TABLE OF bapimepoitem,
         lt_itemx  TYPE TABLE OF bapimepoitemx,
         lt_del    TYPE TABLE OF bapimeposchedule,
         lt_delx   TYPE TABLE OF bapimeposchedulx,
         ls_item   TYPE bapimepoitem,
         ls_itemx  TYPE bapimepoitemx,
         ls_del    TYPE bapimeposchedule,
         ls_delx   TYPE bapimeposchedulx,
         lt_return TYPE TABLE OF bapiret2,
         ls_return TYPE bapiret2.

* Added custom fields in Bapi Extention
  DATAbapi_te_po    TYPE  bapi_te_mepoheader,  "extension tables
        bapi_te_pox   TYPE bapi_te_mepoheaderx,  "extension tables
        ext_container TYPE TABLE OF  bapiparex WITH HEADER LINE"extension Container

  DATAlv_po_no TYPE bapimepoheader-po_number.

  CONSTANTSlc_e TYPE char1 VALUE 'E',
             lc_s TYPE char1 VALUE 'S'.

* Display Header Details
  SORT gt_header BY ebeln.
*  SORT gt_item   BY ebeln ebelp ASCENDING.
  SORT gt_item   BY ebelp ASCENDING
*  DELETE ADJACENT DUPLICATES FROM gt_item COMPARING ebeln ebelp. 
  LOOP AT gt_header INTO gs_header.
    ls_header-doc_type      gs_header-bsart.
    ls_header-vendor        gs_header-lifnr.
    ls_header-incoterms1    gs_header-inco1.
    ls_header-incoterms2    gs_header-inco2.
    ls_header-pmnttrms      gs_header-zterm.
    ls_header-currency      gs_header-waers.   
    ls_header-purch_org     gs_header-ekorg.
    ls_header-pur_group     gs_header-ekgrp.
    ls_header-comp_code     gs_header-burks.
    ls_header-ref_1         gs_header-ihrez.

* Set Flag for Header
    ls_headerx-doc_type     abap_true.
    ls_headerx-vendor       abap_true.
    ls_headerx-incoterms1   abap_true.
    ls_headerx-incoterms2   abap_true.
    ls_headerx-pmnttrms     abap_true.
    ls_headerx-currency     abap_true.   
    ls_headerx-purch_org    abap_true.
    ls_headerx-pur_group    abap_true.
    ls_headerx-comp_code    abap_true.
    ls_headerx-ref_1        abap_true.

* preepare the extension tables
    bapi_te_po-po_number    lv_po_no.   " Key Field
    bapi_te_po-zzscnum      gs_header-zzscnum.
    bapi_te_po-zzprgm_code  gs_header-zzprgm_code.
    bapi_te_po-zzliqtxt     gs_header-zzliqtxt.
    bapi_te_po-zldreason    gs_header-zldreason.

* Mark for fields updation
    bapi_te_pox-po_number   lv_po_no.   " Key Field
    bapi_te_pox-zzscnum     abap_true.
    bapi_te_pox-zzprgm_code abap_true.
    bapi_te_pox-zzliqtxt    abap_true.
    bapi_te_pox-zldreason   abap_true.

* Prepare the extension Container
    ext_container-structure 'BAPI_TE_MEPOHEADER'.
    ext_container-valuepart1 bapi_te_po.
    APPEND ext_container.
    CLEAR  ext_container.

* prepare the extension container
    ext_container-structure 'BAPI_TE_MEPOHEADERX'.
    ext_container-valuepart1 bapi_te_pox.
    APPEND ext_container.

    LOOP AT gt_item INTO gs_item WHERE sno gs_header-sno.

      lv_ebelp lv_ebelp + 10.
      ls_item-preq_no     gs_item-ebeln.
      ls_item-po_item     lv_ebelp.
      ls_item-preq_item   gs_item-bnfpo.
      gs_item-matnr |{ gs_item-matnr ALPHA OUT }|.

      DATA(lenstrlengs_item-matnr ).
      IF len LT '18'.
        ls_item-material    gs_item-matnr.
        ls_item-material |{ ls_item-material ALPHA IN }| .
        ls_item-material_long ls_item-material .
      ELSE.
        ls_item-material_long gs_item-matnr.             
      ENDIF.

      ls_item-quantity    gs_item-menge.
      ls_item-net_price   gs_item-netpr.
      ls_item-price_unit  gs_item-bprme.
      ls_item-po_unit     gs_item-meins.
      ls_item-tax_code    gs_item-mwskz.
      ls_item-val_type    gs_item-bwtar.
      ls_item-plant       gs_item-werks.
      ls_item-stge_loc    gs_item-lgort.        
      ls_item-free_item   gs_item-free_ind.    
      APPEND ls_item TO lt_item.


* Set Flag for Item
      ls_itemx-preq_no       abap_true.
      ls_itemx-po_item       lv_ebelp.
      ls_itemx-po_itemx      abap_true.
      ls_itemx-preq_item     abap_true.
      ls_itemx-material      abap_true.
      ls_itemx-material_long abap_true.                 
      ls_itemx-quantity      abap_true.
      ls_itemx-net_price     abap_true.
      ls_itemx-price_unit    abap_true.
      ls_itemx-po_unit       abap_true.
      ls_itemx-tax_code      abap_true.
      ls_itemx-val_type      abap_true.
      ls_itemx-plant         abap_true.
      ls_itemx-stge_loc      abap_true.    
      ls_itemx-free_item     abap_true.    
      APPEND ls_itemx TO lt_itemx.

      ls_del-po_item         lv_ebelp.
      ls_del-preq_item       gs_item-bnfpo.
      ls_del-delivery_date   gs_item-eindt.
      APPEND ls_del TO lt_del.

      ls_delx-po_item         lv_ebelp.
      ls_delx-po_itemx        abap_true.
      ls_delx-preq_item       abap_true.
      ls_delx-delivery_date   abap_true.
      APPEND ls_delx TO lt_delx.
      CLEARls_item,ls_itemx,ls_del,ls_delx.
    ENDLOOP.

    IF p_check IS INITIAL.

      CALL FUNCTION 'BAPI_PO_CREATE1'
        EXPORTING
          poheader         ls_header
          poheaderx        ls_headerx
          no_price_from_po abap_true          
        IMPORTING
          exppurchaseorder lv_po_no
        TABLES
          return           lt_return
          extensionin      ext_container
          poitem           lt_item
          poitemx          lt_itemx
          poschedule       lt_del
          poschedulex      lt_delx.

    ELSEIF p_check IS NOT INITIAL.

      CALL FUNCTION 'BAPI_PO_CREATE1'
        EXPORTING
          poheader         ls_header
          poheaderx        ls_headerx
*         memory_uncomplete = 'X'
          memory_complete  abap_true "'X'
          no_price_from_po abap_true         
        IMPORTING
          exppurchaseorder lv_po_no
        TABLES
          return           lt_return
          extensionin      ext_container
          poitem           lt_item
          poitemx          lt_itemx
          poschedule       lt_del
          poschedulex      lt_delx.

    ENDIF.


    READ TABLE lt_return INTO ls_return WITH KEY type lc_e.
    IF sy-subrc 0.
      LOOP AT lt_return INTO ls_return.
        gs_alv-ebeln  =  lv_po_no.
        gs_alv-type   ls_return-type.
        gs_alv-message ls_return-message.
        APPEND gs_alv TO gt_alv.
        CLEAR gs_alv.
      ENDLOOP.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ELSE.
      IF p_check IS INITIAL.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait abap_true.

        gs_alv-ebeln  lv_po_no.
        gs_alv-type   lc_s.
        gs_alv-message TEXT-002.
        APPEND gs_alv TO gt_alv.
        CLEAR gs_alv.
      ELSEIF p_check IS NOT INITIAL.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait abap_true.
       dataPO_no type string.

         PO_NO |'PO document on Hold' { lv_po_no }|.

        gs_alv-ebeln  lv_po_no.
        gs_alv-type   lc_s.
        gs_alv-message PO_NO"TEXT-005.
        APPEND gs_alv TO gt_alv.
        CLEAR gs_alv.
      ENDIF.
    ENDIF.
    CLEARls_headerls_headerxlt_item,lt_itemx,lt_del,lt_delx,lv_ebelp.
  ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Display_log
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM display_log .
  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.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname      'EBELN'.
  ls_fieldcat-tabname        'GT_ALV'.
  ls_fieldcat-seltext_m      'Po Number'.
  ls_fieldcat-hotspot        abap_true.
  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
      i_callback_user_command 'USER_CMD'
    TABLES
      t_outtab                gt_alv
    EXCEPTIONS
      program_error           1
      OTHERS                  2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.
FORM user_cmd USING r_ucomm     LIKE sy-ucomm
                               rs_selfield TYPE slis_selfield.
  SET PARAMETER ID 'BES' FIELD rs_selfield-value.
  CALL TRANSACTION 'ME23N'.
ENDFORM.

FORM generate_template .

* start Excel
  CREATE OBJECT h_excel 'EXCEL.APPLICATION'.
  SET PROPERTY OF h_excel 'Visible' 1.

* get list of workbooks, initially empty
  CALL METHOD OF
    h_excel
      'Workbooks' h_mapl.

*** Error handle File
  PERFORM err_hdl.

* add a new workbook
  CALL METHOD OF
    h_mapl
      'Add' h_map.

*** Error handle File
  PERFORM err_hdl.

  PERFORM fill_cell USING:   'Serial Number',
                             'Purchasing Document Type',
                             'Vendor Account Number',
                             'Incoterms (Part 1)',
                             'Incoterms (Part 2)',
                             'Terms of payment key',
                             'Currency key',
                             'Purchasing Organization',
                             'Purchasing Group',
                             10 'Company Code',
                             11 'SCN Number',
                             12 'Program Code in PO',
                             13 'Reference text',
                             14 'Liquid Text Indicator for PO',
                             15 'Liquid damages reason',
                             16 'PO Item Number',
                             17 'PR Number',
                             18 'PR Item Number ',
                             19 'Material Number',
                             20 'PO Quantity',
                             21 'Delivery Date',
                             22 'Net Price',
                             23 'Price Unit',
                             24 'PO UOM',
                             25 'Tax code',
                             26 'Valuation Type',
                             27 'Plant',
                             28 'Storage Location',
                             29 'Free Of Cost Indicator'.

ENDFORM.

FORM err_hdl .
  IF sy-subrc <> 0.
    CALL METHOD OF
      h_excel
      'QUIT'.
    FREE OBJECT h_excel.
    h_excel-handle -1.
    MESSAGE'Failed to generate template.' TYPE 'E'.
  ENDIF.
ENDFORM.


FORM fill_cell USING j bold val.
  CALL METHOD OF
      h_excel
      'Cells' h_zl
    EXPORTING
      #1      i
      #2      j.
  PERFORM err_hdl.
  SET PROPERTY OF h_zl 'Value' val .
  PERFORM err_hdl.
  GET PROPERTY OF h_zl 'Font' h_f.
  PERFORM err_hdl.
  SET PROPERTY OF h_f 'Bold' bold .
  PERFORM err_hdl.

ENDFORM.

Note: Custom Fields in Bapi Structure: BAPI_TE_MEPOHEADER
BAPI_TE_MEPOHEADERX





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)