Простой пример вывода html на экран.
03 декабря 2018
26 ноября 2018
Вызов программы с передачей динамических параметров селекционного экрана
При вызове программы через SUBMIT, селекционный экран которой имеет динамические параметры, используем дополнение WITH FREE SELECTIONS lt_texpr, где lt_texpr имеет тип rsds_texpr. В следующем примере вызываем программу для транзакции FBL1N и передаём в динамический параметр "Блокировка платежа" значение "A".
DATA: lv_sydatum TYPE sy-datum, lt_items TYPE it_rfposxext, lt_trange TYPE rsds_trange, lt_texpr TYPE rsds_texpr. FIELD-SYMBOLS: <lfs_trange> LIKE LINE OF lt_trange, <lfs_frange> LIKE LINE OF <lfs_trange>-frange_t, <lfs_selopt> LIKE LINE OF <lfs_frange>-selopt_t. lv_sydatum = sy-datum. INSERT INITIAL LINE INTO TABLE lt_trange ASSIGNING <lfs_trange>. <lfs_trange>-tablename = 'BSIK'. INSERT INITIAL LINE INTO TABLE <lfs_trange>-frange_t ASSIGNING <lfs_frange>. <lfs_frange>-fieldname = 'ZLSPR'. INSERT INITIAL LINE INTO TABLE <lfs_frange>-selopt_t ASSIGNING <lfs_selopt>. <lfs_selopt>-sign = 'I'. <lfs_selopt>-option = 'EQ'. <lfs_selopt>-low = 'A'. CALL FUNCTION 'FREE_SELECTIONS_RANGE_2_EX' EXPORTING field_ranges = lt_trange IMPORTING expressions = lt_texpr. SUBMIT rfitemap WITH kd_bukrs IN s_bukrs " БЕ WITH kd_lifnr IN s_lifnr " Кредитор WITH pa_stida EQ lv_sydatum " Открытые на отчетную дату WITH pa_vari EQ '1SAP' " Формат WITH x_aisel EQ '' " Все позиции WITH x_apar EQ '' " Позиции дебиторов WITH x_clsel EQ '' " Выровненные позиции WITH x_merk EQ '' " Памятные позиции WITH x_norm EQ 'X' " Стандартные позиции WITH x_opsel EQ '' " Открытые позиции WITH x_park EQ '' " Предв. зарегистрированные WITH x_shbv EQ '' " Операции Особой главной книги WITH FREE SELECTIONS lt_texpr EXPORTING LIST TO MEMORY AND RETURN.
15 ноября 2018
Сторно FI-документа (BAPI BAPI_ACC_DOCUMENT_REV_POST)
Для сторно FI-документа используется функциональный модуль (BAPI) BAPI_ACC_DOCUMENT_REV_POST.
Создание FI-документа с проводкой на налоговые счета (BAPI BAPI_ACC_DOCUMENT_POST)
Используется функциональный модуль BAPI_ACC_DOCUMENT_POST.
14 ноября 2018
Расчет суммы налога по коду налога и базовой сумме
Используется функциональный модуль CALCULATE_TAX_FROM_NET_AMOUNT.
CALL FUNCTION 'CALCULATE_TAX_FROM_NET_AMOUNT' EXPORTING i_bukrs = lv_bukrs i_mwskz = lv_mwskz i_waers = lv_waers i_wrbtr = lv_wrbtr IMPORTING e_fwste = lv_fwste TABLES t_mwdat = lt_mwdat EXCEPTIONS bukrs_not_found = 1 country_not_found = 2 mwskz_not_defined = 3 mwskz_not_valid = 4 ktosl_not_found = 5 kalsm_not_found = 6 parameter_error = 7 knumh_not_found = 8 kschl_not_found = 9 unknown_error = 10 account_not_found = 11 txjcd_not_valid = 12 OTHERS = 13.
13 ноября 2018
Сумма прописью
Используется функциональный модуль SPELL_AMOUNT.
DATA: lv_p1(8) TYPE p VALUE '950', ls_words TYPE spell. CALL FUNCTION 'SPELL_AMOUNT' EXPORTING amount = lv_p1 * currency = ' ' * filler = ' ' language = 'R' IMPORTING in_words = ls_words EXCEPTIONS not_found = 1 too_large = 2 OTHERS = 3. IF sy-subrc EQ 0. " ls_words-word содержит сумму прописью ENDIF.
12 ноября 2018
Создание спецификации (BOM)
Пример использования BAPI_MATERIAL_BOM_GROUP_CREATE.
26 сентября 2018
Popup окно с выбором значения в виде таблицы ALV
Есть два (а может и больше) ФМа SRM_SELECTION_POPUP_WITH_ALV и REUSE_ALV_POPUP_TO_SELECT.
DATA: lt_tab TYPE TABLE OF rbkp_key, lv_selected_line TYPE i, lv_canceled TYPE srmboolean, ls_selfield TYPE slis_selfield, lv_exit. SELECT * FROM rbkp INTO CORRESPONDING FIELDS OF TABLE lt_tab WHERE bldat BETWEEN '20180901' AND '20181231'. CALL FUNCTION 'SRM_SELECTION_POPUP_WITH_ALV' EXPORTING im_title = 'Title' im_tabname = 'RBKP_KEY' im_startx = 5 im_stopx = 100 im_starty = 1 im_stopy = 10 IMPORTING ex_selected_line = lv_selected_line ex_canceled_by_user = lv_canceled CHANGING lt_outtab = lt_tab. " Or CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT' EXPORTING i_title = 'Это заголовок' * i_selection = 'X' * i_allow_no_selection = i_zebra = 'X' * i_screen_start_column = 0 * i_screen_start_line = 0 * i_screen_end_column = 0 * i_screen_end_line = 0 * i_checkbox_fieldname = * i_linemark_fieldname = * i_scroll_to_sel_line = 'X' i_tabname = '1' i_structure_name = 'RBKP_KEY' * it_fieldcat = * it_excluding = * i_callback_program = * i_callback_user_command = * is_private = IMPORTING es_selfield = ls_selfield e_exit = lv_exit TABLES t_outtab = lt_tab EXCEPTIONS program_error = 1 OTHERS = 2.
25 сентября 2018
Добавить ZZ-поле в отчет FBL1N
1. Добавить поле в структуры RFPOS (RFPOSX) через append-структуру.
2. Запустить программу RFPOSXEXTEND, чтобы сгенерировать необходимые структуры.
3. Для заполнения поля использовать BTE 00001650 "LINE ITEM DISPLAY: Add to Data per Line" (P/S Module) или BAdI "FI_ITEMS_CH_DATA".
2. Запустить программу RFPOSXEXTEND, чтобы сгенерировать необходимые структуры.
3. Для заполнения поля использовать BTE 00001650 "LINE ITEM DISPLAY: Add to Data per Line" (P/S Module) или BAdI "FI_ITEMS_CH_DATA".
27 августа 2018
Скрыть/показать элемент в PDF-формуляре
Скрыть/показать элемент в PDF-формуляре в зависимости от условия, пример кода (initialize, FormCalc, client):
if ($record.STRUCT_NAME.FIELD_NAME == "X") then $.presence = "hidden" endif
19 мая 2018
Как получить разрешение экрана
DATA: lo_consumer TYPE REF TO cl_gui_props_consumer, ls_metric_factors TYPE cntl_metric_factors. lo_consumer = cl_gui_props_consumer=>create_consumer( ). ls_metric_factors = lo_consumer->get_metric_factors( ). WRITE: ls_metric_factors-screen-x, ls_metric_factors-screen-y.
18 мая 2018
Как получить размер окна
DATA: lv_begin_row TYPE i, lv_begin_col TYPE i, lv_end_row TYPE i, lv_end_col TYPE i. CALL 'GET_WINDOW_DATA' ID 'BEGROW' FIELD lv_begin_row ID 'BEGCOL' FIELD lv_begin_col ID 'ENDROW' FIELD lv_end_row ID 'ENDCOL' FIELD lv_end_col. CALL SCREEN 0900 STARTING AT 5 1 ENDING AT lv_end_col lv_end_row.
14 февраля 2018
Изменить размер шрифта в поле в PDF-формуляре
Изменение размера шрифта в зависимости от длины поля, пример кода (FormCalc, client):
var ln = Len($.rawValue) if (ln > 150) then $.font.size = "7 pt" $.para.lineHeight = "7pt" endif
13 февраля 2018
12 февраля 2018
Класс для работы с символами
Класс CL_ABAP_CHAR_UTILITIES. В частности константа:
cl_abap_char_utilities=>cr_lf
09 февраля 2018
Средство поиска для файла, диалог открытия файла
Для открытия диалога выбора файла используем метод cl_gui_frontend_services=>file_open_dialog.
*&---------------------------------------------------------------------* *& Form F4_FILENAME *&---------------------------------------------------------------------* * File name search help *----------------------------------------------------------------------* FORM f4_filename CHANGING value(cv_filename). DATA: lt_filename TYPE filetable, ls_filename LIKE LINE OF lt_filename, lv_def_filename TYPE string, lv_file_filter TYPE string, lv_rc TYPE i. CLEAR cv_filename. CLEAR lv_def_filename. lv_file_filter = 'Excel-файлы (*.XLS;*.XLSX)|*.XLS;*.XLSX|'. CALL METHOD cl_gui_frontend_services=>file_open_dialog EXPORTING * default_extension = lv_def_extension " 'DBF' default_filename = lv_def_filename file_filter = lv_file_filter CHANGING file_table = lt_filename rc = lv_rc EXCEPTIONS file_open_dialog_failed = 1 cntl_error = 2 error_no_gui = 3 not_supported_by_gui = 4 OTHERS = 5. IF sy-subrc NE 0. ELSEIF lt_filename IS NOT INITIAL. READ TABLE lt_filename INTO ls_filename INDEX 1. cv_filename = ls_filename-filename. ENDIF. ENDFORM. " F4_FILENAME
08 февраля 2018
Транзакция для ракурса ведения
Имеем ракурс ведения ZVTEST01.
Идём в SE93, вводим код транзакции, нажимаем "Создать", вводим Краткий текст, выбираем тип "Транзакция с параметрами". Далее вводим транзакцию SM30, ставим галку "Пропустить первый экран", указываем параметры:
VIEWNAME = ZVTEST01
UPDATE = X
Идём в SE93, вводим код транзакции, нажимаем "Создать", вводим Краткий текст, выбираем тип "Транзакция с параметрами". Далее вводим транзакцию SM30, ставим галку "Пропустить первый экран", указываем параметры:
VIEWNAME = ZVTEST01
UPDATE = X
02 февраля 2018
Средство поиска со значениями из внутренней таблицы
Используем функциональный модуль F4IF_INT_TABLE_VALUE_REQUEST.
DATA: lt_tab1 TYPE TABLE OF ztab1, lt_return_tab TYPE TABLE OF ddshretval, ls_return_tab LIKE LINE OF lt_return_tab. SELECT * FROM ztab1 INTO TABLE lt_tab1. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING * ddic_structure = ' ' retfield = 'DOCTYPE' " for example * pvalkey = ' ' * dynpprog = ' ' * dynpnr = ' ' * dynprofield = ' ' * stepl = 0 * window_title = * value = ' ' value_org = 'S' * multiple_choice = ' ' * display = ' ' * callback_program = ' ' * callback_form = ' ' * callback_method = * mark_tab = * IMPORTING * user_reset = TABLES value_tab = lt_tab1 * field_tab = return_tab = lt_return_tab * dynpfld_mapping = EXCEPTIONS parameter_error = 1 no_values_found = 2 OTHERS = 3. IF sy-subrc EQ 0. READ TABLE lt_return_tab INTO ls_return_tab INDEX 1. IF sy-subrc EQ 0. " ls_return_tab-fieldval содержит выбранное значение ENDIF. ENDIF.
01 февраля 2018
Чтение значений домена
Для чтения значений домена используем функциональный модуль BKK_DOMAIN_TEXTS_READ.
DATA: lt_domain_text TYPE bkkdc_t_domain_text. CALL FUNCTION 'BKK_DOMAIN_TEXTS_READ' EXPORTING i_langu = sy-langu i_domname = 'ZDOMNAME' IMPORTING et_domain_text = lt_domain_text. " Внутренняя таблица lt_domain_text содержит значения домена
Подписаться на:
Сообщения (Atom)