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

Re: Problem in me 01

$
0
0

Hi Tarak,  

 

I am pasting my code here. Its in OOP,

 

Please help me

 

 

TYPE-POOLS: ztgrp, truxs.

*Variables
DATA: gv_err TYPEc.
*Workarea
DATA: gs_data TYPE ztgrp_sldata.
*Internal tables
DATA: gt_data TYPESTANDARDTABLEOF ztgrp_sldata,
      gt_bdcmsg TYPETABLEOF bdcmsgcoll.
*Object
DATA: obj_sl TYPEREFTO zcl_sl.

*Include Selection screen
INCLUDE zselscreen.

*Start-of-Selection
START-OF-SELECTION.

* Initialize the variables, work area and internal tables
  CLEAR gv_err.
  REFRESH gt_data[].

  IF p_app EQ'X'.
*   Check the input paramters
    PERFORM check_par_app.
    CHECK gv_err ISINITIAL.
*   Upload the comma separated file from Application server
    PERFORM upload_app.
  ELSE.
*   Check the input paramters
    PERFORM check_par_pre.
    CHECK gv_err ISINITIAL.
*   Upload the comma separated file/Excel file from Presentation server
    PERFORM upload_pre.
  ENDIF.
*&---------------------------------------------------------------------*
*&      Form  UPLOAD_APP
*&---------------------------------------------------------------------*
*       Upload the comma separated file from Application server
*----------------------------------------------------------------------*
FORM upload_app .
*Read the file from Application Server
  PERFORM file_read.
* Check for error
  CHECK gv_err ISINITIAL.
  IF gt_data ISINITIAL.
    MESSAGE i002.
    gv_err = 'X'.
    EXIT.
  ENDIF.
* Create data object
  CREATE OBJECT obj_sl.
* Create vendor using BDC and call transaction XK01
  PERFORM create_source_list.
* Write log files
  CALLMETHOD obj_sl->write_log_files
    EXPORTING
      i_sfile = p_asfile
      i_efile = p_aefile.
* Write screen output
  CALLMETHOD obj_sl->write_screen_out.
* Free the object
  FREE obj_sl.
ENDFORM.                    " UPLOAD_APP
*&---------------------------------------------------------------------*
*&      Form  CREATE_SOURCE_LIST
*&---------------------------------------------------------------------*
*       create source list
*----------------------------------------------------------------------*
FORM create_source_list .
*Local data
  DATA: lv_fval     TYPE bdcdata-fval,
        lv_fnam     TYPE bdcdata-fnam,
        lv_exists   TYPEc,
        lv_cnt      TYPEi,
        lv_row(2)   TYPEc.

*Refresh the table
  REFRESH obj_sl->gt_bdcdata[].

  LOOPAT gt_data INTO gs_data.
*   Check whether the record is already created?
    CLEAR lv_exists.
    CALLMETHOD:obj_sl->check_exist
       EXPORTING i_data = gs_data
       IMPORTING e_exists = lv_exists.
    IF lv_exists EQ'X'.
      CONTINUE.
    ENDIF.



    CALLMETHOD: obj_sl->bdc_dynpro
                           EXPORTING i_program  = 'SAPLMEOR'
                                     i_dynpro   = '0200'
                                     i_dynbegin = 'X'.
    CALLMETHOD: obj_sl->bdc_data
                           EXPORTING i_fnam = 'BDC_CURSOR'
                                     i_fval = 'EORD-WERKS',
                 obj_sl->bdc_data
                           EXPORTING i_fnam = 'BDC_OKCODE'
                                     i_fval = '/00'.
    CLEAR lv_fval.
    lv_fval = gs_data-matn.
    CALLMETHOD: obj_sl->bdc_data
                          EXPORTING i_fnam = 'EORD-MATNR'
                                    i_fval = lv_fval.
    CLEAR lv_fval.
    lv_fval = gs_data-plnt.
    CALLMETHOD: obj_sl->bdc_data
                          EXPORTING i_fnam = 'EORD-WERKS'
                                    i_fval = lv_fval.



    CALLMETHOD: obj_sl->bdc_dynpro
                           EXPORTING i_program  = 'SAPLMEOR'
                                     i_dynpro   = '0205'
                                     i_dynbegin = 'X'.


