OOPS ABAP: Usual ABAP Class(Local Class Creation using Static method)

Static Methods: 

The static methods are declared  using the keyword CLASS-METHODS and called with the class with out creating the object with the operator (=>).

Example:


REPORT zvb_static_cls.

TYPESBEGIN OF ty_vbak,
         vbeln TYPE vbak-vbeln,
         erdat TYPE vbak-erdat,
         erzet TYPE vbak-erzet,
       END OF ty_vbak,
       BEGIN OF ty_vbap,
         vbeln TYPE vbap-vbeln,
         posnr TYPE vbap-posnr,
       END OF ty_vbap,
       BEGIN OF ty_final,
         vbeln TYPE vbak-vbeln,
         erdat TYPE vbak-erdat,
         erzet TYPE vbak-erzet,
         posnr TYPE vbap-posnr,
       END OF ty_final.

DATA:it_vbak  TYPE TABLE OF ty_vbak,
     is_vbak  TYPE ty_vbak,
     it_vbap  TYPE TABLE OF ty_vbap,
     is_vbap  TYPE ty_vbap,
     it_final TYPE TABLE OF ty_final,
     is_final TYPE ty_final.

PARAMETERS p_vbeln TYPE vbak-vbeln.

CLASS class1 DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS display IMPORTING  p_vbeln  TYPE vbeln_va
                          EXPORTING  it_final TYPE ztt_so
                          EXCEPTIONS wrong_input.
ENDCLASS.
CLASS class1 IMPLEMENTATION.
  METHOD display.
    SELECT vbeln erdat erzet
      FROM vbak
      INTO TABLE it_vbak
      WHERE vbeln p_vbeln.

    IF it_vbak IS NOT INITIAL.
      SELECT vbeln posnr
        FROM vbap
        INTO TABLE it_vbap
        FOR ALL ENTRIES IN it_vbak
        WHERE vbeln it_vbak-vbeln.
    ENDIF.

    LOOP AT it_vbap INTO is_vbap.
      is_final-vbeln is_vbap-vbeln.
      is_final-posnr is_vbap-posnr.
      READ TABLE it_vbak INTO is_vbak WITH KEY vbeln is_vbap-vbeln.
      is_final-erdat is_vbak-erdat.
      is_final-erzet is_vbak-erzet.
      APPEND is_final TO it_final.
    ENDLOOP.
    IF sy-subrc <> 0.
      RAISE wrong_input.
    ENDIF.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
*  DATA:lo_object TYPE REF TO class1.
*  CREATE OBJECT lo_object.
*  CALL METHOD lo_object->display
  class1=>display( EXPORTING
                      p_vbeln  p_vbeln
                   IMPORTING
                      it_final it_final ).

  IF it_final IS NOT INITIAL.
    LOOP AT it_final INTO is_final.
      WRITE/ is_final-vbeln,
       10 is_final-posnr,
       30 is_final-erdat,
       50 is_final-erzet.
    ENDLOOP.
  ELSE.
    MESSAGE 'No data available for the input' TYPE 'E'.
  ENDIF.

Comments

Popular posts from this blog

CDS Views: Table Functions with Example

Passing Dynamic Variables to SO10 TEXT

Adobe Form/PDF Form Introduction