Blog and News

September 9, 2016 All, Blog, News, SAP

Software Asset Management on SCN

SAM logo, 70PrcntBill Rojas from SAP Digital recently posted a blog on the SAP Community Network (SCN) about Software Asset Management. See what he has to say here.

August 21, 2016 All, Blog, News, SAP

Software Asset Management now on SAP Store

SAP Store logo We’re ecxited about Software Asset Management having been included on SAP Store – SAP’s platform to discover, download & buy SAP solutions, services & free trials from SAP & partners. Beautifully presented by SAP!

Want to download? Do it right here.
August 2, 2016 All, News

RBG selected as internship partner for iXperience

iXperience_logo

iXperience

iXperience is a summer career accelerator in Cape Town, South Africa, that caters to top students from universities around the world. iX teaches students practical, in-demand skills in a unique and immersive learning environment. The program features an intensive four-week course followed by a four-week internship at an influential company, with thrilling and cultural excursions along the way.

RBG was chosen as one of the internship companies for the 2016 summer holidays. We accommodated to date six interns for development and user experience and are glad and proud to support them to get a feel of their chosen career path.

Read more about the internship and what the interns had to say at: iXperience RBG Internship 2016

April 15, 2016 All, News, SAP

Software Asset Management achieves certification

SAPCerti_Business_Process_Outsourcing_CG10_C_r_p

 

RBG Applications solution has certified integration with SAP NetWeaver® on SAP HANA®

Software Asset Management Achieves Certification

With SAP NetWeaver® Running on SAP HANA®

CAPE TOWN, South Africa — April 11, 2016 — RBG Applications today announced that its Software Asset Management solution version 0.8.1 has achieved SAP-certified integration with the SAP NetWeaver® technology platform running on the SAP HANA® platform. The solution has been proven to interoperate with SAP NetWeaver running on SAP HANA, providing optimized management of bespoke software assets.

The SAP® Integration and Certification Center (SAP ICC) has certified that Software Asset Management 0.8.1 integrates with SAP NetWeaver using standard integration technologies to support customers in better managing their software development lifecycle.

“We are delighted to announce that Software Asset Management has certified integration with SAP NetWeaver running on SAP HANA,” said Christian Hasselbach, solution architect at RBG Applications. “The ability of Software Asset Management to interoperate with SAP NetWeaver powered by SAP HANA will prove highly beneficial to our current and future customers.”

During the course of IT projects and in continuous improvement thereafter, substantial capital expenditure is made for development of bespoke software solutions. The purpose of Software Asset Management is to help ensure a transparent, well-documented outcome of bespoke software development and in that way, to protect the investment made. Software Asset Management will help orchestrate business, project managers, functional consultants, team leads, testers, application support and technical resources in such way that supportable and maintainable software is produced on time.
Software Asset Management extends SAP Solution Manager for application lifecycle management in that it focuses on technical objects that are the outcome of bespoke software development rather than on processes surrounding the build process (ChaRM). In Software Asset Management, technical objects are contextualized to allow for best possible maintenance and continuous improvement during their life cycle.

About RBG Applications

RBG Applications is a boutique software development firm. We implement cloud-based and on-premise solutions for innovative applications with a focus on mobile user experience.

SAP, SAP NetWeaver, SAP HANA and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP SE (or an SAP affiliate company) in Germany and other countries. See http://www.sap.com/corporate-en/legal/copyright/index.epx for additional trademark information and notices.
All other product and service names mentioned herein are the trademarks of their respective owners.

For more information:
Please drop us an e-mail to info@rbgapps.com

May 1, 2015 All, Blog, SAP

Taming function module RFC_READ_TABLE

I recently wanted to write a report that would compare data between different systems (e.g. customizing or transactional data). I found the function module “RFC_READ_TABLE”, which delivers data from other systems. The where-clause, which can easily be passed into the options parameter, is essential, especially when comparing transactional data, as one does not want to have all of the data returned in one call for performance reasons.

I soon stumbled upon a limitation. This standard function module does not properly support packed fields and everything was out. I was checking the internet and found this nice SDN thread, which describes a solution. However, it does not include enough detail. After playing around a bit, I think I have tamed the beast.

There were a couple of issues, mainly the one that the length of the fields differs accordingly to their type and the offset to know where to start looking for the next needed to consider the length as well.

  DATA lt_where    TYPE rsds_where_tab.               “ where clause for selection
  DATA lt_nametab1 TYPE STANDARD TABLE OF rfc_db_fld. “ will be left blank
  DATA lt_raw_tab  TYPE TABLE OF veri_raw.            “ buffer table with raw data
  DATA lt_field    TYPE TABLE OF x031l.               “ field description
  DATA lv_x        TYPE xstring.
  DATA lv_str      TYPE string.
  DATA lv_char     TYPE char2048.
  DATA lv_offset   TYPE roffset.
  DATA lv_length   TYPE outlength.

  FIELD-SYMBOLS <ls_raw_line> TYPE veri_raw.
  FIELD-SYMBOL <fld>          TYPE any.
  FIELD-SYMBOL <fld_tar>      TYPE any.

* Get raw data from a different system
  CALL FUNCTION RFC_READ_TABLE' DESTINATION p_dest
    EXPORTING
      query_table = p_tabnam
    TABLES
      options     = lt_where
      fields      = lt_nametab1
      data        = lt_raw_tab
    EXCEPTIONS
      others      = 7.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE 'I'.
    ENDIF.

*   Get table description e.g. from target system or current system, here current system is sufficent
    lv_tabnam = p_tabnam.
    CALL FUNCTION 'DD_GET_NAMETAB'
      EXPORTING
        tabname   = lv_tabnam
        get_all   = 'X'
      TABLES
        x031l_tab = lt_field
      EXCEPTIONS
        others    = 0.

*   Loop over the raw data needs to be done because packed fields are giving hassles
    LOOP AT lt_raw_tab ASSIGNING <ls_raw_line>.

*     get the string for the raw data
      lv_x = <ls_raw_line>.
      CALL FUNCTION 'HR_RU_CONVERT_HEX_TO_STRING'
        EXPORTING
          xstring = lv_x
        IMPORTING
          cstring = lv_str.

*     Move to character string
      lv_char = lv_str.

*     Clear some variables
      CLEAR <line2>.
      CLEAR lv_offset.

*     Loop over each field of the table
      LOOP AT lt_field ASSIGNING <field>.

*       Assign the target field
        ASSIGN COMPONENT <field>-fieldname OF STRUCTURE <line> TO <fld_tar>. “ <line> is a fieldsymbol which is assigned to a structure corresponding to the table

*       Determine the length of the field accordingly to type
        IF <field>-exid eq 'P'.         “packed field
          lv_length = <field>-digits.
        ELSEIF <field>-exid eq 'b'.     “integer field
          lv_length = <field>-exlength.
        ELSE.
          lv_length = <field>-dblength.
        ENDIF.

        IF lv_length EQ 0. “don’t processes if length is zero e.g. include description
          continue.
        ENDIF.

*       Get the field value
        ASSIGN lv_char+lv_offset(lv_length) TO <fld>.

*       Assign to target field
        <fld_tar> = <fld>.
*       Adjust length for next field
        ADD lv_length TO lv_offset.

      ENDLOOP.

*     Append line to compare table
      APPEND <line> TO <tab>.

    ENDLOOP.

Please note: The function module itself does an authority check and from my perspective it is the responsibility of the developer and administrator to ensure that the RFC destinations are set up properly, so that a logon is enforced. Otherwise this function module can be abused to read data from a system where the user is not supposed to poke around…