Skip to Content
avatar image
Former Member

Hi friends

when i ecxecute SO_NEW_DOCUMENT_ATT_SEND_API1 for sending mail as PDF attachment i am getting following dump:

Invalid COMMIT WORK in an update function module

Error analysis:-

****************

Calling a COMMIT WORK in an update process is not allowed because the function modules triggered in a Logical Unit of Work cannot then be processed correctly.

003530 * set commit work

003540 if commit_work = on.

> commit work.

003560 endif.

003570

003580

003590 ENDFUNCTION.

i understand dump happening at while commiting.

i am passing COMMIT 'X'.

Please help.

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

1 Answer

  • Feb 20, 2008 at 05:58 AM

    hi

    this may be useful to u.

    DATA: i_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,

    i_tline TYPE TABLE OF tline WITH HEADER LINE,

    i_receivers TYPE TABLE OF somlreci1 WITH HEADER LINE,

    i_record LIKE solisti1 OCCURS 0 WITH HEADER LINE,

    • Objects to send mail.

    i_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,

    i_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,

    i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,

    i_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE,

    • Work Area declarations

    wa_objhead TYPE soli_tab,

    w_ctrlop TYPE ssfctrlop,

    w_compop TYPE ssfcompop,

    w_return TYPE ssfcrescl,

    wa_doc_chng typE sodocchgi1,

    w_data TYPE sodocchgi1,

    wa_buffer TYPE string,"To convert from 132 to 255

    • Variables declarations

    v_form_name TYPE rs38l_fnam,

    v_len_in LIKE sood-objlen,

    v_len_out LIKE sood-objlen,

    v_len_outn TYPE i,

    v_lines_txt TYPE i,

    v_lines_bin TYPE i.

    call function 'SSF_FUNCTION_MODULE_NAME'

    exporting

    formname = 'ZZZ_TEST1'

    importing

    fm_name = v_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.

    w_ctrlop-getotf = 'X'.

    w_ctrlop-no_dialog = 'X'.

    w_compop-tdnoprev = 'X'.

    CALL FUNCTION v_form_name

    EXPORTING

    control_parameters = w_ctrlop

    output_options = w_compop

    user_settings = 'X'

    IMPORTING

    job_output_info = w_return

    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.

    i_otf[] = w_return-otfdata[].

    call function 'CONVERT_OTF'

    EXPORTING

    format = 'PDF'

    max_linewidth = 132

    IMPORTING

    bin_filesize = v_len_in

    TABLES

    otf = i_otf

    lines = i_tline

    EXCEPTIONS

    err_max_linewidth = 1

    err_format = 2

    err_conv_not_possible = 3

    others = 4.

    • Fehlerhandling

    if sy-subrc <> 0.

    endif.

    loop at i_tline.

    translate i_tline using '~'.

    concatenate wa_buffer i_tline into wa_buffer.

    endloop.

    translate wa_buffer using '~'.

    do.

    i_record = wa_buffer.

    append i_record.

    shift wa_buffer left by 255 places.

    if wa_buffer is initial.

    exit.

    endif.

    enddo.

    • Attachment

    refresh:

    i_reclist,

    i_objtxt,

    i_objbin,

    i_objpack.

    clear wa_objhead.

    i_objbin[] = i_record[].

    • Create Message Body

  • Title and Description

  • i_objtxt = 'test with pdf-Attachment!'.

    append i_objtxt.

    describe table i_objtxt lines v_lines_txt.

    read table i_objtxt index v_lines_txt.

    wa_doc_chng-obj_name = 'smartform'.

    wa_doc_chng-expiry_dat = sy-datum + 10.

    wa_doc_chng-obj_descr = 'smartform'.

    wa_doc_chng-sensitivty = 'F'.

    wa_doc_chng-doc_size = v_lines_txt * 255.

    • Main Text

  • wa_doc_chng-doc_size = ( v_lines_txt - 1 ) * 255 + strlen( i_objtxt )

  • *.

    clear i_objpack-transf_bin.

    i_objpack-head_start = 1.

    i_objpack-head_num = 0.

    i_objpack-body_start = 1.

    i_objpack-body_num = v_lines_txt.

    i_objpack-doc_type = 'RAW'.

    append i_objpack.

    • Attachment

  • (pdf-Attachment)

  • i_objpack-transf_bin = 'X'.

    i_objpack-head_start = 1.

    i_objpack-head_num = 0.

    i_objpack-body_start = 1.

    • Länge des Attachment ermitteln

    describe table i_objbin lines v_lines_bin.

    read table i_objbin index v_lines_bin.

    i_objpack-doc_size = v_lines_bin * 255 .

    i_objpack-body_num = v_lines_bin.

    i_objpack-doc_type = 'PDF'.

    i_objpack-obj_name = 'smart'.

    i_objpack-obj_descr = 'test'.

    append i_objpack.

    clear i_reclist.

    i_reclist-receiver = xyz@yahoo.com'.

    i_reclist-rec_type = 'U'.

    append i_reclist.

    call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'

    EXPORTING

    document_data = wa_doc_chng

    put_in_outbox = 'X'

    TABLES

    packing_list = i_objpack

    object_header = wa_objhead

    CONTENTS_BIN = i_objbin

    contents_txt = i_objtxt

    receivers = i_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.

    *&----


    *

    *& Form sub_event_call

    *&----


    *

    • text

    *----


    *

    • -->P_V_EVENTS_REPL text

    *----


    *

    FORM sub_event_call USING p_v_events.

    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

    EXPORTING

    i_list_type = 0

    IMPORTING

    et_events = p_v_events

    • EXCEPTIONS

    • LIST_TYPE_WRONG = 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. " sub_event_call

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

    • I_INTERFACE_CHECK = ' '

    • I_BYPASSING_BUFFER =

    • I_BUFFER_ACTIVE = ' '

    i_callback_program = v_repid

    • I_CALLBACK_PF_STATUS_SET = ' '

    i_callback_user_command = 'USER_COMMAND_FINAL'

    • I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

    • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

    • I_CALLBACK_HTML_END_OF_LIST = ' '

    • I_STRUCTURE_NAME =

    • I_BACKGROUND_ID = ' '

    i_grid_title = ws_title

    • I_GRID_SETTINGS =

    is_layout = g_layout

    it_fieldcat = g_fieldcat[]

    • IT_EXCLUDING =

    • IT_SPECIAL_GROUPS =

    it_sort = it_sort

    • IT_FILTER =

    • IS_SEL_HIDE =

    • I_DEFAULT = 'X'

    i_save = 'A'

    • IS_VARIANT =

    it_events = v_events_final

    • IT_EVENT_EXIT =

    is_print = ls_print

    • IS_REPREP_ID =

    • I_SCREEN_START_COLUMN = 0

    • I_SCREEN_START_LINE = 0

    • I_SCREEN_END_COLUMN = 0

    • I_SCREEN_END_LINE = 0

    • IT_ALV_GRAPHICS =

    • IT_ADD_FIELDCAT =

    • IT_HYPERLINK =

    • I_HTML_HEIGHT_TOP =

    • I_HTML_HEIGHT_END =

    • IT_EXCEPT_QINFO =

    • IMPORTING

    • E_EXIT_CAUSED_BY_CALLER =

    • ES_EXIT_CAUSED_BY_USER =

    TABLES

    t_outtab = it_final

    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.

    *&----

    -


    *& Form POPULATE_EVENT

    *&----

    -


    • text

    *----

    -


    • --> p1 text

    • <-- p2 text

    *----

    -


    FORM populate_event.

    READ TABLE v_events_final INTO wa_event WITH KEY

    name = 'USER_COMMAND_FINAL'.

    IF sy-subrc EQ 0.

    wa_event-form = 'USER_COMMAND_FINAL'.

    MODIFY v_events_final FROM wa_event TRANSPORTING form

    WHERE name = wa_event-name.

    ENDIF.

    ENDFORM. " POPULATE_EVENT

    *&----


    *

    *& Form USER_COMMAND_FINAL

    *&----


    *

    • text

    *----


    *

    • -->R_UCOMM text

    • -->, text

    • -->RS_SLEFIELDtext

    *----


    *

    FORM user_command_final USING r_ucomm LIKE sy-ucomm

    rs_selfield TYPE slis_selfield.

    ***User interaction on detail list

    **Displays Tx IW53

    CLEAR g_rs_selfield.

    CASE r_ucomm.

    WHEN '&IC1'.

    CLEAR wa_repl_final.

    READ TABLE it_repl_final INTO wa_repl_final INDEX

    rs_selfield-tabindex.

    IF sy-subrc = 0.

    • SET PARAMETER ID 'IQM' FIELD wa_repl_final-qmnum.

    • CALL TRANSACTION 'IW53' AND SKIP FIRST SCREEN.

    Here use SUBMIT statement by passing the value to from driver program.

    ENDIF.

    ENDIF.

    ENDCASE.

    ENDFORM. "user_command_det

    U can an option in alv grid display for user command.

    In that, include this code.

    Eg:

    FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

    RS_SELFIELD TYPE SLIS_SELFIELD.

    CASE R_UCOMM.

    when '&IC1&..

    IF RS_SELFIELD-NAME 'EBELN'.

    submit report 'ZSMARTFORM' WITH SELECT-OPTIONS-LOW = RS_SELFIED-VALUE.

    ENDIF.

    ENDCASE.

    endform.

    HERE,

    'ZSMARTFORM' is ur smartform driver program.

Add comment
10|10000 characters needed characters exceeded