Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

CONVERT_OTF_2_PDF - error OTF end command // missing in OTF data

Former Member
0 Kudos

Hi,

I am trying to convert an internal table to a PDF format. However it appears that what I am passing to the OTF TABLES parameter is incorrect. I have tried to enter the following into the OTF structure:

TDPRINTCOM: //

TDPRINTPAR: test

But the message "OTF end command // missing in OTF data" keeps appearing. Any folks know what the problem might be?

Regards, Warren

2 REPLIES 2

Former Member
0 Kudos

Hi,

this is the code i got executed for convertion to PDF.I think this help full for you.

bye.

REPORT ZMY_SF61.

DATA: FM_NAME TYPE RS38L_FNAM.

DATA: WA_CTRLOP TYPE SSFCTRLOP, "Smartform control structure

WA_OUTOPT TYPE SSFCOMPOP, "Smart Composer Options

T_OTFDATA TYPE SSFCRESCL, "Return value at end of form printing

T_PDF_TAB LIKE TLINE OCCURS 0 WITH HEADER LINE. "SAP Acripts: Text lines

DATA: T_OTF TYPE ITCOO OCCURS 0 WITH HEADER LINE, "OTF Structure

W_FILESIZE TYPE I,

W_BIN_FILESIZE TYPE I.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = 'ZMY_FORM6'

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

FM_NAME = FM_NAME

  • EXCEPTIONS

  • NO_FORM = 1

  • NO_FUNCTION_MODULE = 2

  • OTHERS = 3

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

WA_CTRLOP-GETOTF = 'X'. "Return of OTF Table.No printing,display,or faxing

WA_CTRLOP-NO_DIALOG = 'X'. "SAP Smartform: General indicator

WA_OUTOPT-TDNOPREV = 'X'. "No print preview

CALL FUNCTION FM_NAME " '/1BCDWB/SF00000699'

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

CONTROL_PARAMETERS = WA_CTRLOP

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

OUTPUT_OPTIONS = WA_OUTOPT

USER_SETTINGS = 'X'

IMPORTING

  • DOCUMENT_OUTPUT_INFO =

JOB_OUTPUT_INFO = T_OTFDATA

  • JOB_OUTPUT_OPTIONS =

EXCEPTIONS

FORMATTING_ERROR = 1

INTERNAL_ERROR = 2

SEND_ERROR = 3

USER_CANCELED = 4

OTHERS = 5

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

T_OTF[] = T_OTFDATA-OTFDATA[].

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

FORMAT = 'PDF'

MAX_LINEWIDTH = 132

  • ARCHIVE_INDEX = ' '

  • COPYNUMBER = 0

  • ASCII_BIDI_VIS2LOG = ' '

  • PDF_DELETE_OTFTAB = ' '

IMPORTING

BIN_FILESIZE = W_BIN_FILESIZE

  • BIN_FILE =

TABLES

OTF = T_OTF

LINES = T_PDF_TAB

EXCEPTIONS

ERR_MAX_LINEWIDTH = 1

ERR_FORMAT = 2

ERR_CONV_NOT_POSSIBLE = 3

ERR_BAD_OTF = 4

OTHERS = 5

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

BIN_FILESIZE = W_BIN_FILESIZE

  • CODEPAGE = ' '

FILENAME = 'D:\TEST11.PDF'

FILETYPE = 'BIN'

  • MODE = ' '

  • WK1_N_FORMAT = ' '

  • WK1_N_SIZE = ' '

  • WK1_T_FORMAT = ' '

  • WK1_T_SIZE = ' '

  • COL_SELECT = ' '

  • COL_SELECTMASK = ' '

  • NO_AUTH_CHECK = ' '

IMPORTING

FILELENGTH = W_FILESIZE

TABLES

DATA_TAB = T_PDF_TAB

  • FIELDNAMES =

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_WRITE_ERROR = 2

INVALID_FILESIZE = 3

INVALID_TYPE = 4

NO_BATCH = 5

UNKNOWN_ERROR = 6

INVALID_TABLE_WIDTH = 7

GUI_REFUSE_FILETRANSFER = 8

CUSTOMER_ERROR = 9

NO_AUTHORITY = 10

OTHERS = 11

.

IF SY-SUBRC = 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

WRITE:/ 'THE PDF FILE IS SUCCESSFULLY CONVERTED'.

