Pull to refresh

Comments 25

UFO just landed and posted this here
О вкусах можно спорить бесконечно.
Я предпочитаю попроще

На ваших скриншотах меня больше беспокоят две вещи:
1. У вас пропадает много вертикального места. Я всегда стараюсь его экономить.
У моих пользователей не такие большие мониторы. К тому же если они работают в браузере, то это дополнительно ещё съедает вертикальное пространство.

2. Вы используете прямое указание цветов непосредственно в коде.
Но сотрудники могут использовать разные темы оформления SAP GUI, в том числе и цветовые вариации. И не факт как эти варианты лягут на дизайн вашего отчета. Это вы ещё не видели новый SAP GUI и SAP GUI for HTML. Именно поэтому внутри ABAP нет цветов как таковых, цвета определяет клиент, а не сервер.

Иван, буду благодарен, если напишите, как регулировать высоту HTML-заголовка. Как-то смотрел, ничего не нашел и забил. Если параметров не много, можно и сузить, а если много расширить. А так авто-высота.

По второму пункту согласен, надо подумать, что с этим можно сделать, пока в голову не приходило.
Насчет высоты: У меня нет готового ответа. Надо экспериментировать, смотреть исходники самого ALV и обёрток, которые вы используете (видимо REUSE_ALV_GRID_DISPLAY_LVC).
Навскидку:
Высота рассчитывается внутри.
Логика у него внутри скорее всего простая (потому что высота регулируется внутри абапа, а у него нет встроенного браузера с линейкой).
ШТМЛ который вы генерируете содержит неожиданные ходы, которая его логика не предусматривает

Варианты:
  • Находите код, который считает высоту, делаете выводы
  • С самого начала пишете свой враппер на ALV, с вашей логикой, блэкджеком и комбобоксами
  • Экспериментально подсовывая разный ШТМЛ выясняете что на него влияет
  • Смотрите какой ШТМЛ по факту делают стандартные реализации, например через cl_salv_form_layout_grid, сравниваете со своим

По коду.
Между макросами (define) и любой формой модуляризации кода (подпрограммы, функции, методы) лежит пропасть. Когда-то я давно думал, что макросы — удобный способ не писать слова PERFORM и USING, или какие-то ещё. Это не так.
Вы уверены, что вы действительно хотите ходить такими путями?
Да макрос удобен. Только не надо в него заворачивать слишком сложные конструкции.

Вот например код, смотрится органично, на мой взгляд
  DEFINE calc_1milliage.
    perform calc_one_milliage
         using
           <fs_data>-equnr
           &1
         changing
           &2
           &3.
    add_line: &1 &2 &3.
  END-OF-DEFINITION.

    IF lv_read EQ 'X'.
      READ TABLE st_s835 WITH KEY sernr = <fs_data>-equnr
                                  sptag = <fs_data>-gstrp.
      IF sy-subrc IS INITIAL.
        <fs_data>-treml = st_s835-treml.
        <fs_data>-tacml = st_s835-tacml.
      ELSE.
        calc_1milliage: <fs_data>-gstrp <fs_data>-treml <fs_data>-tacml.
      ENDIF.
    ELSE.
      calc_1milliage: <fs_data>-gstrp <fs_data>-treml <fs_data>-tacml.
    ENDIF.

..

    IF lv_read EQ 'X'.
      READ TABLE st_s835 WITH KEY sernr = <fs_data>-equnr
                                  sptag = <fs_data>-dtnrp.
      IF sy-subrc IS INITIAL.
        <fs_data>-tacpp  = st_s835-tacml.
      ELSE.
        calc_1milliage: <fs_data>-dtnrp lv_treml <fs_data>-tacpp.
      ENDIF.
    ELSE.
      calc_1milliage: <fs_data>-dtnrp lv_treml <fs_data>-tacpp.
    ENDIF.

Или например очень удобно
METHOD set_col_names .

    DATA lr_columns TYPE REF TO cl_salv_columns.
    DATA: lr_column TYPE REF TO cl_salv_column.

    lr_columns = gr_rep->get_columns( ).
    lr_columns->set_optimize( abap_true ).

* Установим тексты

    set_names: 'SERNR'  'Вагон'      'Вагон'          'Номер вагона'.
    set_names: 'SELEC'  'Выбор'      'Выбор'          'Выбор'.
    set_names: 'ICON'   'Статус'     'Статус'         'Статус'.
