Расширения в ведении таблиц – транзакция SM30

Как это нередко бывает в системе требуются собственные справочники.

Первым делом делается соответствующая таблица ZRATES в транзакции SE11, затем она заполняется данными и используется в нужных разработках (Z-программах, расширениях, средствах поиска и так далее).

Потом уже в связи с тем, что записи надо изменять, включать в перенос – создается ведение таблицы посредством генератора.

Однако рано или поздно надо её отдавать конечному пользователю, а так как проверок в SM30 практически никаких не делается, то вероятность ошибки имеется.

Даже в самой примитивной таблице-справочнике в стиле [код + название] можно делать логические ошибки – добавлять записи с одинаковыми названиями. Ключом понятное дело является Код, а проверка на уникальность стандартно делается только по ключу. Так как же запретить пользователю вводить неверные данные ?

(далее…)

Практика использования утверждений ASSERT

Стыдно признаться, но я не использую (но стремлюсь использовать) такие конструкции:

ASSERT [ [ID group [SUBKEY sub]]  [FIELDS dobj1 dobj2 …] CONDITION ] log_exp.

Вот пример простого использования:

assert  i_debet = i_kredit.

Смысл очень простой: если условие не срабатывает, то программа сразу выпадает в осадок – прерывание.

Во-первых, такие утверждения декларируют гарантированные предпосылки, иногда не совсем ясные из предшествующего кода. Можно сказать, что это часть документирования кода. Можно Assert, а можно просто комментарием обойтись.

(далее…)

Вернулся ко вкусным книгам

После много разного вернулся на вкусные книги.

Макс Фрай, Горе господина Гро.

1.

Моя должность в Тайном Сыске называется «Мастер Слышащий»; строго говоря, она была придумана специально для меня, с учетом моих склонностей и пожеланий. По сей день моя основная обязанность — знать, что происходит в столице. Смотреть, слушать, сопоставлять и анализировать факты, делать верные выводы, прогнозировать развитие ситуации и вмешиваться, когда сочту нужным. Сказать по правде, я всю жизнь занимался этим для собственного удовольствия, просто Джуффин дал мне возможность развернуться как следует. Он вообще великий мастер добиваться от людей максимальной отдачи; как я понимаю, его великий секрет состоит в том, чтобы требовать от каждого человека именно то, что он хочет делать — даже если сам об этом пока не догадывается.

2.

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

3.

— Когда вы говорили про короля Халлу Махуна, вы смеялись надо мной, — наконец сказал Хумха.

Вид у него при этом был обиженный донельзя; будь мне свойственно злорадство, я бы счел это зрелище упоительным, а так даже немного посочувствовал бедняге. Ведет себя как ребенок, и кажется, иначе просто не умеет.

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

4.

— Вот оно как, — Габа покачал головой. — А говорили совсем другое.

— Всегда говорят совсем другое, — ухмыльнулся я. — На то и дан людям язык, чтобы искажать факты. А голова — чтобы извлекать из груды вранья крупицы правды и с их помощью восстанавливать объективную картину.

— Иногда ты рассуждаешь как разумный человек, — уважительно заметил призрак моего отца.

Я сразу же начал думать, что сказал глупость — если уж Хумха одобряет. Такая у меня с ранних лет сложилась привычка: сверять свои слова и дела с отцовским мнением. И никогда, ни при каких обстоятельствах не повторять высказывания и поступки, заслужившие его похвалу.

5.

– Интересно, да? – спросил я. – Об одном ребенке из этой милой компании мы уже имеем кое-какое представление. Девочка, которая за три с лишним дюжины лет не повзрослела ни на год. Чей любящий дедушка-знахарь якобы тщетно пытается ее вылечить, при этом наотрез отказывается от помощи коллег, да и возможность колдовать вволю в подвалах Семилистника не вызвала у него особого энтузиазма. Удивительная картина. Я-то думал, что неплохо знаю Габу Гро.