Former Member
0 Kudos

Hi,

please check this program

*&---------------------------------------------------------------------*
*& Report  YMSL_ORDER_ACCEPTANCE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
 
REPORT  YMSL_ORDER_ACCEPTANCE.
 
*********Variable Declarations *****************************
DATA: GV_FORM_NAME TYPE RS38L_FNAM, " Used to store the function module generated by Smartform
      GV_BIN_FILESIZE TYPE I, " Store the file size
      GV_POS TYPE I,
      GV_LEN TYPE I,
      GV_TAB_LINES TYPE I,
      gv_desc_lines type i.
 
********Constants *******************************************
DATA : GC_TEXT(11) TYPE C VALUE 'Form Output',
       GC_TST(3) TYPE C VALUE 'TST',
       GC_TESTING(20) TYPE C VALUE 'Order Acceptance'.
*********Work Area Declarations *****************************
DATA: GS_DOCDATA TYPE SODOCCHGI1, " Data of an object which can be changed
      GS_CTRLOP TYPE SSFCTRLOP, " Smart Forms: Control structure
      GS_OUTOPT TYPE SSFCOMPOP, " SAP Smart Forms: Smart Composer (transfer) options
      GS_OTFDATA TYPE SSFCRESCL, " Smart Forms: Return value at end of form printing
      GS_RECLIST TYPE SOMLRECI1, " SAPoffice: Structure of the API Recipient List
      GS_PDF_TAB TYPE TLINE, " Workarea for SAP Script Text Lines
      GS_OBJBIN TYPE SOLISTI1, " SAPoffice: Single List with Column Length 255
      GS_OBJPACK TYPE SOPCKLSTI1. " SAPoffice: Description of Imported Object Components
DATA : w_doc_chng typE sodocchgi1.
*********Internal tables Declarations *****************************
DATA : I_OBJTXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE.
DATA: GT_RECLIST TYPE TABLE OF SOMLRECI1, " SAPoffice: Structure of the API Recipient List
      GT_PDF_TAB TYPE TABLE OF TLINE, " SAPscript: Text Lines
      GT_OTF TYPE TABLE OF ITCOO, " OTF Structure
      GT_OBJBIN TYPE TABLE OF SOLISTI1, " SAPoffice: Single List with Column Length 255
      GT_OBJPACK TYPE TABLE OF SOPCKLSTI1. " SAPoffice: Description of Imported Object Components
 
 
******
DATA : BEGIN OF IT_ADR6 OCCURS 0,
          SMTP_ADDR TYPE ADR6-SMTP_ADDR,
        END OF IT_ADR6.
DATA : W_FILE_NAME TYPE STRING,
      W_FILE_PATH TYPE STRING,
      W_FULL_PATH TYPE STRING.
 
 
 
CLEAR : GV_FORM_NAME,
        GS_CTRLOP,
        GS_OUTOPT,
        GS_OTFDATA,
        GV_BIN_FILESIZE,
        GV_POS,
        GV_LEN,
        GV_TAB_LINES.
 
SELECTION-SCREEN:  BEGIN OF SCREEN 1001 AS WINDOW  TITLE scr_ttl .
 
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TXT_B1 NO INTERVALS.
SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 1(15) TX_VBELN.
PARAMETER : P_VBELN TYPE VBAK-VBELN .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
 
*SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TXT_B2 .
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: R_OUT RADIOBUTTON GROUP R1 DEFAULT 'X' USER-COMMAND RAD11 .
SELECTION-SCREEN COMMENT 5(20) TXT_OUT.  "  roles by t-code
SELECTION-SCREEN END OF LINE.
 
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER R_PDF RADIOBUTTON GROUP R1 .
SELECTION-SCREEN COMMENT 5(20) TXT_PDF.
SELECTION-SCREEN END OF LINE.
 
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER R_MAIL RADIOBUTTON GROUP R1 .
SELECTION-SCREEN COMMENT 5(15) TXT_MAIL.
*SELECTION-SCREEN END OF LINE.
*SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 20(7) TXT_MAL1.
PARAMETER : P_MAIL TYPE ADR6-SMTP_ADDR MODIF ID M1.
SELECTION-SCREEN END OF LINE.
 
*SELECTION-SCREEN END OF BLOCK B2.
 
