Wednesday, June 25, 2014

sm37 and sm50

SM37 is "Job Overview" It allows one to see what jobs are running based on certain selection criteria. While SM50 is "Process Overview", a job in SM37 may have spawned several processes simultaneously while it is running. The number of processes would be logged in SM50. They are based on the defined type such as dialog, batch, update, background, etc.. For instance as a user logs on they logon as a dialog user and are granted higher priority than a background user as far as a processor and memory times and sizes are concerned. Therefore there is less wait time for a dialog user.

Sunday, April 20, 2014

ABAP - Constructor

Constructors are special methods that cannot be called using CALL METHOD.

Instead, they are called automatically by the system to set the starting state of a new object or class.

There are two types of constructors - instance constructors and static constructors. 

To use them, you must declare them explicitly in the class.


ABAP - Inheritance


  REPORT  ZMYSAPLIBRARY.

*******************************************************


* Super class LCL_CompanyEmployees


*******************************************************


CLASS lcl_company_employees DEFINITION.
  PUBLIC SECTION.
    TYPES:
      BEGIN OF t_employee,
        no  TYPE i,
        name TYPE string,
        wage TYPE i,
     END OF t_employee.
    METHODS:
      constructor,
      add_employee
        IMPORTING im_no   TYPE i
                  im_name TYPE string
                  im_wage TYPE i,
      display_employee_list,
      display_no_of_employees.



  PRIVATE SECTION.
    CLASS-DATAi_employee_list TYPE TABLE OF t_employee,
                no_of_employees TYPE i.
ENDCLASS.
*-- CLASS LCL_CompanyEmployees IMPLEMENTATION
CLASS lcl_company_employees IMPLEMENTATION.
  METHOD constructor.
    no_of_employees no_of_employees + 1.
  ENDMETHOD.
  METHOD add_employee.
*   Adds a new employee to the list of employees
    DATAl_employee TYPE t_employee.
    l_employee-no im_no.
    l_employee-name im_name.
    l_employee-wage im_wage.
    APPEND l_employee TO i_employee_list.
  ENDMETHOD.
  METHOD display_employee_list.
*   Displays all employees and there wage
    DATAl_employee TYPE t_employee.
    WRITE'List of Employees'.
    LOOP AT i_employee_list INTO l_employee.
      WRITE/ l_employee-nol_employee-namel_employee-wage.
    ENDLOOP.
  ENDMETHOD.
  METHOD display_no_of_employees.
*   Displays total number of employees
    SKIP 3.
    WRITE'Total number of employees:'no_of_employees.
  ENDMETHOD.
ENDCLASS.



*******************************************************


* Sub class LCL_BlueCollar_Employee


*******************************************************


CLASS lcl_bluecollar_employee DEFINITION


          INHERITING FROM lcl_company_employees.
  PUBLIC SECTION.
    METHODS:
        constructor
          IMPORTING im_no             TYPE i
                    im_name           TYPE string
                    im_hours          TYPE i
                    im_hourly_payment TYPE i,
         add_employee REDEFINITION.
  PRIVATE SECTION.
    DATA:no             TYPE i,
         name           TYPE string,
         hours          TYPE i,
         hourly_payment TYPE i.



ENDCLASS.
*---- CLASS LCL_BlueCollar_Employee IMPLEMENTATION
CLASS lcl_bluecollar_employee IMPLEMENTATION.
  METHOD constructor.
*   The superclass constructor method must be called from the subclass


*   constructor method
    CALL METHOD super->constructor.
    no im_no.
    name im_name.
    hours im_hours.
    hourly_payment im_hourly_payment.
  ENDMETHOD.
  METHOD add_employee.
*   Calculate wage an call the superclass method add_employee to add


*   the employee to the employee list
    DATAl_wage TYPE i.
    l_wage hours * hourly_payment.
    CALL METHOD super->add_employee
      EXPORTING im_no no
                im_name name
                im_wage l_wage.
  ENDMETHOD.
ENDCLASS.
*******************************************************