– Человек, – неожиданно мягко сказал Джуффин, – величина переменная. Когда кто-то все время поворачивается к нам одним и тем же боком, мы начинаем думать, будто неплохо его знаем. А однажды он внезапно развернется и – оп! – превратится в таинственного незнакомца. Если бы люди при этом еще и облик изменяли, как вы, Кофа, насколько было бы проще… Ну что вы так на меня смотрите? Да, я говорю банальности. Правда чаще всего выглядит именно как банальность. Никто никого не знает, Кофа. Некоторые очень старые и мудрые люди неплохо знают самих себя, и даже это, на мой взгляд, грандиозное достижение, все бы так.

6.

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

Я вышел в сад – специально ради удовольствия прогуляться до калитки по дорожке из мелких желтых камней, вдохнуть аромат осенних цветов, увядающей травы и дыма соседских костров. Все-таки нелепо устроена наша жизнь: довольно глупо быть хозяином такого роскошного сада или старинного дома, построенного прямо на мосту через Хурон, и не иметь времени этим наслаждаться. Мы с Джуффином вполне могли бы уступить свои великолепные апартаменты каким-нибудь счастливым бездельникам и довольствоваться темным чуланом на задворках Управления Полного Порядка, да хоть одним на двоих – какая разница, где жить, если появляешься дома только для того, чтобы упасть и уснуть, да и то не каждый день. А леди Рани, как я понимаю, жилье теперь и вовсе без надобности. Хотел бы я все-таки знать, каково оно – на Темной Стороне? Что там вообще есть, кроме “рваного ветра”? Хоть бы рассказали по-человечески, если уж с собой взять не могут…

Вот за это я люблю читать Макса Фрая.  Вкусный текст. Интересные и добрые истории. Может быть одни из самых добрых, особенно учитывая и не смотря на количество описываемых и упоминаемых смертей. Детективного рода интрига. Приятные персонажи. Фантасмагоричные декорации и концепция мира.

Кроме текста можно отметить сбалансрованность музыкальной подложки. Музыкальные переходы сопровождают смену декораций и не портят повествование. Чтец практикует смену голоса под разных персонажей, хотя это и не всем нравится. Попадание принципиально имеется, и как минимум помогает разделять персонажей в диалогах.

Тест на религиозность. Текущее состояние

Наиболее подходящая религия

  • Агностицизм: 100%Вы — агностик. Агностики не верят в бога (богов), но при этом не отрицают, что бог или боги существуют. Многие считают агностицизм одной из веток атеизма, хотя не все агностики любят, когда их называют атеистами. Вполне очевидно, что не все атеисты являются агностиками (в частности, агностиками не являются так называемые «позитивные атеисты», которые утверждают, что бога не существует). Агностики полагают, что существование или несуществование бога не может быть доказано.

    Остальные показатели

  • Сатанизм: 92%
  • Язычество: 89%
  • Атеизм: 88%
  • Буддизм: 68%
  • Ислам: 56%
  • Пастафарианство: 54%
  • Иудаизм: 47%
  • Индуизм: 34%
  • Христианство: 23%

>>> А вы тест можете пройти тут <<<

Постскриптум

Да, тест шуточный.  Само наличие в списке пастафарианства делает тест очень несерьёзным (предельно несерьёзная религия).

Да и сатанизм тут не есть общепринятое «поклонение злу», а скорее представляется объединением антикатолического протеста и пути левой руки.  Сатанизм по убеждениям и без ритуалов — скорее предельно серьёзная религия.

Однако, в каждой шутке доля шутки.

 

Тест на неверие. Текущее состояние

Тест определил, что наиболее близким для вас типажом является:
Духовный атеист: 100%
Самые классные люди во Вселенной — это духовные атеисты. Большинство из них не были воспитаны в религиозных семьях или сообществах. Они концентрируются на том, чтобы сделать мир лучше. Они понимают, что смерть — это просто одна из составляющих жизни. Что будет после смерти — будет после нее. Поживем-увидим.

Остальные типажи:

Апатеист (равнодушный атеист): 92%

