DEV Community

SUGGU SANDEEP
SUGGU SANDEEP

Posted on

SAP ABAP | Report On Scenario

SAP ABAP
Scenario:
Image description

If clicking on First Radio Button,
Table name should be pass in parameter
The Fields Should display related to table

  • Table Name
  • Field Name
  • Data Element
  • Value Table

If clicking on Second Radio Button,
Structure name should be pass in parameter
The Fields Should display related to table

  • Table Name
  • Field Name
  • Data Element
  • Value Table

If clicking on Third Radio Button,
Two Parameters should be there, the first parameter should given table/structure name, second parameter should be field name related to first parameter field (table/structure), Then Fields Should display related to table

  • Table Name
  • Field Name
  • Data Element
  • Value Table

Validations:

  • Passing Of Wrong parameter data, should throw an message
  • Leaving Blank & execute, should throw an message

ABAP Concepts Need To use:

  • RTTS

- ALV

Building Of Report

Note:
I Used 8 Includes:

First INCLUDE: Z_DATA.
(Defining Parameters, Data & Field Symbol)

PARAMETERS: p_rb1 RADIOBUTTON GROUP rg DEFAULT 'X' USER-COMMAND rbg,
            p_rb2 RADIOBUTTON GROUP rg,
            p_rb3 RADIOBUTTON GROUP rg.

PARAMETERS: p_var3 TYPE dd03l-tabname MODIF ID rb1,
            p_var4 TYPE dd02l-tabname MODIF ID rb2.


TYPES: BEGIN OF ty_dd03l,
         tabname   TYPE dd03l-tabname,
         fieldname TYPE dd03l-fieldname,
         rollname  TYPE dd03l-rollname,    "Data element
         entitytab TYPE dd04l-entitytab,   "Value table
       END OF ty_dd03l,

       BEGIN OF ty_dd04l,
         rolname   TYPE dd04l-rollname,
         entitytab TYPE dd04l-entitytab,
       END OF ty_dd04l.


DATA: gt_dd03l TYPE STANDARD TABLE OF ty_dd03l,
      gt_dd04l TYPE STANDARD TABLE OF ty_dd04l.

DATA: lo_temp_table      TYPE REF TO cl_abap_tabledescr,
      lo_ty_struct       TYPE REF TO cl_abap_structdescr,
      lo_ref_final_table TYPE REF TO data.


FIELD-SYMBOLS: <fs_table> TYPE ANY TABLE.
Enter fullscreen mode Exit fullscreen mode

Second INCLUDE: ZRB_OPE.
(Radio Button Logic (AT SELECTION-SCREEN OUTPUT))

AT SELECTION-SCREEN OUTPUT.

  LOOP AT SCREEN.

    IF p_rb1 IS NOT INITIAL.
      IF screen-group1 EQ 'RB2'.
        screen-active = 0.
        IF screen-group1 EQ 'RB1'.
          screen-active = 1.
        ENDIF.
      ENDIF.

    ELSEIF p_rb2 IS NOT INITIAL.
      IF screen-group1 EQ 'RB2'.
        screen-active = 0.
        IF screen-group1 EQ 'RB1'.
          screen-active = 1.
        ENDIF.
      ENDIF.

    ELSEIF p_rb3 IS NOT INITIAL.
      IF screen-group1 EQ 'RB1'.
        screen-active = 1.
        IF screen-group1 EQ 'RB2'.
          screen-active = 1.
        ENDIF.
      ENDIF.
    ENDIF.

    MODIFY SCREEN.

  ENDLOOP.
Enter fullscreen mode Exit fullscreen mode

Third INCLUDE: ZDATA_RTTS_OPE.
(RTTS - Defining Operation of Data (START-OF-SELECTION))

START-OF-SELECTION.

  lo_temp_table =
  CAST cl_abap_tabledescr(
       cl_abap_tabledescr=>describe_by_data( p_data = gt_dd03l  )
       ).

  lo_ty_struct ?= lo_temp_table->get_table_line_type( ).

  DATA(p_table_comp) = lo_ty_struct->get_components( ).

  CREATE DATA lo_ref_final_table TYPE HANDLE lo_temp_table.

  ASSIGN lo_ref_final_table->* TO <fs_table>.
Enter fullscreen mode Exit fullscreen mode

Fourth INCLUDE: ZCL_DEF_RB_TOPE.
(Assigning Class Definition)

CLASS cl_main DEFINITION.

  PUBLIC SECTION.
    METHODS: lm_table,
             lm_structure,
             lm_field.

ENDCLASS.
Enter fullscreen mode Exit fullscreen mode

Fifth INCLUDE: ZCL_IMP_TB..
(Radio Button 01 - Table Operation)

