1st ABAP Championship has started! Check here the challenge you must solve and don’t lose time to participate!

Introduction

On June 30th 2011, Flavio Furlan and I created the project ABAP 101 Tic-Tac-Toe in SAP Code Exchange. This didactic project aims to teach and incentive ABAP 101 programmers (Junior Programmers) to contribute on ABAP Open Source projects.

Can you guess? The challenge of the championship is based on this project. So, who could follow the blog before the championship and got interested by the project might have a short advantage. However if you don’t know the project, don’t worry: you’ll have enough time to study it and solve the proposed challenge.

The Challenge

Check out the video below which I explain everything you need to know in order to start solving the challenge. The video was recorded in English so everybody can understand.

 

If the video doesn’t load above, click here to watch it in YouTube.

Links mentioned in the video

       

Download the Project

In order to download the project, it’s just necessary to join project ABAP101 Tic Tac Toe in Code Exchange – this will grant you access to more information regarding it and the possibility to know others competitors. You can also download the project clicking here, for that you need to share or tweet about the championship. As soon you do so, you’ll be redirected for the download page.

  

Delivery Date & Registration

As said in the 1st ABAP Championship - Rules, you must create your class and register yourself until November 20th at 10:59p.m. (GMT 0).

One of the steps in registration it to insert a comment in this post containing your name or nickname, your contry of birth and the name of your class(es). Read the rules for more details about how to register.

Remember!

Remember that this is a great opportunity to learn ABAP and know other people. Don’t lose time to build your class!!!

Also, stay tuned in ABAP101.com channels to don’t lose bonus content!!!

Good luck to everybody!!!

1st ABAP Championship is almost there!

You're in time to participate!!!

Before launching the challenge (and I promise this is the last post before it), let's clarify the rules of the championship. Any doubt, criticism, suggestion etc please do it commenting. All points will be read and evaluated and one or more rules might be changed if necessary.If you don't know the 1st ABAP Championship, read the previous posts below:

Objective

The objective of the championship is to motivate ABAP learning in a different way and give visibility for those who strive themselves and/or do a good job. This competition is being launched at ABAP101.com blog AND here at SDN. Both sites will have the same information, one in portuguese and this one in English. 

The Challenge

An ABAP project will be provided using a .NUGG file (SAPLink extension) together with some other files like .txt and .jpg. This project will contain

  • 1 WebDynpro Component
  • 1 Global Interface
  • 17 Global Classes (5 tipical classes and 12 exception classes)
  • 4 Domains
  • 7 Data Elements
  • 2 Structures
  • 1 Transparent Table
  • 4 Images in JPG format

The championship will consist in the creation of one (or more) custom classes (ZCL*) which will need to follow some rules. None of the objects which will be provided can be changed. The custom class to be created is the only piece of code which will be done by the competitor and it cannot violate data encapsulation from other classes using Field-symbols or similar techniques. The proposal of this class and its details will be provided at the same time the championship starts (in the next post about the championship). You can create more than one class with different algorithms if you want so you can have more chances to win the competition.

Bonus Material

Other SAP objects and any kind of content like videos, images and texts called “Bonus” can be provided during the competition. This special content can help you to create a more powerful class which in turn can have more chances to win the competition. This kind of content DOESN’T aim to alleviate competitor’s effort and will only be useful if and only if studied carefully. SAP bonus objects also cannot be modified and will only be used as a study base.

These bonus content can be provided during any time during the competition, at any ABAP101 channel (Blog, Blogroll, Twitter, Facebook, Newsletter). Stay tuned in our channels to don’t lose anything.

Bonus content won’t be provided exclusively for any participant, but it will always be public shared. If a participant ask for in contacting ABAP101 members it will be disqualified at the same time.

Doubts and Problems during the competition

No doubts can be sent directly to ABAP101 members. Any kind of doubt or problem must be done in format of comment in the next post which will launch the challenge. If necessary, a FAQ will be provided. All doubts sent will be evaluated and answered under ABAP101 members judgment, in such a way to don’t benefic any participant or to simplify the problem.

Registration

The registration for the championship is free of charge and will be completed after doing these two steps:
  1. Comment in the post which will launch the challenge containing (it’s NOT this post): UPDATE: you can check the post 1st ABAP Championship has started!
    • Competitor’s Name/Nickname
    • Country of Birth
    • Name of all custom classes created (minimum of one)
  2. Delivery of the custom class by email following all instructions explained in the next section respecting the delivery date stipulated.
Important: the registration will be considered completed after doing BOTH of the steps above. So, to register and participate in the competition you’ll have to complete the challenge which will be given.

Custom Class Delivery Rules

