Description Sending GOS attachements to an email address for the given business object and ID. This program is tested in the version 4.6C.
REPORT z_send_gos_attachments.
* Selection-screen.
SELECTION-SCREEN BEGIN OF LINE.
* Email address
SELECTION-SCREEN COMMENT 2(20) v_text1 FOR FIELD p_email.
PARAMETERS: p_email(50) OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
* Business object type
SELECTION-SCREEN COMMENT 2(20) v_text2 FOR FIELD p_bo.
PARAMETERS: p_bo TYPE borident-objtype DEFAULT 'BUS2102'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
* Business object ID
SELECTION-SCREEN COMMENT 2(20) v_text3 FOR FIELD p_boid.
PARAMETERS: p_boid TYPE borident-objkey DEFAULT '0060000717'.
SELECTION-SCREEN END OF LINE.
* Internal table declarations.
DATA: lt_links TYPE TABLE OF relgraphlk,
lv_document_id TYPE sofolenti1-doc_id,
lt_plist LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE,
lt_soli LIKE soli OCCURS 100 WITH HEADER LINE,
lt_rec_tab LIKE somlreci1 OCCURS 1 WITH HEADER LINE,
lt_roles TYPE STANDARD TABLE OF relroles,
lt_appllinks TYPE STANDARD TABLE OF srl_aprel,
lt_object_content_l LIKE solisti1 OCCURS 0 WITH HEADER LINE,
lt_object_content LIKE solisti1 OCCURS 0 WITH HEADER LINE,
lt_doc_dat LIKE sofolenti1.
* Variables.
DATA: lv_objtp LIKE soodk-objtp,
lv_lang LIKE tst01-dlang,
lv_line_size TYPE i VALUE 255,
lv_name LIKE soextreci1-receiver.
* Work areas
DATA: lwa_doc_data LIKE sodocchgi1,
lwa_document_data LIKE sofolenti1,
lwa_links LIKE LINE OF lt_links,
lwa_object TYPE borident.
* Initialization.
INITIALIZATION.
* Set the texts.
v_text1 = 'Email addr.'.
v_text2 = 'Business obj type'.
v_text3 = 'Business obj ID'.
* Start-of-selection.
START-OF-SELECTION.
* Assign the values
lwa_object-objkey = p_boid.
lwa_object-objtype = p_bo.
* Get the attachment list for the input business object type
* and name.
CALL FUNCTION 'SREL_GET_NEXT_RELATIONS'
EXPORTING
object = lwa_object
relationtype = 'ATTA'
TABLES
links = lt_links
roles = lt_roles
appllinks = lt_appllinks
EXCEPTIONS
internal_error = 1
no_logsys = 2
OTHERS = 3.
* Check the return code.
IF sy-subrc <> 0.
MESSAGE s208(00) WITH 'Error in FM SREL_GET_NEXT_RELATIONS'.
ENDIF.
* Process the attachment list
LOOP AT lt_links INTO lwa_links.
MOVE lwa_links-objkey_b TO lv_document_id.
* Read the data
CALL FUNCTION 'SO_DOCUMENT_READ_API1'
EXPORTING
document_id = lv_document_id
IMPORTING
document_data = lwa_document_data
TABLES
object_content = lt_object_content_l
EXCEPTIONS
document_id_not_exist = 1
operation_no_authorization = 2
x_error = 3
OTHERS = 4.
* Prepare the data.
lt_plist-transf_bin = 'X'.
lt_plist-head_start = 0.
lt_plist-head_num = 0.
lt_plist-body_start = 0.
lt_plist-body_num = 0.
lt_plist-doc_type = 'RAW'.
lt_plist-obj_descr = lwa_document_data-obj_descr.
APPEND lt_plist.
lt_plist-transf_bin = 'X'.
lt_plist-head_start = 0.
lt_plist-head_num = 0.
IF sy-tabix = 1.
lt_plist-body_start = 1.
ELSE.
DESCRIBE TABLE lt_object_content.
lt_plist-body_start = sy-tfill + 1.
ENDIF.
DESCRIBE TABLE lt_object_content_l LINES lt_plist-body_num.
lt_plist-doc_type = lwa_document_data-obj_type.
* Get the size.
READ TABLE lt_object_content_l INDEX lt_plist-body_num.
lt_plist-doc_size = ( lt_plist-body_num - 1 ) * lv_line_size
+ STRLEN( lt_object_content_l ).
APPEND lt_plist.
* Move the values to the main internal table.
APPEND LINES OF lt_object_content_l TO lt_object_content.
ENDLOOP.
* Move the receiver address.
MOVE: p_email TO lt_rec_tab-receiver,
'U' TO lt_rec_tab-rec_type.
APPEND lt_rec_tab.
* Set the language.
lwa_doc_data-obj_langu = sy-langu.
* Email subject.
CONCATENATE 'GOS '
p_boid
'attachments'
INTO lwa_doc_data-obj_descr
SEPARATED BY space.
* Set the user name.
lv_name = sy-uname.
* Send the email.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = lwa_doc_data
sender_address = lv_name
sender_address_type = 'B'
TABLES
packing_list = lt_plist
contents_bin = lt_object_content
receivers = lt_rec_tab
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE e208(00) WITH 'Error in sending email'.
ENDIF.
COMMIT WORK.
* Send the email immediately.
SUBMIT rsconn01
WITH mode = 'INT'
AND RETURN.
* Success message.
MESSAGE s208(00) WITH 'Email sent'.
-->
Showing posts with label ABAP - Sending GOS attachments to an email address. Show all posts
Showing posts with label ABAP - Sending GOS attachments to an email address. Show all posts
Thursday, November 22, 2007
ABAP - Sending GOS attachments to an email address
Subscribe to:
Posts (Atom)
Blog Archive
-
▼
2009
(81)
-
▼
June
(81)
- Lists in Unicode Systems
- The File Interface in Unicode Programs
- Character String and Byte String Processing in Uni...
- Structure Enhancements and Unicode Programs
- Structure Typing in Unicode Programs
- Conversion of Structures in Unicode Programs
- Access to memory sequences in Unicode programs
- Offset and Length Specifications in Unicode Programs
- Alignment in Unicode Systems
- Operand Types in Unicode Programs
- Names in Unicode Programs
- Comments and Literals in Non-Unicode Programs
- Differences between Unicode and Non-Unicode Programs
- Unicode - Overview
- Statements in Class and Interface Pools
- Statements for Defining Classes and Interfaces
- ABAP Objects - Keywords
- Inheritance Events
- Inheritance and Events
- Inheritance and Instantiation
- Inheritance and Constructors
- Inheritance and Static Components
- Inheritance and the Component Namespace
- Inheritance and Visibility
- Inheritance and Interfaces
- Inheritance and Polymorphism
- Abstract and Final Methods and Classes
- Redefining Methods
- Inheritance
- Definition of Classes and Interfaces
- Object Orientation
- CLASS-METHODS - FOR EVENT
- CLASS-METHODS - class_constructor
- CLASS-METHODS - RETURNING
- METHODS - IMPORTING, EXPORTING, CHANGING, RAISING
- CLASS-METHODS - IMPORTING, EXPORTING, CHANGING, RA...
- CLASS-METHODS
- Kernel Methods
- The C Destructor in Methods
- Interface Parameters in Methods
- Data Types and Constants
- Events In Components of classes
- Constructors In Components of Classes
- Methods in Components of classes
- Attributes
- Visibility Sections in Classes
- Components of Classes
- Classes
- ABAP Objects
- ABAP Programming Language - Overview
- Example of a Logical Database
- Logical Databases
- Position of the Basis System Within the R/3 System
- Running ABAP Programs
- Calling ABAP Dialog Modules
- Data Types in the ABAP Dictionary
- Pushbuttons on the Screen
- Processing Input/Output Fields
- Processing Screen
- Screens
- ABAP User Dialogs
- Reduce the Database Load
- Minimize the Search Overhead
- Minimize the Number of Data Transfers
- Minimize the Amount of Data Transferred
- Keep the Result Set Small
- Performance Notes
- Committing Database Changes
- Inserting or Changing Lines
- Deleting Lines
- Changing Line
- Inserting Lines into Tables
- Changing Data
- Reading Data
- Open SQL
- Checking User Authorizations
- Accessing the Database in the R/3 System
- ABAP Database Access
- ABAP HR Programming
- ABAP Tutorials for Beginners
- Download Abap certification material
-
▼
June
(81)