SELECTION-SCREEN: END OF SCREEN 1001 .
 
CALL SELECTION-SCREEN 1001 STARTING AT 20 5 ENDING AT 105 10.
 
*SET PF-STATUS 'STATUS'.
 
INITIALIZATION.
 
  TX_VBELN = 'Order'.
  TXT_B1 = 'Selection Criteria '.
*  TXT_B2 = 'Output Criteria '.
  scr_ttl = 'Order Acceptance'.
  TXT_OUT = 'Print Output'.
  TXT_PDF = 'Save To PDF'.
  TXT_MAIL = 'Mail the Output'.
  TXT_MAL1 = 'E-mail'.
 
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF R_MAIL  'X'.
      IF SCREEN-GROUP1 = 'M1'.
*        SCREEN-INVISIBLE =  1.
        SCREEN-INPUT = 0. " Disable for input.
        MODIFY SCREEN.
      ENDIF.
    ENDIF.
  ENDLOOP.
 
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_MAIL.
  PERFORM TABLE_HELP.
 
START-OF-SELECTION..
 
  IF P_VBELN IS NOT INITIAL.
    PERFORM GET_SF.
    IF R_PDF = 'X' .
      PERFORM CONVERT_OTF.
      PERFORM SAVE_DIALOG.
      PERFORM DOWNLOAD.
    ELSEIF R_MAIL = 'X'.
      IF P_MAIL IS NOT INITIAL.
       PERFORM CONVERT_OTF.
       PERFORM SEND_MAIL.
      ELSE.
        MESSAGE 'Please Enter Email Address' TYPE 'S'.
*         CALL TRANSACTION 'YMSL20'.
*         LEAVE LIST-PROCESSING.
      ENDIF.
    ENDIF.
  ELSE.
    MESSAGE 'Please Enter Order No' TYPE 'S'.
*      CALL TRANSACTION 'YMSL20'.
*      LEAVE LIST-PROCESSING.
 
ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&      Form  TABLE_HELP
*&---------------------------------------------------------------------*
FORM TABLE_HELP .
  IF R_MAIL = 'X'.
    SELECT SMTP_ADDR FROM ADR6 INTO TABLE IT_ADR6.
 
    SORT IT_ADR6.
    DELETE ADJACENT DUPLICATES FROM IT_ADR6 COMPARING ALL FIELDS.
 
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
*     DDIC_STRUCTURE         = ' '
        RETFIELD               = 'IT_ADR6-SMTP_ADDR'
*     PVALKEY                = ' '
       DYNPPROG               = SY-REPID
       DYNPNR                 = SY-DYNNR
       DYNPROFIELD            = 'EMAIL'
*     STEPL                  = 0
       WINDOW_TITLE           = 'SELECT MAIL ADDRESS'
*     VALUE                  = ' '
       VALUE_ORG              = 'S'
*     MULTIPLE_CHOICE        = ' '
*     DISPLAY                = ' '
*     CALLBACK_PROGRAM       = ' '
*     CALLBACK_FORM          = ' '
*     MARK_TAB               =
*   IMPORTING
*     USER_RESET             =
      TABLES
        VALUE_TAB              = IT_ADR6
*     FIELD_TAB              =
*     RETURN_TAB             =
*     DYNPFLD_MAPPING        =
*   EXCEPTIONS
*     PARAMETER_ERROR        = 1
*     NO_VALUES_FOUND        = 2
*     OTHERS                 = 3
              .
    IF SY-SUBRC  0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
 
  ENDIF.
ENDFORM.                    " TABLE_HELP
*&---------------------------------------------------------------------*
*&      Form  GET_SF
*&---------------------------------------------------------------------*
FORM GET_SF .
*• Generate Function Module name
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      FORMNAME           = 'YMSL_ORD_ACCEPT'
    IMPORTING
      FM_NAME            = GV_FORM_NAME
    EXCEPTIONS
      NO_FORM            = 1
      NO_FUNCTION_MODULE = 2
      OTHERS             = 3.
  IF SY-SUBRC   0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
*• Assigning values to Form Control Structure and Form Composer
  IF R_OUT  'X'.
    GS_CTRLOP-GETOTF = 'X'.
    GS_CTRLOP-NO_DIALOG = 'X'.
    GS_OUTOPT-TDNOPREV = 'X'.
  ENDIF.
 
  CALL FUNCTION GV_FORM_NAME
    EXPORTING