In order to have your registration completed, beyond the mandatory comment inside the post which will launch the champtionship, it’s mandatory the delivery of your custom class by email in .nugg or .slnk format (SAPLink files) to blogabap101 [at] gmail.com

The email must have the following characteristics:

Subject: ABAP Championship-[Country of Birth]-[Name/Nickname]¹

Body:

***

Class #1: [Custom Class Name]

(optional) Class #2: [Custom Class Name]

(optional) Class #n: [Custom Class Name]

***

DON’t forget the attachments, which must be .nugg and/or .slnk files of the classes mentioned in the email body.

¹ Participant’s name or nickname and country of birth must be the same provided in the blog comment previously mentioned.

² No kind of check will be done with the classes sent by email (syntax check, code inspector etc). Please ensure your class is syntactically correct before sending it. If the class sent is syntactically incorrect or be the root cause of any DUMP during the game, it will be disqualified.

As soon your comment and email are validated, you’ll receive and answer by email acknowledging your registration.

Clashes

The class of a competitor will clash with others participant’s classes until there is winner. Each clash will have 4 round and in case of draw, the winner class will be the one with a faster response time based on a benchmark test. All clashes will be recorded and provided.

The clashes will be decided by a raffle and a list with all clashes will be provided after the end of the challenge. Once the due date for the registration expired and your registration was acknowledged, just hope for the good performance of your class and stay tuned in ABAP101 or at my SDN blog to follow the results.

Dates

  • Registration (time to solve the challenge and register) - Between November 10th and November 20th at 10:59p.m (GMT 0)
  • Publication of Clashes – November 22nd
  • Execution of Clashes - Between November 23rd and November 27th
  • Winner Announcement  - November 28th

Awards

The developer of the winner class:
  • Will have a special post written by me here at SDN and also in ABAP101.com explaining the logic used together with my complete feedback. The post will mention the winner and all credits for the code will be given to his or her. If desired, the winner can participate in the post.
  • Will be announced in ABAP101 Newsletter
  • Will have its class uploaded and highlighted in a project at SAP Code Exchange.
I hope everybody is prepared for the competition and looking forward its start.Wait for the next post and comment is desired!

Hello everyone,

As many might already know, ABAP101.com blog is lauching its 1st ABAP Championship. (1st ABAP Championship - Get ready!)

In this weblog, you'll find everything you need to know to start the competition in 100 m/s. So let's Warm-up!

What should I install?

ABAP AS Trial (Also know as "MiniSAP")

One of the objectives of the championship is to allow you to pratice ABAP using a very particular way. Obviously, I suggest you to use a trial version of the ABAP AS during the competition instead the servers of the company you work for ;-)

Flavio Furlan (creator of ABAP101.com blog) made a very good video showing the installation of the Trial version. Check it out.

SAPLink

When the competition start, a set of SAP objects will be provided in .nugg file(s). It will be mandatory to have SAPLink installed to be able to import them to your AS. You can check its documentation here in SDN and check Flavio's post in ABAP101 about it.

 

What should I study?

Object-oriented Programming

Basically, you will need to code one class which implements an interface which will also be provided. If you don't know what this means exactly, study Object-oriented Programming using ABAP Objects as much you can. Moreover,  you class will need to follow some prerequisites to allow it to be qualified for the competition. Despite the fact of these prerequisites will be very simple, their fundamentals are very important and need to be understood. 

Reading ABAP Help for command CREATE OBJECT can help you a lot if read through and through. Not forgetting that ABAP101 blog have a special category for ABAP Objects. You can check it before the competition begin.

ABAP Units

Know how to interpret, create and execute unit testing using ABAP Units can bring you a very big advantage for the competition. Having such knowledge, will also help you to create programs with more quality in the company you work for.

ABAP101 have two amazing examples for its use. Check Calculator example and practice what you learned using Jan-Ken-Pon game. (Jan-Ken-Pon is one of the many good games avaiable in ABAP Games project in Code Exchange).

 

If you have any question regargin the warming-up stage, don't forget to comment, ok ;-)?

Stay tuned. Soon we will publish championship rules.

That's right! The brazilian blog ABAP101 is launching its first ABAP Championship. And you can participate of it coding at your home, with your ABAP AS Trial. 

For sure, this is a BIG opportunity to:

  • Learn/Practice ABAP programming
  • Work under pressure
  • Study and use code of other people
  • Learn and see a lot of WebDynpro 4 ABAP, ABAP Objects, ABAP Units and much more
  • Attain global visibility

Without a shadow of a doubt, who is just starting to learn ABAP or those who have more experience, will have many reasons to join the championship! Don't let this opportunity get away!