* Sub class LCL_WhiteCollar_Employee


*******************************************************
CLASS lcl_whitecollar_employee DEFINITION


    INHERITING FROM lcl_company_employees.
  PUBLIC SECTION.
    METHODS:
        constructor
          IMPORTING im_no                 TYPE i
                    im_name               TYPE string
                    im_monthly_salary     TYPE i
                    im_monthly_deducations TYPE i,
         add_employee REDEFINITION.
  PRIVATE SECTION.
    DATA:
      no                    TYPE i,
      name                  TYPE string,
      monthly_salary        TYPE i,
      monthly_deducations    TYPE i.
ENDCLASS.
*---- CLASS LCL_WhiteCollar_Employee IMPLEMENTATION
CLASS lcl_whitecollar_employee IMPLEMENTATION.
  METHOD constructor.
*   The superclass constructor method must be called from the subclass


*   constructor method


    CALL METHOD super->constructor.
    no im_no.
    name im_name.
    monthly_salary im_monthly_salary.
    monthly_deducations im_monthly_deducations.
  ENDMETHOD.
  METHOD add_employee.
*   Calculate wage an call the superclass method add_employee to add


*   the employee to the employee list
    DATAl_wage TYPE i.
    l_wage monthly_salary monthly_deducations.
    CALL METHOD super->add_employee
      EXPORTING im_no no
                im_name name
                im_wage l_wage.
  ENDMETHOD.
ENDCLASS.
*******************************************************


* R E P O R T


*******************************************************
DATA:
* Object references
  o_bluecollar_employee1  TYPE REF TO lcl_bluecollar_employee,
  o_whitecollar_employee1 TYPE REF TO lcl_whitecollar_employee.
START-OF-SELECTION.
* Create bluecollar employee obeject
  CREATE OBJECT o_bluecollar_employee1
      EXPORTING im_no  1
                im_name  'Gylle Karen'
                im_hours 38
                im_hourly_payment 75.
* Add bluecollar employee to employee list
  CALL METHOD o_bluecollar_employee1->add_employee
      EXPORTING im_no  1
                im_name  'Gylle Karen'
                im_wage 0.
* Create whitecollar employee obeject
  CREATE OBJECT o_whitecollar_employee1
      EXPORTING im_no  2
                im_name  'John Dickens'
                im_monthly_salary 10000
                im_monthly_deducations 2500.
* Add bluecollar employee to employee list
  CALL METHOD o_whitecollar_employee1->add_employee
      EXPORTING im_no  1
                im_name  'Karen Johnson'
                im_wage 0.
* Display employee list and number of employees. Note that the result


* will be the same when called from o_whitecollar_employee1 or


* o_bluecolarcollar_employee1, because the methods are defined


* as static (CLASS-METHODS)
  CALL METHOD o_whitecollar_employee1->display_employee_list.
  CALL METHOD o_whitecollar_employee1->display_no_of_employees.

Saturday, April 19, 2014

ABAP - Class Visibility

Public Section

Private Section

Protected Section

ABAP - Static Method/Attribute and Instance Method/Attribute

CLASS-METHODS: - Static Method

METHODS: - Instance Method

CLASS-DATA: - Static Attribute

DATA: - Instance Attribute

 

ABAP - Global Class and Local Class


The state of real-world objects is represented by attributes, and the behaviour of the real-world object is represented by methods. A method is a block of code, such as function module or subroutine, associated with the object.

A class describes an object, and the object is a runtime instance of that class. Objects are created using the syntax CREATE OBJECT. The statement CREATE OBJECT creates an object in the memory of the application.

You can create any number of objects based on a single class, and each instance (object) of the class has its own unique identity and its own set of values for its attributes.

Local classes are defined within an ABAP program and can be used only in the program in which they are defined.

Template for ABAP Local Class:

CLASS CL1 DEFINATION.
PUBLIC SECTION.
          DATA: d1, d2.
          METHODS: M1.
          EVENTS: EV1.

