пятница, 27 сентября 2013 г.

Текстовый символ -> ASCII (и обратно)

Нашел на просторах SE24 вот такую занимательную пару классов:
CL_ABAP_CONV_IN_CE - Code Page and Endian Conversion (External -> System Format)
CL_ABAP_CONV_OUT_CE - Code Page and Endian Conversion (System Format -> External)
для конвертации символа в ASCII и обратно можно использовать метод UCCP

PS: в SE37 подсмотрел еще ФМ URL_ASCII_CODE_GET с говорящим названием

четверг, 26 сентября 2013 г.

Замеряем время работы программы

Занимаясь рефакторингом кода, часто приходится отвечать себе на вопрос: "А сколько времени работает эта выборка и обработка данных?". В поисках ответа можно воспользоваться стандартными средствами, такими как:
- Трассировка SQL запроса (транзакция ST05)
- Трассировка ABAP кода (транзакции SE30 или SAT).
Но есть еще один вариант оценки времени работы программы - написание небольшого юнит теста. Пример такого юнит-теста приведен ниже:

Код
DATA: v_time1 TYPE i, v_time2 TYPE i. * Submit the report. GET RUN TIME FIELD v_time1. SUBMIT (v_report) AND RETURN. GET RUN TIME FIELD v_time2. * Calculate the difference. v_time2 = v_time2 - v_time1. * Display the run time. WRITE: / 'Run time in micro seconds = ', v_time2.

среда, 25 сентября 2013 г.

How to zip a folder


Есть в ABAP такой замечательный класс CL_ABAP_ZIP, который позволяет упаковывать файлы и папки в ZIP. Ниже представлен пример программы, который создает ZIP для выбранной директории.

Код
data : gv_file_length    type i,        gv_filehexcontent type xstring,        gv_zipfilehex     type xstring,        gt_filebincontent type solix_tab,        gt_zipfilebin     type solix_tab,        go_zipper         type ref to cl_abap_zip,        gv_zipfilename    type string,        gv_folder         type string,        gt_files          type table of char255 with header line,        gv_file           type string,        gv_file_fullpath  type string,        gv_no_files       type i. cl_gui_frontend_services=>directory_browse(  exporting  window_title    = 'Folder selection'                                              changing   selected_folder = gv_folder                                              exceptions others          = 4 ). check sy-subrc eq 0. cl_gui_frontend_services=>directory_list_files( exporting  directory   = gv_folder                                                            files_only  = 'X'                                                 changing   file_table  = gt_files[]                                                            count       = gv_no_files                                                 exceptions others      = 4 ). check sy-subrc eq 0. check gv_no_files gt 0. create object go_zipper. loop at gt_files.   move gt_files to gv_file.   concatenate gv_folder '\' gv_file into gv_file_fullpath.   cl_gui_frontend_services=>gui_upload(     exporting       filename   = gv_file_fullpath       filetype   = 'BIN'     importing       filelength = gv_file_length     changing       data_tab   = gt_filebincontent     exceptions       others     = 4 ).   check sy-subrc eq 0.   call function 'SCMS_BINARY_TO_XSTRING'     exporting       input_length = gv_file_length     importing       buffer       = gv_filehexcontent     tables       binary_tab   = gt_filebincontent     exceptions       failed       = 1       others       = 2.   check sy-subrc eq 0.   go_zipper->add( name    = gv_file                   content = gv_filehexcontent ). endloop. gv_zipfilehex = go_zipper->save( ). call function 'SCMS_XSTRING_TO_BINARY'   exporting     buffer     = gv_zipfilehex   tables     binary_tab = gt_zipfilebin. concatenate gv_folder '.zip' into gv_zipfilename. call method cl_gui_frontend_services=>gui_download   exporting     filename = gv_zipfilename     filetype = 'BIN'   changing     data_tab = gt_zipfilebin   exceptions     others   = 4.

понедельник, 23 сентября 2013 г.

Полезные ссылки.


sapnet.ru — форум ABAP консультантов. Тут можно найти интересные материалы по ABAP, спросить совета у гуру, помочь кому-то и так далее.
sapboard.ru — русскоязычный форум по различным модулям SAP а так же по ABAP.
abap-blog.ru — очень интересный блог ABAP-разработчика. Пишет про различные новые технологии и интересные вещи в ABAP.
abaphr.ru — блог разработки приложений в модуле ABAP HR. (но на самом деле и не только).
www.sapdev.co.uk — зарубежный сайт разработчиков ABAP. Частенько нахожу тут интересующие меня темы.
help.sap.com — официальный help SAP. Практически всю документацию можно найти тут.
saptechnical.com - Всякие How to....
tcodesearch.com - Перечень транзакций SAP по модулям
fatheryan.narod.ru/sapcourses - Сборник курсов по SAP от папы Яна =)