Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member

Linked From Document: http://scn.sap.com/docs/DOC-41921

This first example demonstrates how to use the GOS class from within regular SAP GUI applications such as report programs.

Listing Attachments

report  zget_file_list_using_class.

data: lta_sood type standard table of sood, lwa_sood type sood.
data: str_write type string.
data: ls_lporb type sibflporb.

*Specify Business Object Type and Key (BUS1065 = Employees)
parameters: p_key type swo_typeid obligatory default '00000111',
                    p_type type swo_objtyp obligatory default 'BUS1065'.

start-of-selection.

  data: lt_bapirettab type bapirettab.

  ls_lporb-typeid = p_type.
  ls_lporb-instid = p_key.

  call method zcl_oh_my_gos_new=>gos_get_file_list
    exporting
      is_lporb      = ls_lporb
    importing
      t_attachments = lta_sood
      rt_messages   = lt_bapirettab.

  if lt_bapirettab[] is initial.
    data dec_kb type p.

    loop at lta_sood into lwa_sood.

      dec_kb = lwa_sood-objlen / 1024.
      if dec_kb < 1.
        dec_kb = 1.
      endif.
      write: / lwa_sood-objdes, dec_kb, 'KB', ' ', lwa_sood-acnam.
    endloop.
  endif.

Uploading Attachments

report  zfile_upload_using_class.

*Specify Business Object Type and Key (BUS1065 = Employees))
parameters: p_key type swo_typeid obligatory default '00000111',
            p_type type swo_objtyp obligatory default 'BUS1065',
            p_file type rlgrap-filename obligatory.

at selection-screen on value-request for p_file.
  call function 'F4_FILENAME'
    exporting
      program_name  = syst-cprog
      dynpro_number = syst-dynnr
      field_name    = 'P_FILE'
    importing
      file_name     = p_file.

start-of-selection.

  data: g_filename type string.
  data: g_attsize type wsrm_error-wsrm_direction.
  data: it_content like standard table of soli.
  data: ta_srgbtbrel type standard table of srgbtbrel, wa_srgbtbrel type srgbtbrel.
  data: lta_sood type standard table of sood, lwa_sood type sood.
  data: dec_kb type p.
  data: ls_lporb type sibflporb.
  data: lv_objtyp type so_obj_tp.
  data: lt_bapirettab type bapirettab.

  lv_objtyp = 'EXT'.
  ls_lporb-instid = p_key.
  ls_lporb-typeid = p_type.

  move  p_file to g_filename.

  call function 'GUI_UPLOAD'
    exporting
      filename   = g_filename
      filetype   = 'BIN'
    importing
      filelength = g_attsize
    tables
      data_tab   = it_content.

  if sy-subrc eq 0.
    call method zcl_oh_my_gos_new=>gos_attach_file_solitab
      exporting
        iv_name            = g_filename
        iv_content_solitab = it_content
        is_lporb           = ls_lporb
        iv_objtp           = lv_objtyp
        iv_filelength      = g_attsize
      receiving
        rt_messages        = lt_bapirettab.
  endif.

  call method zcl_oh_my_gos_new=>gos_get_file_list
    exporting
      is_lporb      = ls_lporb
    importing
      t_attachments = lta_sood
      rt_messages   = lt_bapirettab.

  if lt_bapirettab[] is initial.
    write: /.
    loop at lta_sood into lwa_sood.
      dec_kb = lwa_sood-objlen / 1024.
      if dec_kb < 1.
        dec_kb = 1.
      endif.

      write: / lwa_sood-objdes, dec_kb, 'KB', ' ', lwa_sood-acnam.
    endloop.
  endif.

Downloading Attachments

report  zfile_download_using_class.

data: ta_srgbtbrel type standard table of srgbtbrel, wa_srgbtbrel type srgbtbrel.
data: lta_sood type standard table of sood, lwa_sood type sood.
data: dec_kb type p.
data: ls_lporb type sibflporb.
data: lt_bapirettab type bapirettab.

*Specify Business Object Type and Key (BUS1065 = Employees)
parameters: p_key type swo_typeid obligatory default '00000111',
            p_type type swo_objtyp obligatory default 'BUS1065'.

start-of-selection.

  ls_lporb-typeid = p_type.
  ls_lporb-instid = p_key.

  call method zcl_oh_my_gos_new=>gos_get_file_list
    exporting
      is_lporb      = ls_lporb
    importing
      t_attachments = lta_sood
      rt_messages   = lt_bapirettab.

  if lt_bapirettab[] is initial.
    loop at lta_sood into lwa_sood.
      call method zcl_oh_my_gos_new=>gos_download_file_to_gui
        exporting
          file_path  = 'C:\TEMP\TTT'
          attachment = lwa_sood
        importing
          rt_messages = lt_bapirettab.
      if lt_bapirettab[] is initial.
        dec_kb = lwa_sood-objlen / 1024.
        if dec_kb < 1.
          dec_kb = 1.
        endif.

        write: / lwa_sood-objdes, dec_kb, 'KB', ' ', lwa_sood-acnam.
      endif.
    endloop.
  endif.

Emailing Attachments

report  zfile_email_using_class.

data: ta_srgbtbrel type standard table of srgbtbrel, wa_srgbtbrel type srgbtbrel.
data: lta_sood type standard table of sood, lwa_sood type sood.
data: t_receivers type somlreci1 occurs 0 with header line.

*Specify Business Object Type and Key (BUS1065 = Employees)
parameters: p_key type swo_typeid obligatory default '00000111',
            p_type type swo_objtyp obligatory default 'BUS1065',
            p_recevr type so_recname obligatory default 'elvis@presley.com'.

start-of-selection.

  data: t_st_return type zvnt_st_return.
  data: ls_lporb type sibflporb.
  data: lt_bapirettab type bapirettab.

  ls_lporb-typeid = p_type.
  ls_lporb-instid = p_key.

  call method zcl_oh_my_gos_new=>gos_get_file_list
    exporting
      is_lporb      = ls_lporb
    importing
      t_attachments = lta_sood
      rt_messages   = lt_bapirettab.

  if lt_bapirettab[] is initial.
    data dec_kb type p.

    loop at lta_sood into lwa_sood.
      dec_kb = lwa_sood-objlen / 1024.
      if dec_kb < 1.
        dec_kb = 1.
      endif.
      write: / lwa_sood-objdes, dec_kb, 'KB', ' ', lwa_sood-acnam.

      clear t_receivers.
      t_receivers-receiver = p_recevr.
      t_receivers-rec_type = 'U'.
      append t_receivers.

      call method zcl_oh_my_gos_new=>gos_email_attached_file
        exporting
          folder_region = 'B'
          doctp         = lwa_sood-objtp
          docyr         = lwa_sood-objyr
          docno         = lwa_sood-objno
          t_receivers   = t_receivers[]
        importing
          rt_messages   = lt_bapirettab.
      if lt_bapirettab[] is initial.
        write: '(Attachment Has Been Sent)'.
      endif.
    endloop.
  endif.

7 Comments