PROTECTED SECTION.
          DATA: d3, d4.
          METHODS: M2.
          EVENTS: EV2.

PRIVATE SECTION.
          DATA: d5, d6.
          METHODS: M3.
          EVENTS: EV3.
ENDCLASS.

CLASS CL1 IMPLEMENTATION.
          METHOD M1.
          ENDMETHOD.
          METHOD M2.
          ENDMETHOD.
          METHOD M3.
          ENDMETHOD.
ENDCLASS.

Global classes are stored in a class library and are visible system-wide. Global classes can be used by every program in the system. Global classes are defined in the Class Builder (Transaction SE24) in the ABAP Workbench. 

Friday, April 18, 2014

ABAP - ALV





 
REPORT  ZMYSAPLIBRARY.

TYPE-POOLSSLIS.

DATAG_REPID LIKE SY-REPID
GS_PRINT            TYPE SLIS_PRINT_ALV
GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER
GT_EVENTS           TYPE SLIS_T_EVENT
GT_SORT             TYPE SLIS_T_SORTINFO_ALV
GS_LAYOUT           TYPE SLIS_LAYOUT_ALV
GT_FIELDCAT         TYPE SLIS_T_FIELDCAT_ALV
FIELDCAT_LN LIKE LINE OF GT_FIELDCAT
COL_POS TYPE I.