*   ARCHIVE_INDEX              =
*   ARCHIVE_INDEX_TAB          =
*   ARCHIVE_PARAMETERS         =
      CONTROL_PARAMETERS         = GS_CTRLOP
*   MAIL_APPL_OBJ              =
*   MAIL_RECIPIENT             =
*   MAIL_SENDER                =
      OUTPUT_OPTIONS             = GS_OUTOPT
      USER_SETTINGS              = 'X'
      TEMP_VBELN                 =  P_VBELN
   IMPORTING
*   DOCUMENT_OUTPUT_INFO       =
      JOB_OUTPUT_INFO            = GS_OTFDATA
*   JOB_OUTPUT_OPTIONS         =
   EXCEPTIONS
     FORMATTING_ERROR           = 1
     INTERNAL_ERROR             = 2
     SEND_ERROR                 = 3
     USER_CANCELED              = 4
     OTHERS                     = 5
            .
  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.                    " GET_SF
*&---------------------------------------------------------------------*
*&      Form  CONVERT_OTF
*&---------------------------------------------------------------------*
FORM CONVERT_OTF .
*• Assigning the OTFDATA to OTF Structure table
  CLEAR GT_OTF.
  GT_OTF[] = GS_OTFDATA-OTFDATA[].
*• Convert the OTF DATA to SAP Script Text lines
  CLEAR GT_PDF_TAB.
 
  CALL FUNCTION 'CONVERT_OTF'
   EXPORTING
     FORMAT                      = 'PDF'
     MAX_LINEWIDTH               = 132
*   ARCHIVE_INDEX               = ' '
*   COPYNUMBER                  = 0
*   ASCII_BIDI_VIS2LOG          = ' '
*   PDF_DELETE_OTFTAB           = ' '
   IMPORTING
     BIN_FILESIZE                = GV_BIN_FILESIZE
*   BIN_FILE                    =
    TABLES
      OTF                         = GT_OTF
      LINES                       = GT_PDF_TAB
   EXCEPTIONS
     ERR_MAX_LINEWIDTH           = 1
     ERR_FORMAT                  = 2
     ERR_CONV_NOT_POSSIBLE       = 3
     ERR_BAD_OTF                 = 4
     OTHERS                      = 5
            .
  IF SY-SUBRC  0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
*
*t_otf[] = t_otf_from_fm-otfdata[].
*
** Function Module CONVERT_OTF is used to convert the OTF format to PDF
*
*CALL FUNCTION 'CONVERT_OTF'
*EXPORTING
*FORMAT = 'PDF'
*MAX_LINEWIDTH = 132
** ARCHIVE_INDEX = ' '
** COPYNUMBER = 0
** ASCII_BIDI_VIS2LOG = ' '
** PDF_DELETE_OTFTAB = ' '
*IMPORTING
*BIN_FILESIZE = W_bin_filesize
** BIN_FILE =
*TABLES
*otf = T_OTF
*lines = T_pdf_tab
*EXCEPTIONS
*ERR_MAX_LINEWIDTH = 1
*ERR_FORMAT = 2
*ERR_CONV_NOT_POSSIBLE = 3
*ERR_BAD_OTF = 4
*OTHERS = 5
*.
*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.                    " CONVERT_OTF
*&---------------------------------------------------------------------*
*&      Form  SAVE_DIALOG
*&---------------------------------------------------------------------*
FORM SAVE_DIALOG .
* To display File SAVE dialog window
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
   EXPORTING
   WINDOW_TITLE = 'Download to PDF '
* DEFAULT_EXTENSION = '(*.PDF)'
   DEFAULT_FILE_NAME = 'file.pdf'
   FILE_FILTER = 'PDF Format(*.PDF)'
   INITIAL_DIRECTORY = 'C:Documents and SettingsAdministratorDesktop'
* WITH_ENCODING =
   PROMPT_ON_OVERWRITE = 'X'
  CHANGING
  FILENAME = W_FILE_NAME
  PATH = W_FILE_PATH
  FULLPATH = W_FULL_PATH
