Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
com/wiki/display/ABAP/ABAP+Objects++Interface+In+Local+Class+-+Real+Time+Example
start of metadata
*&--------------------------------------------------------------------*
*& Report ZOOPS_INTERFACE
*&
*&--------------------------------------------------------------------*
*&
*&
*&--------------------------------------------------------------------*
REPORT ZOOPS_INTERFACE.
TYPE-POOLS : abap.
*----------------------------------------------------------------------
*
* INTERFACE longtext
*---------------------------------------------------------------------*
* Interface for Long text for Transaction
*---------------------------------------------------------------------*
INTERFACE lif_longtext.
TYPES : BEGIN OF ty_textid,
tdspras TYPE spras,
tdobject TYPE tdobject,
tdid TYPE tdid,
tdtext TYPE tdtext,
END OF ty_textid.
DATA : lt_textid TYPE STANDARD TABLE OF ty_textid,
ls_textid TYPE ty_textid.
** Methods for Text ID information & Long text data **
METHODS : get_textid,
get_text IMPORTING value(text_object) TYPE tdobject
value(text_id) TYPE tdid
EXPORTING tlines TYPE tline_t.
ENDINTERFACE. "longtext
*---------------------------------------------------------------------*
* CLASS lcl_so_header DEFINITION
*---------------------------------------------------------------------*
* Class Definition for Sales Order Header **
*---------------------------------------------------------------------*
CLASS lcl_so_header DEFINITION.
PUBLIC SECTION.
DATA : ls_vbak TYPE vbak,
lt_ttxern TYPE STANDARD TABLE OF ttxern.
INTERFACES lif_longtext.
** Aliases for Interface components **
ALIASES : lt_textid FOR lif_longtext~lt_textid,
ls_textid FOR lif_longtext~ls_textid.
METHODS : constructor IMPORTING value(order_no) TYPE vbeln
EXCEPTIONS not_found,
get_textid_doc IMPORTING value(text_object) TYPE tdobject
value(text_group) TYPE txtob
EXPORTING textid_tab LIKE lt_ttxern.
PROTECTED SECTION.
DATA : ls_tvak TYPE tvak,
lt_tlines TYPE tline_t,
ls_tlines TYPE tline,
lv_name TYPE tdobname.
METHODS : print_data IMPORTING reference(text_lines) TYPE tline_t
reference(text_id) TYPE tdid.
ENDCLASS. "lcl_so_header DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_so_header IMPLEMENTATION
*---------------------------------------------------------------------*
* Class Implementation for Sales Order Header **
*---------------------------------------------------------------------*
CLASS lcl_so_header IMPLEMENTATION.
** Constructor method for Order Header data **
METHOD constructor.
CLEAR : ls_vbak.
SELECT SINGLE * FROM vbak
INTO ls_vbak
WHERE vbeln = order_no.
IF sy-subrc NE 0.
RAISE not_found.
ENDIF.
ENDMETHOD. "constrcutor
** Method to get text-id's assinged to Order type based on
Configuration **
METHOD get_textid_doc.
CLEAR : ls_tvak.
REFRESH : lt_ttxern.
SELECT SINGLE * FROM tvak
INTO ls_tvak
WHERE auart = ls_vbak-auart.
IF sy-subrc EQ 0.
SELECT * FROM ttxern
INTO TABLE lt_ttxern
WHERE tdobject = text_object
AND txtob = text_group
AND txtgr = ls_tvak-txtgr.
APPEND LINES OF lt_ttxern TO textid_tab.
ENDIF.
ENDMETHOD. "lif_longtext~get_texit_doc
** Inteface method for extracting Text-id list for Object Type **
METHOD lif_longtext~get_textid.
SELECT tdspras tdobject tdid tdtext FROM ttxit
INTO TABLE lt_textid
WHERE tdspras = sy-langu
AND tdobject = 'VBBK'.
ENDMETHOD. "lif_longtext~get_textid
** Inteface method for extracting Long text for Object type/Text id **
METHOD lif_longtext~get_text.
REFRESH : lt_tlines.
MOVE me->ls_vbak-vbeln TO me->lv_name.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = text_id
language = sy-langu
name = me->lv_name
object = text_object
TABLES
lines = lt_tlines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc EQ 0.
me->print_data( EXPORTING text_lines = lt_tlines
text_id = text_id ).
ENDIF.
ENDMETHOD. "lif_longtext~get_text
** Protected Method to Print Long text data **
METHOD print_data.
WRITE :/ 'Order Number : ', ls_vbak-vbeln.
WRITE :/ 'Long text for Text Id : ',text_id.
WRITE :/ '---------------------------------'.
LOOP AT lt_tlines INTO ls_tlines.
WRITE :/ ls_tlines-tdline.
ENDLOOP.
ENDMETHOD. "print_data
ENDCLASS. "lcl_so_header IMPLEMENTATION
*---------------------------------------------------------------------*
* CLASS lcl_po_header DEFINITION
*---------------------------------------------------------------------*
*---------------------------------------------------------------------*
CLASS lcl_po_header DEFINITION.
PUBLIC SECTION.
INTERFACES lif_longtext.
** Aliases for interface components **
ALIASES : lt_textid FOR lif_longtext~lt_textid,
ls_textid FOR lif_longtext~ls_textid.
DATA : ls_ekko TYPE ekko.
METHODS : constructor IMPORTING reference(po_no) TYPE ebeln
EXCEPTIONS not_found.
PROTECTED SECTION.
DATA : lt_tlines TYPE tline_t,
ls_tlines TYPE tline,
lv_name TYPE tdobname.
METHODS : print_data IMPORTING reference(text_lines) TYPE tline_t
reference(text_id) TYPE tdid.
ENDCLASS. "lcl_po_header DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_po_header IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_po_header IMPLEMENTATION.
** Constructor method for Order Header data **
METHOD constructor.
CLEAR : ls_ekko.
SELECT SINGLE * FROM ekko
INTO ls_ekko
WHERE ebeln = po_no.
IF sy-subrc NE 0.
RAISE not_found.
ENDIF.
ENDMETHOD. "constructor
** Inteface method for extracting Text-id list for Object Type **
METHOD : lif_longtext~get_textid.
SELECT tdspras tdobject tdid tdtext FROM ttxit
INTO TABLE lt_textid
WHERE tdspras = sy-langu
AND tdobject = 'EKKO'.
DELETE lt_textid WHERE tdid+0(1) NE 'F'.
ENDMETHOD. "lif_longtext~get_textid
** Inteface method for extracting Long text for Object type/Text id **
METHOD : lif_longtext~get_text.
REFRESH : lt_tlines.
MOVE me->ls_ekko-ebeln TO me->lv_name.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = text_id
language = sy-langu
name = me->lv_name
object = text_object
TABLES
lines = lt_tlines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc EQ 0.
me->print_data( EXPORTING text_lines = lt_tlines
text_id = text_id ).
ENDIF.
ENDMETHOD. ":