Вакансия

Ребята, есть вакансия на ABAP программиста в Астане в иностранную компанию. Если кому интересно, отправляйте e-mail на dmasionyte@redcommerce.com
Почта не моя, просто пришло приглашение, но сам не могу. Вот решил, может кого заинтересует.

P.S. Резюме и текст письма пишите на английском.

Вывод диаграмм на abap

Ниже кусок кода который выводит диаграммы с помощью функционального модуля GRAPH_MATRIX_3D который выводит вот такую диаграмму

graph_3d.jpg

Создание REST (HTTP) клиента на ABAP

Сейчас я вас расскажу как создать REST клиент на abap, то есть сейчас мы научимся отправлять HTTP запросы на ABAP.
Для примера мы возьмем готовый REST сервис который предоставляет курс валюты на указанную дату.

загрузка файла на сервер SAP

Программа для загрузки файла на сервер SAP. аналог транзакции CG3Y, CG3Z, только с возможностью создать файл. посмотреть загруженный файл можно в транзакции AL11.

  1. PARAMETERS: p_file TYPE rlgrap-filename.
  2. PARAMETERS: sap_file(250) TYPE c.
  3.  
  4. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  5. CALL FUNCTION 'F4_FILENAME'
  6. EXPORTING
  7. field_name = 'P_FILE'
  8. IMPORTING
  9. file_name = p_file.
  10.  
  11.  
  12. TYPES: BEGIN OF txt_line,
  13. data(8192) TYPE c,
  14. END OF txt_line.
  15.  
  16. DATA: txt_table TYPE TABLE OF txt_line WITH HEADER LINE,
  17. txt_tablesize TYPE i.
  18. DATA: s_file TYPE string.
  19.  
  20. s_file = p_file.
  21.  
  22. CALL FUNCTION 'GUI_UPLOAD'
  23. EXPORTING
  24. filename = s_file
  25. filetype = 'ASC'
  26. read_by_line = 'X'
  27. IMPORTING
  28. filelength = txt_tablesize
  29. data_tab = txt_table
  30. EXCEPTIONS
  31. OTHERS = 11.
  32.  
  33. OPEN DATASET sap_file FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
  34. LOOP AT txt_table .
  35. TRANSFER txt_table TO sap_file.
  36. CLOSE DATASET sap_file.

Индикатор выполнения

Привожу пример кода который позволяет выводить индикатор выполнения задачи

  1.  
  2. go_progress TYPE REF TO CL_AKB_PROGRESS_INDICATOR.
  3.  
  4. co_max_times TYPE I VALUE 100000.
  5.  
  6. IF go_progress IS NOT BOUND.
  7. go_progress = CL_AKB_PROGRESS_INDICATOR=>get_instance( ).
  8.  
  9. WRITE 'TEST'.
  10.  
  11. DO co_max_times TIMES.
  12. go_progress->display(
  13. EXPORTING
  14. total = co_max_times
  15. processed = sy-INDEX
  16. MESSAGE = 'В процессе..' ).

Удаление ведущих нулей

  1. data a(9) value '000012345'.
  2. SHIFT a LEFT DELETING LEADING '0'.
  3. write:/ a.

На выходе получим : 12345

Добавление ведущих нулей

Привожу пример кода в котором используется функциональный модуль (CONVERSION_EXIT_ALPHA_INPUT) для добавления ведущих нулей

  1.  
  2. zmatnr type MATNR.
  3.  
  4. zmatnr = '123'.
  5. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  6. EXPORTING
  7. INPUT = zmatnr
  8. IMPORTING
  9. OUTPUT = zmatnr. "На выходе получим 000000000000000123

Таймштамп

Таймштамп, удобно записывать в таблицу БД, например с логами, помещается в поле чар размером 20, или num. Есть 2 варианта, доли секунды с 5 знаками после запятой, и с 7-ю, в зависимости от типа данных timestampl и timestamps.

  1. DATA: BEGIN OF wa,
  2. ...
  3. time_stamp TYPE timestampl,
  4. ...
  5. END OF wa.
  6. ...
  7. GET TIME STAMP FIELD wa-time_stamp.
  8. INSERT dbtab FROM wa.

FM для вывода диалога с несколькими опциями

Ниже код для получения вот такого результата.

Изменение длинного наименования ОЗМ

Для того чтобы поменять длинное наименование ОЗМ в транзакции mm02 нужно выбрать кладку "Основные данные 1" там нажать кнопку "Текст/ОснДанн" появится текстовое поле в которое можно ввести длинное наименование ОЗМ.

Ниже кусок кода который меняет длинное наименование ОЗМ.

Примечание: ОЗМ - Основная запись материала

Страницы