Ммммм…. Да какая разница? Апатеисты предпочитают не верить, поскольку верить сложнее, чем не верить. Зачем вводить лишние сущности, знаете ли. Это люди, которые, скорее всего, не будут спорить о религии, даже если поп будет махать кадилом прямо перед их носом, поскольку спор на тему религии — это лишние телодвижения, которые того не стоят. Лучше мануал почитать какой-то, что ли.

Агностик: 92%

Агностики серьезно рассматривают возможность того, что они неправы в своем решении относительно существования или несуществования бога. Они скептичны до умопомрачения, при этом чаще всего не смеют полностью отбрасывать даже самые нелепые доказательства.

Научный атеист: 92%

Научные атеисты — классные ребята! Они знают правила спора, они знают законы термодинамики и могут четко объяснить теорию эволюции за пять минут. Их больше интересует, как устроен мир, а не каким он должен быть. Скорее всего, это самый перспективный типаж людей, у которого — большое будущее.

Озлобленный атеист: 67%

Теист: 33%

Воинствующий атеист: 17%

>>> Пройти тест можно тут <<<

Блокада и Этногенез

Вот решил послушать типа как первую книгу цикла Блокада в серии Этногенез.

Сначала о литературной составляющей. Вот несколько фрагментов из первой главы:

— Можете идти, — нетерпеливо сказала женщина. — За-
втра представите рапорт.
Шефер полез наружу, впустив в пропахший духами салон
«Майбаха» немного дождливой свежести.

Если бы Шефер присутствовал при этой сцене, он бы очень
удивился. Потому что на реплику женщины отреагировал
бритый шарфюрер СС Фрицци, которому полагалось играть
роль бессловесного сторожевого пса.
— Почему, Мария?
Шефер удивился бы еще больше, увидев, что женщина охот-
но отвечает своему псу, имеющему наглость называть ее по
имени.

— Что будем делать, Мария? — спросил Фрицци. Если бы
опытный криминалькомиссар слышал, с какой интонацией
задан этот вопрос, он окончательно убедился бы, что женщи-
ну и ее охранника связывают не только служебные отноше-
ния.

Меня с самого начала зацепила шелуха в повествовании. Какое отношение имеет мелькнувший предварительно Шефер к происходящему диалогу? Просто наполнитель. Кошачий наполнитель. Для сами знаете какой цели. И так можно потыкать пальцами в разные части книги. А настоящей целью каждой фразы нормальной книги должно быть не наполнение страницы буквами, а нечто другое. Фразы, Образы, Ощущения, Концепции – в этой книге практически отсутствуют.

Первая глава закончилась, некий эпизод был продемонстрирован. Начинается вторая глава, с другими героями, продемонстрирован плохо связанный второй эпизод, потом третья глава с другими героями. Потом четвёртая… В одной из последних глав повествование почему-то ведётся уже от первого лица, чего в прошлых главах не наблюдалось… Как связаны эти герои и эпизоды между собой – вообще не сильно понятно (хотя о направлении можно вполне догадаться собственными силами). И похоже такая тенденция сохранится на протяжении всей серии. Какое отношение имеет Блокада к данной книге рассказано парой фраз. И как мы можем догадаться (если включим логику и предвидение), именно события в Ленинграде будут кульминировать где-то в третьей другой части книги.

Получается, что в разрезе любой другой нормальной книги вся данная книга целиком ушла в Экспозицию, и потом разбавлена Шелухой для придания объёма [Экспозиция – Завязка – Кульминация – Развязка – Финал]. Вот и будет пять книг в серии. Тьфу.

И ещё я не уловил один факт. Как называется эта книга, то ли “Взгляд орла”, то ли “Охота на монстра”. Так или иначе название понтовое и бессмысленное.

Так или иначе Кирилл Бенедиктов в качестве автора меня расстроил.

Ориентировочная направленность на аудиторию скорее всего представлена подростками лет шестнадцати, скорее всего мужского пола. Тем не менее и им, и остальным книгу бы не рекомендовал совсем. Скорее всего главным фактором тут является “клиповость” книги.

Аудио-материал как оказалось тоже не ахти. Вот музыкальная подложка неплохо подобрана и  сбалансирована по громкости, но вот чтец…

Во-первых, чтец подшёптывает. Это не есть плохо. Но.

