Use strings for DB selections SAP ABAP Programming language

one day, while refactoring an old report, It came to create a dedicated method for a select to MARC in a dedicated DB access class. The selection is done using a select range for material numbers.
Until now, I always proceeded like this:
  • search a ready-made ranges type for the needed data type (there is RANGE_T_MATNR)
    • if not found, declare a ranges type myself
  • use the type for passing the selection range.
Now, depending on standard SAP DEV objects (be it function modules, classes, or DDIC types) always brings the slight danger of code crashes when something changes in the standard system. I also made already bad experience when trying to bring some home-made basic programming tools from ERP to other systems like APO or SCM. Many DDIC objects do not exist there.
So I thought of reducing the dependencies. What about a “range of string”? Will it work in a selection? I wasn’t really sure, so I gave it a try:
First, I defined the interface of my method using generic standard tables for the ranges:
  methods read_plant_materials
    importing plant          type string
              material_range type standard table
    returning value(result)  type string_table.
Then, I call the method with
  method test.
    data material_range type range of string.
    material_range          =
      value #(
        ( sign = 'I' option = 'CP' low = `00000000000002*` ) ).
    data(result) = iut->read_plant_materials(
      plant = `0001`
      material_range = material_range ).
  endmethod.
As you see, also the plant (usually I used the type WERKS_D) for it, is being passed as a string. Furthermore, I use a string table to capture the results of the selection.
The select itself looks pretty normal:
  method zif_pp62_db_access~read_plant_materials.
    select matnr
      from marc
      where matnr in @material_range and
            werks = @plant and
            lvorm = @space
      into table @result.
  endmethod.
The test passes with no problems.
What do you think about this approach? Am I causing maybe much cost for converting everything from and to strings? Let me know!
Please support my work

Comments

Popular posts from this blog

all user exit mv45afzz (implicit user exit )

How to Give Dropdown in alv report in sap abap programming Language

Long Text in input and output field in module pool