Wanna know how to participate?

Stay tunned in my weblog here on SDN, or in ABAP101.com. In the next few days, we are going to publish more details as rules, deadlines and so on.

Tell your coworkers, friends, students, instructors! Tell everybody! As many people participate, bigger and more challenging will be the championship.

If you have any doubt related with this initiative, please comment.

Also, follow @ABAP101 in twitter and like our page in Facebook.

Hold on! Irrespective if you are an ABAPer (like me) or not, you didn't read the title of this blog post wrongly. I would like to share with all of you a reflection I'm having for days and I'm sure that your opinion about it might be totally different than all the ones I'm hoping to have in the comments section.

 

As a ABAPer, usually when you receive a functional specification, the work done to understand the business requirement and propose a high level technical solution is already done (or should be). Who creates the specification, should have both business and technical understanding to be able to link both different worlds. But whither does technical solution should go in such cases? I'm not talking about things like "the more the better". I'm talking about ABAP knowledge limits for the ones who are not ABAPers.

 

First, apart from being a connection, what is the most common case in SAP market: a functional being a functional or a technical who becomes a functional (and as a consequence have a technical background)?

 

I've heard from many ABAPers in a variety of ways that functionals should know how to perform things like: debugging, database selection, object orientation and so on. And what about functionals' opinion? Do they think that all these things are really necessary or there is a single responsibility of ABAPers?

 

Do you think ABAP knowledge for a non ABAPers can be valuable to perform their jobs? Will this result in a better specification or generate any other positive result?

 

It's very clear that ABAPers should have knowledge in SAP modules. It's very rare to find a ABAP position which will just have technical prerequisites. Is the opposite true? Should it be?

 

In my opinion a functional should know ABAP's power but not it's details. If a Google Map would generate value in a program to be created, the responsible for creating the specification should know that ABAP can do that! A non ABAP should also know that a module pool with two screens can take 10x more time to be built then two reports which call each other.

 

But what do you think? Should a non ABAPer know how to debug for example? I prepared a short list of skills which can be in scope of non ABAPers or not. I'd like from you to give your thoughts about them.

  • Debug
  • Database Selection
  • Procedural x ABAP Objects
  • Definition of DDIC Objects Structures
  • Developments Estimatives
  • How to find enhancements
  • How to interpret ABAP Help
  • How to interpret BAPI's behavior
  • Define specifications without an ABAPer help.

 

Beyond this list, what other technical skills do you think a non ABAPer should be able to do? Why? Which are just good to have? Please, don't forget to say if you are a ABAPer or not in the comments.

Thanks for reading!

At Class to handle Selection Screens. No more LOOP AT SCREEN i showed a way to avoid the use of LOOP AT SCREEN in ABAP programs for the fact that it is often difficult to understand and maintain.

I'd like to thank everyone who gave feedbacks, specially  Karol Seman  who had the initiative to create a project at Google Code to enhance the class i started. The project is now called "Screen Breaker" and everyone who wants to take part of this is very welcome.

 To find out more about "Screen Breaker" and get it last version click here

 See you next time! 

 

Hello SDNers. This is my first post and i hope you enjoy it.

First of all, have you ever spent a considering (and boring) time when developing the screen logic of a simple report? If yes, this post is for you handle selection screen easily.

 

 

Handle selection screens using "LOOP AT SCREEN" statement can be very boring and consume some time when developing and maintaining such logic. I developed a simple class which helped me a lot in handling selection screens events like changing the input, visibility or others attributes from parameters and select-options 

 

I will explain how it works using a simple example. We are supposed to create a report which has 2 radio buttons and some additional parameters and select-options. When selecting the first radio button (or the first option), the fields which correspond to this option should be ready for input, and the others which correspond to the other options should be not be ready for input. The same logic applies when selecting the second radio button: the fields for this option must change it status for input ready and the others not.

 

Imagine the situations: there are a lot of fields which must change theirs status when selecting the available radio buttons or the number of radio buttons (options) probably will increase with the time or even worst: the selection screen should follow a crazy logic where not only the input status of parameters and selection options should be changed but also the others attributes basically contained in global structure "SCREEN" (required, color, 3D display, invisible and so on).

 

You can solve this problem using a simple "LOOP AT SCREEN" statement which might be very confusing  and boring to develop and mainly maintaining it. So, a global class (here called "ZCL_DYNPRO_HANDLER") can solve this error prone situation.

 

The objects created using this class will represent a single configuration of the screen at a given moment. The methods from the class will change the attributes (contained in global structure "SCREEN") of parameters and selection-options.

 

 