Во-вторых, криворукие звукоделы что-то сделали со звуком, особенно в части голоса чтеца. Я не подкован в теоретической части по звукоделию, но жужжащие, шипящие, свистящие да и прочие согласные начинают резать ухо. Звук плоский как доска с заусенцами. Полагаю, можно было сделать лучше.

Есть одно ощущение, что предложенный на сайте исходник в битрейте 128к с дискретизацией 44100гц был перегнан из 32к/22500гц.

Другое ощущение говорит, что очень тихий голос они подвышали по уровню (возможно чтоб свести с высоким уровнем музыки).  Не смотря на то, что уровень по голосу не превышен, эффект перегрузки по уровню сделал своё черное дело.

Итоговые оценки – неудовлетворительные.

Удаление дубликатов во внутренней таблице

В такой строке кода нет ничего удивительного:

delete adjacent duplicates from lt_table.

Здесь всё просто и понятно. Дубликаты удаляются, уникальные записи остаются.

Однако если попытаться с помощью добавки comparing удалять дубликаты только по нужным полям, то есть свои тонкости:

delete adjacent duplicates from lt_bseg comparing lifnr zuonr.

Тонкость первая: Дубликаты могут и не совсем удалиться. Удаление будет происходить только в сортированной последовательности. Таким образом результат будет слабопредсказуемым. То есть из последовательности А-А-Б-Б-А-А будет создана последовательность А-Б-А.

Тонкость вторая: Дубликаты удаляются после первого совпадения. Таким образом во внутренней таблице будет оставлено именно первое совпадение.

Следовательно вместо вышеуказанного примера кода всегда следует писать примерно так:

sort lt_bseg by lifnr zuonr zfbdt.
delete adjacent duplicates from lt_bseg comparing lifnr zuonr.

Больше полей в операторе SORT даёт большую предсказуемость и адекватность результата. Добавка сортировки по дате (ZFBDT) уточняет, что останется самая ранняя (первая) запись из всех .

Массовое изменение счетов в OB_GLACC12

Кое-что об основных счетах главной книги я уже говорил (тут: https://entropii.net/?p=317), а теперь поподробнее расскажу о массовом изменении счетов.

Счета массово можно изменить в транзакциях OB_GLACC11/12/13.

В качестве примера могу предложить задачу такую: расставить флаг “Просмотр отдельных позиций” на всех счетах, где он не стоит. Произошёл у меня такой “прокол”. Оказывается, что именно поэтому может не существовать строка проводки в таблице BSIS – раньше с таким не сталкивался.

(далее…)

SAPGui 7.20 – что нового ?

Вот недавно вышла обновлённая версия (предыдущая была 7.10). Из новенького меня в первую очередь заинтересовала возможность группировать соединения в SAPLogon. Поэтому обновился. Обновление прошло успешно без заминок. Пишут вот так:

What’s new in 7.20:

  • Support for MS Windows 7 operating system & MS Office 2010 package
  • SAP Logon: Hierarchical organization of items in an explorer‐like view and a tree‐like view
  • SAP Logon: An administrator can define a central saplogon.ini which can be merged into the local user specific saplogon.ini
  • Options Dialog: Almost all options have been merged into a new user friendly dialog that replaces Tweak SAP GUI and the old options dialog
  • Security Enhancements: A set of maintainable security rules have been defined which allow administrators and users to prevent unwanted access to the client PCs from SAP systems
  • Animated Focus Frame: Improved visualization of the focus and its movement across the screen
  • High Contrast Theme for SAP Signature Design: Improved visual design for users with visual impairments, based on the successful SAP Signature Design
  • Better organization of local data: Downloaded files, traces, scripts and other local objects are stored in different folders (roaming and local) according to Windows standards

(далее…)

Кое-что о настройке SPRO (часть 2) – упрощение доступа

Вот а теперь речь пойдёт об упрощенном доступе к ветвям SPRO, в том числе и к собственным.

Первая часть лежит тут: Кое-что о настройке SPRO (часть 1) – расширение SPRO и добавление собственных таблиц

(далее…)