DATA l_where(100) OCCURS 0 WITH HEADER LINE.
APPEND 'laufd = p_laufd' TO l_where.
APPEND ' and ' TO l_where.
APPEND 'laufi = p_laufi' TO l_where.
SELECT * FROM reguh INTO CORRESPONDING FIELDS OF TABLE it_reguh
WHERE (l_where). // Dynamically generate the WHERE clause
SAP Abap Sample Program
Abap program sample collection, function module explanation, BAPI List, BDC Recording, Smart Form, SAP Scripts and etc.
Thursday, November 6, 2014
Wednesday, June 5, 2013
Delete duplicate from internal table
Duplicated rows in internal table can be easily deleted using standard code "DELETE ADJACENT DUPLICATES"
for example :
DELETE ADJACENT DUPLICATES FROM itab COMPARING ALL FIELDS.
This code will compare all the fields in the internal table and only delete the the rows if all the fields are duplicated with previous rows.
DELETE ADJACENT DUPLICATES FROM itab COMPARING col1.
This code will compare a particular field(s) in the internal table and only delete the the rows if these field(s) is/are duplicated with previous rows.
Make sure that your internal table is sorted by the fields you want to be checked for duplicates BEFORE deleting the duplicates.
for example:
for example :
DELETE ADJACENT DUPLICATES FROM itab COMPARING ALL FIELDS.
This code will compare all the fields in the internal table and only delete the the rows if all the fields are duplicated with previous rows.
DELETE ADJACENT DUPLICATES FROM itab COMPARING col1.
This code will compare a particular field(s) in the internal table and only delete the the rows if these field(s) is/are duplicated with previous rows.
Make sure that your internal table is sorted by the fields you want to be checked for duplicates BEFORE deleting the duplicates.
for example:
SORT
itab BY col1.
DELETE ADJACENT DUPLICATES FROM itab COMPARING col1.
Tuesday, April 30, 2013
Abap substring
data: datechar(10).
To build the date lets use sy-datum, which has the current system date.
write SY-DATUM+4(2) to datechar+0(2). write '/' datechar+2(1). write SY-DATUM+6(2) to datechar+3(2). write '/' TO datechar+5(1). write SY-DATUM+0(4) to datechar+6(4).
Value of SY-DATUM 20130501
Here's how the field changes with the execution of each line.
05________ 05/_______ 05/01_____ 05/01/____ 05/01/2013
Thursday, December 6, 2012
Abap Identify Number and Characters
The following sample shows how to identify number and characters in a string.
report z_identify. data: test(10) type c value 'ABC123456'. data: length type i. length = strlen( test ). if test(length) co '1234567890'. write:/ 'This is a number'. else. write:/ 'This is not a number'. endif.
Saturday, September 15, 2012
Abap send email library
The below include program is used to send email with CC and attachment functionality:
*&---------------------------------------------------------------------*
*& Include
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
* Purpose:
* Provide generic subroutines for any ABAP programs with intention of
* sending email (SAPOffice or Internet) with attachments
*&---------------------------------------------------------------------*
DATA: objpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE. "Packing list
DATA: objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE. "Object header
DATA: objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE. "Email body message
DATA: objbin LIKE solisti1 OCCURS 10 WITH HEADER LINE. "Binary attachments (PDF)
DATA: objhex LIKE solix OCCURS 10 WITH HEADER LINE. "Hex attachments (XLS)
DATA: reclist LIKE somlreci1 OCCURS 5 WITH HEADER LINE. "Recipient list
DATA: doc_chng LIKE sodocchgi1. "Email information
DATA: tab_lines LIKE sy-tabix. "Number of records of the content table being filled
DATA: pk_lines LIKE sy-tabix. "Number of lines of the attachment packing list
*&---------------------------------------------------------------------*
*& Form initialize_email
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM initialize_email.
REFRESH: objpack,
objhead,
objtxt,
objbin,
objhex,
reclist.
CLEAR: doc_chng, pk_lines.
ENDFORM. "initialize_email
*&---------------------------------------------------------------------*
*& Form build_email_body
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->L_SUBJ text
*----------------------------------------------------------------------*
FORM build_email_body TABLES it_body STRUCTURE solisti1
USING l_subj.
* Setup the email body message
IF NOT it_body[] IS INITIAL.
REFRESH objtxt.
objtxt[] = it_body[].
ELSE.
objtxt = l_subj.
APPEND objtxt.
ENDIF.
* Subject of email
MOVE l_subj TO doc_chng-obj_descr.
DESCRIBE TABLE objtxt LINES tab_lines.
READ TABLE objtxt INDEX tab_lines.
doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
* Prepare the packing list for email body
* DESCRIBE TABLE objpack LINES pk_lines.
CLEAR objpack-transf_bin.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = 'RAW'.
APPEND objpack.
ENDFORM. "build_email_body
*&---------------------------------------------------------------------*
*& Form build_hex_attachment
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM build_hex_attachment TABLES it_hex
USING l_filename LIKE sopcklsti1-obj_descr
l_filetype LIKE sopcklsti1-doc_type.
DATA: it_objhex LIKE solix OCCURS 0 WITH HEADER LINE.
IF NOT it_hex[] IS INITIAL.
CALL FUNCTION 'SCMS_TEXT_TO_BINARY'
* EXPORTING
* FIRST_LINE = 0
* LAST_LINE = 0
* APPEND_TO_TABLE = ' '
* MIMETYPE = ' '
* ENCODING =
* IMPORTING
* OUTPUT_LENGTH =
TABLES
text_tab = it_hex
binary_tab = it_objhex
EXCEPTIONS
failed = 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.
ELSE.
APPEND LINES OF it_objhex TO objhex.
* IT_OBJHEX is used as OBJHEX can contain multiple attachments
DESCRIBE TABLE it_objhex LINES tab_lines.
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = pk_lines + 1.
objpack-body_num = tab_lines.
objpack-doc_type = l_filetype.
* objpack-obj_name = 'ATTACHMENT'.
objpack-obj_descr = l_filename.
objpack-doc_size = tab_lines * 255.
APPEND objpack.
pk_lines = objpack-body_start + objpack-body_num - 1.
ENDIF.
ENDIF.
ENDFORM. "build_hex_attachment
*&---------------------------------------------------------------------*
*& Form build_recip_list
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM build_recip_list USING l_recipient
l_reciptype LIKE somlreci1-rec_type.
MOVE l_recipient TO reclist-receiver.
reclist-rec_type = l_reciptype.
reclist-copy = ''.
APPEND reclist.
ENDFORM. "build_recip_list
*&---------------------------------------------------------------------*
*& Form build_recip_cc_list
*&---------------------------------------------------------------------*
FORM build_recip_cc_list USING l_recipient
l_reciptype LIKE somlreci1-rec_type.
MOVE l_recipient TO reclist-receiver.
reclist-rec_type = l_reciptype.
reclist-copy = 'X'.
APPEND reclist.
ENDFORM. "build_recip_cc_list
*&---------------------------------------------------------------------*
*& Form send_email
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM send_email.
IF reclist[] IS INITIAL.
PERFORM build_recip_list USING sy-uname
'B'.
ENDIF.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = doc_chng
* PUT_IN_OUTBOX = ' '
commit_work = 'X'
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
TABLES
packing_list = objpack
object_header = objhead
*{ REPLACE DEVK935771 2
*\* CONTENTS_BIN =
CONTENTS_BIN = objbin
*} REPLACE
contents_txt = objtxt
contents_hex = objhex
* OBJECT_PARA =
* OBJECT_PARB =
receivers = 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.
*{ DELETE DEVK935721 1
*\ ELSE.
*\ SUBMIT rsconn01 AND RETURN.
*} DELETE
ENDIF.
ENDFORM. "send_email
*&---------------------------------------------------------------------*
*& Form send_email_w_from_addr
*&---------------------------------------------------------------------*
* T01K918835
*----------------------------------------------------------------------*
FORM send_email_w_from_addr USING l_from.
TYPES:
BEGIN OF ty_s_imp00,
imp01 TYPE c, "Sent To All
imp02 TYPE sofolenti1-object_id, "New Object ID
imp03 TYPE soudk, "Sender ID
END OF ty_s_imp00.
DATA:
lw_imp00 TYPE ty_s_imp00,
lt_sosct TYPE sosctab,
lt_obcat TYPE TABLE OF sxobjcat.
IF reclist[] IS INITIAL.
PERFORM build_recip_list USING sy-uname
'B'.
ENDIF.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = doc_chng
put_in_outbox = 'X'
sender_address = l_from
sender_address_type = 'SMTP'
commit_work = 'X'
IMPORTING
sent_to_all = lw_imp00-imp01
new_object_id = lw_imp00-imp02
sender_id = lw_imp00-imp03
TABLES
packing_list = objpack
* contents_bin =
contents_hex = objhex
contents_txt = objtxt
receivers = 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.
* Force the email sending immediately.
CLEAR: lt_sosct, lt_obcat.
COMMIT WORK AND WAIT.
SELECT * FROM sosc
INTO TABLE lt_sosct
WHERE objtp = lw_imp00-imp02+0(3) AND
objyr = lw_imp00-imp02+3(2) AND
objno = lw_imp00-imp02+5.
IF sy-subrc = 0.
CALL FUNCTION 'SX_SEND_DISPATCHER'
EXPORTING
sosc_tab = lt_sosct
TABLES
obj_cat = lt_obcat
EXCEPTIONS
internal_error = 1
directsend_failed = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE s005(z1) WITH space 'Email' 'Sent'.
ELSE.
MESSAGE s004(z1) WITH space 'Email' 'Sent'.
ENDIF.
ELSE.
MESSAGE s005(z1) WITH space 'Email' 'Sent'.
ENDIF.
ENDIF.
ENDFORM. "send_email
*{ INSERT DEVK935771 1
FORM build_pdf_attachment TABLES it_pdf
USING l_filename LIKE sopcklsti1-obj_descr
l_filetype LIKE sopcklsti1-doc_type.
DATA: it_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE.
if it_pdf[] is not initial.
CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
* EXPORTING
* LINE_WIDTH_SRC =
* LINE_WIDTH_DST =
* TRANSFER_BIN = ' '
TABLES
content_in = it_pdf
content_out = it_objbin
EXCEPTIONS
ERR_LINE_WIDTH_SRC_TOO_LONG = 1
ERR_LINE_WIDTH_DST_TOO_LONG = 2
ERR_CONV_FAILED = 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.
else.
APPEND LINES OF it_objbin TO objbin.
* IT_OBJBIN is used as OBJBIN can contain multiple attachments
DESCRIBE TABLE it_objbin LINES tab_lines.
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = pk_lines + 1.
objpack-body_num = tab_lines.
objpack-doc_type = l_filetype.
* objpack-obj_name = 'ATTACHMENT'.
objpack-obj_descr = l_filename.
objpack-doc_size = tab_lines * 255.
APPEND objpack.
pk_lines = objpack-body_start + objpack-body_num - 1.
ENDIF.
ENDIF.
ENDFORM.
*} INSERT
*&---------------------------------------------------------------------*
*& Include
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
* Purpose:
* Provide generic subroutines for any ABAP programs with intention of
* sending email (SAPOffice or Internet) with attachments
*&---------------------------------------------------------------------*
DATA: objpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE. "Packing list
DATA: objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE. "Object header
DATA: objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE. "Email body message
DATA: objbin LIKE solisti1 OCCURS 10 WITH HEADER LINE. "Binary attachments (PDF)
DATA: objhex LIKE solix OCCURS 10 WITH HEADER LINE. "Hex attachments (XLS)
DATA: reclist LIKE somlreci1 OCCURS 5 WITH HEADER LINE. "Recipient list
DATA: doc_chng LIKE sodocchgi1. "Email information
DATA: tab_lines LIKE sy-tabix. "Number of records of the content table being filled
DATA: pk_lines LIKE sy-tabix. "Number of lines of the attachment packing list
*&---------------------------------------------------------------------*
*& Form initialize_email
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM initialize_email.
REFRESH: objpack,
objhead,
objtxt,
objbin,
objhex,
reclist.
CLEAR: doc_chng, pk_lines.
ENDFORM. "initialize_email
*&---------------------------------------------------------------------*
*& Form build_email_body
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->L_SUBJ text
*----------------------------------------------------------------------*
FORM build_email_body TABLES it_body STRUCTURE solisti1
USING l_subj.
* Setup the email body message
IF NOT it_body[] IS INITIAL.
REFRESH objtxt.
objtxt[] = it_body[].
ELSE.
objtxt = l_subj.
APPEND objtxt.
ENDIF.
* Subject of email
MOVE l_subj TO doc_chng-obj_descr.
DESCRIBE TABLE objtxt LINES tab_lines.
READ TABLE objtxt INDEX tab_lines.
doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
* Prepare the packing list for email body
* DESCRIBE TABLE objpack LINES pk_lines.
CLEAR objpack-transf_bin.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = 'RAW'.
APPEND objpack.
ENDFORM. "build_email_body
*&---------------------------------------------------------------------*
*& Form build_hex_attachment
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM build_hex_attachment TABLES it_hex
USING l_filename LIKE sopcklsti1-obj_descr
l_filetype LIKE sopcklsti1-doc_type.
DATA: it_objhex LIKE solix OCCURS 0 WITH HEADER LINE.
IF NOT it_hex[] IS INITIAL.
CALL FUNCTION 'SCMS_TEXT_TO_BINARY'
* EXPORTING
* FIRST_LINE = 0
* LAST_LINE = 0
* APPEND_TO_TABLE = ' '
* MIMETYPE = ' '
* ENCODING =
* IMPORTING
* OUTPUT_LENGTH =
TABLES
text_tab = it_hex
binary_tab = it_objhex
EXCEPTIONS
failed = 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.
ELSE.
APPEND LINES OF it_objhex TO objhex.
* IT_OBJHEX is used as OBJHEX can contain multiple attachments
DESCRIBE TABLE it_objhex LINES tab_lines.
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = pk_lines + 1.
objpack-body_num = tab_lines.
objpack-doc_type = l_filetype.
* objpack-obj_name = 'ATTACHMENT'.
objpack-obj_descr = l_filename.
objpack-doc_size = tab_lines * 255.
APPEND objpack.
pk_lines = objpack-body_start + objpack-body_num - 1.
ENDIF.
ENDIF.
ENDFORM. "build_hex_attachment
*&---------------------------------------------------------------------*
*& Form build_recip_list
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM build_recip_list USING l_recipient
l_reciptype LIKE somlreci1-rec_type.
MOVE l_recipient TO reclist-receiver.
reclist-rec_type = l_reciptype.
reclist-copy = ''.
APPEND reclist.
ENDFORM. "build_recip_list
*&---------------------------------------------------------------------*
*& Form build_recip_cc_list
*&---------------------------------------------------------------------*
FORM build_recip_cc_list USING l_recipient
l_reciptype LIKE somlreci1-rec_type.
MOVE l_recipient TO reclist-receiver.
reclist-rec_type = l_reciptype.
reclist-copy = 'X'.
APPEND reclist.
ENDFORM. "build_recip_cc_list
*&---------------------------------------------------------------------*
*& Form send_email
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM send_email.
IF reclist[] IS INITIAL.
PERFORM build_recip_list USING sy-uname
'B'.
ENDIF.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = doc_chng
* PUT_IN_OUTBOX = ' '
commit_work = 'X'
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
TABLES
packing_list = objpack
object_header = objhead
*{ REPLACE DEVK935771 2
*\* CONTENTS_BIN =
CONTENTS_BIN = objbin
*} REPLACE
contents_txt = objtxt
contents_hex = objhex
* OBJECT_PARA =
* OBJECT_PARB =
receivers = 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.
*{ DELETE DEVK935721 1
*\ ELSE.
*\ SUBMIT rsconn01 AND RETURN.
*} DELETE
ENDIF.
ENDFORM. "send_email
*&---------------------------------------------------------------------*
*& Form send_email_w_from_addr
*&---------------------------------------------------------------------*
* T01K918835
*----------------------------------------------------------------------*
FORM send_email_w_from_addr USING l_from.
TYPES:
BEGIN OF ty_s_imp00,
imp01 TYPE c, "Sent To All
imp02 TYPE sofolenti1-object_id, "New Object ID
imp03 TYPE soudk, "Sender ID
END OF ty_s_imp00.
DATA:
lw_imp00 TYPE ty_s_imp00,
lt_sosct TYPE sosctab,
lt_obcat TYPE TABLE OF sxobjcat.
IF reclist[] IS INITIAL.
PERFORM build_recip_list USING sy-uname
'B'.
ENDIF.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = doc_chng
put_in_outbox = 'X'
sender_address = l_from
sender_address_type = 'SMTP'
commit_work = 'X'
IMPORTING
sent_to_all = lw_imp00-imp01
new_object_id = lw_imp00-imp02
sender_id = lw_imp00-imp03
TABLES
packing_list = objpack
* contents_bin =
contents_hex = objhex
contents_txt = objtxt
receivers = 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.
* Force the email sending immediately.
CLEAR: lt_sosct, lt_obcat.
COMMIT WORK AND WAIT.
SELECT * FROM sosc
INTO TABLE lt_sosct
WHERE objtp = lw_imp00-imp02+0(3) AND
objyr = lw_imp00-imp02+3(2) AND
objno = lw_imp00-imp02+5.
IF sy-subrc = 0.
CALL FUNCTION 'SX_SEND_DISPATCHER'
EXPORTING
sosc_tab = lt_sosct
TABLES
obj_cat = lt_obcat
EXCEPTIONS
internal_error = 1
directsend_failed = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE s005(z1) WITH space 'Email' 'Sent'.
ELSE.
MESSAGE s004(z1) WITH space 'Email' 'Sent'.
ENDIF.
ELSE.
MESSAGE s005(z1) WITH space 'Email' 'Sent'.
ENDIF.
ENDIF.
ENDFORM. "send_email
*{ INSERT DEVK935771 1
FORM build_pdf_attachment TABLES it_pdf
USING l_filename LIKE sopcklsti1-obj_descr
l_filetype LIKE sopcklsti1-doc_type.
DATA: it_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE.
if it_pdf[] is not initial.
CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
* EXPORTING
* LINE_WIDTH_SRC =
* LINE_WIDTH_DST =
* TRANSFER_BIN = ' '
TABLES
content_in = it_pdf
content_out = it_objbin
EXCEPTIONS
ERR_LINE_WIDTH_SRC_TOO_LONG = 1
ERR_LINE_WIDTH_DST_TOO_LONG = 2
ERR_CONV_FAILED = 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.
else.
APPEND LINES OF it_objbin TO objbin.
* IT_OBJBIN is used as OBJBIN can contain multiple attachments
DESCRIBE TABLE it_objbin LINES tab_lines.
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = pk_lines + 1.
objpack-body_num = tab_lines.
objpack-doc_type = l_filetype.
* objpack-obj_name = 'ATTACHMENT'.
objpack-obj_descr = l_filename.
objpack-doc_size = tab_lines * 255.
APPEND objpack.
pk_lines = objpack-body_start + objpack-body_num - 1.
ENDIF.
ENDIF.
ENDFORM.
*} INSERT
ABAP Folder Selection input box
The below program will create a input selection that will pop up the folder selection box.
REPORT z_select_folder.
CONSTANTS: c_default_folder TYPE rlgrap-filename VALUE 'C:\'.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
PARAMETERS : p_folder LIKE rlgrap-filename OBLIGATORY DEFAULT c_default_folder.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_folder.
PERFORM select_folder CHANGING p_folder.
FORM select_folder CHANGING p_p_folder.
DATA: l_path TYPE string.
CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = 'Select Folder'
initial_folder = 'C:\'
CHANGING
selected_folder = l_path
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.
MOVE l_path TO p_p_folder.
ENDFORM. " SELECT_FOLDER
REPORT z_select_folder.
CONSTANTS: c_default_folder TYPE rlgrap-filename VALUE 'C:\'.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
PARAMETERS : p_folder LIKE rlgrap-filename OBLIGATORY DEFAULT c_default_folder.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_folder.
PERFORM select_folder CHANGING p_folder.
FORM select_folder CHANGING p_p_folder.
DATA: l_path TYPE string.
CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = 'Select Folder'
initial_folder = 'C:\'
CHANGING
selected_folder = l_path
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.
MOVE l_path TO p_p_folder.
ENDFORM. " SELECT_FOLDER
Sunday, February 12, 2012
SAP Execute MIRO using BAPI_INCOMINGINVOICE_CREATE
This is the sample program to create incoming vendor invoice (MIRO) using BAPI_INCOMINGINVOICE_CREATE
REPORT zt_bapimiro.
DATA: wa_header LIKE bapi_incinv_create_header.
DATA: it_item TYPE STANDARD TABLE OF bapi_incinv_create_item,
wa_item TYPE bapi_incinv_create_item.
DATA: it_ret LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA: g_invno LIKE bapi_incinv_fld-inv_doc_no,
g_fyear LIKE bapi_incinv_fld-fisc_year.
wa_header-invoice_ind = 'X'.
wa_header-doc_date = '20120131'. "Enter the document date
wa_header-pstng_date = '20120208'. "Enter the posting date
wa_header-ref_doc_no = 'Test'.
wa_header-comp_code = '3100'.
wa_header-gross_amount = '5908.11'. "Enter the gross amount(aft. tax) for the invoice
wa_header-calc_tax_ind = 'X'.
wa_header-currency = 'USD'.
wa_item-invoice_doc_item = '000001'.
wa_item-po_number = '4590038150'. "Enter the PO number
wa_item-po_item = '00120'. "Enter the PO item number
wa_item-ref_doc = '5007548571'. "Enter the GR number
wa_item-ref_doc_year = '2012'. "Enter the GR fiscal year
wa_item-ref_doc_it = '0001'. "Enter the GR item number
wa_item-tax_code = 'V7'. "Enter the tax code applicable
wa_item-item_amount = '5521.60'. "Enter the item amount
wa_item-quantity = '2380'. "Enter the invoice quantity
wa_item-po_unit = 'EA'. "Enter the UoM
APPEND wa_item TO it_item.
CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
EXPORTING
headerdata = wa_header
* ADDRESSDATA =
IMPORTING
invoicedocnumber = g_invno
fiscalyear = g_fyear
TABLES
itemdata = it_item
* ACCOUNTINGDATA =
* GLACCOUNTDATA =
* MATERIALDATA =
* TAXDATA =
* WITHTAXDATA =
* VENDORITEMSPLITDATA =
return = it_ret
* EXTENSIONIN =
.
IF g_invno IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
ENDIF.
WRITE:/1 g_invno, g_fyear.
LOOP AT it_ret.
WRITE:/1 it_ret-message.
ENDLOOP.
REPORT zt_bapimiro.
DATA: wa_header LIKE bapi_incinv_create_header.
DATA: it_item TYPE STANDARD TABLE OF bapi_incinv_create_item,
wa_item TYPE bapi_incinv_create_item.
DATA: it_ret LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA: g_invno LIKE bapi_incinv_fld-inv_doc_no,
g_fyear LIKE bapi_incinv_fld-fisc_year.
wa_header-invoice_ind = 'X'.
wa_header-doc_date = '20120131'. "Enter the document date
wa_header-pstng_date = '20120208'. "Enter the posting date
wa_header-ref_doc_no = 'Test'.
wa_header-comp_code = '3100'.
wa_header-gross_amount = '5908.11'. "Enter the gross amount(aft. tax) for the invoice
wa_header-calc_tax_ind = 'X'.
wa_header-currency = 'USD'.
wa_item-invoice_doc_item = '000001'.
wa_item-po_number = '4590038150'. "Enter the PO number
wa_item-po_item = '00120'. "Enter the PO item number
wa_item-ref_doc = '5007548571'. "Enter the GR number
wa_item-ref_doc_year = '2012'. "Enter the GR fiscal year
wa_item-ref_doc_it = '0001'. "Enter the GR item number
wa_item-tax_code = 'V7'. "Enter the tax code applicable
wa_item-item_amount = '5521.60'. "Enter the item amount
wa_item-quantity = '2380'. "Enter the invoice quantity
wa_item-po_unit = 'EA'. "Enter the UoM
APPEND wa_item TO it_item.
CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
EXPORTING
headerdata = wa_header
* ADDRESSDATA =
IMPORTING
invoicedocnumber = g_invno
fiscalyear = g_fyear
TABLES
itemdata = it_item
* ACCOUNTINGDATA =
* GLACCOUNTDATA =
* MATERIALDATA =
* TAXDATA =
* WITHTAXDATA =
* VENDORITEMSPLITDATA =
return = it_ret
* EXTENSIONIN =
.
IF g_invno IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
ENDIF.
WRITE:/1 g_invno, g_fyear.
LOOP AT it_ret.
WRITE:/1 it_ret-message.
ENDLOOP.
Subscribe to:
Posts (Atom)