At the beginning of the report we'll create the configuration of ours different objects (which will represent a given status of selection screen). After this step, it's only necessary to apply these configurations when necessary. As in our example there are two options for the user  (represented with radio buttons), two objects must be created.

 

Below is the report from our example and after it the global class with some methods to change some fields' attributes.

 

 

  -




REPORT  z_dynpro_report.

DATA: l_o_screen_configuration_1 TYPE REF TO zcl_dynpro_handler,

l_o_screen_configuration_2 TYPE REF TO zcl_dynpro_handler.

DATA: v_carrid TYPE scarr-carrid.

PARAMETERS: r_opt_1 RADIOBUTTON GROUP opt USER-COMMAND option_selected.

PARAMETERS: p_carrid TYPE scarr-carrid.

PARAMETERS: r_opt_2 RADIOBUTTON GROUP opt.

SELECT-OPTIONS: s_carrid FOR v_carrid.

 

INITIALIZATION.

  " The initial state of selection screen is loaded (just as the screen is declared)

  CREATE OBJECT:

  l_o_screen_configuration_1 TYPE zcl_dynpro_handler,

  l_o_screen_configuration_2 TYPE zcl_dynpro_handler.

 

  " Configuration of screen state 1

  CALL METHOD l_o_screen_configuration_1->set_input

    EXPORTING

      im_field_name = 'P_CARRID'

      im_input_mode = abap_true.

 

  CALL METHOD l_o_screen_configuration_1->set_input

    EXPORTING

      im_field_name = 'S_CARRID-LOW'

      im_input_mode = abap_false.

 

  CALL METHOD l_o_screen_configuration_1->set_input

    EXPORTING

     im_field_name = 'S_CARRID-HIGH'

      im_input_mode = abap_false.

 

  " Configuration of screen state 2

  CALL METHOD l_o_screen_configuration_2->set_input

    EXPORTING

      im_field_name = 'P_CARRID'

      im_input_mode = abap_false.

 

  CALL METHOD l_o_screen_configuration_2->set_input

    EXPORTING

      im_field_name = 'S_CARRID-LOW'

      im_input_mode = abap_true.

 

  CALL METHOD l_o_screen_configuration_2->set_input

    EXPORTING

      im_field_name = 'S_CARRID-HIGH'

      im_input_mode = abap_true.

 

" Default configuration

  CALL METHOD l_o_screen_configuration_1->commit_screen.

 

AT SELECTION-SCREEN OUTPUT.

  IF r_opt_1 = 'X'.

    " Apply configuration 1

    CALL METHOD l_o_screen_configuration_1->commit_screen.

  ENDIF.

 

  IF r_opt_2 = 'X'.

    " Apply configuration 2

    CALL METHOD l_o_screen_configuration_2->commit_screen.

  ENDIF.

 

START-OF-SELECTION.

  " Here the important part which you will need to worry...

 

h2.  ZCL_DYNPRO_HANDLER Class

 

 

 *************************************************************************</p><p> Class attributes. *

 

 ************************************************************************</p><p>Instantiation: Public</p><p>Message class: </p><p>State: Implemented</p><p>Final Indicator: X</p><p>R/3 Release: 700</p><p>************************************************************************</p><p> Public section of class. </p><p>*************************************************************************

 

class ZCL_DYNPRO_HANDLER definition

   public

   final

   create public .

 

 

 " public components of class ZCL_DYNPRO_HANDLER

 

 " do not include other source files here!!

 public section.

  

  methods COMMIT_SCREEN .

   methods CONSTRUCTOR .

   type-pools ABAP .

   methods SET_DISPLAY_3D

     importing

       value(IM_FIELD_NAME) type STRING

       value(IM_DISPLAY_3D) type ABAP_BOOL default ABAP_TRUE .

 

  methods SET_INPUT

     importing

      value(IM_FIELD_NAME) type STRING

       IM_INPUT_MODE type ABAP_BOOL default ABAP_TRUE .

 

  methods SET_INVISIBLE

     importing

       IM_FIELD_NAME type STRING

       IM_INVISIBLE type ABAP_BOOL default ABAP_TRUE .

 

  methods SET_OUTPUT

     importing

       value(IM_FIELD_NAME) type STRING

       value(IM_OUTPUT) type ABAP_BOOL default ABAP_TRUE .

 

  methods SET_REQUIRED

     importing

       IM_REQUIRED type ABAP_BOOL default ABAP_TRUE

       value(IM_FIELD_NAME) type STRING

     preferred parameter IM_REQUIRED .

  

**************************************************************************

 * Private section of class. *

 

 *************************************************************************</p><p>"* private components of class ZCL_DYNPRO_HANDLER

 

 " do not include other source files here!!