Sunteți pe pagina 1din 22

ABAP PROGRAMMING. SE38 IS THE SCREEN.

REPORT ZEMP.

DATA: BEGIN OF EMP,

EMPID (10),

DEPT LIKE /BIC/PTA_DEPT-/BIC/TA_DEPT,

SAL TYPE I,

END OF EMP.

EMP-EMPID = RAMESH.

EMP-DEPT = MM.

EMP-SAL = 5000.

WRITE: EMP-EMPUD, EMP-DEPT, EMP-SAL.

THIS WILL STORE ONLY ONE RECORD AT A TIME.


IF MULTIPLE RECORDS AT A TIME, AN INTERNAL TABLE. INTERNAL TABLES WILL HAVE HEADER (WORK AREA) AND BODY. TO
WRITE, FIRST THE WORK AREA NEEDS TO BE UPDATED AND THEN IT SHOULD BE INSERTED INTO BODY.

DATA: BEGIN OF EMP OCCURS 10,

EMPID (10),

DEPT LIKE /BIC/PTA_DEPT-/BIC/TA_DEPT,

SAL TYPE I,

END OF EMP.

EMP-EMPID = RAMESH.

EMP-DEPT = MM.

EMP-SAL = 5000.

APPEND EMP TO EMP INSERTING DATA INTO INTERNAL TABLE. SHORT CUT IS APPEND EMP.

WRITE: EMP-EMPUD, EMP-DEPT, EMP-SAL.


DATA: BEGIN OF EMP OCCURS 10,

EMPID (10),

DEPT LIKE /BIC/PTA_DEPT-/BIC/TA_DEPT,

SAL TYPE I,

END OF EMP.

EMP-EMPID = RAMESH.

EMP-DEPT = MM.

EMP-SAL = 5000.

APPEND EMP TO EMP INSERTING DATA INTO INTERNAL TABLE. SHORT CUT IS APPEND EMP.

EMP-EMPID = SATISH.

EMP-DEPT = SD.

EMP-SAL = 5000.

APPEND EMP TO EMP INSERTING DATA INTO INTERNAL TABLE. SHORT CUT IS APPEND EMP.

EMP-EMPID = HARISH.

EMP-DEPT = CC.

EMP-SAL = 5000.

APPEND EMP TO EMP INSERTING DATA INTO INTERNAL TABLE. SHORT CUT IS APPEND EMP.

-- READING RECORDS

LOOP AT EMP INTO EMP.


WRITE : / EMP-EMP, EMP-DEPT, EMP-SAL. WRITE TO WORK AREA WHICH IS A READ. -- / IS NEW LINE

END LOOP.
COPYING DATA:

DATA: BEGIN OF EMP OCCURS 10,

EMPID (10),

DEPT LIKE /BIC/PTA_DEPT-/BIC/TA_DEPT,

SAL TYPE I,

END OF EMP.

DATA: ITAB LIKE EMP OCCURS 10, -- NO WORK AREA / HEADER BY LIKE STATEMENT. IT CREATES ONLY THE BODY.

DATA WA LIKE EMP.

EMP-EMPID = RAMESH.

EMP-DEPT = MM.

EMP-SAL = 5000.

APPEND EMP TO EMP INSERTING DATA INTO INTERNAL TABLE. SHORT CUT IS APPEND EMP.

EMP-EMPID = SATISH.

EMP-DEPT = SD.

EMP-SAL = 5000.

APPEND EMP TO EMP INSERTING DATA INTO INTERNAL TABLE. SHORT CUT IS APPEND EMP.

EMP-EMPID = HARISH.

EMP-DEPT = CC.

EMP-SAL = 5000.

APPEND EMP TO EMP INSERTING DATA INTO INTERNAL TABLE. SHORT CUT IS APPEND EMP.
ITAB[] = EMP[]. ALL RECORDS FROM EMP COPIED TO ITAB.

-- READING RECORDS

LOOP AT ITAB INTO WA.

WRITE : / WA-EMP, WA-DEPT, WA-SAL. WRITE TO WORK AREA WHICH IS A READ. -- / IS NEW LINE

END LOOP.
TO READ FROM SAP TABLE:

FOR EXAMPLE, TO READ FROM SAP TABLE MARA, BELOW STATEMENT SHOULD BE DEFINED.

TABLES MARA. THIS STATEMENT WILL CREATE A WORK AREA.

SELECT * FROM MARA INTO MARA WHERE MATID=12345.

WRITE: / MARA-MATID, MARA-..

ENDSELECT. NO SPACE BETWEEN END AND SELECT.

SINCE WE DONT HAVE ACCESS TO MARA, LET US SELECT ANOTHER TABLE.

TABLES /BIC/PTA_MATID.

SELECT * FROM /BIC/PTA_MATID INTO /BIC/PTA_MATID.

WRITE: / /BIC/PTA_MATID-/BIC/PTA_MATID, /BIC/PTA_MATID-/BIC/TM_MTYPE, /BIC/PTA_MATID-/BIC/TM_MGROUP.


TRANSFORMATION:
Expert routine menu is meant for experts who would like to code source to target movement without any transformation. When
the option is selected, if any mappings exist between source and target, it will get deleted.
NEXT SCREEN USES ABAP ROUTINE FOR TRANSFORMATION. NOTICE ROUTINE IS SELECTED IN RULE TYPE CELL. CLICK ON
DISPLAY RULE ICON TO SEE THE ABAP ROUTINE.
PROGRAM trans_routine.

