2006 Jan 04 6:30 AM
Hi,
I am using IDOC status using IDOC_STATUS_WRITE_TO_DATABASE.
But as i am passing only the status number as a parameter, is it possible to change the default status code text.
If so, let me know please.
2006 Jan 04 6:38 AM
hi ananda,
pass the status table (idoc_status) and give the msgno,msgv1 and msgv2,..etc.
now you can able to change the text..
thanks
vijay
2006 Jan 04 6:52 AM
Check the below code. It will help u lot.
data: i_idoc_numbers type line of idoc_detail_itab
occurs 0 with header line.
data: i_idoc_status like bdidocstat occurs 0 with
header line,
idoc_control like edidc.
-
perform compile_idoc_status tables i_idoc_status
pxt_bapi_messages
using i_idoc_numbers.
call function 'IDOC_STATUS_WRITE_TO_DATABASE'
exporting
idoc_number = i_idoc_numbers-addiidoc
idoc_opened_flag = 'X'
NO_DEQUEUE_FLAG = 'X'
importing
idoc_control = idoc_control
tables
idoc_status = i_idoc_status
exceptions
idoc_foreign_lock = 1
idoc_not_found = 2
idoc_status_records_empty = 3
idoc_status_invalid = 4
db_error = 5
others = 6.
if sy-subrc <> 0.
perform update_bapi_message tables pxt_bapi_messages
using sy-msgty
sy-msgid
sy-msgno
sy-msgv1
sy-msgv2
sy-msgv3 sy-msgv4
i_idoc_numbers-row.
pe_idoc_update_error = 1.
exit.
endif.
-
<b>form get_idoc_numbers tables pit_idoc_status structure bapi2106is
pet_idoc_numbers type idoc_detail_itab.
data: idoc_status_line like sy-tabix,
idoc_numbers_idx like sy-tabix.
refresh: pet_idoc_numbers.
loop at pit_idoc_status.
idoc_status_line = sy-tabix.
read table pet_idoc_numbers
with key addiidoc = pit_idoc_status-addiidoc.
idoc_numbers_idx = sy-tabix.
if sy-subrc <> 0. " not found
pet_idoc_numbers-row = idoc_status_line.
move-corresponding pit_idoc_status to pet_idoc_numbers.
if pit_idoc_status-status = 0.
pet_idoc_numbers-status = 0.
else.
pet_idoc_numbers-status = 1.
endif.
append pet_idoc_numbers.
else.
if pet_idoc_numbers-status = 0
and pit_idoc_status-status <> 0.
pet_idoc_numbers-status = 1.
modify pet_idoc_numbers index idoc_numbers_idx
transporting status.
endif.
endif.
endloop.
endform. " GET_IDOC_NUMBERS</b>
2006 Jan 04 8:14 AM
How to use the status record message id ?
i don't know the values of the parameters.
Let me know
2006 Jan 04 8:22 AM
Check the below code:
form compile_idoc_status
tables pet_idoc_status structure bdidocstat pxt_bapi_messages structure bapiret2
using pi_idoc_number type idoc_detail.
data: msg_v1 like sy-msgv1,
msg_v2 like sy-msgv2,
msg_v3 like sy-msgv3,
msg_v4 like sy-msgv4.
refresh pet_idoc_status.
pet_idoc_status-docnum = pi_idoc_number-addiidoc.
if pi_idoc_number-status = 0.
pet_idoc_status-status = '16'.
else.
pet_idoc_status-status = '17'.
endif.
pet_idoc_status-msgty = pi_idoc_number-messagetype.
pet_idoc_status-msgid = pi_idoc_number-messageid.
pet_idoc_status-msgno = pi_idoc_number-messagenumber.
pet_idoc_status-msgv1 = pi_idoc_number-message_v1.
pet_idoc_status-msgv2 = pi_idoc_number-message_v2.
pet_idoc_status-msgv3 = pi_idoc_number-message_v3.
pet_idoc_status-msgv4 = pi_idoc_number-message_v4.
append pet_idoc_status.
A success message is returned to the calling program.
msg_v1 = pi_idoc_number-addiidoc.
msg_v2 = pi_idoc_number-status.
msg_v3 = pi_idoc_number-message_v3.
msg_v4 = pi_idoc_number-message_v4.
perform update_bapi_message tables pxt_bapi_messages
using addi_message_type_success
addi_message_class
addi_status_idoc_ok
msg_v1
msg_v2
msg_v3
msg_v4
pi_idoc_number-row.
endform. " COMPILE_IDOC_STATUS
2006 Jan 04 10:46 PM
Hi,
This should work...
MOVE wa_edidc-docnum TO wa_idoc_status-docnum.
MOVE '69' TO wa_idoc_status-status.
MOVE 'E' TO wa_idoc_status-msgty.
MOVE 'Z2' TO wa_idoc_status-msgid.
MOVE '005' TO wa_idoc_status-msgno.
MOVE 'IDOC HAS BEEN MODIFIED' TO wa_idoc_status-msgv1.
MOVE sy-uname TO wa_idoc_status-uname.
MOVE sy-repid TO wa_idoc_status-repid.
APPEND wa_idoc_status TO it_idoc_status.
CALL FUNCTION 'IDOC_STATUS_WRITE_TO_DATABASE'
EXPORTING
idoc_number = wa_edidc-docnum
no_dequeue_flag = ' '
TABLES
idoc_status = it_idoc_status
EXCEPTIONS
idoc_foreign_lock = 1
idoc_not_found = 2
idoc_status_records_empty = 3
idoc_status_invalid = 4
db_error = 5.
Here the message 'IDOC HAS BEEN MODIFIED' will appear as the status text.
Vamsi