DATABEGIN OF ITAB
  FIELD1(5TYPE C
  FIELD2(5TYPE C
  FIELD3(5TYPE DECIMALS 2
END OF ITAB.

DATABEGIN OF ITAB1 OCCURS 0
  INCLUDE STRUCTURE ITAB
DATAEND OF ITAB1.

DATABEGIN OF ITAB_FIELDCAT OCCURS 0
  INCLUDE STRUCTURE ITAB
DATAEND OF ITAB_FIELDCAT.

** Print Parameters 
*PARAMETERS: 
*            P_PRINT  AS CHECKBOX DEFAULT ' ', "PRINT IMMEDIATE 
*            P_NOSINF AS CHECKBOX DEFAULT 'X', "NO SELECTION INFO 
*            P_NOCOVE AS CHECKBOX DEFAULT ' ', "NO COVER PAGE 
*            P_NONEWP AS CHECKBOX DEFAULT ' ', "NO NEW PAGE 
*            P_NOLINF AS CHECKBOX DEFAULT 'X', "NO PRINT LIST INFO 
*            P_RESERV TYPE I.                  "NO OF FOOTER LINE

INITIALIZATION
G_REPID SY-REPID
*PERFORM PRINT_BUILD    USING GS_PRINT.      "Print PARAMETERS

START-OF-SELECTION
* TEST DATA 
MOVE 'TEST1' TO ITAB1-FIELD1
MOVE 'TEST1' TO ITAB1-FIELD2
MOVE '10.00' TO ITAB1-FIELD3
APPEND ITAB1.

MOVE 'TEST2' TO ITAB1-FIELD1
MOVE 'TEST2' TO ITAB1-FIELD2
MOVE '20.00' TO ITAB1-FIELD3
APPEND ITAB1.

DO 50 TIMES
  APPEND ITAB1
ENDDO.

END-OF-SELECTION.

PERFORM BUILD
PERFORM EVENTTAB_BUILD CHANGING GT_EVENTS
PERFORM COMMENT_BUILD  CHANGING GT_LIST_TOP_OF_PAGE
PERFORM CALL_ALV.

FORM BUILD
* DATA FIELD CATALOG 
* Explain Field Description to ALV 
DATAFIELDCAT_IN TYPE SLIS_FIELDCAT_ALV.

CLEAR FIELDCAT_IN
FIELDCAT_LN-FIELDNAME 'FIELD1'
FIELDCAT_LN-TABNAME   'ITAB1'
*FIELDCAT_LN-NO_OUT    = 'X'.  "FIELD NOT DISPLAY, CHOOSE FROM LAYOUT 
FIELDCAT_LN-KEY       ' '.   "SUBTOTAL KEY 
FIELDCAT_LN-NO_OUT    ' '
FIELDCAT_LN-SELTEXT_L 'HEAD1'
APPEND FIELDCAT_LN TO GT_FIELDCAT.

CLEAR FIELDCAT_IN
FIELDCAT_LN-FIELDNAME 'FIELD2'
FIELDCAT_LN-TABNAME   'ITAB1'
FIELDCAT_LN-NO_OUT    'X'
FIELDCAT_LN-SELTEXT_L 'HEAD2'
APPEND FIELDCAT_LN TO GT_FIELDCAT.

CLEAR FIELDCAT_IN
FIELDCAT_LN-FIELDNAME     'FIELD3'
FIELDCAT_LN-TABNAME       'ITAB1'
FIELDCAT_LN-REF_FIELDNAME 'MENGE'"<- REF FIELD IN THE DICTIONNARY 
FIELDCAT_LN-REF_TABNAME   'MSEG'.  "<- REF TABLE IN THE DICTIONNARY 
FIELDCAT_LN-NO_OUT        ' '
FIELDCAT_LN-DO_SUM        'X'.   "SUM UPON DISPLAY 
APPEND FIELDCAT_LN TO GT_FIELDCAT.

* DATA SORTING AND SUBTOTAL 
DATAGS_SORT TYPE SLIS_SORTINFO_ALV.

CLEAR GS_SORT
GS_SORT-FIELDNAME 'FIELD1'
GS_SORT-SPOS      1
GS_SORT-UP        'X'
GS_SORT-SUBTOT    'X'
APPEND GS_SORT TO GT_SORT.

CLEAR GS_SORT
GS_SORT-FIELDNAME 'FIELD2'
GS_SORT-SPOS      2
GS_SORT-UP        'X'
*GS_SORT-SUBTOT    = 'X'. 
APPEND GS_SORT TO GT_SORT.

ENDFORM.

FORM CALL_ALV
* ABAP List Viewer 
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' 
EXPORTING 
* I_INTERFACE_CHECK = ' ' 
* I_BYPASSING_BUFFER = 
* I_BUFFER_ACTIVE = ' ' 
I_CALLBACK_PROGRAM G_REPID
* I_CALLBACK_PF_STATUS_SET = ' ' 
* I_CALLBACK_USER_COMMAND = ' ' 
I_STRUCTURE_NAME 'ITAB1' 
IS_LAYOUT =  GS_LAYOUT
IT_FIELDCAT GT_FIELDCAT[]
* IT_EXCLUDING = 
* IT_SPECIAL_GROUPS = 
  IT_SORT GT_SORT[]
* IT_FILTER = 
* IS_SEL_HIDE = 
* I_DEFAULT = 'X' 
* I_SAVE = ' ' 
* IS_VARIANT = 
  IT_EVENTS GT_EVENTS[]
* IT_EVENT_EXIT = 
  IS_PRINT GS_PRINT
* IS_REPREP_ID = 
* I_SCREEN_START_COLUMN = 0 
* I_SCREEN_START_LINE = 0 
* I_SCREEN_END_COLUMN = 0 
* I_SCREEN_END_LINE = 0 
* IMPORTING 
* E_EXIT_CAUSED_BY_CALLER = 
* ES_EXIT_CAUSED_BY_USER = 
TABLES 
T_OUTTAB ITAB1
EXCEPTIONS 
PROGRAM_ERROR 
OTHERS 2
ENDFORM.

* HEADER FORM 
FORM EVENTTAB_BUILD CHANGING LT_EVENTS TYPE SLIS_T_EVENT
CONSTANTS
GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'
*GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.

  DATALS_EVENT TYPE SLIS_ALV_EVENT.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET' 
       EXPORTING 
            I_LIST_TYPE 
       IMPORTING 
            ET_EVENTS   LT_EVENTS.

  READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_TOP_OF_PAGE
                           INTO LS_EVENT
  IF SY-SUBRC 0
    MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM
    APPEND LS_EVENT TO LT_EVENTS
  ENDIF.

* define END_OF_PAGE event 
* READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_END_OF_PAGE 
*                          INTO LS_EVENT. 
* IF SY-SUBRC = 0. 
*   MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM. 
*   APPEND LS_EVENT TO LT_EVENTS. 
* ENDIF. 
ENDFORM.

FORM COMMENT_BUILD CHANGING GT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER
  DATAGS_LINE TYPE SLIS_LISTHEADER.

  CLEAR GS_LINE
  GS_LINE-TYP  'H'
  GS_LINE-INFO 'HEADER 1'
  APPEND GS_LINE TO GT_TOP_OF_PAGE.

  CLEAR GS_LINE
  GS_LINE-TYP  'S'
  GS_LINE-KEY  'STATUS 1'
  GS_LINE-INFO 'INFO 1'
  APPEND GS_LINE TO GT_TOP_OF_PAGE
  GS_LINE-KEY  'STATUS 2'
  GS_LINE-INFO 'INFO 2'
  APPEND GS_LINE TO GT_TOP_OF_PAGE.

* CLEAR GS_LINE. 
* GS_LINE-TYP  = 'A'. 

* GS_LINE-INFO = 'ACTION'. 
* APPEND GS_LINE TO  GT_TOP_OF_PAGE.

ENDFORM.

FORM TOP_OF_PAGE
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' 
       EXPORTING 
            IT_LIST_COMMENTARY GT_LIST_TOP_OF_PAGE
  WRITESY-DATUM'Page No'SY-PAGNO LEFT-JUSTIFIED
ENDFORM.

FORM END_OF_PAGE
  WRITE at (sy-linszsy-pagno CENTERED
ENDFORM.

* PRINT SETTINGS 
*FORM PRINT_BUILD USING LS_PRINT TYPE SLIS_PRINT_ALV. 
*  LS_PRINT-PRINT              = P_PRINT.  "PRINT IMMEDIATE 
*  LS_PRINT-NO_PRINT_SELINFOS  = P_NOSINF. "NO SELECTION INFO 
*  LS_PRINT-NO_COVERPAGE       = P_NOCOVE. "NO COVER PAGE 
*  LS_PRINT-NO_NEW_PAGE        = P_NONEWP. 
*  LS_PRINT-NO_PRINT_LISTINFOS = P_NOLINF. "NO PRINT LIST INFO 
*  LS_PRINT-RESERVE_LINES      = P_RESERV. 
*ENDFORM.

*END OF ZALV PROGRAM

Tuesday, April 15, 2014

ABAP - SELECT-OPTIONS FOR



  REPORT  ZMYSAPLIBRARY.

TABLESsflight.

DATABEGIN OF t_report OCCURS 3,
carrid LIKE sflight-carrid,
connid LIKE sflight-connid,
fldate LIKE sflight-fldate,
seatsmax LIKE sflight-seatsmax,
END OF t_report.

SELECT-OPTIONS s_carrid FOR sflight-carrid.
SELECT-OPTIONS s_connid FOR sflight-connid.

SELECT FROM sflight
WHERE carrid IN s_carrid AND
connid IN s_connid.
  t_report-carrid sflight-carrid.
  t_report-connid sflight-connid.
  t_report-fldate sflight-fldate.
  t_report-seatsmax sflight-seatsmax.
  APPEND t_report.
ENDSELECT.
IF sy-subrc NE 0"sy-subrc = return code
  WRITE 'Data not found'.
ENDIF.

LOOP AT t_report.
  skip"comment:Go to next line
  WRITE t_report-carrid.
  WRITE t_report-connid.
  WRITE t_report-fldate.
  WRITE t_report-seatsmax.
ENDLOOP.

Monday, April 14, 2014

ABAP - SY-TABIX





  REPORT  ZMYSAPLIBRARY.

DATABEGIN OF itab OCCURS 0letter type cEND OF itab.

itab-letter 'A'
APPEND itab
itab-letter 'B'
APPEND itab.
itab-letter 'C'
APPEND itab
itab-letter 'D'
APPEND itab.

LOOP AT itab.
if SY-TABIX 4.
WRITE itab-letter.
EXIT.
endif.
ENDLOOP

ABAP - sy-tabix and sy-index



  REPORT  ZMYSAPLIBRARY.

do 10 times.

  do times.
   
    write sy-index.
   
  enddo.
 
  skip.
 
enddo.


ABAP - Operands


OperatorDescription
=, EQEqual: True, if the content of operand1 matches the content of operand2.
<>, NENot Equal: True, if the content of operand1 does not match the content of operand2.
<, LTLower Than: True, if the content of operand1 is smaller than the content of operand2.
>, GTGreater Than: True, if the content of operand1 is greater than the content of operand2.
<=, LELower Equal: True, if the content of operand1 is lower than or equal to the content of operand2.
>=, GEGreater Equal: True, if the content of operand1 is greater than or equal to the content of operand2.

ABAP - Case Statement



  REPORT  ZMYSAPLIBRARY.

parameters :  type i,
              y type i,
              ch type i.

data type i.

case ch.
  when 1.
    + y.      write :'Sum is ',z.
  when 2.
    y.      write :'Difference is ',z.
  when 3.
    * y.
    write :'Product is ',z.
  when 4.
    / y.      write :'Division is ',z.
  when others.
    write :'Invalid choice, please enter 1,2,3,4'.
endcase.

Friday, April 11, 2014

ABAP - Copy Table1 to Table2




  *& Report  ZMYSAPLIBRARY
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZMYSAPLIBRARY.

TABLES sflight,
         zsflight.

data itab like sflight occurs with header line.

select from sflight into table itab.

loop at itab.
insert into zsflight values itab .
endloop.


Thursday, April 10, 2014

ABAP - ZMYSAPLIBRARY_Sample 2




  REPORT  ZMYSAPLIBRARY.

DATA it_flight TYPE STANDARD TABLE OF sflight.        

DATA wa_sflight TYPE sflight.

WRITE 'Printout in tableorder of Database:'.

SELECT FROM sflight

INTO wa_sflight

WHERE carrid 'JL'.

  WRITE/ wa_sflight-carrid,

  wa_sflight-connid,
  wa_sflight-fldate,
  wa_sflight-price,
  wa_sflight-currency,
  wa_sflight-planetype.

ENDSELECT.

ULINE.

SELECT FROM sflight

INTO TABLE it_flight

WHERE carrid 'JL'.

sort it_flight by fldate.       

WRITE 'Printout in tableorder of sorted ITAB:'.

LOOP AT it_flight INTO wa_sflight.

  WRITE/ wa_sflight-carrid,

  wa_sflight-connid,
  wa_sflight-fldate,
  wa_sflight-price,
  wa_sflight-currency,
  wa_sflight-planetype.

ENDLOOP.

ABAP - ZMYSAPLIBRARY_Sample 1



  *&---------------------------------------------------------------------*
*& Report  ZMYSAPLIBRARY
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZMYSAPLIBRARY.
* Declarative Section
TYPESBEGIN OF zsf_type,
  carrid LIKE sflight-carrid,
  carrname LIKE scarr-carrname,
  currcode LIKE scarr-currcode,
  minpay LIKE sflight-paymentsum,
  maxpay LIKE sflight-paymentsum,
  avgpay LIKE sflight-paymentsum,
  totpay LIKE sflight-paymentsum,
END OF zsf_type.

DATAi_tab_fl TYPE STANDARD TABLE OF zsf_type,
      wa_tab_fl TYPE zsf_type,
      time_beg TYPE i,
      time_end TYPE i,
      time_tot TYPE i.

* Program Statements
GET RUN TIME FIELD time_beg.

SELECT sflight~carrid scarr~carrname
  MINpaymentsum AS minpay
  MAXpaymentsum AS maxpay
  AVGpaymentsum AS avgpay
  SUMpaymentsum AS totpay
  FROM sflight JOIN scarr
  ON sflight~carrid scarr~carrid
  INTO CORRESPONDING FIELDS OF TABLE i_tab_fl
  GROUP BY sflight~carrid scarr~carrname
  ORDER BY sflight~carrid.

GET RUN TIME FIELD time_end.

time_tot time_end time_beg ).

WRITE:'Carriers Data'.
ULINE.
WRITE:/(8'CARRIER'(20'NAME',(23'MIN PAY',
(23'MAX PAY'(23'AVG PAY'(23'SUM PAY'.
ULINE.

LOOP AT i_tab_fl INTO wa_tab_fl.
  WRITE:/(8wa_tab_fl-carrid,
  (20wa_tab_fl-carrname,
  (17wa_tab_fl-minpaywa_tab_fl-currcode,
  (17wa_tab_fl-maxpaywa_tab_fl-currcode,
  (17wa_tab_fl-avgpaywa_tab_fl-currcode,
  (17wa_tab_fl-totpaywa_tab_fl-currcode.
ENDLOOP.

WRITE/'Runtime = 'time_tot.






ABAP - User Exit_Master Data





  *&---------------------------------------------------------------------*
*&  Include           ZXRSAU02_0PM_MAINTPOS_ATTR
*&---------------------------------------------------------------------*
************************************************************************
* CR-A02996 WIKKER II
* 16/08/2013       MYSKOT       RT          Enhance 0PM_MAINTPOS_ATTR
*
************************************************************************

TYPES BEGIN OF S_MPOS,
          WAPOS   TYPE WAPOS,
          OBKNR   TYPE OBJKNR,
          PRIOK   TYPE PRIOK,
          STATUS  TYPE MPSTAT,
          AENAM   TYPE AENAM,
          AEDAT   TYPE AEDAT,
          ERNAM   TYPE ERNAM,
          ERSDT   TYPE ERSDT,
        END OF S_MPOS.

DATAIT_MAINTP_ATTR TYPE STANDARD TABLE OF BWE_0PM_MAINTPOS,
      IT_MPOS TYPE SORTED TABLE OF S_MPOS WITH UNIQUE KEY WAPOS,
      W_MPOS LIKE LINE OF IT_MPOS.

FIELD-SYMBOLS <FS_MAINTP_ATTR> TYPE BWE_0PM_MAINTPOS.

FREEIT_MAINTP_ATTR.
IT_MAINTP_ATTR[] I_T_DATA[].
FREEI_T_DATA.

IF IT_MAINTP_ATTR[] IS NOT INITIAL.

  SELECT WAPOS OBKNR PRIOK STATUS AENAM AEDAT ERNAM ERSDT
    INTO TABLE IT_MPOS
     FROM MPOS
     FOR ALL ENTRIES IN IT_MAINTP_ATTR
     WHERE WAPOS IT_MAINTP_ATTR-WAPOS.

ENDIF.

IF IT_MPOS[] IS NOT INITIAL.
  LOOP AT IT_MAINTP_ATTR ASSIGNING <FS_MAINTP_ATTR>.
    READ TABLE IT_MPOS INTO W_MPOS
         WITH KEY WAPOS <FS_MAINTP_ATTR>-WAPOS
         BINARY SEARCH.
    IF SY-SUBRC 0.
      <FS_MAINTP_ATTR>-OBKNR  W_MPOS-OBKNR.
      <FS_MAINTP_ATTR>-PRIOK  W_MPOS-PRIOK.
      <FS_MAINTP_ATTR>-STATUS W_MPOS-STATUS.
      <FS_MAINTP_ATTR>-AENAM  W_MPOS-AENAM.
      <FS_MAINTP_ATTR>-AEDAT  W_MPOS-AEDAT.
      <FS_MAINTP_ATTR>-ERNAM  W_MPOS-ERNAM.
      <FS_MAINTP_ATTR>-ERSDT  W_MPOS-ERSDT.
    ENDIF.
  ENDLOOP.
ENDIF.

I_T_DATA[] IT_MAINTP_ATTR[].