*   Now get the line no where the record needs to be inserted
    CLEAR lv_cnt.
    CALLMETHOD obj_sl->get_count
      EXPORTING
        i_data = gs_data
      IMPORTING
        e_cnt  = lv_cnt.

    lv_cnt = lv_cnt + 1.
    CLEAR lv_fval.
    lv_row = lv_cnt.




*    if lv_row le 20.
    CONCATENATE'EORD-EKORG(' lv_row ')'INTO lv_fval.
    CALLMETHOD: obj_sl->bdc_data
                           EXPORTING i_fnam = 'BDC_CURSOR'
                                     i_fval = lv_fval,



                   obj_sl->bdc_data
                           EXPORTING i_fnam = 'BDC_OKCODE'
                                     i_fval = '=BU'.


    CLEAR lv_fval.
    lv_fval = gs_data-valf.
    CLEAR lv_fnam.
    CONCATENATE'EORD-VDATU(' lv_row ')'INTO lv_fnam.
    CALLMETHOD: obj_sl->bdc_data
                          EXPORTING i_fnam = lv_fnam
                                    i_fval = lv_fval.
    CLEAR lv_fval.
    lv_fval = gs_data-valt.
    CLEAR lv_fnam.
    CONCATENATE'EORD-BDATU(' lv_row ')'INTO lv_fnam.
    CALLMETHOD: obj_sl->bdc_data
                          EXPORTING i_fnam = lv_fnam
                                    i_fval = lv_fval.
    CLEAR lv_fval.
    lv_fval = gs_data-vend.
    CLEAR lv_fnam.
    CONCATENATE'EORD-LIFNR(' lv_row ')'INTO lv_fnam.
    CALLMETHOD: obj_sl->bdc_data
                          EXPORTING i_fnam = lv_fnam
                                    i_fval = lv_fval.

    CLEAR lv_fval.
    lv_fval = gs_data-porg.
    CLEAR lv_fnam.
    CONCATENATE'EORD-EKORG(' lv_row ')'INTO lv_fnam.
    CALLMETHOD: obj_sl->bdc_data
                          EXPORTING i_fnam = lv_fnam
                                    i_fval = lv_fval.




*   Refresh the error message table
    REFRESH gt_bdcmsg[].
*   Call transaction ME01
    CALLMETHOD obj_sl->create_slist
      CHANGING
        gt_bdcmsg_e = gt_bdcmsg[].
*   Refresh the table
    REFRESH obj_sl->gt_bdcdata[].
*   Log error and success data
    CALLMETHOD obj_sl->insert_final_tabs
      EXPORTING
        i_data      = gs_data
        gt_bdcmsg_i = gt_bdcmsg[].

  ENDLOOP.
ENDFORM.                    " CREATE_SOURCE_LIST
*&---------------------------------------------------------------------*
*&      Form  FILE_READ
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM file_read .
* Local data dec
  CONSTANTS: gc_sep TYPEcVALUE','.
  DATA: gv_str(1000) TYPEc.

* Using Open dataset
  OPENDATASET p_afile FORINPUTINTEXTMODEENCODINGDEFAULT.
  IF sy-subrc NE0.
*   Set error flag
    gv_err = 'X'.
    MESSAGE i000.
    EXIT.
  ENDIF.
* Read the data into string
  DO.
    CLEAR gv_str.
    READDATASET p_afile INTO gv_str.
    IF sy-subrc NE0.
      EXIT.
    ENDIF.
    IF sy-indexEQ1.
*     Dont read file header
      CONTINUE.
    ENDIF.
*   Split the read record on ',' and append to internal table
    SPLIT gv_str AT gc_sep
          INTO gs_data-matn
               gs_data-plnt
               gs_data-valf
               gs_data-valt
               gs_data-vend
               gs_data-porg.
    IF gs_data-matn ISINITIALAND gs_data-plnt ISINITIAL.
      CONTINUE.
    ENDIF.
    APPEND gs_data TO gt_data[].
  ENDDO.
* Close file after read
  CLOSEDATASET p_afile.