*---------------------------------------------------------------------*
* CLASS routine DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_transform DEFINITION.
PUBLIC SECTION.

* Attributs
DATA:
p_check_master_data_exist
TYPE RSODSOCHECKONLY READ-ONLY,
*- Instance for getting request runtime attributs;
* Available information: Refer to methods of
* interface 'if_rsbk_request_admintab_view'
p_r_request
TYPE REF TO if_rsbk_request_admintab_view READ-ONLY.

PRIVATE SECTION.

TYPE-POOLS: rsd, rstr.

* Rule specific types


TYPES:
BEGIN OF _ty_s_SC_1,
* Field: /BIC/TA_MATID TATA MATERIAL ID.
/BIC/TA_MATID TYPE C LENGTH 18,
* Field: RECORD.
RECORD TYPE RSARECORD,
END OF _ty_s_SC_1.
TYPES:
BEGIN OF _ty_s_TG_1,
* InfoObject: TA_MATID TATA MATERIAL ID.
/BIC/TA_MATID TYPE /BIC/OITA_MATID,
END OF _ty_s_TG_1.

*$*$ begin of global - insert your declaration only below this line *-*
... "insert your code here

*$*$ end of global - insert your declaration only before this line *-*

METHODS
compute_TA_MATID
IMPORTING
request type rsrequest
datapackid type rsdatapid
SOURCE_FIELDS type _ty_s_SC_1
EXPORTING
RESULT type _ty_s_TG_1-/BIC/TA_MATID
monitor type rstr_ty_t_monitor
RAISING
cx_rsrout_abort
cx_rsrout_skip_record
cx_rsrout_skip_val.
METHODS
invert_TA_MATID
IMPORTING
i_th_fields_outbound TYPE rstran_t_field_inv
i_r_selset_outbound TYPE REF TO cl_rsmds_set
i_is_main_selection TYPE rs_bool
i_r_selset_outbound_complete TYPE REF TO cl_rsmds_set
i_r_universe_inbound TYPE REF TO cl_rsmds_universe
CHANGING
c_th_fields_inbound TYPE rstran_t_field_inv
c_r_selset_inbound TYPE REF TO cl_rsmds_set
c_exact TYPE rs_bool.
ENDCLASS. "routine DEFINITION

*$*$ begin of 2nd part global - insert your code only below this line *
... "insert your code here
TABLES: /BIC/PTA_MATID.
*$*$ end of 2nd part global - insert your code only before this line *

*---------------------------------------------------------------------*
* CLASS routine IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_transform IMPLEMENTATION.

METHOD compute_TA_MATID.

* IMPORTING
* request type rsrequest
* datapackid type rsdatapid
* SOURCE_FIELDS-/BIC/TA_MATID TYPE C LENGTH 000018
* EXPORTING
* RESULT type _ty_s_TG_1-/BIC/TA_MATID

DATA:
MONITOR_REC TYPE rsmonitor.

*$*$ begin of routine - insert your code only below this line *-*
... "insert your code here
*-- fill table "MONITOR" with values of structure "MONITOR_REC"
*- to make monitor entries
... "to cancel the update process
* raise exception type CX_RSROUT_ABORT.
... "to skip a record
* raise exception type CX_RSROUT_SKIP_RECORD.
... "to clear target fields
* raise exception type CX_RSROUT_SKIP_VAL.
SELECT SINGLE * FROM /BIC/PTA_MATID INTO /BIC/PTA_MATID WHERE
/BIC/TA_OLDMAT = SOURCE_FIELDS-/BIC/TA_MATID.

IF SY-SUBRC <> 0.
RESULT = SOURCE_FIELDS-/BIC/TA_MATID.
ELSE.

RESULT = /BIC/PTA_MATID-/BIC/TA_MATID .
ENDIF.
*$*$ end of routine - insert your code only before this line *-*
ENDMETHOD. "compute_TA_MATID
*----------------------------------------------------------------------*
* Method invert_TA_MATID
*----------------------------------------------------------------------*
*
* This subroutine needs to be implemented only for direct access
* (for better performance) and for the Report/Report Interface
* (drill through).
* The inverse routine should transform a projection and
* a selection for the target to a projection and a selection
* for the source, respectively.
* If the implementation remains empty all fields are filled and
* all values are selected.
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
METHOD invert_TA_MATID.

*$*$ begin of inverse routine - insert your code only below this line*-*
... "insert your code here
*$*$ end of inverse routine - insert your code only before this line *-*

ENDMETHOD. "invert_TA_MATID
ENDCLASS. "routine IMPLEMENTATION
-------------------------------------------

SOURCE_PACKAGE is the start routine.

RESULT_PACKAGE is the end routine.

Expert routine menu is meant for experts who would like to code source to target movement without any transformation. When
the option is selected, if any mappings exist between source and target, it will get deleted.
READ MASTER DATA: ABOVE TRANSFORMATION READS MATERIAL ID MASTER DATA. NOTICE TA_MATID UNDER IOASSIGNMENT
COLUMN.

S-ar putea să vă placă și