* USER_ACTION =
* FILE_ENCODING =
  EXCEPTIONS
  CNTL_ERROR = 1
  ERROR_NO_GUI = 2
  NOT_SUPPORTED_BY_GUI = 3
  OTHERS = 4
  .
  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.                    " SAVE_DIALOG
*&---------------------------------------------------------------------*
*&      Form  DOWNLOAD
*&---------------------------------------------------------------------*
FORM DOWNLOAD .
* Use the FM GUI_DOWNLOAD to download the generated PDF file onto the
* presentation server
 
  CALL FUNCTION 'GUI_DOWNLOAD'
  EXPORTING
  BIN_FILESIZE = GV_BIN_FILESIZE
  FILENAME = W_FULL_PATH
  FILETYPE = 'BIN'
* APPEND = ' '
* WRITE_FIELD_SEPARATOR = ' '
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* IMPORTING
* FILELENGTH =
  TABLES
  DATA_TAB = GT_PDF_TAB
* FIELDNAMES =
* EXCEPTIONS
* FILE_WRITE_ERROR = 1
* NO_BATCH = 2
* GUI_REFUSE_FILETRANSFER = 3
* INVALID_TYPE = 4
* NO_AUTHORITY = 5
* UNKNOWN_ERROR = 6
* HEADER_NOT_ALLOWED = 7
* SEPARATOR_NOT_ALLOWED = 8
* FILESIZE_NOT_ALLOWED = 9
* HEADER_TOO_LONG = 10
* DP_ERROR_CREATE = 11
* DP_ERROR_SEND = 12
* DP_ERROR_WRITE = 13
* UNKNOWN_DP_ERROR = 14
* ACCESS_DENIED = 15
* DP_OUT_OF_MEMORY = 16
* DISK_FULL = 17
* DP_TIMEOUT = 18
* FILE_NOT_FOUND = 19
* DATAPROVIDER_EXCEPTION = 20
* CONTROL_FLUSH_ERROR = 21
* OTHERS = 22
  .
  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.                    " DOWNLOAD
*&---------------------------------------------------------------------*
*&      Form  SEND_MAIL
*&---------------------------------------------------------------------*
 
FORM SEND_MAIL .
DATA : v_first TYPE USER_ADDR-NAME_FIRST,
      V_LAST   TYPE USER_ADDR-NAME_LAST.
DATA : detail TYPE STRING.
SELECT SINGLE NAME_FIRST NAME_LAST FROM
  USER_ADDR INTO (V_FIRST,V_LAST)
  WHERE BNAME = syst-UNAME.
 
  CONCATENATE v_first V_LAST INTO detail SEPARATED BY space.
**• Assigning the Description of the object sent in the mail
*  CLEAR GS_DOCDATA.
*  GS_DOCDATA-OBJ_NAME = GC_TST.
*  GS_DOCDATA-OBJ_DESCR = GC_TESTING.
 
*• Assigning the email id to Structure of the API Recipient List table
  CLEAR : GT_RECLIST, GS_RECLIST.
  GS_RECLIST-RECEIVER =  P_MAIL.       
  GS_RECLIST-REC_TYPE = 'U'.
  APPEND GS_RECLIST TO GT_RECLIST.
****  mail body rajan
  I_OBJTXT = 'Find attached output of the Order Acceptance.'.
  APPEND I_OBJTXT.
  I_OBJTXT = 'Regards,'.
  APPEND I_OBJTXT.
  I_OBJTXT = detail.
  APPEND I_OBJTXT.
  DESCRIBE TABLE i_objtxt LINES gv_desc_lines.
*DESCRIBE TABLE i_objtxt LINES v_lines_txt.
  CLEAR I_OBJTXT.
  READ TABLE I_OBJTXT INDEX gv_desc_lines.
  if sy-subrc = 0.
* Document information.
 
GS_DOCDATA-obj_name = 'ord_accept'.
GS_DOCDATA-expiry_dat = sy-datum + 10.
GS_DOCDATA-obj_descr = 'Order Acceptance'.
GS_DOCDATA-sensitivty = 'F'. "Functional object
GS_DOCDATA-doc_size = gv_desc_lines * 255.
CLEAR Gs_OBJPACK-transf_bin.
* Start line of object header in transport packet
 