... А ведь колонок быть может быть очень много ))
ENDMETHOD.
...
DEFINE set_names.

      try.
          lr_column = lr_columns->get_column( &1 ).
          lr_column->set_short_text( &2 ).
          lr_column->set_medium_text( &3 ).
          lr_column->set_long_text( &4 ).
        catch cx_salv_not_found.
      endtry.

END-OF-DEFINITION.




Надо пользоваться только без фанатизма, как и во всем
Даа, вы тот еще извращенец…
ABAP — язык бизнес-логики, для красивостей лучше смотреть в сторону bsp, webdynpro или sapui5.

Хотя, что это я? Сам на прошлой неделе верстал html-письма на нем-родимом :)
Да-да, месье знает толк в извращениях
раздутыйкакиндюкабапер mode on*

Куски html/css/шаблоны я храню в SO10 текстах — так проще потом править.
Ваш набор css/html можно было просто загнать в текст и заменой placeholder'ов подставить нужные значения.

Смесь переводимых текстов (параметры отчета) и непероводимых (th) в одном значении — это фу.

Объявление переменных в теле кода, а не в начале — фу (тут так принято). Тогда уж лучше использовать inline объявление, если версия позволяет.

раздутыйкакиндюкабапер mode off*

Не оценивайте мое брюзжание как критику. Дерзайте. Учитесь. Делитесь опытом.

Про SO10 не думал, возможно вариант, но редактирую не часто, сделал CSS-стиль и забыл
Вообще css/html — не большой спец, поэтому тут надо добавлять)
А я бы не стал SO10 использовать, оно зависит от языка, в контексте это не факт. Его потом ещё и переносить надо. SMW0 предпочтительней, это объекты разработки на общих условиях.
Я все равно за SO10.
* Многоязычность — то, что надо, так как работаю в многоязычных системах.
* Текст можно поменять прямо в заблокированном для изменений продуктиве при необходимости (не будем спорить на тему безопасность против удобства). Я пишу код, а уж что там функциональщик занесет — его дело.
UFO just landed and posted this here
Очень образно, но не совсем понятно, в чем особенность современного понимания бизнес-логики, и чем для этого не годится ABAP.
UFO just landed and posted this here
UFO just landed and posted this here
Ваш личный неудачный опыт работы с SAP не является отсутствием оперативной методологической поддержки.
UFO just landed and posted this here
Я — консультант.

Ваш термин Оперативная методологическая поддержка слишком расплывчат и под него отлично подходит поддержка со стороны SAP.
Да — это не миф, да — я с нии работал, да — они помогают. Не совсем доволен их скоростью работы — но об этом уже написал.

По поводу 80-90% — это так. Так просто намного дешевле. А разве 1С сами всегда все внедряют и подерживают?

И опять повторю свой вопрос. Какое отношение имеют ваши претензии к вендору к языку программирования?
Хм… Наверное, я давно не работал с 1С. Во времена семерки тоже ничего не появлялось автоматом — приходили мальчики/девочки и накатывали обновления/пилили конфигурацию. В этом смысле просто те же самые аналитики бегали в бухгалтерию.

Не кажется ли вам, что слишком частые чихи госорганов не являются недостатком программного комплекса, и уж тем более языка программирования. Держите также в уме, что 1C работает исключительно на российский рынок с его реалиями, а SAP — на мировой, и российский далеко не является приоритетным. Это к тому, что на ежедневные чихи каждого ведомства разных государств реагировать сложнее.

Ну это то, что касается программного комплекса, а то, что касается именно языка — не увидел ни одного аргумента.
Я бы на вашем месте занимался экспериментами над таблицами в UI5 (sap.ui.table.Table, sap.ui.table.AnalyticalTable) и соответсвующей обвязкой oData и т.п… Альзо, макросы большой не-не и вызывают дикую боль при отладке старых программ. ФМники и перформы уже тоже не советуют использовать, вместо них лучше писать классы и методы (п.с. говорю с колокольники стандарта и гайдлайнов официальных. Другое дело — легаси).
Совсем не понимаю подобных решений, коих видел уже десятки в разных интерпретациях, кое-где даже вместо стандартного экрана выбора умельцы ваяли ужасную смесь в виде языка разметки и бизнес-логики, что в итоге выливалась как головная боль для сопровождения.
Sign up to leave a comment.

Articles