CLASS cl_main IMPLEMENTATION.

  METHOD lm_table.

    IF p_rb1 = abap_true.
      IF p_var3 IS INITIAL.
        MESSAGE ID 'zso_msg' TYPE 'I' NUMBER '001'.
      ELSE.

        SELECT * FROM dd02l INTO TABLE @DATA(gt_temp2) WHERE tabname = @p_var3 AND tabclass = 'TRANSP'.

        IF sy-subrc = 0.

          SELECT dd03l~tabname,
                 dd03l~fieldname,
                 dd03l~rollname,
                 dd04l~entitytab
            INTO TABLE @<fs_table>
            FROM dd03l INNER JOIN dd04l
            ON dd03l~rollname = dd04l~rollname
               WHERE tabname = @p_var3.

          LOOP AT gt_dd03l ASSIGNING FIELD-SYMBOL(<fs_abc3>).
            IF <fs_abc3>-entitytab IS INITIAL.
              <fs_abc3>-entitytab = 'N/A'.
            ENDIF.
          ENDLOOP.

          TRY.
              CALL METHOD cl_salv_table=>factory
                IMPORTING
                  r_salv_table = DATA(lo_alv)
                CHANGING
                  t_table      = <fs_table>.

            CATCH cx_salv_msg INTO DATA(lo_exception).

              DATA(lv_msg)  = lo_exception->get_text( ).

          ENDTRY.

          lo_alv->display( ).

        ELSE.

          MESSAGE 'Input is not valid' TYPE 'S' DISPLAY LIKE 'E'.

        ENDIF.
      ENDIF.
    ENDIF.
  ENDMETHOD.
Enter fullscreen mode Exit fullscreen mode

Sixth INCLUDE: ZCL_IMP_STR.
(Radio Button 02 - Structure Operation)

METHOD lm_structure.

    IF p_rb2 = abap_true.

      IF p_var3 IS INITIAL.
        MESSAGE 'Structure Name Is Required' TYPE 'S' DISPLAY LIKE 'E'.

      ELSE.
        SELECT * FROM dd02l INTO TABLE @DATA(gt_temp2) WHERE tabname = @p_var3 AND tabclass = 'INTTAB'.
        IF sy-subrc = 0.
          SELECT dd03l~tabname,dd03l~fieldname,dd03l~rollname,dd04l~entitytab
            INTO TABLE @gt_dd03l
            FROM dd03l INNER JOIN dd04l
            ON dd03l~rollname = dd04l~rollname
               WHERE tabname = @p_var3.
          LOOP AT gt_dd03l ASSIGNING FIELD-SYMBOL(<fs_abc1>).
            IF <fs_abc1>-entitytab IS INITIAL.
              <fs_abc1>-entitytab = 'N/A'.
            ENDIF.
          ENDLOOP.


          TRY.
              CALL METHOD cl_salv_table=>factory
                IMPORTING
                  r_salv_table = DATA(lo_alv)
                CHANGING
                  t_table      = gt_dd03l.
            CATCH cx_salv_msg INTO DATA(lo_exception).
              DATA(lv_msg)  = lo_exception->get_text( ).
          ENDTRY.

          lo_alv->display( ).

        ELSE.

          MESSAGE 'Input is not valid' TYPE 'S' DISPLAY LIKE 'E'.

        ENDIF.
      ENDIF.
    ENDIF.
  ENDMETHOD.
Enter fullscreen mode Exit fullscreen mode

Seventh INCLUDE: ZCL_IMP_TB_ST_FD.
(Radio Button 03 - Table/Structure + Field Operation)

METHOD lm_field.

    IF p_rb3 = abap_true.

      IF p_var3 IS INITIAL.
        MESSAGE 'Table/Strucure Name is required' TYPE 'S' DISPLAY LIKE 'E'.
      ELSEIF p_var4 IS INITIAL.
        MESSAGE 'Field is required related to Table/Strucure' TYPE 'S' DISPLAY LIKE 'E'.

      ELSE.
        SELECT * FROM dd03l INTO TABLE @DATA(gt_data) WHERE tabname = @p_var3 AND fieldname = @p_var4.
        IF sy-subrc = 0.
          SELECT dd03l~tabname,dd03l~fieldname,dd03l~rollname,dd04l~entitytab
          INTO  TABLE @gt_dd03l
          FROM dd03l INNER JOIN dd04l
          ON dd03l~rollname = dd04l~rollname
             WHERE tabname = @p_var3 AND fieldname = @p_var4.
          LOOP AT gt_dd03l ASSIGNING FIELD-SYMBOL(<fs_abc2>).
            IF <fs_abc2>-entitytab IS INITIAL.
              <fs_abc2>-entitytab = 'N/A'.
            ENDIF.
          ENDLOOP.

          TRY.
              CALL METHOD cl_salv_table=>factory
                IMPORTING
                  r_salv_table = DATA(lo_alv)
                CHANGING
                  t_table      = gt_dd03l.

            CATCH cx_salv_msg INTO DATA(lo_exception).

              DATA(lv_msg)  = lo_exception->get_text( ).

          ENDTRY.

          lo_alv->display( ).

        ELSE.
          MESSAGE 'Input is not valid' TYPE 'S' DISPLAY LIKE 'E'.
        ENDIF.

      ENDIF.
    ENDIF.
  ENDMETHOD.

ENDCLASS.
Enter fullscreen mode Exit fullscreen mode

Eigth INCLUDE: ZCL_OP.
(Class Implementation Result O/P Data (START-OF-SELECTION))

START-OF-SELECTION.
  DATA(lo_rttc) = NEW cl_main( ).
  lo_rttc->lm_table( ).
  lo_rttc->lm_structure( ).
  lo_rttc->lm_field( ).
Enter fullscreen mode Exit fullscreen mode

Report Output Execution
Image description
Image description

Image description
Image description

Image description
Image description


Validation - Execution
Image description
Image description
Image description


Thank You :)

Top comments (0)