*    GS_OBJPACK-TRANSF_BIN = 'X'.
    GS_OBJPACK-doc_size = gv_desc_lines * 255.
    GS_OBJPACK-HEAD_START = 1.
    GS_OBJPACK-HEAD_NUM = 0.
    GS_OBJPACK-BODY_START = 1.
    GS_OBJPACK-BODY_NUM = gv_desc_lines.
    GS_OBJPACK-DOC_TYPE = 'RAW'.
*    GS_OBJPACK-OBJ_NAME = 'ORDER_ACCEPTANCE'.
*    GS_OBJPACK-OBJ_DESCR = 'ORDER_ACCEPTANCE.PDF'.
    APPEND GS_OBJPACK TO GT_OBJPACK.
 
*  GS_OBJPACK-HEAD_START = 1.
*    GS_OBJPACK-HEAD_NUM = 0.
*    GS_OBJPACK-BODY_START = 1.
*  GS_OBJPACK-doc_type = 'RAW'.
*APPEND GS_OBJPACK TO GT_OBJPACK.
 
  ENDIF.
*• Passing the SAP Script text lines to SAPoffice: Single List with Column Length 255 table
  CLEAR : GS_OBJBIN, GS_PDF_TAB.
 
  LOOP AT GT_PDF_TAB INTO GS_PDF_TAB.
    GV_POS = 255 - GV_LEN.
    IF GV_POS > 134. "length of pdf_table
      GV_POS = 134.
    ENDIF.
    GS_OBJBIN+GV_LEN = GS_PDF_TAB(GV_POS).
    GV_LEN = GV_LEN + GV_POS.
    IF GV_LEN = 255. "length of out (contents_bin)
      APPEND GS_OBJBIN TO GT_OBJBIN.
      CLEAR: GS_OBJBIN, GV_LEN.
      IF GV_POS < 134.
        GS_OBJBIN = GS_PDF_TAB+GV_POS.
        GV_LEN = 134 - GV_POS.
      ENDIF.
    ENDIF.
  ENDLOOP.
  IF GV_LEN > 0.
    APPEND GS_OBJBIN TO GT_OBJBIN.
  ENDIF.
*• Filling the details in SAPoffice: Description of Imported Object Components table
  DESCRIBE TABLE GT_OBJBIN LINES GV_TAB_LINES.
 
  CLEAR GS_OBJBIN.
  READ TABLE GT_OBJBIN INTO GS_OBJBIN INDEX GV_TAB_LINES.
    IF SY-SUBRC = 0.
    GS_OBJPACK-DOC_SIZE = ( GV_TAB_LINES - 1 ) * 255 + STRLEN( GS_OBJBIN ).
    GS_OBJPACK-TRANSF_BIN = 'X'.
    GS_OBJPACK-HEAD_START = 1.
    GS_OBJPACK-HEAD_NUM = 0.
    GS_OBJPACK-BODY_START = 1.
    GS_OBJPACK-BODY_NUM = GV_TAB_LINES.
    GS_OBJPACK-DOC_TYPE = 'PDF'.
    GS_OBJPACK-OBJ_NAME = 'ORDER_ACCEPTANCE'.
    GS_OBJPACK-OBJ_DESCR = 'Order Acceptance'.
    APPEND GS_OBJPACK TO GT_OBJPACK.
  ENDIF.
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      DOCUMENT_DATA                    = GS_DOCDATA
     PUT_IN_OUTBOX                    = 'X'
     COMMIT_WORK                      = 'X'
* IMPORTING
*   SENT_TO_ALL                      =
*   NEW_OBJECT_ID                    =
    TABLES
      PACKING_LIST                     = GT_OBJPACK
*   OBJECT_HEADER                    =  I_OBJTXT
     CONTENTS_BIN                     = GT_OBJBIN
     CONTENTS_TXT                     = I_OBJTXT
*   CONTENTS_HEX                     =
*   OBJECT_PARA                      =
*   OBJECT_PARB                      =
      RECEIVERS                        = GT_RECLIST
   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 ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ELSE.
*    WRITE 'Sent Successfully'.
    MESSAGE 'Sent Successfully' TYPE 'I'.
*      CALL TRANSACTION 'YMSL20'.
*      LEAVE LIST-PROCESSING.
 
  ENDIF.
 
  SUBMIT RSCONN01
  WITH MODE EQ 'INT'
  AND RETURN.
ENDFORM.                    " SEND_MAIL

reward if helpful

raam