ENDFORM.                    " FILE_READ
*&---------------------------------------------------------------------*
*&      Form  UPLOAD_PRE
*&---------------------------------------------------------------------*
*       Upload the comma separated file/Excel file from Presentation
*       server
*----------------------------------------------------------------------*
FORM upload_pre .
  IF p_csv EQ'X'.
    CLEAR gv_err.
*   Upload csv file
    PERFORM upload_csv.
*   Check for error
    CHECK gv_err ISINITIAL.
*   Create data object
    CREATE OBJECT obj_sl.
*   Create source list using BDC and call transaction ME01
    PERFORM create_source_list.
    CALLMETHOD obj_sl->write_log_pres
      EXPORTING
        i_sfile = p_psfile
        i_efile = p_pefile
        i_type  = 'C'.
*   Write screen output
    CALLMETHOD obj_sl->write_screen_out.
*   Free Object
    FREE obj_sl.
  ELSE.
    CLEAR gv_err.
*   Upload xls file
    PERFORM upload_xls.
*   Check for error
    CHECK gv_err ISINITIAL.
*   Create data object
    CREATE OBJECT obj_sl.
*   Create source list using BDC and call transaction ME01
    PERFORM create_source_list.
    callmethod obj_sl->write_log_pres
      exporting
        i_sfile = p_psfile
        i_efile = p_pefile
        i_type  = 'X'.
*   Write screen output
    CALLMETHOD obj_sl->write_screen_out.
*   Free Object
    FREE obj_sl.
  ENDIF.
ENDFORM.                    " UPLOAD_PRE
*&---------------------------------------------------------------------*
*&      Form  UPLOAD_CSV
*&---------------------------------------------------------------------*
*       Upload CSV
*----------------------------------------------------------------------*
FORM upload_csv .
  DATA: lv_fname TYPE string,
          lt_csv TYPE truxs_t_text_data,
          ls_csv(4096) TYPEc.

  lv_fname = p_pfile.
  CALLFUNCTION'GUI_UPLOAD'
    EXPORTING
      filename                = lv_fname
      filetype                = 'DAT'
    TABLES
      data_tab                = lt_csv
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      no_batch                = 3
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      bad_data_format         = 8
      header_not_allowed      = 9
      separator_not_allowed   = 10
      header_too_long         = 11
      unknown_dp_error        = 12
      access_denied           = 13
      dp_out_of_memory        = 14
      disk_full               = 15
      dp_timeout              = 16
      OTHERS                  = 17.
  IF sy-subrc <> 0.
    MESSAGE i000 WITH p_pfile.
    gv_err = 'X'.
    EXIT.
  ENDIF.

  LOOPAT lt_csv INTO ls_csv.
    IF sy-tabix EQ1.
*     If Header?
      CONTINUE.
    ENDIF.
*   Split the read record on ',' and append to internal table
    SPLIT ls_csv AT','
          INTO gs_data-matn
               gs_data-plnt
               gs_data-valf
               gs_data-valt
               gs_data-vend
               gs_data-porg.
    IF gs_data-matn ISINITIALAND gs_data-plnt ISINITIAL.
      CONTINUE.
    ENDIF.
    APPEND gs_data TO gt_data[].
  ENDLOOP.

ENDFORM.                    " UPLOAD_CSV
*&---------------------------------------------------------------------*
*&      Form  UPLOAD_XLS
*&---------------------------------------------------------------------*
*       Upload XLS
*----------------------------------------------------------------------*
FORM upload_xls .
  DATA: lt_exl TYPE truxs_t_text_data.
  CALLFUNCTION'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
      i_line_header        = 'X'
      i_tab_raw_data       = lt_exl
      i_filename           = p_pfile
    TABLES
      i_tab_converted_data = gt_data[]
    EXCEPTIONS
      conversion_failed    = 1
      OTHERS               = 2.

  IF sy-subrc <> 0.
    MESSAGE i000 WITH p_pfile.
    gv_err = 'X'.
    EXIT.
  ENDIF.
ENDFORM.

 

 

Regards

Veda

 


Viewing all articles
Browse latest Browse all 8667

Trending Articles



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