{"id":37470,"date":"2024-10-01T13:12:31","date_gmt":"2024-10-01T11:12:31","guid":{"rendered":"https:\/\/www.blue.works\/?p=37470"},"modified":"2025-10-22T15:13:10","modified_gmt":"2025-10-22T13:13:10","slug":"alm-coffee-party-vii-charm-fb-defect-correction","status":"publish","type":"post","link":"https:\/\/www.blue.works\/en\/alm-coffee-party-vii-charm-fb-defect-correction\/","title":{"rendered":"ALM Coffee Party VII: ChaRM &amp; Focused Build Defect Correction (S1TM)"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u201cHumans are creatures of habit\u201c<\/h2>\n\n\n\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Gustav_Freytag\">Gustav Freytag<\/a> already knew. When we get up, we always expect to find our slippers in the same place next to the bed, which we want to put on without looking. The consternation is great when the foot suddenly starts to flail around in the empty space. First annoyed, then panicking, we search barefoot for the slippers to finally discover the reason for their disappearance: The dog has kidnapped them and is now nibbling on them with relish.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">This is a blog, not a documentation!<\/h3>\n\n\n\n<p>And this is exactly what happens again and again with the Focused Build \u201c<em>Defect Correction<\/em>\u201d (DC) S1TM. Suddenly, the usual actions have disappeared. In a panic, the developer runs barefoot, so to speak, to the Focused Build and ChaRM expert and asks reproachfully what has broken again, why can&#8217;t the Defect Correction be set to \u201c<em>Successfully tested<\/em>\u201d as before, why are they being hindered in their work?<\/p>\n\n\n\n<p>But in reality, the lack of the actions is not a bug, but a feature. This behavior is even documented.<\/p>\n\n\n\n<p>Well, every time a developer reads documentation, a tree is saved in the Amazon &#8211; you can guess the frequency of this arcana here:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"341\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic02-1.jpg\" alt=\"\" class=\"wp-image-37471\" style=\"width:840px;height:auto\"\/><\/figure>\n\n\n\n<p><em>Ibama from Brasil, <\/em><a href=\"https:\/\/creativecommons.org\/licenses\/by\/2.0\"><em>CC BY 2.0, via Wikimedia Commons<\/em><\/a><em><\/em><\/p>\n\n\n\n<p>As this panic scene happens quite often, I would like to use this blog to help clarify the situation. As a blog is not a documentation, it will also be read by developers! Right?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">One-act play \u201cTesting is not always the same as testing\u201d<\/h2>\n\n\n\n<p>For the sake of simplicity, we show the diagram of a waterfall project. While the release is in the \u201c<em>Prepare<\/em>\u201d phase, testing takes place at work package (WP) level in the consolidation system (QA). These are the Single Functional Tests (SFT &#8211; according to the Focused Build Methodology, the developers themselves test the desired functionality) and the Acceptance Tests (AT).<\/p>\n\n\n\n<p>When Release Management flips the big switch (<em>Handover to release<\/em>), the entire release is moved on to the pre-production system. This is where the major integration and regression tests (FIT and RT) are carried out by business users. The aim is to prove to the business that the next release is consistent and correct in itself and that the release does not break any existing functionality.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1758\" height=\"825\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic03-2.png\" alt=\"\" class=\"wp-image-37473\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic03-2.png 1758w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic03-2-1024x481.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic03-2-768x360.png 768w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic03-2-1536x721.png 1536w\" sizes=\"(max-width: 1758px) 100vw, 1758px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Scene I: Business as usual<\/h3>\n\n\n\n<p>The project is in the lengthy implementation phase, the release has been in \u201cPrepare\u201d status for months and the development team is working intensively on implementing the requirements.<\/p>\n\n\n\n<p>The work items (WI) of a work package have been tested individually and found to be correct. Now the work package itself is tested (Single Functional Test, Acceptance Test).<\/p>\n\n\n\n<p>The work packages are tested in the QA system. If you now find an error that requires correction, you can no longer add another transport to the WI, as the WI no longer returns from the \u201c<em>Successfully Tested<\/em>\u201d status.<\/p>\n\n\n\n<p>No, you have to create a Defect Correction (DC) from the WP in order to receive a transport for the correction. The WP then switches to the \u201c<em>In Repair<\/em>\u201d status.<\/p>\n\n\n\n<p>For months, it has been possible to decide within the DC whether the error has been rectified or whether it is still present by routinely selecting the corresponding action from the \u201c<em>Action<\/em>\u201d button.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1367\" height=\"1217\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic04-2.png\" alt=\"\" class=\"wp-image-37481\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic04-2.png 1367w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic04-2-1024x912.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic04-2-768x684.png 768w\" sizes=\"(max-width: 1367px) 100vw, 1367px\" \/><\/figure>\n\n\n\n<p>If the correction is confirmed, the WP automatically returns to the \u201c<em>To Be Tested<\/em>\u201d status &#8211; hopefully for the last time.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1797\" height=\"930\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic05-1.png\" alt=\"\" class=\"wp-image-37477\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic05-1.png 1797w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic05-1-1024x530.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic05-1-768x397.png 768w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic05-1-1536x795.png 1536w\" sizes=\"(max-width: 1797px) 100vw, 1797px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Scene II: Oops, where are my slipp&#8230; &#8211; uh &#8211; actions?<\/h3>\n\n\n\n<p>The release finally reaches the important milestone of the end of development and Release Management sets the release to \u201c<em>Test<\/em>\u201d status. Test management steps into the limelight and starts the prepared test plans, whose test packages are processed by the assigned business experts, key users and testers.<\/p>\n\n\n\n<p>If they discover a defect, they must create a Focused Build Defect (S1DM) directly from the test step. If the development team decides during the processing of the defect that a correction is necessary to rectify the error, it creates the familiar defect correction from the defect, which offers new and modifiable transports for the corrections as before.<\/p>\n\n\n\n<p>When the defect correction is ready for testing, the hand automatically moves to the \u201c<em>Action<\/em>\u201d button to execute the test decision, but \u2013 scaring shock! &#8211; the \u201c<em>Action<\/em>\u201d button is suddenly empty! Defect Correction suddenly gives us the cold shoulder, even though the status is the same as always.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1361\" height=\"1224\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic06-1.png\" alt=\"\" class=\"wp-image-37479\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic06-1.png 1361w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic06-1-1024x921.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic06-1-768x691.png 768w\" sizes=\"(max-width: 1361px) 100vw, 1361px\" \/><\/figure>\n\n\n\n<p>If we had read the documentation referenced at the beginning (but real developers don&#8217;t read documentation!), we would know, after a bit of scrolling, that:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1473\" height=\"367\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic07-1.png\" alt=\"\" class=\"wp-image-37483\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic07-1.png 1473w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic07-1-1024x255.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic07-1-768x191.png 768w\" sizes=\"(max-width: 1473px) 100vw, 1473px\" \/><\/figure>\n\n\n\n<p>This means that the tester does not have to confirm the defect correction, but the upstream defect, as this is the only way to automatically release the defect correction from its \u201c<em>Transport to Retesting<\/em>\u201d status.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1815\" height=\"937\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic08-1.png\" alt=\"\" class=\"wp-image-37485\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic08-1.png 1815w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic08-1-1024x529.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic08-1-768x396.png 768w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic08-1-1536x793.png 1536w\" sizes=\"(max-width: 1815px) 100vw, 1815px\" \/><\/figure>\n\n\n\n<p>This deviating behavior of the Defect Correction S1TM, if it was generated from a test step via a defect, must be part of the <strong>training<\/strong> at the start of the test phase. This avoids unnecessary agitation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Backstage<\/h2>\n\n\n\n<p>Since this is a technical blog, I want to briefly show where this dazzling behavior of defect correction comes from.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">PPF action with conditions<\/h3>\n\n\n\n<p>Status changes are carried out in ChaRM (and Focused Build is a ChaRM with bells and whistles) using <a href=\"https:\/\/help.sap.com\/docs\/SAP_NETWEAVER_750\/76bbc1db07d74a32aa9041ad9b841185\/4d37a324102b1c86e10000000a42189b.html\">PPF actions<\/a> (Post Processing Framework).<\/p>\n\n\n\n<p>Let&#8217;s take a look at transaction <strong>CRMC_ACTION_DEF<\/strong> \u201c<em>Define action profile<\/em>\u201d to see one of the two actions that are offered when testing a DC, for example the PPF action \u201c<em>Confirm Defect Correction with Transport<\/em>\u201d:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1158\" height=\"876\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic09-1.png\" alt=\"\" class=\"wp-image-37487\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic09-1.png 1158w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic09-1-1024x775.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic09-1-768x581.png 768w\" sizes=\"(max-width: 1158px) 100vw, 1158px\" \/><\/figure>\n\n\n\n<p>This action sets the status <strong>S1TMHEAD E0012<\/strong> \u201c<em>Confirmed<\/em>\u201d when executed:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1283\" height=\"623\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic10-1.png\" alt=\"\" class=\"wp-image-37489\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic10-1.png 1283w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic10-1-1024x497.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic10-1-768x373.png 768w\" sizes=\"(max-width: 1283px) 100vw, 1283px\" \/><\/figure>\n\n\n\n<p>However, it is not enough for a PPF action to be defined, it must also be scheduled, otherwise it cannot be executed and will not be offered in the \u201c<em>Action<\/em>\u201d menu.<\/p>\n\n\n\n<p>Scheduling is set up with the very slow and cumbersome transaction <strong>CRMC_ACTION_CONF<\/strong> \u201c<em>Configure action profile<\/em>\u201d.<\/p>\n\n\n\n<p>This scheduling is usually linked to a scheduling condition:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1322\" height=\"164\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic11-2.png\" alt=\"\" class=\"wp-image-37493\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic11-2.png 1322w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic11-2-1024x127.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic11-2-768x95.png 768w\" sizes=\"(max-width: 1322px) 100vw, 1322px\" \/><\/figure>\n\n\n\n<p>Only when the condition is met does the action appear in the \u201c<em>Action<\/em>\u201d menu so that the user can select and execute it.<\/p>\n\n\n\n<p>This is what the scheduling condition looks like in the somewhat funny rule editor:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"829\" height=\"529\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic12-1.png\" alt=\"\" class=\"wp-image-37495\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic12-1.png 829w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic12-1-768x490.png 768w\" sizes=\"(max-width: 829px) 100vw, 829px\" \/><\/figure>\n\n\n\n<p>The action \u201c<em>Confirm Defect Correction with Transport<\/em>\u201d is only offered if the current status is <strong>S1TMHEAD E0004<\/strong> \u201c<em>Transport to Retesting<\/em>\u201d (<strong>++<\/strong> is a wildcard), the process is error-free <strong>and<\/strong> (!) the <strong>DOCUMENT_ASSIGNED<\/strong> parameter is not set! <strong>CONFIRM_ALLOWED<\/strong> is an additional conditional parameter.<\/p>\n\n\n\n<p>Most of the parameters in this parameter container that are evaluated in this condition originate from the currently active \u201c<em>Business Object<\/em>\u201d, in this case <strong>BUS2000116<\/strong> \u201c<strong><em>S<\/em><\/strong><em>ervice<\/em>\u201d. They can be recognized by the prefix \u201c<em>&amp;CRM Service Process.<\/em>\u201d. These are filled automatically at runtime.<\/p>\n\n\n\n<p>By the way, the \u201c<strong>S<\/strong>\u201d that automatically precedes the short description of the transport requests generated by the ChaRM\/FB originates from this \u201c<strong>S<\/strong>ervice\u201d.<\/p>\n\n\n\n<p>Further custom parameters can be defined, but you have to fill them in yourself using your own coding.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1758\" height=\"849\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic13-1.png\" alt=\"\" class=\"wp-image-37497\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic13-1.png 1758w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic13-1-1024x495.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic13-1-768x371.png 768w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic13-1-1536x742.png 1536w\" sizes=\"(max-width: 1758px) 100vw, 1758px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">The technology behind the conditions<\/h3>\n\n\n\n<p>This filling of your own additional parameters takes place in an implementation of the Business Add-In (BAdI) <strong>CONTAINER_PPF<\/strong>. Transaction <strong>SE18<\/strong> is responsible for maintaining BAdIs.<\/p>\n\n\n\n<p>Here is the crucial implementation of Focused Build (SE18 -&gt; Implementation menu -&gt; Overview):<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"926\" height=\"894\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic14-1.png\" alt=\"\" class=\"wp-image-37499\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic14-1.png 926w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic14-1-768x741.png 768w\" sizes=\"(max-width: 926px) 100vw, 926px\" \/><\/figure>\n\n\n\n<p>We are now entering the innermost part of the machine, namely the FB implementation:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1439\" height=\"595\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic15-1.png\" alt=\"\" class=\"wp-image-37501\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic15-1.png 1439w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic15-1-1024x423.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic15-1-768x318.png 768w\" sizes=\"(max-width: 1439px) 100vw, 1439px\" \/><\/figure>\n\n\n\n<p>The procedure is quite linear.<\/p>\n\n\n\n<p>If a certain parameter exists in the container that is evaluated by the scheduling condition, the corresponding method is called, which is kindly called the same and which determines the value of the parameter.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DOCUMENT_ASSIGNED()<\/strong> reads the direct relationship to a preceding document, and if a Defect S1DM is linked to the current process, &#8216;<em>X<\/em>&#8216; is entered as the value.<br>This means that the scheduling condition is <strong>not<\/strong> fulfilled. The action is therefore <strong>not<\/strong> offered. In other words: if the defect correction is a follow-up document of a defect, it cannot be confirmed directly.<\/li>\n\n\n\n<li><strong>CONFIRM_ALLOWED()<\/strong> closes a gap.<br>It goes backwards through the document flow chain recursively, and if a defect S1DM is found here, a blank is set, which means that the scheduling condition is not offered.<br>It is therefore not possible to cheat by switching another process type between the defect and the defect correction.<br>However, I wonder whether the automatic function still works, namely that the confirmation of the defect also confirms the defect correction. I consider this case to be extremely rare and have therefore not tried it out.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Epilogue<\/h2>\n\n\n\n<p>I hope I have shed enough light on the dazzling behavior of the Focused Build Defect Correction S1TM to clear up the confusion.<\/p>\n\n\n\n<p>Thanks for reading.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gustav Freytag already knew. When we get up, we always expect to find our slippers in the same place next to the bed, which we want to put on without looking. The consternation is great when the foot suddenly starts to flail around in the empty space. First annoyed, then panicking, we search barefoot for the slippers to finally discover the reason for their disappearance: The dog has kidnapped them and is now nibbling on them with relish.<\/p>\n","protected":false},"author":16,"featured_media":37755,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[351],"tags":[352],"class_list":["post-37470","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-alm-coffee-party-the-alm-magazine","tag-coffee-party"],"acf":[],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/10\/Pic01_full-1-scaled.jpg","_links":{"self":[{"href":"https:\/\/www.blue.works\/en\/wp-json\/wp\/v2\/posts\/37470","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blue.works\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blue.works\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blue.works\/en\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blue.works\/en\/wp-json\/wp\/v2\/comments?post=37470"}],"version-history":[{"count":5,"href":"https:\/\/www.blue.works\/en\/wp-json\/wp\/v2\/posts\/37470\/revisions"}],"predecessor-version":[{"id":43258,"href":"https:\/\/www.blue.works\/en\/wp-json\/wp\/v2\/posts\/37470\/revisions\/43258"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.blue.works\/en\/wp-json\/wp\/v2\/media\/37755"}],"wp:attachment":[{"href":"https:\/\/www.blue.works\/en\/wp-json\/wp\/v2\/media?parent=37470"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blue.works\/en\/wp-json\/wp\/v2\/categories?post=37470"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blue.works\/en\/wp-json\/wp\/v2\/tags?post=37470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}